Postado Maio 30, 2018 7 anos Autor Em 30/05/2018 em 15:02, Skydrowz disse: Você se importaria de ter que criar outra tag no xml e outro script para contar a task? Seria mais fácil para você. Se sim, adicione: Creaturescripts.xml: <event type="kill" name="taskCount2" script="taskCount2.lua"/> No NPC: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest = 76670 <!-- Alterei aqui para 76670, que seria a OUTRA storage de task --> local reward = 70000 <!-- Aqui você altera a reward --> 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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false elseif msgcontains(msg, "ajudar") and talkState[talkUser] == 1 then npcHandler:say("Agradeco, por se empenhar em ajudar a vila, tenha cuidado {ok} ?", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then npcHandler:say("Tenha cuidado nao se esforce muito!", cid) setPlayerStorageValue(cid, quest, 2) <!-- Aqui ele vai usar a storage que mudei lá em cima (76670) --> talkState[talkUser] = 0 elseif msgcontains(msg, "favor") then local str = getPlayerStorageValue(cid, quest) if(str < 2) then npcHandler:say("msg.", cid) talkState[talkUser] = 1 return true elseif(str == 2) then npcHandler:say("msg!", cid) elseif(str == 3) then npcHandler:say("msg.", cid) doPlayerAddItem(cid, 2148, 75) doPlayerAddExp(cid, 1300) doPlayerSendTextMessage(cid, 22, 'exp.') setPlayerStorageValue(cid, quest, 4) elseif(str == 4) then npcHandler:say("msg.", cid) end talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Em creaturescripts/scripts/taskCount2.lua local monsters = { --name = storage ["Monstro2"] = 55005, <!-- Acho que esse é o monstro que você quer --> } function onKill(cid, target) local monster = monsters[getCreatureName(target):lower()] if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76670) == 2) then <!-- Storage da segunda task --> if getPlayerStorageValue(cid, monster) < 50 then <!-- Aqui ele pega a storage de dentro da tabela monsters, então ele vai pegar a de ["Monstro2"], não precisa se preocupar. --> local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters == -1) then killedMonsters = 1 end setPlayerStorageValue(cid, monster, killedMonsters + 1) doPlayerSendTextMessage(cid,1, "Voce matou " .. killedMonsters .. " de 50 insetos.") else doPlayerSendTextMessage(cid,22, "Parabens voce matou insetos suficiente.") setPlayerStorageValue(cid, 76669, 3) -- idem a duvida de cima end end return TRUE end Em creaturescripts/scripts/login.lua (crie o login.lua dentro da pasta do taskCount) function onLogin(player) player:registerEvent("taskCount2") return true end Eu teste dessa forma e não deu erro na distro, mas o NPC não responde depois do "HI" ele fala a msg que esta no .xml e quando você fala a palavra X para ir para o .lua ele não responde.
Postado Junho 2, 2018 7 anos Solução local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest = 76670 <!-- Alterei aqui para 76670, que seria a OUTRA storage de task --> local reward = 70000 <!-- Aqui você altera a reward --> 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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false elseif msgcontains(msg, "ajudar") then npcHandler:say("Agradeco, por se empenhar em ajudar a vila, tenha cuidado {ok} ?", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then npcHandler:say("Tenha cuidado nao se esforce muito!", cid) setPlayerStorageValue(cid, quest, 2) <!-- Aqui ele vai usar a storage que mudei lá em cima (76670) --> talkState[talkUser] = 0 elseif msgcontains(msg, "favor") then local str = getPlayerStorageValue(cid, quest) if(str < 2) then npcHandler:say("msg.", cid) talkState[talkUser] = 1 return true elseif(str == 2) then npcHandler:say("msg!", cid) elseif(str == 3) then npcHandler:say("msg.", cid) doPlayerAddItem(cid, 2148, 75) doPlayerAddExp(cid, 1300) doPlayerSendTextMessage(cid, 22, 'exp.') setPlayerStorageValue(cid, quest, 4) elseif(str == 4) then npcHandler:say("msg.", cid) end talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Tenta assim. Editado Junho 2, 2018 7 anos por Skydrowz (veja o histórico de edições) Master yourself, master the enemy.
Postado Junho 18, 2018 7 anos @Skydrowz Cara, eu coloquei sua script e ta dando esse erro: [18/6/2018 19:5:8] >>> Loading creaturescripts... [Error - LuaInterface::loadFile] data/creaturescripts/scripts/tasktest.lua:3: unexpected symbol near '<' [18/6/2018 19:5:10] [Error - Event::checkScript] Cannot load script (data/creaturescripts/scripts/tasktest.lua) [18/6/2018 19:5:10] data/creaturescripts/scripts/tasktest.lua:3: unexpected symbol near '<'
Postado Junho 18, 2018 7 anos Autor Em 18/06/2018 em 22:06, Zazeros disse: @Skydrowz Cara, eu coloquei sua script e ta dando esse erro: [18/6/2018 19:5:8] >>> Loading creaturescripts... [Error - LuaInterface::loadFile] data/creaturescripts/scripts/tasktest.lua:3: unexpected symbol near '<' [18/6/2018 19:5:10] [Error - Event::checkScript] Cannot load script (data/creaturescripts/scripts/tasktest.lua) [18/6/2018 19:5:10] data/creaturescripts/scripts/tasktest.lua:3: unexpected symbol near '<' @ZazerosÉ porque ele usou códigos de XML para usar comentários e no arquivo .lua ele não reconhece; Remova em todos os locais que tenha isso " <!-- " Mostrar conteúdo oculto <!-- Alterei aqui para 76670, que seria a OUTRA storage de task -->
Postado Junho 19, 2018 7 anos @peterson18 Cara, eu fiz oq tu falou e deu esse erro agr: >>> Loading creaturescripts... [Error - LuaInterface::loadFile] data/creaturescripts/scripts/tasktest.lua:4: unexpected symbol near 'ï' [Error - Event::checkScript] Cannot load script (data/creaturescripts/scripts/tasktest.lua) data/creaturescripts/scripts/tasktest.lua:4: unexpected symbol near 'ï' E mais uma coisa, essa script ta contando cada vez que o monstro morre? tipo, ta aparecendo "voce matou 3 de 200" algo assim? Editado Junho 19, 2018 7 anos por Zazeros (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.