-- Collecting items missions by Limos
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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
local missions = {
[1] = {items = {
{id = 6527, count = 200},
{id = 9980, count = 100},
{id = 2349, count = 100},
{id = 10558, count = 200},
{id = 2328, count = 100}
},
message = "Great, I need alot of items, but you can start with",
level = 2000, -- minimum level voor this mission
rewarditem = {id = 2160, count = 100},
rewardexp = 500000
},
[2] = {items = {
{id = 6527, count = 200},
{id = 9980, count = 100},
{id = 2349, count = 100},
{id = 10558, count = 200},
{id = 2328, count = 100}
},
message = "Thank you, the next items are",
level = 2000,
rewarditem = {id = 2157, count = 5},
rewardexp = 1500000
},
[3] = {items = {
{id = 6527, count = 200},
{id = 9980, count = 100},
{id = 2349, count = 100},
{id = 10558, count = 200},
{id = 2328, count = 100}
},
message = "Awesome, now get",
level = 2000,
rewarditem = {id = 5957, count = 2},
rewardexp = 4000000
},
[4] = {items = {
{id = 6527, count = 200},
{id = 9980, count = 100},
{id = 2349, count = 100},
{id = 10558, count = 200},
{id = 2328, count = 50}
},
message = "Thanks, now I need",
level = 2000,
rewarditem = {id = 6527, count = 100},
rewardexp = 30000000
},
[5] = {items = {
{id = 6527, count = 200},
{id = 9980, count = 50},
{id = 2328, count = 100},
{id = 2157, count = 100},
{id = 2349, count = 25},
{id = 2157, count = 100}
},
message = "Good, only a few items left,",
level = 2000,
rewarditem = {id = 2091, count = 1},
rewardexp = 80000000
}
}
local storage = 45559
local function getItemsFromTable(itemtable)
local text = ""
for v = 1, #itemtable do
count, info = itemtable[v].count, getItemInfo(itemtable[v].id)
local ret = ", "
if v == 1 then
ret = ""
elseif v == #itemtable then
ret = " and "
end
text = text .. ret
text = text .. (count > 1 and count or info.article).." "..(count > 1 and info.plural or info.name)
end
return text
end
function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local xstorage = getPlayerStorageValue(cid, storage)
local x = missions[xstorage]
if not npcHandler:isFocused(cid) then
return false
end
if msgcontains(msg, 'mission') then
if xstorage == -1 then
selfSay("I am a scientist and I am currently doing some research, do you think you can help me out?", cid)
talkState[talkUser] = 1
elseif x then
if getPlayerLevel(cid) >= x.level then
selfSay("Did you get the {items} I asked you?", cid)
talkState[talkUser] = 1
else
selfSay("Misja, którą ci dałem, dotyczy poziomu "..x.level..", wróć później.", cid)
koniec
w przeciwnym razie
selfSay("Jeszcze raz dziękuję za wszystkie Twoje przedmioty, bardzo mi pomogły.", cid)
npcHandler:releaseFocus(cid)
koniec
elseif msgcontains(msg, 'yes') i talkState[talkUser] == 1 wtedy
jeśli xstorage == -1 to
setPlayerStorageValue(cid, pamięć, 1)
lokalny x = misje [getPlayerStorageValue (cid, pamięć)]
selfSay(x.message.." "..getItemsFromTable(x.items)..", cid)
inaczej jeśli x wtedy
kwota lokalna = 0
dla i = 1, #x.items tak
jeśli getPlayerItemCount(cid, x.items[i].id) >= x.items[i].count to
kwota = ilość + 1
koniec
koniec
jeśli ilość == #x.items to
dla i = 1, #x.items tak
doPlayerRemoveItem(cid, x.items[i].id, x.items[i].count)
koniec
jeśli x.rewarditem to
liczba lokalna, info = x.rewarditem.count, getItemInfo(x.rewarditem.id)
doPlayerAddItem(cid, x.rewarditem.id, liczba)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Otrzymałeś "..(liczba > 1 i liczba lub informacja.artykuł).." "..(liczba > 1 i info.plural lub info.name).."")
koniec
jeśli x.rewardexp to
doPlayerAddExp(cid, x.rewardexp)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Otrzymałeś doświadczenie "..x.rewardexp.."")
koniec
setPlayerStorageValue(cid, pamięć, xstorage + 1)
lokalny x = misje [getPlayerStorageValue (cid, pamięć)]
jeśli x to
selfSay(x.message.." "..getItemsFromTable(x.items)..", cid)
w przeciwnym razie
selfSay("Wielkie dzięki! Mogę już dokończyć poszukiwania.", cid)
koniec
w przeciwnym razie
lokalny n = 0
dla i = 1, #x.items tak
jeśli getPlayerItemCount(cid, x.items[i].id) < x.items[i].count to
n = n + 1
koniec
koniec
tekst lokalny = „”
lokalny c = 0
dla v = 1, #x.items tak
count, info = x.items[v].count - getPlayerItemCount(cid, x.items[v].id), getItemInfo(x.items[v].id)
jeśli getPlayerItemCount(cid, x.items[v].id) < x.items[v].count to
do = do + 1
lokalny ret = ", "
jeśli c == 1 to
ret = ""
elseif c == n to
ret = " i "
koniec
tekst = tekst .. ret
tekst = tekst .. (liczba > 1 i liczba lub informacja.artykuł).." "..(liczba > 1 i informacja.plural lub informacja.nazwa)
koniec
koniec
selfSay("Nie masz wszystkich elementów, musisz jeszcze zdobyć "..tekst...".", cid)
koniec
koniec
talkState[talkUser] = 0
elseif msgcontains(msg, 'elementy') i x następnie
selfSay("Elementy, o które Cię zapytałem to "..getItemsFromTable(x.items)..", cid)
elseif msgcontains(msg, 'no') i talkState[talkUser] == 1 wtedy
selfSay("No cóż, chyba nie w takim razie.", cid)
koniec
zwróć prawdę
koniec
npcHandler:setMessage(MESSAGE_FAREWELL, „Cześć!”)
npcHandler:setMessage(MESSAGE_WALKAWAY, „Cześć? Chyba…”)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, stworzenieSayCallback)
npcHandler:addModule(FocusModule:new())