public static void AddAvatarData(PacketWriter packet, Character chr, bool IsMegaphone = false) { packet.WriteByte(chr.mGender); packet.WriteByte(chr.mSkin); packet.WriteInt(chr.mFace); packet.WriteInt(chr.mPrimaryStats.Job); packet.WriteBool(IsMegaphone); packet.WriteInt(chr.mHair); AddEquipData(packet, chr); if (chr.mPrimaryStats.Job >= 3001 && chr.mPrimaryStats.Job <= 3112) // demon slayer packet.WriteInt(chr.mPrimaryStats.DemonSlayerAccessory); }
public static void AddCharacterEntry(PacketWriter packet, Character chr, bool IsNew = false, bool VAC = false) { AddPlayerStats(packet, chr); AddAvatarData(packet, chr); if (!VAC) packet.WriteByte(0); // >.< packet.WriteBool(!IsNew); if (!IsNew) { packet.WriteInt(chr.mWorldPos + 5); packet.WriteInt(chr.mWorldPos + 5 - chr.mWorldOldPos); packet.WriteInt(chr.mJobPos + 5); packet.WriteInt(chr.mJobPos + 5 - chr.mJobOldPos); } }
public static void AddEquipData(PacketWriter packet, Character chr) { foreach (KeyValuePair<sbyte, AbstractItem> pair in chr.mInventory[0]) { if (pair.Key < -100) continue; packet.WriteByte(Math.Abs(pair.Key)); packet.WriteInt(pair.Value.ItemId); } packet.WriteByte(-1); foreach (KeyValuePair<sbyte, AbstractItem> pair in chr.mInventory[0]) { if (pair.Key > -100) continue; packet.WriteByte(Math.Abs(pair.Key)); packet.WriteInt(pair.Value.ItemId); } packet.WriteByte(-1); packet.WriteInt(0); packet.WriteBool(chr.mPrimaryStats.Job / 100 == 23); // mercedes for (int i = 0; i < 3; ++i) packet.WriteInt(0); // pet itemid }
public static byte[] ViewAllCharacters(List<Character> characters) { PacketWriter packet = new PacketWriter(); packet.WriteOpcode(SendOps.ViewAllChar); packet.WriteByte(0x03); packet.WriteBool(false); return packet.ToArray(); /* if (characters.Count < 1) { packet.WriteByte(0x04); return packet.ToArray(); } packet.WriteByte(0x00); packet.WriteByte(0x00); // world id packet.WriteByte(characters.Count); for (int i = 0; i < characters.Count; ++i) { AddCharacterEntry(packet, characters[i], false, true); } packet.WriteByte(0x01); // pic return packet.ToArray();*/ }
public static byte[] PublicChatMessage(int cidfrom, string msg, bool whitebg, bool hide) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.PublicChatMsg); packet.WriteInt(cidfrom); packet.WriteBool(whitebg); packet.WriteMapleString(msg); packet.WriteBool(hide); return packet.ToArray(); }
public static byte[] UpdatePrimaryStat(Dictionary<PrimaryStat, int> stats, bool itemReaction = false, Character chr = null) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.SetTemporaryStat); packet.WriteBool(itemReaction); long mask = 0; foreach (var stat in stats) mask |= ((long)stat.Key); packet.WriteLong(mask); foreach (var stat in stats) switch (stat.Key) { case PrimaryStat.Null: break; default: packet.WriteInt(stat.Value); break; } if (mask == 0 && !itemReaction) packet.WriteByte(1); packet.WriteByte(0); packet.WriteByte(0); return packet.ToArray(); }
public static byte[] SetField(Client c, bool connecting = false) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.SetField); packet.WriteShort(2); packet.WriteInt(1); packet.WriteInt(0); packet.WriteInt(2); packet.WriteInt(0); packet.WriteInt(Program.mServer.ServerId); packet.WriteByte(0); packet.WriteInt(0); packet.WriteByte(1); packet.WriteInt(0); packet.WriteBool(connecting); if (!connecting) { packet.WriteInt(c.mCharacter.mField); packet.WriteByte(c.mCharacter.mFieldPosition); packet.WriteInt(c.mCharacter.mPrimaryStats.HP); packet.WriteByte(0); packet.WriteLong(c.mAccount.SessionID); packet.WriteInt(100); packet.WriteByte(0); packet.WriteByte(0); return packet.ToArray(); } packet.WriteShort(0); packet.WriteInt(unchecked((int)(0xF05A5CB3))); // rand packet.WriteInt(unchecked((int)(0xF05A5CB3))); // rand packet.WriteInt(unchecked((int)(0xF05A5CB3))); // rand ulong flagmask = (unchecked((ulong)-1)); flagmask = (flagmask & 0xFFFFFFFFF0FFFFFF) | ((ulong)0x01 << 24); flagmask = (flagmask & 0xFFFFFFF0FFFFFFFF) | ((ulong)0x0D << 32); flagmask = (flagmask & 0x0FFFFFFFFFFFFFFF) | ((ulong)0x01 << 60); packet.WriteLong(unchecked((long)flagmask)); // flags? packet.WriteByte(0); packet.WriteByte(0); packet.WriteInt(0); packet.WriteByte(0); Global.AddCharacterData(packet, c.mCharacter); packet.WriteByte(0x0A); // buddylist cap packet.WriteByte(0); // blessing of fairy packet.WriteByte(0); // blessing of empress packet.WriteByte(0); // ultimate explorer Global.AddInventoryData(packet, c.mCharacter); Global.AddSkillData(packet, c.mCharacter); Global.AddQuestData(packet, c.mCharacter); //Global.AddRingData(packet, c.mCharacter);//01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 packet.WriteShort(0); // rings...something like that ? packet.WriteShort(0); // rings...something like that ? packet.WriteShort(0); // rings...something like that ? packet.WriteShort(0); // rings...something like that ? //FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B FF C9 9A 3B Global.AddRockData(packet, c.mCharacter); //00 00 00 00 00 00 00 FF FF FF FF Global.AddMonsterBookData(packet, c.mCharacter); packet.WriteShort(0); packet.WriteShort(0); //AddPartyQuestData(packet, c.mCharacter); packet.WriteShort(0); packet.WriteShort(0); packet.WriteShort(0); for (int i = 0; i < 17; ++i) packet.WriteInt(0); packet.WriteInt(0); packet.WriteByte(1); packet.WriteShort(0); packet.WriteShort(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteInt(0); packet.WriteLong(0x1CD6E06D3A75370); packet.WriteInt(100); packet.WriteByte(0); packet.WriteByte(1); return packet.ToArray(); }
public static byte[] NpcEnterField(Npc npc, bool show = true) { var packet = new PacketWriter(); packet.WriteOpcode(SendOps.NpcEnterField); packet.WriteInt(npc.mObjectID); packet.WriteInt(npc.mID); packet.WriteShort(npc.mX); packet.WriteShort(npc.mCy); packet.WriteByte(Math.Abs(npc.mF - 1)); packet.WriteShort(npc.mFh); packet.WriteShort(npc.mRx0); packet.WriteShort(npc.mRx1); packet.WriteBool(show); // visible return packet.ToArray(); }