function AcceptQuestByName(_name) _name = _name or "all" local questToAccept = _name questToAccept = normaliseString(questToAccept) local questOnBoard local availableQuests repeat availableQuests = RoMScript("GetNumQuest(1)") until availableQuests -- Get number of available quests local i -- Accept all available quests if (questToAccept == "" or questToAccept == "all") then --printf("Number of available quests: %d\n",availableQuests) for i = 1,availableQuests do repeat repeat questOnBoard = RoMScript("GetQuestNameByIndex(1, "..i..")") until questOnBoard -- Get questname questOnBoard = normaliseString(questOnBoard) --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) end -- Accept a quest by quest name else for i = 1,availableQuests do repeat questOnBoard = RoMScript("GetQuestNameByIndex(1, "..i..")") until questOnBoard -- Get questname questOnBoard = normaliseString(questOnBoard) 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 end end end function CompleteQuestByName(_name) _name = _name or "all" local questToComplete = _name questToComplete = normaliseString(questToComplete) local questOnBoard = "" local availableQuests repeat availableQuests = RoMScript("GetNumQuest(3)") until availableQuests~= nil local i -- Complete all available quests if (questToComplete == "" or questToComplete == "all") then for i = 1,availableQuests do 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) end -- Complete a quest by quest name else for i = 1,availableQuests do 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) 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 end end 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(_name1, _name2) local wordFound = false for wordInName1 in string.gfind(_name1, "%a+") do for wordInName2 in string.gfind(_name2, "%a+") do --printf("Word in _name1: %s\t Word in _name2: %s\n",wordInName1,wordInName2) if (wordInName1 == wordInName2) then wordFound = true break end end if (wordFound) then break end end return wordFound end function table.contains(table, element) for _, value in pairs(table) do if value == element then return true end end return false end