示例#1
0
 public static MabiPacket AcquireStat(MabiCreature creature, string statName, double amount)
 {
     var p = new MabiPacket(Op.AcquireInfo, creature.Id);
     p.PutString("<xml type='{0}' value='{1}' simple='true' onlyLog='false' />", statName, (uint)amount);
     p.PutInt(3000);
     return p;
 }
示例#2
0
        public override SkillResults Prepare(MabiCreature creature, MabiSkill skill, MabiPacket packet, uint castTime)
        {
            Send.Flash(creature);
            Send.SkillPrepare(creature.Client, creature, skill.Id, castTime);

            return SkillResults.Okay;
        }
示例#3
0
        /// <summary>
        /// Broadcasts pvp information for creature in range.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        public static void PvPInformation(MabiCreature creature)
        {
            var packet = new MabiPacket(Op.PvPInformation, creature.Id);
            packet.AddPvPInfo(creature);

            WorldManager.Instance.Broadcast(packet, SendTargets.Range, creature);
        }
示例#4
0
        public static void QuestUpdate(MabiCreature creature, MabiQuest quest)
        {
            var packet = new MabiPacket(Op.QuestUpdate, creature.Id);
            packet.AddQuestProgress(quest);

            creature.Client.Send(packet);
        }
示例#5
0
        /// <summary>
        /// Broadcasts pvp information for creature in region.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="region"></param>
        public static void PvPInformation(MabiCreature creature, uint region)
        {
            var packet = new MabiPacket(Op.PvPInformation, creature.Id);
            packet.AddPvPInfo(creature);

            WorldManager.Instance.BroadcastRegion(packet, region);
        }
示例#6
0
        public static void QuestNew(MabiPC character, MabiQuest quest)
        {
            var packet = new MabiPacket(Op.QuestNew, character.Id);
            packet.AddQuest(quest);

            character.Client.Send(packet);
        }
示例#7
0
        public static void CombatTargetSet(MabiCreature creature, MabiCreature target)
        {
            var packet = new MabiPacket(Op.CombatTargetSet, creature.Id);
            packet.PutLong(target != null ? target.Id : 0);

            WorldManager.Instance.Broadcast(packet, SendTargets.Range, creature);
        }
示例#8
0
 public static MabiPacket AcquireAp(MabiCreature creature, uint amount)
 {
     var p = new MabiPacket(Op.AcquireInfo, creature.Id);
     p.PutString("<xml type='ap' value='{0}' simple='true' onlyLog='false' />", amount);
     p.PutInt(3000);
     return p;
 }
示例#9
0
文件: Send.Item.cs 项目: pjm0616/aura
        public static void ItemUpdate(Client client, MabiCreature creature, MabiItem item)
        {
            var packet = new MabiPacket(Op.ItemUpdate, creature.Id);
            packet.AddItemInfo(item, ItemPacketType.Private);

            client.Send(packet);
        }
示例#10
0
        public override SkillResults Use(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            var targetId = packet.GetLong();
            var target = WorldManager.Instance.GetCreatureById(targetId);
            if (target == null)
                return SkillResults.InvalidTarget;

            if (creature != target && !WorldManager.InRange(creature, target, 1000))
                return SkillResults.OutOfRange;

            // Reduce Stamina equal to healing amount if a player
            // is using the skill on himself.
            if (creature == target && creature is MabiPC)
            {
                var amount = Math.Min(skill.RankInfo.Var1, creature.LifeInjured - creature.Life);
                if (creature.Stamina < amount)
                    return SkillResults.InsufficientStamina;

                creature.Stamina -= amount;
            }

            target.Life += skill.RankInfo.Var1;
            WorldManager.Instance.CreatureStatsUpdate(target);

            SkillHelper.DecStack(creature, skill);

            WorldManager.Instance.Broadcast(new MabiPacket(Op.Effect, creature.Id).PutInt(Effect.UseMagic).PutString("healing").PutLong(target.Id), SendTargets.Range, creature);
            WorldManager.Instance.Broadcast(new MabiPacket(Op.Effect, creature.Id).PutInt(Effect.StackUpdate).PutString("healing_stack").PutBytes(creature.ActiveSkillStacks, 0), SendTargets.Range, creature);

            SkillHelper.GiveSkillExp(creature, skill, 20);

            Send.SkillUse(creature.Client, creature, skill.Id, targetId);

            return SkillResults.Okay;
        }
示例#11
0
 public static MabiPacket AcquireExp(MabiCreature creature, uint amount)
 {
     var p = new MabiPacket(Op.AcquireInfo, creature.Id);
     p.PutString("<xml type='exp' value='{0}'/>", amount);
     p.PutInt(3000);
     return p;
 }
示例#12
0
 public static MabiPacket AcquireItem(MabiCreature creature, uint cls, uint amount)
 {
     var p = new MabiPacket(Op.AcquireInfo, creature.Id);
     p.PutString("<xml type='item' classid='{0}' value='{1}'/>", cls, amount);
     p.PutInt(3000);
     return p;
 }
示例#13
0
        /// <summary>
        /// Simple skill cancel.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        public static void SkillCancel(Client client, MabiCreature creature)
        {
            var packet = new MabiPacket(Op.SkillCancel, creature.Id);
            packet.PutBytes(0, 1);

            client.Send(packet);
        }
示例#14
0
        /// <summary>
        /// Sends GuildDonateR to creature's client.
        /// </summary>
        public static void GuildDonateR(MabiCreature creature, bool success)
        {
            var packet = new MabiPacket(Op.GuildDonateR, creature.Id);
            packet.PutByte(success);

            creature.Client.Send(packet);
        }
示例#15
0
        /// <summary>
        /// Sends ConvertGpConfirmR to creature's client.
        /// </summary>
        public static void ConvertGpConfirmR(MabiCreature creature, bool success)
        {
            var packet = new MabiPacket(Op.ConvertGpConfirmR, creature.Id);
            packet.PutByte(success);

            creature.Client.Send(packet);
        }
示例#16
0
        /// <summary>
        /// Plays sound in range of source.
        /// </summary>
        /// <param name="file">e.g. "data/sound/Glasgavelen_blowaway_endure.wav"</param>
        public static void PlaySound(string file, MabiEntity source)
        {
            var packet = new MabiPacket(Op.PlaySound, source.Id);
            packet.PutString(file);

            WorldManager.Instance.Broadcast(packet, SendTargets.Range, source);
        }
示例#17
0
        /// <summary>
        /// Sends Age Increase Packet
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        /// <param name="age"></param>
        public static void AgeIncrease(WorldClient client, MabiPC player, ushort age)
        {
            var p = new MabiPacket(Op.AgeIncrease, player.Id);
            p.PutShort(age);

            client.Send(p);
        }
示例#18
0
        /// <summary>
        /// Sends disconnect info response.
        /// </summary>
        /// <param name="client"></param>
        public static void DisconnectResponse(Client client)
        {
            var packet = new MabiPacket(Op.WorldDisconnectR, Id.World);
            packet.PutByte(0);

            client.Send(packet);
        }
示例#19
0
        public static void ChangesStance(MabiCreature creature, byte unk = 1)
        {
            var packet = new MabiPacket(Op.ChangesStance, creature.Id);
            packet.PutByte(creature.BattleState);
            packet.PutByte(unk);

            WorldManager.Instance.Broadcast(packet, SendTargets.Range, creature);
        }
示例#20
0
        /// <summary>
        /// Sends item box packet for fixed dyed item to client.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        /// <param name="itemId"></param>
        public static void AcquireDyedItem(Client client, MabiCreature creature, ulong itemId)
        {
            var packet = new MabiPacket(Op.AcquireInfo2, creature.Id);
            packet.PutString("<xml type='fixed_color_dyeing' objectid='{0}'/>", itemId);
            packet.PutInt(3000);

            client.Send(packet);
        }
示例#21
0
 public virtual void Close(WorldClient client, string message = "<end/>")
 {
     var p = new MabiPacket(Op.NPCTalkEndR, client.Character.Id);
     p.PutByte(1);
     p.PutLong(client.NPCSession.Target.Id);
     p.PutString(message);
     client.Send(p);
 }
示例#22
0
        public static void ChangeTitleResponse(Client client, MabiCreature creature, bool titleSuccess, bool optionTitleSuccess)
        {
            var packet = new MabiPacket(Op.ChangeTitleR, creature.Id);
            packet.PutByte(titleSuccess);
            packet.PutByte(optionTitleSuccess);

            client.Send(packet);
        }
示例#23
0
        public override SkillResults Complete(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            Send.SkillComplete(creature.Client, creature, skill.Id);
            if (creature.ActiveSkillStacks > 0)
                Send.SkillReady(creature.Client, creature, skill.Id);

            return SkillResults.Okay;
        }
示例#24
0
        /// <summary>
        /// Fixed dye complete
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        /// <param name="skillId"></param>
        /// <param name="part"></param>
        public static void DyeSkillComplete(Client client, MabiCreature creature, SkillConst skillId, uint part)
        {
            var packet = new MabiPacket(Op.SkillComplete, creature.Id);
            packet.PutShort((ushort)skillId);
            packet.PutInt(part);

            client.Send(packet);
        }
示例#25
0
        /// <summary>
        /// Sends ConvertGpR to creature's client.
        /// </summary>
        public static void ConvertGpR(MabiCreature creature, bool success, uint amount)
        {
            var packet = new MabiPacket(Op.ConvertGpR, creature.Id);
            packet.PutByte(success);
            packet.PutInt(amount);

            creature.Client.Send(packet);
        }
示例#26
0
        public override SkillResults Complete(MabiCreature creature, MabiSkill skill, MabiPacket packet)
        {
            creature.Client.Send(new MabiPacket(Op.CombatSetAimR, creature.Id).PutByte(0));

            Send.SkillComplete(creature.Client, creature, skill.Id);

            return SkillResults.Okay;
        }
示例#27
0
        public static void NPCTalkKeywordResponse(WorldClient client, bool success, string keyword)
        {
            var packet = new MabiPacket(Op.NPCTalkKeywordR, client.Character.Id);
            packet.PutByte(success);
            if (success)
                packet.PutString(keyword);

            client.Send(packet);
        }
示例#28
0
        public static void NPCTalkStartResponse(WorldClient client, bool success, ulong npcId)
        {
            var packet = new MabiPacket(Op.NPCTalkStartR, client.Character.Id);
            packet.PutByte(success);
            if (success)
                packet.PutLong(npcId);

            client.Send(packet);
        }
示例#29
0
        public static void ConfirmMailRecipentResponse(WorldClient client, bool success, ulong recipientId)
        {
            var packet = new MabiPacket(Op.ConfirmMailRecipentR, client.Character.Id);
            packet.PutByte(success);
            if (success)
                packet.PutLong(recipientId);

            client.Send(packet);
        }
示例#30
0
        public static void GetMailsResponse(WorldClient client, IEnumerable<MabiMail> mails)
        {
            var p = new MabiPacket(Op.GetMailsR, client.Character.Id);
            foreach (var mail in mails)
                p.Add(mail);
            p.PutLong(0);

            client.Send(p);
        }
示例#31
0
    public override void Start()
    {
        stop = false;

        Thread t = null;

        t = new Thread(() =>
        {
            for (int i = 15; i < 2000; ++i)             // 2521
            {
                if (stop)
                {
                    i = 2175;
                }
                if (i > 2175)
                {
                    break;
                }

                var url       = string.Format("http://localhost/aura/visualchat/img/chat_20131005_00{0}_Zerono.png", i.ToString().PadLeft(4, '0'));
                ushort width  = 170;
                ushort height = 96;

                var p = new MabiPacket(Op.VisualChat, NPC.Id);
                p.PutString(NPC.Name);
                p.PutString(url);
                p.PutShorts(width, height);
                p.PutByte(0);
                WorldManager.Instance.Broadcast(p, SendTargets.Range, NPC);

                Thread.Sleep(100);

                // skip 1, 5fps
                Thread.Sleep(100);
                i++;
            }

            GC.KeepAlive(t);
        });
        t.Start();
    }