Example #1
0
 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);
 }
Example #2
0
 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);
     }
 }
Example #3
0
 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
 }
Example #4
0
        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();*/
        }
Example #5
0
 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();
 }
Example #6
0
 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();
 }
Example #7
0
        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();
        }
Example #8
0
 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();
 }