示例#1
0
        public static void Create_MyChar_Req(LittleEndianAccessor lea, GhostClient gc)
        {
            lea.readInt();
            lea.readInt();
            string name = lea.readAsciiString(20);
            int gender = lea.readByte();
            int unk1 = lea.readByte();
            int unk2 = lea.readByte();
            int unk3 = lea.readByte();
            int eyes = lea.readInt();
            int hair = lea.readInt();
            int weapon = lea.readInt();
            int armor = lea.readInt();

            Character chr = new Character();

            chr.AccountID = gc.Account.ID;
            chr.WorldID = gc.World.ID;
            chr.Name = name;
            chr.Title = "江湖人";
            chr.Level = 1;
            chr.Class = 0;
            chr.ClassLV = 0xFF;
            chr.Gender = (byte)gender;
            chr.Eyes = eyes;
            chr.Hair = hair;
            chr.Str = 3;
            chr.Dex = 3;
            chr.Vit = 3;
            chr.Int = 3;
            chr.Hp = 31;
            chr.MaxHp = 31;
            chr.Sp = 15;
            chr.MaxSp = 15;

            chr.Items.Add(new Item(weapon, (byte) ItemTypeConstants.EquipType.Weapon));
            chr.Items.Add(new Item(armor, (byte)ItemTypeConstants.EquipType.Dress));

            chr.Save();

            int pos;
            if ((gc.Account.Characters.Count + 1) <= 4)
            {
                gc.Account.Characters.Add(chr);
                pos = (gc.Account.Characters.Count << 8) + 1;
            }
            else if (Database.Exists("Characters", "name = '{0}'", name))
            {
                pos = -1;
            }
            else if ((gc.Account.Characters.Count + 1) > 4)
            {
                pos = -2;
            }
            else
            {
                pos = 0;
            }
            gc.SendPacket(net.Packet.Chars.Create_MyChar_Ack(pos));
        }
示例#2
0
 protected override void messageReceived(Socket socket, byte[] message)
 {
     LittleEndianAccessor lea = new LittleEndianAccessor(new ByteArrayByteStream(message));
     int hander;
     switch (this.serverType)
     {
         case ServerType.LoginServer:
             hander = lea.readByte();
             net.handling.ServerHandler.handlerPacket((ReceiveOperationCode.Login)hander, lea, this);
             break;
         case ServerType.CharServer:
             hander = lea.readShort();
             net.handling.ServerHandler.handlerPacket((ReceiveOperationCode.Chars)hander, lea, this);
             break;
         case ServerType.GameServer:
             hander = lea.readShort();
             net.handling.ServerHandler.handlerPacket((ReceiveOperationCode.Game)hander, lea, this);
             break;
         default:
             hander = lea.readShort();
             net.handling.ServerHandler.handlerPacket((ReceiveOperationCode.Game)hander, lea, this);
             break;
     }
 }