Beispiel #1
0
        /// <summary>
        /// Sends DyePickColorR to creature's client.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="success"></param>
        public static void DyePickColorR(MabiCreature creature, bool success)
        {
            var packet = new MabiPacket(Op.DyePickColorR, creature.Id);
            packet.PutByte(success);
            if (success)
                packet.PutBin(creature.Temp.DyeCursors);

            creature.Client.Send(packet);
        }
Beispiel #2
0
 protected void SendScript(WorldClient client, string xml)
 {
     var p = new MabiPacket(Op.NPCTalk, client.Character.Id);
     p.PutString(xml);
     p.PutBin(new byte[] { 0 });
     client.Send(p);
 }
Beispiel #3
0
        public static void CutsceneStart(WorldClient client, MabiCutscene cutscene)
        {
            var p = new MabiPacket(Op.CutsceneStart, Id.World);
            p.PutLongs(client.Character.Id, cutscene.Leader.Id);
            p.PutString(cutscene.Name);
            p.PutSInt(cutscene.Actors.Count);
            foreach (var a in cutscene.Actors)
            {
                p.PutString(a.Item1);
                p.PutShort((ushort)a.Item2.Length);
                p.PutBin(a.Item2);
            }
            p.PutInt(1);
            p.PutLong(client.Character.Id);

            client.Send(p);
        }
Beispiel #4
0
        public static void EntitiesAppear(Client client, IEnumerable<MabiEntity> entities)
        {
            var packet = new MabiPacket(Op.EntitiesAppear, Id.Broadcast);

            packet.PutShort((ushort)entities.Count());
            foreach (var entity in entities)
            {
                var data = new MabiPacket(0, 0);
                data.AddPublicEntityInfo(entity);
                var dataBytes = data.Build(false);

                packet.PutShort(entity.DataType);
                packet.PutInt((uint)dataBytes.Length);
                packet.PutBin(dataBytes);
            }

            client.Send(packet);
        }
Beispiel #5
0
        public static void EquipmentChanged(MabiCreature creature, MabiItem item)
        {
            var packet = new MabiPacket(Op.EquipmentChanged, creature.Id);
            packet.PutBin(item.Info);
            packet.PutByte(1);

            WorldManager.Instance.Broadcast(packet, SendTargets.Range, creature);

            WorldManager.Instance.CreatureStatsUpdate(creature);
        }
Beispiel #6
0
        public static void SkillRankUp(Client client, MabiCreature creature, MabiSkill skill)
        {
            var packet = new MabiPacket(Op.SkillRankUp, creature.Id);
            packet.PutByte(1);
            packet.PutBin(skill.Info);
            packet.PutFloat(0);

            client.Send(packet);
        }
Beispiel #7
0
        public static void SkillInfo(Client client, MabiCreature creature, MabiSkill skill)
        {
            var packet = new MabiPacket(Op.SkillInfo, creature.Id);
            packet.PutBin(skill.Info);

            client.Send(packet);
        }
Beispiel #8
0
        /// <summary>
        /// Sends character info. 
        /// </summary>
        /// <param name="client"></param>
        /// <param name="character"></param>
        public static void CharacterInfo(LoginClient client, uint op, Character character, IEnumerable<Item> items)
        {
            var packet = new MabiPacket(op, Id.Login);
            if (character != null)
            {
                packet.PutByte(true);
                packet.PutString(character.Server);
                packet.PutLong(character.Id);
                packet.PutByte(1);
                packet.PutString(character.Name);
                packet.PutString("");
                packet.PutString("");
                packet.PutInt(character.Race);
                packet.PutByte(character.SkinColor);
                packet.PutByte(character.Eye);
                packet.PutByte(character.EyeColor);
                packet.PutByte(character.Mouth);
                packet.PutInt(0);
                packet.PutFloat(character.Height);
                packet.PutFloat(character.Weight);
                packet.PutFloat(character.Upper);
                packet.PutFloat(character.Lower);
                packet.PutInt(0);
                packet.PutInt(0);
                packet.PutInt(0);
                packet.PutByte(0);
                packet.PutInt(0);
                packet.PutByte(0);
                packet.PutInt(character.Color1);
                packet.PutInt(character.Color2);
                packet.PutInt(character.Color3);
                packet.PutFloat(0.0f);
                packet.PutString("");
                packet.PutFloat(49.0f);
                packet.PutFloat(49.0f);
                packet.PutFloat(0.0f);
                packet.PutFloat(49.0f);
                packet.PutInt(0);
                packet.PutInt(0);
                packet.PutShort(0);
                packet.PutLong(0);
                packet.PutString("");
                packet.PutByte(0);

                packet.PutSInt(items.Count());
                foreach (var item in items)
                {
                    packet.PutLong(item.Id);
                    packet.PutBin(item.Info);
                }

                packet.PutInt(0);  // PetRemainingTime
                packet.PutLong(0); // PetLastTime
                packet.PutLong(0); // PetExpireTime
            }
            else
            {
                packet.PutByte(false);
            }

            client.Send(packet);
        }