Jump to content

Storage, Como Utilizar Task E Outras Missões Juntas?


XJhoow

Recommended Posts

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.

Link to comment
Share on other sites

×
×
  • Create New...