private void ParseServerCreatureOutfit(InMessage message) { var creatureID = message.ReadUInt(); Creature creature = client.BattleList.GetCreature(creatureID); var outfit = message.ReadOutfit(); if (creature != null) { creature.Outfit = outfit; } }
private void ParseServerOutfitWindow(InMessage message) { message.ReadOutfit(); var nOutfits = message.ReadByte(); for (uint i = 0; i < nOutfits; ++i) { var outfitID = message.ReadUShort(); var name = message.ReadString(); var addons = message.ReadByte(); } int mountCount = message.ReadByte(); for (int i = 0; i < mountCount; ++i) { int mountId = message.ReadUShort(); // mount type string mountName = message.ReadString(); // mount name } }
private void ParseInitialize(InMessage message) { if (minorVersion >= 10) message.ReadByte(); //? int count = message.ReadUShort(); for (int i = 0; i < count; i++) { var creature = new Creature(message.ReadUInt()); creature.Type = (CreatureType)message.ReadByte(); creature.Name = message.ReadString(); //Trace.WriteLine(String.Format("Creature[{0}]: {1}", i, creature.Name)); creature.Health = message.ReadByte(); var direction = (Direction)message.ReadByte(); creature.LookDirection = direction; creature.TurnDirection = direction; //Outfit creature.Outfit = message.ReadOutfit(); creature.LightLevel = message.ReadByte(); creature.LightColor = message.ReadByte(); creature.Speed = message.ReadUShort(); creature.Skull = message.ReadByte(); creature.Shield = message.ReadByte(); creature.Emblem = message.ReadByte(); creature.IsImpassable = message.ReadByte() == 0x01; //10.20+ includes an extra 4 bytes per creature //These bytes could alter the read order, but since I don't know what they are for yet, I'll read them out of the way. message.ReadUInt(); //speech category? if (client.Version.Number >= ClientVersion.Version1036.Number) message.ReadByte(); client.BattleList.AddCreature(creature); } ParseTibiaPackets(message); }
private Thing GetThing(InMessage message) { //get thing type var thingId = message.ReadUShort(); if (thingId == 0x0061 || thingId == 0x0062) { //creatures Creature creature = null; if (thingId == 0x0062) { creature = client.BattleList.GetCreature(message.ReadUInt()); if (creature == null) { throw new Exception("[GetThing] (0x0062) Can't find the creature in the battle list."); } creature.Health = message.ReadByte(); } else if (thingId == 0x0061) { //creature is not known client.BattleList.RemoveCreature(message.ReadUInt()); creature = new Creature(message.ReadUInt()); client.BattleList.AddCreature(creature); creature.Type = (CreatureType)message.ReadByte(); creature.Name = message.ReadString(); creature.Health = message.ReadByte(); } var direction = (Direction)message.ReadByte(); creature.LookDirection = direction; creature.TurnDirection = direction; creature.Outfit = message.ReadOutfit(); creature.LightLevel = message.ReadByte(); creature.LightColor = message.ReadByte(); creature.Speed = message.ReadUShort(); creature.Skull = message.ReadByte(); creature.Shield = message.ReadByte(); if (thingId == 0x0061) // emblem is sent only in packet type 0x61 { creature.Emblem = message.ReadByte(); } creature.IsImpassable = message.ReadBool(); return(creature); } else if (thingId == 0x0063) { Creature creature = client.BattleList.GetCreature(message.ReadUInt()); if (creature == null) { throw new Exception("[GetThing] (0x0063) Can't find the creature in the battle list."); } creature.TurnDirection = (Direction)message.ReadByte(); creature.IsImpassable = message.ReadBool(); return(creature); } else { return(GetItem(message, thingId)); } }
private void ParseInitialize(InMessage message) { int count = message.ReadUShort(); for (int i = 0; i < count; i++) { var creature = new Creature(message.ReadUInt()); creature.Type = (CreatureType)message.ReadByte(); creature.Name = message.ReadString(); //Trace.WriteLine(String.Format("Creature[{0}]: {1}", i, creature.Name)); creature.Health = message.ReadByte(); var direction = (Direction)message.ReadByte(); creature.LookDirection = direction; creature.TurnDirection = direction; //Outfit creature.Outfit = message.ReadOutfit(); creature.LightLevel = message.ReadByte(); creature.LightColor = message.ReadByte(); creature.Speed = message.ReadUShort(); creature.Skull = message.ReadByte(); creature.Shield = message.ReadByte(); creature.Emblem = message.ReadByte(); creature.IsImpassable = message.ReadByte() == 0x01; client.BattleList.AddCreature(creature); } ParseTibiaPackets(message); }
private void ParseServerCreatureOutfit(InMessage message) { var creatureID = message.ReadUInt(); Creature creature = client.BattleList.GetCreature(creatureID); var outfit = message.ReadOutfit(); if (creature != null) creature.Outfit = outfit; }
private Thing GetThing(InMessage message) { //get thing type var thingId = message.ReadUShort(); if (thingId == 0x0061 || thingId == 0x0062) { //creatures Creature creature = null; if (thingId == 0x0062) { creature = client.BattleList.GetCreature(message.ReadUInt()); if (creature == null) throw new Exception("[GetThing] (0x0062) Can't find the creature in the battle list."); creature.Health = message.ReadByte(); } else if (thingId == 0x0061) { //creature is not known client.BattleList.RemoveCreature(message.ReadUInt()); creature = new Creature(message.ReadUInt()); client.BattleList.AddCreature(creature); creature.Type = (CreatureType)message.ReadByte(); creature.Name = message.ReadString(); creature.Health = message.ReadByte(); } var direction = (Direction)message.ReadByte(); creature.LookDirection = direction; creature.TurnDirection = direction; creature.Outfit = message.ReadOutfit(); creature.LightLevel = message.ReadByte(); creature.LightColor = message.ReadByte(); creature.Speed = message.ReadUShort(); creature.Skull = message.ReadByte(); creature.Shield = message.ReadByte(); if (thingId == 0x0061) // emblem is sent only in packet type 0x61 creature.Emblem = message.ReadByte(); creature.IsImpassable = message.ReadBool(); return creature; } else if (thingId == 0x0063) { Creature creature = client.BattleList.GetCreature(message.ReadUInt()); if (creature == null) throw new Exception("[GetThing] (0x0063) Can't find the creature in the battle list."); creature.TurnDirection = (Direction)message.ReadByte(); creature.IsImpassable = message.ReadBool(); return creature; } else return GetItem(message, thingId); }
private void ParseServerOutfitWindow(InMessage message) { message.ReadOutfit(); var nOutfits = message.ReadByte(); for (uint i = 0; i < nOutfits; ++i) { var outfitID = message.ReadUShort(); var name = message.ReadString(); var addons = message.ReadByte(); } int mountCount = message.ReadByte(); for (int i = 0; i < mountCount; ++i) { int mountId = message.ReadUShort(); // mount type string mountName = message.ReadString(); // mount name } }
private Thing GetThing(InMessage message) { //get thing type var thingId = message.ReadUShort(); if (thingId == 0x0061 || thingId == 0x0062) { //creatures Creature creature = null; if (thingId == 0x0062) { creature = client.BattleList.GetCreature(message.ReadUInt()); if (creature == null) throw new Exception("[GetThing] (0x0062) Can't find the creature in the battle list."); creature.Health = message.ReadByte(); } else if (thingId == 0x0061) { //creature is not known client.BattleList.RemoveCreature(message.ReadUInt()); creature = new Creature(message.ReadUInt()); client.BattleList.AddCreature(creature); creature.Type = (CreatureType)message.ReadByte(); creature.Name = message.ReadString(); creature.Health = message.ReadByte(); } var direction = (Direction)message.ReadByte(); creature.LookDirection = direction; creature.TurnDirection = direction; creature.Outfit = message.ReadOutfit(); creature.LightLevel = message.ReadByte(); creature.LightColor = message.ReadByte(); creature.Speed = message.ReadUShort(); creature.Skull = message.ReadByte(); creature.Shield = message.ReadByte(); if (thingId == 0x0061) // emblem/guildflag is sent only in packet type 0x61 { if (client.Version.Number <= ClientVersion.Version986.Number) { creature.Emblem = message.ReadByte(); } if (client.Version.Number >= ClientVersion.Version1010.Number) { var GuildFlag = message.ReadByte(); } } if (client.Version.Number >= ClientVersion.Version1010.Number) { creature.Type = (CreatureType)message.ReadByte(); if (client.Version.Number >= ClientVersion.Version1036.Number) message.ReadByte(); //Speech Category var Mark = message.ReadByte(); var NumberOfPVPHelpers = message.ReadUShort(); } creature.IsImpassable = message.ReadBool(); return creature; } else if (thingId == 0x0063) { Creature creature = client.BattleList.GetCreature(message.ReadUInt()); if (creature == null) throw new Exception("[GetThing] (0x0063) Can't find the creature in the battle list."); creature.TurnDirection = (Direction)message.ReadByte(); creature.IsImpassable = message.ReadBool(); return creature; } else return GetItem(message, thingId); }