Пример #1
0
        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); }
        }
Пример #2
0
 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);
     }
 }
Пример #3
0
 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);
 }
Пример #4
0
        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));
        }
Пример #5
0
        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());
            }
        }
Пример #6
0
        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);
        }