/// <summary> /// Encodes this instance. /// </summary> public void Encode(ChecksumEncoder Stream) { Stream.EncodeLogicData(this.Data, 26); Stream.WriteVInt(this.Level); Stream.WriteVInt(this.CreateTime); Stream.WriteVInt(this.Count); Stream.WriteVInt(this.NewCount); Stream.WriteVInt(this.RecentUseCount); Stream.WriteBool(this.NewUpgrade); Stream.WriteBool(this.NewFlag); }
/// <summary> /// Decodes this instance. /// </summary> internal void Encode(ChecksumEncoder Packet) { Packet.EncodeLogicData(this._Data, 26); Packet.AddVInt(this._Level); Packet.AddVInt(this._CreateTime); Packet.AddVInt(this._Count); Packet.AddVInt(this._NewCount); Packet.AddVInt(this._RecentUseCount); Packet.AddBoolean(this._NewUpgrade); Packet.AddBoolean(this._NewFlag); }
/// <summary> /// Encodes this instance. /// </summary> internal override void Encode(ChecksumEncoder Packet) { base.Encode(Packet); Packet.AddVInt(1); Packet.EncodeData(this.SpellData); if (true) { Packet.AddBoolean(true); Packet.EncodeLogicData(this.SpellData, 26); Packet.AddVInt(1); } else { Packet.AddBoolean(false); } Packet.AddVInt(this.X); Packet.AddVInt(this.Y); }
/// <summary> /// Encodes this instance. /// </summary> internal void Encode(ChecksumEncoder Packet) { Packet.EncodeLogicData(CSV.Tables.Get(Gamefile.Location).GetWithInstanceID <LocationData>(2), 15); Packet.AddVInt(this.Players.Count); Packet.EncodeLogicData(null, 18); Packet.EncodeLogicData(CSV.Tables.Get(Gamefile.Arena).GetWithInstanceID <ArenaData>(1), 54); this.Players.ForEach(Player => { Packet.AddLogicLong(Player.HighID, Player.LowID); Packet.AddVInt(0); }); Packet.EncodeConstantSizeIntArray(new int[8], 8); { Packet.AddVInt(1); Packet.AddVInt(1); Packet.AddVInt(0); Packet.AddVInt(0); Packet.AddVInt(7); // EncodeLogicData (type=72) Packet.AddVInt(0); // EncodeLogicData (type=79) Packet.AddVInt(0); // EncodeLogicData (type=81) } Packet.AddBoolean(false); // isFinished Packet.AddBoolean(false); Packet.AddBoolean(false); Packet.AddBoolean(false); Packet.AddBoolean(false); // InExtraTime Packet.AddBoolean(false); // Live Packet.AddVInt(0); // Type Packet.AddVInt(0); Packet.AddVInt(0); // LogicGameObjectManager::encode(). { // Packet.EncodeConstantSizeIntArray(new int[7], 7); Packet.AddRange("00-B9-03-C7-7C-00-00-06-7A".HexaToBytes()); Packet.AddVInt(6); // Count Packet.AddRange("23-01-23-01-23-01-23-01-23-00-23-00".HexaToBytes()); Packet.AddRange("01-00-01-00-00-01".HexaToBytes()); // Is Enemy GameObject Packet.AddRange("05-00-05-01-05-02-05-03-05-04-05-05".HexaToBytes()); // ID Packet.AddRange("00-0D-A4-E2-01-9C-8E-03-00-00-7F-00-C0-7C-00-00-02-00-00-00-00-00".HexaToBytes()); Packet.AddRange("00-0D-AC-36-A4-65-00-00-7F-00-80-04-00-00-01-00-00-00-00-00".HexaToBytes()); Packet.AddRange("00-0D-AC-36-9C-8E-03-00-00-7F-00-C0-7C-00-00-01-00-00-00-00-00".HexaToBytes()); Packet.AddRange("00-0D-A4-E2-01-A4-65-00-00-7F-00-80-04-00-00-02-00-00-00-00-00".HexaToBytes()); Packet.AddRange("00-0D-A8-8C-01-B8-2E-00-00-7F-00-80-04-00-00-00-00-00-00-00".HexaToBytes()); Packet.AddRange("00-0C-00-00-05-00-00-00-00-00-7F-7F-7F-7F-7F-7F-7F-7F-00-00-00-00".HexaToBytes()); Packet.AddRange("00-0D-A8-8C-01-88-C5-03-00-00-7F-00-C0-7C-00-00-00-00-00-00-00".HexaToBytes()); Packet.AddRange("00-0D-04-07-7D-7E-01-04-05-06-01-00-00-7F-7F-00-01-04-00-00-00-00".HexaToBytes()); } Packet.AddRange("00-00-00-14-51-75-C3-AA-74-65-20-63-6F-6D-62-61-74-20-6D-69-72-6F-69-72-00-00-00-3A-50-61-72-74-69-63-69-70-65-7A-20-C3-A0-20-32-30-C2-A0-63-6F-6D-62-61-74-73-20-6D-69-72-6F-69-72-20-65-6E-20-6D-6F-64-65-20-31-63-31-2C-20-32-63-32-20-6F-75-20-64-C3-A9-66-69-00-00-00-08-73-63-2F-75-69-2E-73-63-00-00-00-16-71-75-65-73-74-5F-69-74-65-6D-5F-73-70-65-63-69-61-6C-5F-70-76-70-14-14-B8-12-00-00-01-00-00-00-1C-69-63-6F-6E-5F-71-75-65-73-74-5F-74-79-70-65-5F-73-70-65-63-69-61-6C-65-76-65-6E-74-01-05-00-14-94-01-00-00-00-00-11-00-00-00-00-05-00-00-00-00-00-7F-7F-7F-7F-7F-7F-7F-7F-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-B8-15-00-B8-15-00-B8-15-00-B8-15-00-A0-25-00-A0-25-00-00-00-00-00-00-00-00-A4-01-A4-01-00-00-00-00-00-00-00-00-A4-01-A4-01-00-00-00-00-00-00-00-00-A4-01-A4-01-00-00-00-00-00-00-00-00-A4-01-A4-01-00-00-00-00-00-00-00-00-A4-01-A4-01-00-00-00-00-00-00-00-00-A4-01-A4-01-00-FE-03-01-01-02-00-0E-00-8F-01-00-8E-01-00-04-00-0F-00-14-00-00-00-05-06-02-02-04-02-01-03-00-00-00-00-00-00-00-00".HexaToBytes()); }
/// <summary> /// Encodes this instance. /// </summary> public void EncodeAttack(ChecksumEncoder Stream) { Stream.EncodeLogicData(this.Data, 26); Stream.WriteVInt(this.Level); }
/// <summary> /// Encodes this instance. /// </summary> public void Encode(ChecksumEncoder Stream, Player Player) { Stream.EncodeLogicData(this.LocationData, 15); Stream.WriteVInt(this.PlayerCount); Stream.EncodeLogicData(this.NpcData, 48); Stream.EncodeLogicData(this.ArenaData, 54); for (int I = 0; I < this.PlayerCount; I++) { Stream.WriteLogicLong(this.Players[I].HighId, this.Players[I].LowId); Stream.WriteVInt(0); } Stream.EncodeConstantSizeIntArray(new int[8], 8); { Stream.WriteVInt(1); Stream.WriteVInt(1); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(7); // EncodeLogicData (type=72) Stream.WriteVInt(0); // EncodeLogicData (type=79) Stream.WriteVInt(0); // EncodeLogicData (type=81) } Stream.WriteBoolean(this.EndedCalled); Stream.WriteBoolean(this.EndedWithTimeOut); Stream.WriteBoolean(false); // ? Stream.WriteBoolean(false); // hasPlayerFinishedNpcLevel Stream.WriteBoolean(this.InOvertime); Stream.WriteBoolean(false); // Live Stream.WriteVInt(this.Type); Stream.WriteVInt(0); Stream.WriteVInt(0); { // LogicGameObjectManager::encode(). Stream.AddRange("00-B9-03-C7-7C-00-00-06-7A".HexaToBytes()); Stream.WriteVInt(6); // Count Stream.EncodeData(CsvFiles.Get(Gamefile.Buildings).GetWithInstanceId(1)); // PrincessTower Stream.EncodeData(CsvFiles.Get(Gamefile.Buildings).GetWithInstanceId(1)); // PrincessTower Stream.EncodeData(CsvFiles.Get(Gamefile.Buildings).GetWithInstanceId(1)); // PrincessTower Stream.EncodeData(CsvFiles.Get(Gamefile.Buildings).GetWithInstanceId(1)); // PrincessTower Stream.EncodeData(CsvFiles.Get(Gamefile.Buildings).GetWithInstanceId(0)); // KingTower Stream.EncodeData(CsvFiles.Get(Gamefile.Buildings).GetWithInstanceId(0)); // KingTower // Type (Enemy, etc...) Stream.WriteVInt(1); Stream.WriteVInt(0); Stream.WriteVInt(1); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(1); // ID (Like 500xxxxxx for CoC) Stream.AddRange("05-00".HexaToBytes()); Stream.AddRange("05-01".HexaToBytes()); Stream.AddRange("05-02".HexaToBytes()); Stream.AddRange("05-03".HexaToBytes()); Stream.AddRange("05-04".HexaToBytes()); Stream.AddRange("05-05".HexaToBytes()); // LogicGameObject::encode(): vInt, Vector2, vInt // GameObjectType: // 0: LogicDeco // 1: LogicSpawnPoint // 2: LogicAreaEffectObject // 3: LogicProjectile // 4: LogicCharacter Stream.AddRange("00-0D-A4-E2-01-9C-8E-03-00-00-7F-00-C0-7C-00-00-02-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode Stream.AddRange("00-0D-AC-36-A4-65-00-00-7F-00-80-04-00-00-01-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode Stream.AddRange("00-0D-AC-36-9C-8E-03-00-00-7F-00-C0-7C-00-00-01-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode Stream.AddRange("00-0D-A4-E2-01-A4-65-00-00-7F-00-80-04-00-00-02-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode if (this.Players[1] == Player) { Stream.AddRange("00-0D-A8-8C-01-B8-2E-00-00-7F-00-80-04-00-00-00-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode Stream.AddRange("0C-00-00-A0-9A-0C-00-00-00-00-00-7F-7F-7F-7F-7F-7F-7F-7F-00-00-00-00".HexaToBytes()); // LogicSummoner::encode // LogicSummoner::encode Stream.AddRange("00-0D-A8-8C-01-88-C5-03-00-00-7F-00-C0-7C-00-00-00-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode Stream.WriteBoolean(true); // HAS DECK Stream.WriteBoolean(false); // ? Stream.WriteBoolean(true); // AI ENABLED ? if (true) { // If HAS DECK Stream.WriteVInt(4); { // ByteStreamHelper::writeConstantSizeIntArray(4) Stream.WriteVInt(6); Stream.WriteVInt(-1); Stream.WriteVInt(-4); Stream.WriteVInt(-1); } Stream.WriteVInt(4); { // Count Stream.WriteVInt(3); Stream.WriteVInt(4); Stream.WriteVInt(2); Stream.WriteVInt(7); } Stream.WriteVInt(0); { // Same, Is Count } Stream.WriteVInt(-1); Stream.WriteVInt(-1); Stream.WriteVInt(0); if (Globals.QuestsEnabled) { Stream.WriteVInt(0); // Count // LogicQuestManager::encode() } } Stream.WriteVInt(0); Stream.WriteVInt(0); // MsBeforeStartRegenMana Stream.WriteVInt(5); // Mana Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); { // LogicSpellAIBlackboard::encode Stream.WriteVInt(0); Stream.WriteVInt(0); } for (int I = 0; I < 8; I++) { Stream.WriteVInt(-1); } Stream.WriteBoolean(false); { // ? } Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); } else { Stream.AddRange("00-0D-A8-8C-01-B8-2E-00-00-7F-00-80-04-00-00-00-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode Stream.WriteBoolean(true); // HAS DECK Stream.WriteBoolean(false); // ? Stream.WriteBoolean(true); // AI ENABLED ? if (true) { // If HAS DECK Stream.WriteVInt(4); { // ByteStreamHelper::writeConstantSizeIntArray(4) Stream.WriteVInt(6); // 6 = SpellDeck[6] Stream.WriteVInt(-1); // 6 - 1 = SpellDeck[6 - 1] Stream.WriteVInt(-4); // 6 - 1 - 4 = SpellDeck[6 - 1 - 4] Stream.WriteVInt(-1); // 6 - 1 - 4 - 1 = = SpellDeck[6 - 1 - 4 - 1] } Stream.WriteVInt(4); { // Spell Queue Count Stream.WriteVInt(3); Stream.WriteVInt(4); Stream.WriteVInt(2); Stream.WriteVInt(7); } Stream.WriteVInt(0); { // Spell Queue 2 Count } Stream.WriteVInt(-1); Stream.WriteVInt(-1); Stream.WriteVInt(0); if (Globals.QuestsEnabled) { Stream.WriteVInt(0); // Count // LogicQuestManager::encode() } } Stream.WriteVInt(0); Stream.WriteVInt(0); // MsBeforeStartRegenMana Stream.WriteVInt(5); // Mana Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); { // LogicSpellAIBlackboard::encode Stream.WriteVInt(0); Stream.WriteVInt(0); } for (int I = 0; I < 8; I++) { Stream.WriteVInt(-1); } Stream.WriteBoolean(false); { // ? } Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.AddRange("00-0D-A8-8C-01-88-C5-03-00-00-7F-00-C0-7C-00-00-00-00-00-00-00-00".HexaToBytes()); // LogicCharacter::encode Stream.AddRange("0C-00-00-A0-9A-0C-00-00-00-00-00-7F-7F-7F-7F-7F-7F-7F-7F-00-00-00-00".HexaToBytes()); // LogicSummoner::encode } // -- COMPONENT -- Stream.AddRange("00-00-00-00-00-00-00-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-00".HexaToBytes()); // LogicHitpointComponent Stream.AddRange("B8-15-00".HexaToBytes()); Stream.AddRange("B8-15-00".HexaToBytes()); Stream.AddRange("B8-15-00".HexaToBytes()); Stream.AddRange("B8-15-00".HexaToBytes()); Stream.AddRange("A0-25-00".HexaToBytes()); Stream.AddRange("A0-25-00".HexaToBytes()); // LogicCharacterBuffComponent Stream.AddRange("00-00-00-00-00-00-00-A4-01-A4-01-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-A4-01-A4-01-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-A4-01-A4-01-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-A4-01-A4-01-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-A4-01-A4-01-00".HexaToBytes()); Stream.AddRange("00-00-00-00-00-00-00-A4-01-A4-01-00".HexaToBytes()); } for (int I = 0; I < 2; I++) { if (this.Players[I] == Player) { Stream.WriteBoolean(true); this.Decks[I].EncodeAttack(Stream); break; } Stream.WriteBoolean(false); } Stream.AddRange("00-00-05-06-02-02-04-02-01-03-00-00-00-00-00-00-00-00".HexaToBytes()); }
/// <summary> /// Encodes in the specified stream. /// </summary> /// <param name="Stream">The stream.</param> /// <param name="BattleEncode">if set to <c>true</c> [battle encode].</param> public void Encode(ChecksumEncoder Stream, bool BattleEncode = false) { Stream.WriteLogicLong(this.HighId, this.LowId); // Avatar Stream.WriteLogicLong(this.HighId, this.LowId); // Account Stream.WriteLogicLong(this.HighId, this.LowId); // Home Stream.WriteString(this.Name); if (!BattleEncode) { Stream.WriteVInt(this.NameChangeState); } Stream.EncodeLogicData(this.Arena, 54); Stream.WriteVInt(this.Score); Stream.WriteVInt(0); Stream.WriteVInt(this.MaxScore); if (!BattleEncode) { Stream.WriteVInt(0); } Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); // 0x26 Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); this.CommoditySlots.Encode(Stream); if (!BattleEncode) { Stream.WriteVInt(this.Diamonds); Stream.WriteVInt(this.FreeDiamonds); Stream.WriteVInt(this.ExpPoints); Stream.WriteVInt(this.ExpLevel); Stream.WriteVInt(0); Stream.WriteBoolean(this.IsNameSet); Stream.WriteBoolean(false); // ? } else { Stream.WriteVInt(this.ExpLevel); } Stream.WriteBoolean(false); // ? Stream.WriteBoolean(this.IsInAlliance); if (this.IsInAlliance) { Stream.WriteLogicLong(this.ClanHighId, this.ClanLowId); Stream.WriteString(this.AllianceName); Stream.EncodeLogicData(this.Badge, 16); if (!BattleEncode) { Stream.WriteVInt(this.AllianceRole); } } Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteBool(false); Stream.WriteVInt(7); // Training Step Stream.WriteVInt(1); // 0x00 = Training || bool (?) Stream.WriteVInt(0); Stream.WriteVInt(0); Stream.WriteVInt(1); // bool (?) Stream.WriteVInt(0); }