codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
local missions = { [1] = { items = { {id = 5890, count = 12}, {id = 5878, count = 20}, {id = 5894, count = 8} }, message = "Great, for your first mission you need to collect some items, I need", level = 15, -- minimum level voor this mission rewarditems = { {id = 2160, count = 1}, {id = 2152, count = 1} }, rewardexp = 15000 }, [2] = { monsters = { {name = "Rat", count = 5, storage = 31200}, {name = "Rotworm", count = 5, storage = 31202} }, message = "Thanks, for your next mission kill", level = 30, rewarditems = { {id = 2160, count = 5} }, rewardexp = 40000 }, [3] = { items = { {id = 5920, count = 45}, {id = 5877, count = 22} }, message = "Awesome, now get", level = 50, rewarditems = { {id = 2160, count = 15} }, rewardexp = 100000 }, [4] = { monsters = { {name = "Dragon Lord", count = 5, storage = 31204} }, message = "Good job, now kill", level = 70, rewarditems = { {id = 2160, count = 25} }, rewardexp = 200000 }, [5] = { items = { {id = 5906, count = 35}, {id = 5882, count = 42}, {id = 4850, count = 1} }, message = "Good, now your final mission, there are a few more items you need to get,", level = 100, rewarditems = { {id = 2160, count = 50} }, rewardexp = 450000 } } local storage = 45555 local function getItemsMonstersFromTable(imtable) local text = "" for v = 1, #imtable do local ret = ", " if v == 1 then ret = "" elseif v == #imtable then ret = " and " end text = text .. ret count = imtable[v].count if imtable[v].id then info = getItemInfo(imtable[v].id) text = text .. (count > 1 and count or info.article).." "..(count > 1 and info.plural or info.name) else text = text .. count .." "..imtable[v].name end end return text end function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if not npcHandler:isFocused(cid) then return false end local x = missions[getPlayerStorageValue(cid, storage)] if msgcontains(msg, 'mission') or msgcontains(msg, 'quest') then if not exhaustion.check(cid, 45690) and getPlayerStorageValue(cid, storage) > 0 then setPlayerStorageValue(cid, storage, -1) xstorage = getPlayerStorageValue(cid, storage) end if xstorage == -1 then selfSay("I have several missions for you, do you accept the challenge?", cid) talkState[talkUser] = 1 elseif x then if getPlayerLevel(cid) >= x.level then local mess = x.items and "get "..getItemsMonstersFromTable(x.items) or "kill "..getItemsMonstersFromTable(x.monsters) selfSay("Did you "..mess.."?", cid) talkState[talkUser] = 1 else selfSay("The mission I gave you is for level "..x.level..", come back later.", cid) end else selfSay("You already did all the missions, great job though.", cid) npcHandler:releaseFocus(cid) end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage) == -1 then setPlayerStorageValue(cid, storage, 1) local x = missions[getPlayerStorageValue(cid, storage)] local imtable = x.items or x.monsters selfSay(x.message.." "..getItemsMonstersFromTable(imtable)..".", cid) exhaustion.set(cid, 45690, 86400) elseif x then local imtable = x.items or x.monsters local amount = 0 for it = 1, #imtable do local check = x.items and getPlayerItemCount(cid, imtable[it].id) or getPlayerStorageValue(cid, imtable[it].storage) if check >= imtable[it].count then amount = amount + 1 end end if amount == #imtable then if x.items then for it = 1, #x.items do doPlayerRemoveItem(cid, x.items[it].id, x.items[it].count) end end if x.rewarditems then for r = 1, #x.rewarditems do doPlayerAddItem(cid, x.rewarditems[r].id, x.rewarditems[r].count) end doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You received "..getItemsMonstersFromTable(x.rewarditems)..".") end if x.rewardexp then doPlayerAddExp(cid, x.rewardexp) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You received "..x.rewardexp.." experience.") end setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage) + 1) local x = missions[getPlayerStorageValue(cid, storage)] if x then selfSay(x.message.." "..getItemsMonstersFromTable(x.items or x.monsters)..".", cid) else selfSay("Well done! You did a great job on all your missions.", cid) exhaustion.set(cid, 45690, 86400) end else local n = 0 for i = 1, #imtable do local check = x.items and getPlayerItemCount(cid, imtable[i].id) or getPlayerStorageValue(cid, imtable[i].storage) if check < imtable[i].count then n = n + 1 end end local text = "" local c = 0 for v = 1, #imtable do local check = x.items and getPlayerItemCount(cid, imtable[v].id) or getPlayerStorageValue(cid, imtable[v].storage) if check < imtable[v].count then c = c + 1 local ret = ", " if c == 1 then ret = "" elseif c == n then ret = " and " end text = text .. ret if x.items then local count, info = imtable[v].count - getPlayerItemCount(cid, imtable[v].id), getItemInfo(imtable[v].id) text = text .. (count > 1 and count or info.article).." "..(count > 1 and info.plural or info.name) else local count = imtable[v].count - (getPlayerStorageValue(cid, imtable[v].storage) + 1) text = text .. count.." "..imtable[v].name end end end selfSay(x.items and "You don't have all items, you still need to get "..text.."." or "You didn't kill all monsters, you still need to kill "..text..".", cid) end end talkState[talkUser] = 0 elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then selfSay("Oh well, I guess not then.", cid) end return true end
Private
[
?
]
Run code
Submit