/// <summary> /// Sends the quest update add kill, this should actually cover both GameObject interaction /// together with killing the objectBase. /// </summary> /// <param name="quest">The QST.</param> /// <param name="chr">The client.</param> /// <param name="obj">The unit.</param> public static void SendUpdateInteractionCount(Quest quest, ObjectBase obj, QuestInteractionTemplate interaction, uint currentCount, Character chr) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.SMSG_QUESTUPDATE_ADD_KILL)) { packet.Write(quest.Template.Id); packet.Write(interaction.RawId); packet.Write(currentCount); packet.Write(interaction.Amount); packet.Write(obj != null ? obj.EntityId : EntityId.Zero); chr.Client.Send(packet, false); } }
/// <summary> /// Sends the quest update add kill, this should actually cover both GameObject interaction /// together with killing the objectBase. /// </summary> /// <param name="quest">The QST.</param> /// <param name="chr">The client.</param> /// <param name="obj">The unit.</param> public static void SendUpdateInteractionCount(Quest quest, ObjectBase obj, QuestInteractionTemplate interaction, uint currentCount, Character chr) { using (var pckt = new RealmPacketOut(RealmServerOpCode.SMSG_QUESTUPDATE_ADD_KILL)) { pckt.Write(quest.Template.Id); pckt.Write(interaction.RawId); // ID of interaction pckt.Write(currentCount); // current count pckt.Write(interaction.Amount); // total count pckt.Write(obj != null ? obj.EntityId : EntityId.Zero); // guid of object chr.Client.Send(pckt); } }
void UpdateInteractionCount(Quest quest, QuestInteractionTemplate interaction, WorldObject obj) { var count = quest.Interactions[interaction.Index]; if (count < interaction.Amount) { ++quest.Interactions[interaction.Index]; m_Owner.SetQuestCount(quest.Slot, interaction.Index, (byte)(count+1)); QuestHandler.SendUpdateInteractionCount(quest, obj, interaction, count+1, m_Owner); quest.UpdateStatus(); } //quest.Template.NotifyGOUsed(quest, go); }