Beispiel #1
0
        public static void SendPlayerBuffed(Character chr, BuffValueTypes pBuffs, short delay = 0)
        {
            Packet pw = new Packet(ServerMessages.GIVE_FOREIGN_BUFF);

            pw.WriteInt(chr.ID);
            BuffPacket.AddMapBuffValues(chr, pw, pBuffs);
            pw.WriteShort(delay); // the delay. usually 0, but is carried on through OnStatChangeByMobSkill / DoActiveSkill_(Admin/Party/Self)StatChange

            chr.Field.SendPacket(chr, pw, chr);
        }
Beispiel #2
0
        public static void SendCharacterEnterPacket(Character player, Character victim)
        {
            Packet pw = new Packet(ServerMessages.USER_ENTER_FIELD);

            pw.WriteInt(player.ID);

            pw.WriteString(player.Name);

            BuffPacket.AddMapBuffValues(player, pw);

            PacketHelper.AddAvatar(pw, player);

            pw.WriteInt(player.GetSpawnedPet()?.ItemID ?? 0);
            pw.WriteInt(player.Inventory.ActiveItemID);
            pw.WriteInt(player.Inventory.ChocoCount);
            pw.WriteShort(player.Position.X);
            pw.WriteShort(player.Position.Y);
            pw.WriteByte(player.Stance);
            pw.WriteShort(player.Foothold);
            pw.WriteBool(player.IsGM && !player.Undercover);

            var petItem = player.GetSpawnedPet();

            pw.WriteBool(petItem != null);
            if (petItem != null)
            {
                pw.WriteInt(petItem.ItemID);
                pw.WriteString(petItem.Name);
                pw.WriteLong(petItem.CashId);
                var ml = petItem.MovableLife;
                pw.WriteShort(ml.Position.X);
                pw.WriteShort(ml.Position.Y);
                pw.WriteByte(ml.Stance);
                pw.WriteShort(ml.Foothold);
            }

            // Mini Game & Player Shops
            pw.WriteByte(0); // Hardcoded end of minigame & player shops until implemented

            //Rings
            pw.WriteByte(0); // Number of Rings, hardcoded 0 until implemented.

            //Ring packet structure

            /**
             * for (Ring ring in player.Rings()) {
             *  pw.WriteLong(ring.getRingId()); // R
             *  pw.WriteLong(ring.getPartnerRingId());
             *  pw.WriteInt(ring.getItemId());
             * }
             */
            victim.SendPacket(pw);
        }