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; } }
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)); }