public static string GetOpcodeName(uint opcode, Direction direction, ClientBuild clientbuild) { var name = Enum.GetName(Type.GetType(string.Format("MaximusParserX.Parsing.Version.{0}.Enums.Opcodes", clientbuild)), opcode); if (name == null) name = string.Format("U{0}_UNWKNOWN_{1}", direction == Direction.ServerToClient ? "SMSG" : "CMSG", opcode); return name; }
public static uint GetGameObjectUpdateFieldMax(ClientBuild clientbuild) { var type = GetGameObjectUpdateFieldType(clientbuild); if (type != null) { return Enum.GetValues(type).Cast<uint>().Max(); } else { return 0; } }
public Packet(int id, DateTime timestamp, Direction direction, uint opcode, byte[] data, int size, ClientBuild clientbuild) { Id = id; TimeStamp = timestamp; Direction = direction; Opcode = opcode; Data = data; Size = size; ClientBuild = clientbuild; OpcodeName = MaximusParserX.Parsing.ParsingHandler.GetOpcodeName(Opcode, Direction, ClientBuild); Result = new Frame.Result(); FieldLog = new Dictionary<string, object>(); }
public static string ValidateMaxUpdateFieldCount(int currentcount, TypeID typeid, ClientBuild clientbuild) { var max = 0u; var msg = string.Empty; const string msgformat = "{0} was exceeded with {1} > {2} for build {3}"; switch (typeid) { case TypeID.TYPEID_OBJECT: case TypeID.TYPEID_AIGROUP: case TypeID.TYPEID_AREATRIGGER: { max = 7; } break; case TypeID.TYPEID_CONTAINER: case TypeID.TYPEID_ITEM: { max = GetItemUpdateFieldMax(clientbuild); msg = string.Format(msgformat, "ItemUpdateFieldMax", currentcount, max, clientbuild); } break; case TypeID.TYPEID_CORPSE: { max = GetCorpseUpdateFieldMax(clientbuild); msg = string.Format(msgformat, "CorpseUpdateFieldMax", currentcount, max, clientbuild); } break; case TypeID.TYPEID_DYNAMICOBJECT: { max = GetDynamicObjectUpdateFieldMax(clientbuild); msg = string.Format(msgformat, "DynamicObjectUpdateFieldMax", currentcount, max, clientbuild); } break; case TypeID.TYPEID_GAMEOBJECT: { max = GetGameObjectUpdateFieldMax(clientbuild); msg = string.Format(msgformat, "GameObjectUpdateFieldMax", currentcount, max, clientbuild); } break; case TypeID.TYPEID_UNIT: case TypeID.TYPEID_PLAYER: { max = GetUnitUpdateFieldMax(clientbuild); msg = string.Format(msgformat, "UnitUpdateFieldMax", currentcount, max, clientbuild); } break; } return msg; }
public static uint GetUpdateFieldMax(TypeID typeid, ClientBuild clientbuild) { uint max = 7; switch (typeid) { //case TypeID.TYPEID_OBJECT: //case TypeID.TYPEID_AIGROUP: //case TypeID.TYPEID_AREATRIGGER: // { // max = 7; // } break; case TypeID.TYPEID_CONTAINER: case TypeID.TYPEID_ITEM: { max = GetItemUpdateFieldMax(clientbuild); } break; case TypeID.TYPEID_CORPSE: { max = GetCorpseUpdateFieldMax(clientbuild); } break; case TypeID.TYPEID_DYNAMICOBJECT: { max = GetDynamicObjectUpdateFieldMax(clientbuild); } break; case TypeID.TYPEID_GAMEOBJECT: { max = GetGameObjectUpdateFieldMax(clientbuild); } break; case TypeID.TYPEID_UNIT: case TypeID.TYPEID_PLAYER: { max = GetUnitUpdateFieldMax(clientbuild); } break; } return max; }
public static MaximusParserX.Reading.DefinitionBase GetDefinition(DefinitionContext context, ClientBuild clientbuild, string opcodename, uint opcode) { var obj = Type.GetType(string.Format("MaximusParserX.Parsing.Parsers.{0}_DEF", opcodename)); if (obj == null) { obj = Type.GetType("MaximusParserX.Parsing.Parsing.UnknownDef"); } if (obj != null) { var def = (DefinitionBase)Activator.CreateInstance(obj); def.Initialize(context); return def; } else { return null; } }
public static Type GetUnitUpdateFieldType(ClientBuild clientbuild) { return Type.GetType(string.Format("MaximusParserX.Parsing.Version.{0}.Enums.UnitUpdateFields", clientbuild)); }
public static string GetUnitUpdateFieldName(int index, ClientBuild clientbuild) { var name = Enum.GetName(GetUnitUpdateFieldType(clientbuild), index); return name; }
public static string GetItemUpdateFieldName(int index, ClientBuild clientbuild) { var name = Enum.GetName(Type.GetType(string.Format("MaximusParserX.Parsing.Version.{0}.Enums.ItemUpdateFields", clientbuild)), index); return name; }