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: