local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
local xmsg = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function greet(cid)
talkState[cid] = 0
return true
end
function getNpcName()
return getCreatureName(getNpcId())
end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local tasks = {
[1] = {storage = 45003, name = "wasps"},
[2] = {storage = 45005, name = "trolls"},
[3] = {storage = 45007, name = "goblins"},
[4] = {storage = 45009, name = "slimes"},
[5] = {storage = 45011, name = "rotworms"},
[6] = {storage = 45013, name = "amazons"},
[7] = {storage = 45015, name = "valktries"},
[8] = {storage = 45017, name = "larva"},
[9] = {storage = 45019, name = "orcs"},
[10] = {storage = 45021, name = "dwarves"},
[11] = {storage = 45023, name = "minotaurs"},
[12] = {storage = 45025, name = "ghouls"},
[13] = {storage = 45027, name = "scarabs"},
[14] = {storage = 45029, name = "ancient scarabs"},
[15] = {storage = 45031, name = "demons skeletons"},
[16] = {storage = 45033, name = "cyclops"},
[17] = {storage = 45035, name = "vampires"},
[18] = {storage = 45037, name = "necromancers"},
[19] = {storage = 45039, name = "giant spiders"},
[20] = {storage = 45041, name = "dragons"},
[21] = {storage = 45043, name = "dragon lords"},
[22] = {storage = 45045, name = "demons"}
}
local config = {
["wasps"] = {storage = 45003, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["trolls"] = {storage = 45005, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["goblins"] = {storage = 45007, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["slimes"] = {storage = 45009, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["rotworms"] = {storage = 45011, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["amazons"] = {storage = 45013, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["valktries"] = {storage = 45015, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["larva"] = {storage = 45017, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["orcs"] = {storage = 45019, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["dwarves"] = {storage = 45021, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["minotaurs"] = {storage = 45023, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["ghouls"] = {storage = 45025, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["scarabs"] = {storage = 45027, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["ancient scarabs"] = {storage = 45029, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["demons skeletons"] = {storage = 45031, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["cyclops"] = {storage = 45033, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["vampires"] = {storage = 45035, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["necromancers"] = {storage = 45037, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["giant spiders"] = {storage = 45039, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["dragons"] = {storage = 45041, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["dragon lords"] = {storage = 45043, count = 50, experience = 1000, reward = 2160, itemCount = 1},
["demons"] = {storage = 45045, count = 50, experience = 1000, reward = 2160, itemCount = 1}
}
local x = msg:lower()
if msgcontains(msg, "task") then
local npcmsg = ""
for i = 1, #tasks do
local storage = getPlayerStorageValue(cid, tasks[i].storage)
if storage <= 1 and storage >= -1 then
if npcmsg ~= "" then
npcmsg = npcmsg.. ", "
end
npcmsg = npcmsg..tasks[i].name
end
end
selfSay("Tasks available: " ..npcmsg.. ".", cid)
elseif config[x] then
if getPlayerStorageValue(cid, config[x].storage) < 1 then
selfSay("Would like you like to start the ".. x .." task?", cid)
talkState[talkUser] = 1
xmsg[cid] = msg
elseif getPlayerStorageValue(cid, config[x].storage) == 1 then
selfSay("Have you completed your task?", cid)
talkState[talkUser] = 2
xmsg[cid] = msg
elseif getPlayerStorageValue(cid, config[x].storage) > 1 then
selfSay("You have already completed this task. Thank you.", cid)
end
elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
local x = xmsg[cid]:lower()
selfSay("Great! Once you have killed ".. config[x].count .." ".. x .." come back and see me.", cid)
setPlayerStorageValue(cid, config[x].storage, 1)
talkState[talkUser] = 0
elseif msgcontains(msg, "yes") and talkState[talkUser] == 2 then
local x = xmsg[cid]:lower()
if getPlayerStorageValue(cid, config[x].storage + 1) == config[x].count then
selfSay("Wonderful! Here is your reward.", cid)
setPlayerStorageValue(cid, config[x].storage, 2)
doPlayerAddExperience(cid, config[x].experience)
doPlayerAddItem(cid, config[x].reward, config[x].itemCount, true)
else
selfSay("You have not killed enough ".. x ..". Come back when you have killed more.", cid)
end
talkState[talkUser] = 0
end
return true
end
npcHandler:setCallback(CALLBACK_GREET, greet)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())