public static void Process(ReceivablePacket packet) { // Server information. long objectId = packet.ReadLong(); CharacterDataHolder npcTemplate = NpcData.GetNpc(packet.ReadInt()); CharacterDataHolder characterData = new CharacterDataHolder(); characterData.SetX(packet.ReadFloat()); characterData.SetY(packet.ReadFloat()); characterData.SetZ(packet.ReadFloat()); characterData.SetHeading(packet.ReadFloat()); characterData.SetCurrentHp(packet.ReadLong()); // Client information. characterData.SetName(npcTemplate.GetName()); characterData.SetRace(npcTemplate.GetRace()); characterData.SetHeight(npcTemplate.GetHeight()); characterData.SetBelly(npcTemplate.GetBelly());; characterData.SetHairType(npcTemplate.GetHairType()); characterData.SetHairColor(npcTemplate.GetHairColor()); characterData.SetSkinColor(npcTemplate.GetSkinColor()); characterData.SetEyeColor(npcTemplate.GetEyeColor()); characterData.SetHeadItem(npcTemplate.GetHeadItem()); characterData.SetChestItem(npcTemplate.GetChestItem()); characterData.SetLegsItem(npcTemplate.GetLegsItem()); characterData.SetHandsItem(npcTemplate.GetHandsItem()); characterData.SetFeetItem(npcTemplate.GetFeetItem()); characterData.SetLeftHandItem(npcTemplate.GetLeftHandItem()); characterData.SetRightHandItem(npcTemplate.GetRightHandItem()); characterData.SetMaxHp(npcTemplate.GetMaxHp()); characterData.SetTargetable(npcTemplate.IsTargetable()); WorldManager.Instance.UpdateObject(objectId, characterData); }
public void ShowQuestInfo(Quest quest) { // Show Quest Info Panel questWindow.gameObject.SetActive(true); // Show or Hide accept button dependinig on "do we have this quest?". questWindow.Find("Accept Button").gameObject.SetActive(!Character.activeQuests.ContainsKey(quest.id)); // Remove previous functions from the Accept Button questWindow.Find("Accept Button").GetComponent <Button>().onClick.RemoveAllListeners(); // Set functions on Accept Button questWindow.Find("Accept Button").GetComponent <Button>().onClick.AddListener(() => { Character.AddQuest(quest.id); questWindow.gameObject.SetActive(false); ShowActiveQuests(); }); questWindow.Find("Quest Name").GetComponent <TextMeshProUGUI>().text = quest.questName; questWindow.Find("Quest Name").GetComponent <TextMeshProUGUI>().text = questWindow.Find("Quest Name").GetComponent <TextMeshProUGUI>().text.Replace("[NpcName]", "<color=yellow>" + NpcName + "</color>"); TextMeshProUGUI textMesh = questWindow.Find("Quest Description").GetComponent <TextMeshProUGUI>(); textMesh.text = quest.questDescription; textMesh.text = textMesh.text.Replace("[CharacterName]", "<color=green>" + MainManager.Instance.selectedCharacterData.GetName() + "</color>"); textMesh.text = textMesh.text.Replace("[NpcName]", "<color=yellow>" + NpcName + "</color>"); // TASK string taskString = "Task:\n"; if (quest.task.kills != null) { int killIndex = 0; foreach (Quest.QuestKill qk in quest.task.kills) { // Current kills in zero when we haven't taken the quest int currentKills = 0; if (Character.activeQuests.ContainsKey(qk.id) && Character.monstersKilled.ContainsKey(qk.id)) { // if we are showing the info during the progress of the quest (we took it already) show the progress currentKills = Character.monstersKilled[qk.id].amount - Character.activeQuests[quest.id].kills[killIndex].initialAmount; } taskString += "Kill " + (currentKills) + " / " + qk.amount + " " + MonsterDatabase.monsters[qk.id] + "\n"; killIndex++; } } if (quest.task.items != null) { foreach (Quest.QuestItem qi in quest.task.items) { taskString += "Bring " + qi.amount + " x " + ItemData.itemDB[qi.id].ItemName + ".\n"; } } if (quest.task.talkTo != null) { foreach (int id in quest.task.talkTo) { taskString += "Go and talk with " + "<color=yellow>" + NpcData.GetNpc(id).GetName() + "</color>\n"; } } questWindow.Find("Quest Task").GetComponent <TextMeshProUGUI>().text = taskString; // REWARD string rewardString = "Reward:\n"; if (quest.reward.items != null) { foreach (Quest.QuestItem qi in quest.reward.items) { rewardString += qi.amount + " x " + ItemData.itemDB[qi.id].ItemName + "\n"; } } questWindow.Find("Quest Reward").GetComponent <TextMeshProUGUI>().text = rewardString; }