Olá a todos, preciso de uma ajuda, vou postar o script aqui, mas preciso que, para passar à segunda missão, o player terá que finalizar a primeira. Me compliquei por ser uma Task a primeira.
-- Essencial
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
function creatureSayCallback(cid, type, msg)
function getNPCConfigs(cid)
configs = {storageid = NpcSystem.getParameter('storageid')}
configs.mission = getPlayerStorageValue(cid, configs.storageid)
if(not npcHandler:isFocused(cid)) then
return false
end
-- Configuração End
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(msgcontains(msg, 'ajuda')) then
selfSay('Ok, primeiramente antes, para que você possa de fato me ajudar, você precisa se equipar muito bem.', cid)
selfSay('Eu separei alguns itens, que estão no meu quarto em Swalhem. Suba no porão, acima, lá há um teleport que te levará para Swalhem.', cid)
selfSay('Após ter buscado seus itens, volte e começaremos sua {jornada}.', cid)
end
-- Task Mission One
function MonsterCount(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
local contagem = getPlayerStorageValue(cid, parameters.storage)
if(contagem == -1) then
contagem = 1
end
if getPlayerStorageValue(cid, parameters.x) <= 0 then
if (((contagem)-1) >= parameters.count) then
doPlayerAddExp(cid, parameters.exp)
for k,v in pairs(parameters.reward) do
doPlayerAddItem(cid, v.item, v.count or 1)
end
setPlayerStorageValue(cid, parameters.x, 1)
npcHandler:say('Muito obrigado, suponho que eles recuem agora. Por essa ajuda, recebeba sua recompensa.', cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você ganhou uma wand of dragonbreath!")
npcHandler:say('Preciso de uma outra ajuda sua agora, está pronto para a sua {segunda missão}?.', cid)
else
npcHandler:say('Desculpe, mas você só matou '..((contagem)-1)..' Frost Trolls por enquanto!', cid)
npcHandler:resetNpc()
end
else
npcHandler:say('Desculpa, mas eu já lhe dei a sua recompensa!', cid)
npcHandler:resetNpc()
end
return TRUE
end
function Completed(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
if getPlayerStorageValue(cid, parameters.x) <= 0 then
for i = 21001,21039 do
if getPlayerStorageValue(cid,i) <= 0 then
return npcHandler:say('Desculpa mas você não fez o que pedi ainda.', cid)
end
end doPlayerAddExp(cid, parameters.exp)
for k,v in pairs(parameters.reward) do
doPlayerAddItem(cid, v.item, v.count or 1)
end
setPlayerStorageValue(cid, parameters.x, 1)
b = getGlobalStorageValue(63004)
if b == -1 then
b = 1
end
npcHandler:say('Obrigado por ter me ajudado!', cid)
npcHandler:resetNpc()
else
npcHandler:say('Eu já lhe dei sua recompensa!', cid)
npcHandler:resetNpc()
end
return TRUE
end
keywordHandler:addKeyword({'jornada'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'A sim, agora que você está bem equipado, eu preciso que você mate 50 {Frost Trolls} para mim. Eles estão ameaçando atacar Swalhem e eu tenho que mostrar que les não irão conseguir isso.'})
local node1 = keywordHandler:addKeyword({'frost troll'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Você é matou os 50 frost trolls? {yes/no}'})
node1:addChildKeyword({'yes'}, MonsterCount, {x = 21001,storageid = 91001,count = 50,reward = {{item = 2191, count = 1}},exp = 1000})
node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Ok, quando matá-los, reporte a mim.', reset = true})
npcHandler:addModule(FocusModule:new())
-- Mission Two
elseif(msgcontains(msg, 'segunda missao')) then
selfSay('Me traga 20 {frost bones}, 10 {wolf furs}, 10 {bear furs}, e lhe ensinarei a fazer um anel.', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'frost bones') and talkState[talkUser] == 1) then
if (getPlayerStorageValue(cid,101) == 1) then
selfSay('Você já me entregou os frost bones.', cid)
elseif doPlayerRemoveItem(cid, 2671, 10) == TRUE then
selfSay('Obrigado pelos frost bones!', cid)
setPlayerStorageValue(cid,101,1)
talkState[talkUser] = 1
end
elseif(msgcontains(msg, 'wolf furs') and talkState[talkUser] == 1) then
if(getPlayerStorageValue(cid,101) == 2) then
selfSay('Você já me entregou os wolf furs.', cid)
elseif doPlayerRemoveItem(cid, 2672, 10) == TRUE then
selfSay('Obrigado pelos wolf furs!', cid)
setPlayerStorageValue(cid,101,2)
talkState[talkUser] = 1
end
elseif(msgcontains(msg, 'bear furs') and talkState[talkUser] == 1) then
if(getPlayerStorageValue(cid,101) == 3) then
selfSay('Você já me entregou os bear furs!', cid)
elseif doPlayerRemoveItem(cid, 2673, 10) == TRUE then
selfSay('Obrigado pelos bear furs!', cid)
setPlayerStorageValue(cid,101,3)
doPlayerAddExperience(cid,1000)
selfSay('Obrigado! Para fazer 1 dwarven ring basta você ter 1 {dwarven ring ingredient}, e dizer "dwarven ring conjure"', cid)
playerLearnInstantSpell(cid, 'Dwarven Ring Conjuracao')
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você pode aprendeu a criar dwarven ring!".)
else
selfSay('Você não tem o número de itens correto.', cid)
end
return true
else
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
if getPlayerStorageValue(cid, 901001)>1 then - Eu tentei isso, porém não consegui, vi o "portas" do Vodkart, pra tentar solucionar e não consegui.
Outra coisa, na task, eu fiz tudo, mas eu quero que apareça quantos bichos o player matou, digamos que ali no chat, em laranjado. Porém, somente enquanto ele tiver fazendo a task.
Se possível me explicar o que foi feito, para as storages, porque eu quero prosseguir com mais quests com o mesmo NPC.