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; }
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; }
/// <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); }
public static void QuestUpdate(MabiCreature creature, MabiQuest quest) { var packet = new MabiPacket(Op.QuestUpdate, creature.Id); packet.AddQuestProgress(quest); creature.Client.Send(packet); }
/// <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); }
public static void QuestNew(MabiPC character, MabiQuest quest) { var packet = new MabiPacket(Op.QuestNew, character.Id); packet.AddQuest(quest); character.Client.Send(packet); }
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); }
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; }
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); }
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; }
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; }
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; }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
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); }
/// <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); }
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); }
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); }
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; }
/// <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); }
/// <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); }
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; }
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); }
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); }
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); }
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); }
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(); }