--==<< JackBlonder's quest functions >>==-- --==<< Version 0.92 >>==-- --==<<====================================================>>==-- function AcceptQuestByName(_name) _name = _name or "all" local questToAccept = _name local questOnBoard local availableQuests repeat availableQuests = RoMScript("GetNumQuest(1)") until availableQuests -- Get number of available quests --printf("Number of available quests: %d\n",availableQuests) local i -- Accept all available quests if (questToAccept == "" or questToAccept == "all") then i = 1 repeat repeat repeat questOnBoard = RoMScript("GetQuestNameByIndex(1, "..i..")") until questOnBoard -- Get questname --printf("Questname / Index: %s \t %d\n",questOnBoard,i) RoMScript("OnClick_QuestListButton(1, "..i..")") -- Clicks the quest yrest(100) RoMScript("AcceptQuest()") -- Accepts the quest yrest(100) --printf("Queststatus: %s \n",getQuestStatus(questOnBoard)) until (getQuestStatus(questOnBoard)=="incomplete" or getQuestStatus(questOnBoard)=="complete") -- Try again if accepting didn't work printf("Quest accepted: %s\n",questOnBoard) i = i+1 until i > availableQuests -- Accept a quest by quest name else i = 1 repeat repeat questOnBoard = RoMScript("GetQuestNameByIndex(1, "..i..")") until questOnBoard -- Get questname local isQuest = compareQuestnames(questOnBoard,questToAccept) if (isQuest) then repeat RoMScript("OnClick_QuestListButton(1,"..i..")") -- Clicks the quest yrest(100) RoMScript("AcceptQuest()") -- Accepts the quest yrest(100) until (getQuestStatus(questOnBoard)=="incomplete" or getQuestStatus(questOnBoard)=="complete") -- Try again if accepting didn't work printf("Quest accepted: %s\n",questOnBoard) break elseif i==availableQuests then printf("Questname not found: %s\n",questToAccept) -- Quest not found end i = i + 1 until i > availableQuests end end function CompleteQuestByName(_name, _rewardnumber) _name = _name or "all" local questToComplete = _name local questOnBoard = "" local availableQuests repeat availableQuests = RoMScript("GetNumQuest(3)") until availableQuests~= nil --printf("Number of available quests: %d\n",availableQuests) local i -- Complete all available quests if (questToComplete == "" or questToComplete == "all") then i = 1 repeat repeat repeat questOnBoard = RoMScript("GetQuestNameByIndex(3, "..i..")") until questOnBoard -- Get questname RoMScript("OnClick_QuestListButton(3, "..i..")") -- Clicks the quest yrest(100) RoMScript("CompleteQuest()") -- Completes the quest yrest(100) until (getQuestStatus(questOnBoard)~="complete") printf("Quest completed: %s\n",questOnBoard) i = i + 1 until i > availableQuests -- Complete a quest by quest name else i = 1 repeat repeat questOnBoard = RoMScript("GetQuestNameByIndex(3, "..i..")") until questOnBoard -- Get questname --questOnBoard = normaliseString(questOnBoard) local isQuest = compareQuestnames(questOnBoard,questToComplete) if (isQuest) then repeat RoMScript("OnClick_QuestListButton(3,"..i..")") -- Clicks the quest yrest(100) if _rewardnumber then RoMScript("SpeakFrame_ClickQuestReward(SpeakQuestReward1_Item".._rewardnumber..")") yrest(100) end RoMScript("CompleteQuest()") -- Completes the quest yrest(100) until (getQuestStatus(questOnBoard)~="complete") printf("Quest completed: %s\n",questOnBoard) break elseif i==availableQuests then printf("Questname not found: %s\n",questToComplete) end i = i + 1 until i > availableQuests end end function AcceptAllQuests() AcceptQuestByName() end function CompleteAllQuests() CompleteQuestByName() end function normaliseString(_str) _str = string.gsub(_str, string.char(45), ".") -- Delete "-" in string _str = string.lower(_str) -- Lower case return _str end function compareQuestnames(_name, _string) local stringFound = false local rtn1, rtn2 _name = normaliseString(_name) --printf("_name: %s\n",_name) _string = normaliseString(_string) --printf("_string: %s\n",_string) rtn1, rtn2 = string.find(_name,_string) if (rtn1 ~= nil and rtn2 ~= nil) then --printf("rtn1: %d\t rtn2: %d\n",rtn1,rtn2) stringFound = true end return stringFound end function table.contains(table, element) for _, value in pairs(table) do if value == element then return true end end return false end