public void Decode(ClientConnection pConnection, MaplePacket pPacket) { var v = pPacket.ReadByte(); // ? Running = new Dictionary<ushort, string>(); Done = new Dictionary<ushort, long>(); for (int i = pPacket.ReadShort(); i > 0; i--) { Running.Add(pPacket.ReadUShort(), pPacket.ReadString()); } if (v == 0) { for (int i = pPacket.ReadShort(); i > 0; i--) { pPacket.ReadShort(); // UNK lol } } for (int i = pPacket.ReadShort(); i > 0; i--) { pPacket.ReadString(); // 1NX1702337 pPacket.ReadString(); // '1' or '0 ' ?! } var hurr = pPacket.ReadByte(); // ? // ADDED IN v.128 !!!! for (int i = pPacket.ReadShort(); i > 0; i--) { // New method of creating dates... var id = pPacket.ReadUShort(); var date = pPacket.ReadUInt(); long ft = DecodeTimeFromInt(pConnection, date); if (!Done.ContainsKey(id)) Done.Add(id, ft); else pConnection.Logger_WriteLine("Duplicate Quest (Done): {0}", id); } if (hurr == 0) { for (int i = pPacket.ReadShort(); i > 0; i--) { Done.Add(pPacket.ReadUShort(), pPacket.ReadLong()); } } }
public void DecodePQDone(ClientConnection pConnection, MaplePacket pPacket) { PartyQuestsDone = new Dictionary<ushort, long>(); for (int i = pPacket.ReadShort(); i > 0; i--) { ushort id = pPacket.ReadUShort(); #if LOCALE_EMS var date = pPacket.ReadUInt(); long time = DecodeTimeFromInt(pConnection, date); #else long time = pPacket.ReadLong(); #endif if (!PartyQuestsDone.ContainsKey(id)) PartyQuestsDone.Add(id, time); else pConnection.Logger_WriteLine("Duplicate PQ (Done): {0}", id); } }
public override void Decode(ClientConnection pConnection, MaplePacket pPacket) { base.Decode(pConnection, pPacket); List<string> flagsList = new List<string>(); { { uint flag = pPacket.ReadUInt(); this.Slots = FlaggedValue(pConnection, this.ItemID, flag, 0x01, pPacket, this.Slots); this.Scrolls = FlaggedValue(pConnection, this.ItemID, flag, 0x02, pPacket, this.Scrolls); this.Str = FlaggedValue(pConnection, this.ItemID, flag, 0x04, pPacket, this.Str); this.Dex = FlaggedValue(pConnection, this.ItemID, flag, 0x08, pPacket, this.Dex); this.Int = FlaggedValue(pConnection, this.ItemID, flag, 0x10, pPacket, this.Int); this.Luk = FlaggedValue(pConnection, this.ItemID, flag, 0x20, pPacket, this.Luk); this.HP = FlaggedValue(pConnection, this.ItemID, flag, 0x40, pPacket, this.HP); this.MP = FlaggedValue(pConnection, this.ItemID, flag, 0x80, pPacket, this.MP); this.Watk = FlaggedValue(pConnection, this.ItemID, flag, 0x100, pPacket, this.Watk); this.Matk = FlaggedValue(pConnection, this.ItemID, flag, 0x200, pPacket, this.Matk); this.Wdef = FlaggedValue(pConnection, this.ItemID, flag, 0x400, pPacket, this.Wdef); this.Mdef = FlaggedValue(pConnection, this.ItemID, flag, 0x800, pPacket, this.Mdef); this.Acc = FlaggedValue(pConnection, this.ItemID, flag, 0x1000, pPacket, this.Acc); this.Avo = FlaggedValue(pConnection, this.ItemID, flag, 0x2000, pPacket, this.Avo); this.Hands = FlaggedValue(pConnection, this.ItemID, flag, 0x4000, pPacket, this.Hands); this.Speed = FlaggedValue(pConnection, this.ItemID, flag, 0x8000, pPacket, this.Speed); this.Jump = FlaggedValue(pConnection, this.ItemID, flag, 0x10000, pPacket, this.Jump); this.Flags = FlaggedValue(pConnection, this.ItemID, flag, 0x20000, pPacket, this.Flags); this.IncreasesSkills = FlaggedValue(pConnection, this.ItemID, flag, 0x40000, pPacket, this.IncreasesSkills); this.ItemLevel = FlaggedValue(pConnection, this.ItemID, flag, 0x80000, pPacket, this.ItemLevel); this.ItemEXP = FlaggedValue(pConnection, this.ItemID, flag, 0x100000, pPacket, this.ItemEXP); this.Durability = FlaggedValue(pConnection, this.ItemID, flag, 0x200000, pPacket, this.Durability); this.ViciousHammer = FlaggedValue(pConnection, this.ItemID, flag, 0x400000, pPacket, this.ViciousHammer); this.BattleModeDamage = FlaggedValue(pConnection, this.ItemID, flag, 0x800000, pPacket, this.BattleModeDamage); FlaggedValue(pConnection, this.ItemID, flag, 0x1000000, pPacket, (byte)0, true); // Item level changer? FlaggedValue(pConnection, this.ItemID, flag, 0x2000000, pPacket, (short)0, true); // Enhancement buff? FlaggedValue(pConnection, this.ItemID, flag, 0x4000000, pPacket, (int)0, true); FlaggedValue(pConnection, this.ItemID, flag, 0x8000000, pPacket, (byte)0, true); // Required level changer?! FlaggedValue(pConnection, this.ItemID, flag, 0x10000000, pPacket, (byte)0, true); // Yggdrasil Wisdom? FlaggedValue(pConnection, this.ItemID, flag, 0x20000000, pPacket, (byte)0, true); // Final Strike? FlaggedValue(pConnection, this.ItemID, flag, 0x40000000, pPacket, (byte)0, true); // Boss Damage %? FlaggedValue(pConnection, this.ItemID, flag, 0x80000000, pPacket, (byte)0, true); // Ignore Damage %? } { uint flag = pPacket.ReadUInt(); FlaggedValue(pConnection, this.ItemID, flag, 0x01, pPacket, (byte)0, true); // Total damage? FlaggedValue(pConnection, this.ItemID, flag, 0x02, pPacket, (byte)0, true); // All stats? this.MaxScissors = FlaggedValue(pConnection, this.ItemID, flag, 0x04, pPacket, this.MaxScissors); FlaggedValue(pConnection, this.ItemID, flag, 0x08, pPacket, (long)0, true); FlaggedValue(pConnection, this.ItemID, flag, 0x10, pPacket, (int)0, true); } } this.Name = pPacket.ReadString(); this.StatusFlags = pPacket.ReadUShort(); // Actually 2 bytes this.Potential1 = pPacket.ReadUShort(); this.Potential2 = pPacket.ReadUShort(); this.Potential3 = pPacket.ReadUShort(); this.Potential4 = pPacket.ReadUShort(); this.Potential5 = pPacket.ReadUShort(); this.Potential6 = pPacket.ReadUShort(); this.DisplayID = pPacket.ReadUShort(); #if LOCALE_GMS this.SocketState = pPacket.ReadUShort(); this.Nebulite1 = pPacket.ReadShort(); this.Nebulite2 = pPacket.ReadShort(); this.Nebulite3 = pPacket.ReadShort(); #else pPacket.ReadShort(); #endif if (CashID == 0) this.UniqueID = pPacket.ReadLong(); else this.UniqueID = 0; pPacket.ReadLong(); // Some weird expiration time pPacket.ReadInt(); // always -1? #if (LOCALE_EMS || LOCALE_GMS) // Prolly RED patch related pPacket.ReadLong(); pPacket.ReadLong(); // This is 94354848000000000; a default date for no expiration. pPacket.ReadInt(); for (int i = 0; i < 3; i++) pPacket.ReadInt(); #endif // Fix setflags if ((this.Flags & 0x80) == 0x80 && this.Name != "") { flagsList.Add("crafted"); } this.SetFlags = string.Join(",", flagsList); }