public void Current_ChatBoxMessage(object sender, ChatTextInterceptEventArgs e) { try { if (e.Text.Equals("Quest list is empty.\n") || e.Text.Equals("The command \"myquests\" is not currently enabled on this server.\n")) { GettingQuests = false; Core.RenderFrame -= Core_RenderFrame; UIQuestListRefresh.Visible = true; ShouldEat = false; return; } if (QuestFlag.MyQuestRegex.IsMatch(e.Text)) { e.Eat = ShouldEat; GotFirstQuest = true; var questFlag = QuestFlag.FromMyQuestsLine(e.Text); if (questFlag != null) { QuestFlags[questFlag.Id] = questFlag; // UpdateQuestFlag(questFlag); } lastHeartbeat = DateTime.UtcNow; } } catch (Exception ex) { Logger.LogException(ex); } }
public void Init(TalkerData data) { base.Init(data); transform.position = GetData <TalkerData>().GetInfo <NPCInformation>().Position; flagAgent = ObjectPool.Get(MiscSettings.Instance.QuestFlagsPrefab, UIManager.Instance.QuestFlagParent); flagAgent.Init(this); if (iconHolder) { iconHolder.textToDisplay = GetMapIconName(); iconHolder.iconEvents.RemoveAllListner(); iconHolder.iconEvents.onFingerClick.AddListener(ShowNameAtMousePosition); iconHolder.iconEvents.onMouseEnter.AddListener(ShowNameAtMousePosition); iconHolder.iconEvents.onMouseExit.AddListener(HideNameImmediately); } }
public void Init() { if (!GameManager.Talkers.ContainsKey(TalkerID)) { GameManager.Talkers.Add(TalkerID, this); } else if (!GameManager.Talkers[TalkerID] || !GameManager.Talkers[TalkerID].gameObject) { GameManager.Talkers.Remove(TalkerID); GameManager.Talkers.Add(TalkerID, this); } else { Destroy(gameObject); } GameManager.TalkerDatas.TryGetValue(TalkerID, out TalkerData dataFound); if (!dataFound) { Data = new TalkerData(); if (Info.IsVendor) { Data.shop = Instantiate(Info.Shop); Data.shop.Init(); } else if (Info.IsWarehouseAgent) { Data.warehouse = new Warehouse(Info.Warehouse.size.Max); } Data.info = Info; Data.InitQuest(Info.QuestsStored); GameManager.TalkerDatas.Add(TalkerID, Data); } else { Data = dataFound; } Data.currentScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; Data.currentPosition = transform.position; if (Info.IsVendor && !ShopManager.Vendors.Contains(Data)) { ShopManager.Vendors.Add(Data); } flagAgent = ObjectPool.Get(QuestManager.Instance.QuestFlagsPrefab.gameObject, UIManager.Instance.QuestFlagParent).GetComponent <QuestFlag>(); flagAgent.Init(this); }
public string GetCommand(int entry, QuestMethod method, int level, int minLevel, QuestSort sort, QuestType type, int players, int[] factId, int[] factRep, int nextQuest, int xpId, int rewReqMoney, int rewMoneyMaxLvl, int rewSpell, int rewSpellCast, int rewHonor, float rewHonorBonus, int srcItemId, QuestFlag flags, int titleId, int reqPlayerKills, int bonusTalents, int bonusArenaPoints, int bonusUnk, int[] rewItemId, int[] rewItemCnt, int[] rewChoiceItemId, int[] rewChoiceItemCnt, int[] rewFactionId, int[] rewFactionIdx, int[] rewRepOverride, int pointMap, float pointX, float pointY, int pointOpt, string title, string objectives, string details, string endText, string returnText, KeyValuePair <int, bool>[] reqId, int[] reqCnt, int[] srcId, int[] srcCnt, int[] reqItemId, int[] reqItemCnt, string[] objectiveText) { var builder = new CommandBuilder("quest_template"); builder.AddColumnValue("entry", entry); builder.AddColumnValue("Method", (int)method); builder.AddColumnValue("ZoneOrSort", (int)sort); builder.AddColumnValue("SkillOrClass", 0); builder.AddColumnValue("MinLevel", minLevel); builder.AddColumnValue("QuestLevel", level); builder.AddColumnValue("Type", (int)type); builder.AddColumnValue("RequiredRaces", 0); builder.AddColumnValue("RequiredSkillValue", 0); builder.AddColumnValue("RepObjectiveFaction", factId[0]); builder.AddColumnValue("RepObjectiveValue", factRep[0]); if (SQLOutput.Format == SqlFormat.Trinity) { builder.AddColumnValue("RepObjectiveFaction2", factId[1]); builder.AddColumnValue("RepObjectiveValue2", factRep[1]); } builder.AddColumnValue("RequiredMinRepFaction", 0); builder.AddColumnValue("RequiredMinRepValue", 0); builder.AddColumnValue("RequiredMaxRepFaction", 0); builder.AddColumnValue("RequiredMaxRepValue", 0); builder.AddColumnValue("SuggestedPlayers", players); builder.AddColumnValue("LimitTime", 0); builder.AddColumnValue("QuestFlags", (int)flags); builder.AddColumnValue("SpecialFlags", 0); builder.AddColumnValue("CharTitleId", titleId); builder.AddColumnValue("PlayersSlain", reqPlayerKills); builder.AddColumnValue("BonusTalents", bonusTalents); if (SQLOutput.Format == SqlFormat.Trinity) { builder.AddColumnValue("BonusArenaPoints", bonusArenaPoints); } builder.AddColumnValue("PrevQuestId", 0); builder.AddColumnValue("NextQuestId", 0); builder.AddColumnValue("ExclusiveGroup", 0); builder.AddColumnValue("NextQuestInChain", nextQuest); builder.AddColumnValue("RewXPId", xpId); builder.AddColumnValue("SrcItemId", srcItemId); builder.AddColumnValue("SrcItemCount", 0); builder.AddColumnValue("SrcSpell", 0); builder.AddColumnValue("Title", title); builder.AddColumnValue("Details", details); builder.AddColumnValue("Objectives", objectives); builder.AddColumnValue("OfferRewardText", string.Empty); builder.AddColumnValue("RequestItemsText", string.Empty); builder.AddColumnValue("EndText", endText); builder.AddColumnValue("CompletedText", returnText); for (var i = 0; i < 4; i++) { builder.AddColumnValue("ObjectiveText" + (i + 1), objectiveText[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("ReqItemId" + (i + 1), reqItemId[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("ReqItemCount" + (i + 1), reqItemCnt[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("ReqSourceId" + (i + 1), srcId[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("ReqSourceCount" + (i + 1), srcCnt[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("ReqCreatureOrGOId" + (i + 1), reqId[i].Value ? -reqId[i].Key : reqId[i].Key); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("ReqCreatureOrGOCount" + (i + 1), reqCnt[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("ReqSpellCast" + (i + 1), 0); } for (var i = 0; i < 6; i++) { builder.AddColumnValue("RewChoiceItemId" + (i + 1), rewChoiceItemId[i]); } for (var i = 0; i < 6; i++) { builder.AddColumnValue("RewChoiceItemCount" + (i + 1), rewChoiceItemCnt[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("RewItemId" + (i + 1), rewItemId[i]); } for (var i = 0; i < 4; i++) { builder.AddColumnValue("RewItemCount" + (i + 1), rewItemCnt[i]); } for (var i = 0; i < 5; i++) { builder.AddColumnValue("RewRepFaction" + (i + 1), rewFactionId[i]); } for (var i = 0; i < 5; i++) { builder.AddColumnValue("RewRepValueId" + (i + 1), rewRepOverride[i]); } for (var i = 0; i < 5; i++) { builder.AddColumnValue("RewRepValue" + (i + 1), 0); } builder.AddColumnValue("RewHonorAddition", rewHonor); builder.AddColumnValue("RewHonorMultiplier", rewHonorBonus); if (SQLOutput.Format == SqlFormat.Trinity) { builder.AddColumnValue("unk0", bonusUnk); } builder.AddColumnValue("RewOrReqMoney", rewReqMoney); builder.AddColumnValue("RewMoneyMaxLevel", rewMoneyMaxLvl); builder.AddColumnValue("RewSpell", rewSpell); builder.AddColumnValue("RewSpellCast", rewSpellCast); builder.AddColumnValue("RewMailTemplateId", 0); builder.AddColumnValue("RewMailDelaySecs", 0); builder.AddColumnValue("PointMapId", pointMap); builder.AddColumnValue("PointX", pointX); builder.AddColumnValue("PointY", pointY); builder.AddColumnValue("PointOpt", pointOpt); for (var i = 0; i < 4; i++) { builder.AddColumnValue("DetailsEmote" + (i + 1), 0); } builder.AddColumnValue("IncompleteEmote", 0); builder.AddColumnValue("CompleteEmote", 0); for (var i = 0; i < 4; i++) { builder.AddColumnValue("OfferRewardEmote" + (i + 1), 0); } builder.AddColumnValue("StartScript", 0); builder.AddColumnValue("CompleteScript", 0); return(builder.BuildInsert(true)); }
private static void EnterCharacterToGameWorld(Client client, int accountId) { DataTable characterTable = DatabaseManager.ReturnQuery(string.Format("SELECT * FROM characters WHERE account_id='{0}'", accountId)); if (characterTable.Rows.Count > 0) { DataRow characterData = characterTable.Rows[0]; int characterId = (int)characterData["id"]; Player character = CharactersManager.CreatePlayer(); character.DatabaseId = characterId; client.SelectedCharacter = character; if (ServerManager.Instance.StatsManager.GetContainerForCharacter(client.SelectedCharacter.Id, out StatsContainer container)) { container.SetStat(StatType.NAME, (string)characterData["name"]); container.SetStat(StatType.LEVEL, (short)characterData["lvl"]); container.SetStat(StatType.RACE, (byte)characterData["race"]); container.SetStat(StatType.CLASS, (byte)characterData["ch_class"]); container.SetStat(StatType.POS_X, (short)characterData["pos_x"]); container.SetStat(StatType.POS_Z, (short)characterData["pos_z"]); container.SetStat(StatType.EXPERIENCE, (int)characterData["exp"]); container.SetStat(StatType.KINGDOM, (byte)characterData["kingdom"]); container.SetStat(StatType.GOLD, (int)characterData["gold"]); } Dictionary <ItemsContainerId, ItemsContainer> containers = ServerManager.Instance.ItemsManager.GetContainers(character.Id); DataTable itemsTable = DatabaseManager.ReturnQuery(string.Format("SELECT * FROM items WHERE owner_id='{0}'", character.DatabaseId)); for (int i = 0; i < itemsTable.Rows.Count; i++) { DataRow itemRow = itemsTable.Rows[i]; ItemsContainerId inventoryId = (ItemsContainerId)(byte)itemRow["inventory_id"]; containers[inventoryId].AddItem((int)itemRow["slot"], new ItemData() { uniqueId = (int)itemRow["id"], baseId = (int)itemRow["base_id"], amount = (int)itemRow["amount"], }); } client.BindEvents(); ServerManager.Instance.CharactersManager.AddCharacter(character); ServerManager.Instance.CharactersManager.clients.Add(character.Id, client); var questContainer = ServerManager.Instance.QuestFlags.GetContainer(character.Id); DataTable questFlagsTable = DatabaseManager.ReturnQuery(string.Format("SELECT * FROM quest_flags WHERE player_id='{0}'", character.DatabaseId)); for (int i = 0; i < questFlagsTable.Rows.Count; i++) { DataRow itemRow = questFlagsTable.Rows[i]; QuestFlag flag = new QuestFlag() { questName = (string)itemRow["quest_name"], flag = (string)itemRow["flag"], value = (int)itemRow["flag_val"], }; questContainer.SetQuestFlagInt(flag.questName, flag); } Dictionary <int, Character> table = ServerManager.Instance.CharactersManager.GetCharactersInRange <Character>(client.SelectedCharacter.Position, 50); //Send all characters foreach (var item in table) { Server.Instance.SendData(client.ip, new SpawnCharacterPacket(item.Value)); } //Acknowledge other clients foreach (var item in ServerManager.Instance.CharactersManager.GetClientsInRange(client.SelectedCharacter.Position, 50)) { Server.Instance.SendData(item.Value.ip, new SpawnCharacterPacket(client.SelectedCharacter)); } Packet packet = new Packet(); packet.writer.Write((byte)1); packet.writer.Write((int)client.SelectedCharacter.Id); packet.writer.Write((short)characterData["pos_x"]); packet.writer.Write((short)characterData["pos_z"]); packet.writer.Write((short)characterData["lvl"]); packet.writer.Write((int)characterData["exp"]); packet.writer.Write((int)characterData["gold"]); Server.Instance.SendData(client.ip, packet); foreach (var ic in containers) { Server.Instance.SendData(client.ip, new SyncInventoryPacket(ic.Value)); } } else { Server.Instance.SendData(client.ip, new CharacterSelectionPacket()); } }
public string GetCommand(int entry, QuestMethod method, int level, int minLevel, QuestSort sort, QuestType type, int players, int[] factId, int[] factRep, int nextQuest, int xpId, int rewReqMoney, int rewMoneyMaxLvl, int rewSpell, int rewSpellCast, int rewHonor, float rewHonorBonus, int srcItemId, QuestFlag flags, int titleId, int reqPlayerKills, int bonusTalents, int bonusArenaPoints, int bonusUnk, int[] rewItemId, int[] rewItemCnt, int[] rewChoiceItemId, int[] rewChoiceItemCnt, int[] rewFactionId, int[] rewFactionIdx, int[] rewRepOverride, int pointMap, float pointX, float pointY, int pointOpt, string title, string objectives, string details, string endText, string returnText, KeyValuePair<int, bool>[] reqId, int[] reqCnt, int[] srcId, int[] srcCnt, int[] reqItemId, int[] reqItemCnt, string[] objectiveText) { var builder = new CommandBuilder("quest_template"); builder.AddColumnValue("entry", entry); builder.AddColumnValue("Method", (int)method); builder.AddColumnValue("ZoneOrSort", (int)sort); builder.AddColumnValue("SkillOrClass", 0); builder.AddColumnValue("MinLevel", minLevel); builder.AddColumnValue("QuestLevel", level); builder.AddColumnValue("Type", (int)type); builder.AddColumnValue("RequiredRaces", 0); builder.AddColumnValue("RequiredSkillValue", 0); builder.AddColumnValue("RepObjectiveFaction", factId[0]); builder.AddColumnValue("RepObjectiveValue", factRep[0]); if (SQLOutput.Format == SqlFormat.Trinity) { builder.AddColumnValue("RepObjectiveFaction2", factId[1]); builder.AddColumnValue("RepObjectiveValue2", factRep[1]); } builder.AddColumnValue("RequiredMinRepFaction", 0); builder.AddColumnValue("RequiredMinRepValue", 0); builder.AddColumnValue("RequiredMaxRepFaction", 0); builder.AddColumnValue("RequiredMaxRepValue", 0); builder.AddColumnValue("SuggestedPlayers", players); builder.AddColumnValue("LimitTime", 0); builder.AddColumnValue("QuestFlags", (int)flags); builder.AddColumnValue("SpecialFlags", 0); builder.AddColumnValue("CharTitleId", titleId); builder.AddColumnValue("PlayersSlain", reqPlayerKills); builder.AddColumnValue("BonusTalents", bonusTalents); if (SQLOutput.Format == SqlFormat.Trinity) builder.AddColumnValue("BonusArenaPoints", bonusArenaPoints); builder.AddColumnValue("PrevQuestId", 0); builder.AddColumnValue("NextQuestId", 0); builder.AddColumnValue("ExclusiveGroup", 0); builder.AddColumnValue("NextQuestInChain", nextQuest); builder.AddColumnValue("RewXPId", xpId); builder.AddColumnValue("SrcItemId", srcItemId); builder.AddColumnValue("SrcItemCount", 0); builder.AddColumnValue("SrcSpell", 0); builder.AddColumnValue("Title", title); builder.AddColumnValue("Details", details); builder.AddColumnValue("Objectives", objectives); builder.AddColumnValue("OfferRewardText", string.Empty); builder.AddColumnValue("RequestItemsText", string.Empty); builder.AddColumnValue("EndText", endText); builder.AddColumnValue("CompletedText", returnText); for (var i = 0; i < 4; i++) builder.AddColumnValue("ObjectiveText" + (i + 1), objectiveText[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("ReqItemId" + (i + 1), reqItemId[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("ReqItemCount" + (i + 1), reqItemCnt[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("ReqSourceId" + (i + 1), srcId[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("ReqSourceCount" + (i + 1), srcCnt[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("ReqCreatureOrGOId" + (i + 1), reqId[i].Value ? -reqId[i].Key : reqId[i].Key); for (var i = 0; i < 4; i++) builder.AddColumnValue("ReqCreatureOrGOCount" + (i + 1), reqCnt[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("ReqSpellCast" + (i + 1), 0); for (var i = 0; i < 6; i++) builder.AddColumnValue("RewChoiceItemId" + (i + 1), rewChoiceItemId[i]); for (var i = 0; i < 6; i++) builder.AddColumnValue("RewChoiceItemCount" + (i + 1), rewChoiceItemCnt[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("RewItemId" + (i + 1), rewItemId[i]); for (var i = 0; i < 4; i++) builder.AddColumnValue("RewItemCount" + (i + 1), rewItemCnt[i]); for (var i = 0; i < 5; i++) builder.AddColumnValue("RewRepFaction" + (i + 1), rewFactionId[i]); for (var i = 0; i < 5; i++) builder.AddColumnValue("RewRepValueId" + (i + 1), rewRepOverride[i]); for (var i = 0; i < 5; i++) builder.AddColumnValue("RewRepValue" + (i + 1), 0); builder.AddColumnValue("RewHonorAddition", rewHonor); builder.AddColumnValue("RewHonorMultiplier", rewHonorBonus); if (SQLOutput.Format == SqlFormat.Trinity) builder.AddColumnValue("unk0", bonusUnk); builder.AddColumnValue("RewOrReqMoney", rewReqMoney); builder.AddColumnValue("RewMoneyMaxLevel", rewMoneyMaxLvl); builder.AddColumnValue("RewSpell", rewSpell); builder.AddColumnValue("RewSpellCast", rewSpellCast); builder.AddColumnValue("RewMailTemplateId", 0); builder.AddColumnValue("RewMailDelaySecs", 0); builder.AddColumnValue("PointMapId", pointMap); builder.AddColumnValue("PointX", pointX); builder.AddColumnValue("PointY", pointY); builder.AddColumnValue("PointOpt", pointOpt); for (var i = 0; i < 4; i++) builder.AddColumnValue("DetailsEmote" + (i + 1), 0); builder.AddColumnValue("IncompleteEmote", 0); builder.AddColumnValue("CompleteEmote", 0); for (var i = 0; i < 4; i++) builder.AddColumnValue("OfferRewardEmote" + (i + 1), 0); builder.AddColumnValue("StartScript", 0); builder.AddColumnValue("CompleteScript", 0); return builder.BuildInsert(true); }