• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Task system error script grizzly adams no pay reward why help my :D

contras

New Member
Joined
Dec 19, 2017
Messages
3
Reaction score
2
Lua:
local tasks = {
   [1] = {questStarted = 1510, questStorage = 65000, killsRequired = 1, raceName = "Carniphilas", rewards = {first = {enable = true, type = "exp", values = 50000000}, second = {enable = true, type = "money", values = 20000000}, third = {enable = true, type = "storage", values = {16693, 1}}}},
   [2] = {questStarted = 1511, questStorage = 65001, killsRequired = 2000, raceName = "Minotaurs", rewards = {first = {enable = true, type = "exp", values = 100000}, second = {enable = true, type = "money", values = 40000}, third = {enable = true, type = "storage", values = {16696, 1}}}},
   [3] = {questStarted = 1512, questStorage = 65002, killsRequired = 1500, raceName = "Pirates", rewards = {first = {enable = true, type = "exp", values = 200000}, second = {enable = true, type = "money", values = 50000}, third = {enable = true, type = "storage", values = {16710, 1}}}},
   [4] = {questStarted = 1513, questStorage = 65003, killsRequired = 1000, raceName = "Magicians", rewards = {first = {enable = true, type = "exp", values = 500000}, second = {enable = true, type = "money", values = 60000}, third = {enable = true, type = "storage", values = {16721, 1}}}},
   [5] = {questStarted = 1514, questStorage = 65004, killsRequired = 1000, raceName = "Dragons", rewards = {first = {enable = true, type = "exp", values = 800000}, second = {enable = true, type = "money", values = 80000}, third = {enable = true, type = "storage", values = {16730, 1}}}},
   [6] = {questStarted = 1515, questStorage = 65005, killsRequired = 1, raceName = "Serpents", rewards = {first = {enable = true, type = "exp", values = 1000000000}, second = {enable = true, type = "money", values = 100000000}, third = {enable = true, type = "storage", values = {16751, 1}}}},
   [7] = {questStarted = 1516, questStorage = 65006, killsRequired = 1, raceName = "Demons", rewards = {{enable = true, type = "storage", values = {16345, 1}}}}
}

local rankStorage = 32150
local choose = {}

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
local voc = {}

function onCreatureAppear(cid) npcHandler:eek:nCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:eek:nCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:eek:nCreatureSay(cid, type, msg) end
function onThink() npcHandler:eek:nThink() end

function creatureSayCallback(cid, type, msg)

   if(not npcHandler:isFocused(cid)) then
       return false
   end
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid
   if msgcontains(msg, "task") then
       selfSay("There you can see the following tasks, please tell me the number of the task that you want to do.", cid)
       local text = "Number - Name"
       for i = 1, table.maxn(tasks) do
           text = text .. "\n" .. i .. " - " .. tasks.raceName .. (getCreatureStorage(cid, tasks.questStarted) == 2 and " [Done]" or "")
       end
       doShowTextDialog(cid, 5956, text)
   elseif tasks[tonumber(msg)] then
       msg = tonumber(msg)
       if getCreatureStorage(cid, tasks[msg].questStarted) == 1 then
           selfSay("You are already making this task.", cid)
           talkState[talkUser] = 0
           return true
       end
       if getCreatureStorage(cid, tasks[msg].questStarted) == 2 then
           selfSay("You already finished this task.", cid)
           talkState[talkUser] = 0
           return true
       end
       if tasks[msg].level and getPlayerLevel(cid) < tasks[msg].level then
           selfSay("You need level " .. tasks[msg].level .. " or higher to make this task.", cid)
           talkState[talkUser] = 0
           return true
       end
       for k, v in pairs(tasks) do
           if getCreatureStorage(cid, v.questStarted) == 1 and tasks[msg] ~= k then
               selfSay("You are already making a task.", cid)
               talkState[talkUser] = 0
               return true
           end
       end
       selfSay("Are you sure that do you want to start the task number " .. msg .. "?. In this task you will need to defeat " .. tasks[msg].killsRequired .. " " .. tasks[msg].raceName .. ".", cid)
       choose[cid] = msg
       talkState[talkUser] = 1
   elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
       doCreatureSetStorage(cid, tasks[choose[cid]].questStarted, 1)
       selfSay("You have started the task number " .. choose[cid] .. ", remember... in this task you will need to defeat " .. tasks[choose[cid]].killsRequired .. " " .. tasks[choose[cid]].raceName .. ". Good luck!", cid)
       talkState[talkUser] = 0
   elseif msgcontains(msg, "report") then
       for k, v in pairs(tasks) do
           if getCreatureStorage(cid, v.questStarted) == 1 then
               if getCreatureStorage(cid, v.questStorage) >= v.killsRequired then
                   for i = 1, table.maxn(v.rewards) do
                       if(v.rewards.enable) then
                           if isInArray({"boss", "teleport", 1}, v.rewards.type) then
                               doTeleportThing(cid, v.rewards.values)
                           elseif isInArray({"exp", "experience", 2}, v.rewards.type) then
                               doPlayerAddExperience(cid, v.rewards.values)
                           elseif isInArray({"item", 3}, v.rewards.type) then
                               doPlayerAddItem(cid, v.rewards.values[1], v.rewards.values[2])
                           elseif isInArray({"money", 4}, v.rewards.type) then
                               doPlayerAddMoney(cid, v.rewards.values)
                           elseif isInArray({"storage", "stor", 5}, v.rewards.type) then
                               doCreatureSetStorage(cid, v.rewards.values[1], v.rewards.values[2])
                           elseif isInArray({"points", "rank", 2}, v.rewards.type) then
                               doCreatureSetStorage(cid, rankStorage, getCreatureStorage(cid, rankStorage) + v.rewards.values)
                           else
                               print("[Warning - Error::Killing in the name of::Tasks config] Bad reward type: " .. v.rewards.type .. ", reward could not be loaded.")
                           end
                       end
                   end
                   local rank = getCreatureStorage(cid, rankStorage)
                   selfSay("Great!... you have finished the task number " .. k .. "" .. (rank > 4 and ", you are a " or "") .. "" .. (((rank > 4 and rank < 10) and ("Huntsman") or (rank > 9 and rank < 20) and ("Ranger") or (rank > 19 and rank < 30) and ("Big Game Hunter") or (rank > 29 and rank < 50) and ("Trophy Hunter") or (rank > 49) and ("Elite Hunter")) or "") .. ". Good job.", cid)
                   doCreatureSetStorage(cid, v.questStarted, 2)
                   break
               else
                   if getCreatureStorage(cid, v.questStorage) < 0 then
                       doCreatureSetStorage(cid, v.questStorage, 0)
                   end
                   selfSay("Current " .. getCreatureStorage(cid, v.questStorage) .. " " .. v.raceName .. " killed, you need to kill " .. v.killsRequired .. ".", cid)
                   break
               end
           end
       end
   end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
Last edited by a moderator:
Back
Top