Postado Fevereiro 23, 2019 6 anos Ola, consegui um script de npc que da travel por storage aqui no tibiaking, e fiz uma pequena modificação para da travel dependendo o level. Mas como esse teleporte vai fazer parte de uma quest gostaria que ao finalizar a quest e obter a ultima storage o npc não fizesse mais o teleporte. Por isso também modifiquei para tentar, mas acontece q apesar de não dar nenhum erro, o npc não da mais o teleporte depois da primeira fala. Essa é a script do npc funcionando perfeitamente, verificando o level e fazendo o teleporte local DESTINO = {x = 160, y = 54, z = 7} -- POSIÇÃO DE DESTINO local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "tentar") then selfSay("Você realmente deseja tentar obter aprovação, achar o caminho de volta pode ser muito dificil se não conseguir?", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= 400 then selfSay("Boa sorte!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) else selfSay("Me desculpe, mas você não tem level necessario para obter aprovação. Volte quando atingir level 400.", cid) end talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Essa é que tentei modificar novamente agr colocando para se ele não tiver a storage ele continua o teleporte, caso ele ja tenha a storage fala que já obteve finaliza. Mas acontece q ele está verificando se tem a storage corretamente, e fala a segunda fala perguntando se quer "tentar", e apos fala o yes ele não faz o teleporte. local DESTINO = {x = 160, y = 54, z = 7} -- POSIÇÃO DE DESTINO local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "tentar") then if getPlayerStorageValue(cid, 13540) >= 0 then selfSay("Você realmente deseja tentar obter aprovação, achar o caminho de volta pode ser muito dificil se não conseguir?", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= 400 then selfSay("Boa sorte!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) else selfSay("Me desculpe, mas você não tem level necessario para obter aprovação. Volte quando atingir level 400.", cid) end else selfSay("Você ja obteve aprovação.", cid) end talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Poderiam me indicar o erro e como corrigi-lo, pois ele não está funcionando mas não da nenhum aviso na distro. Obrigado desde já. Editado Fevereiro 25, 2019 6 anos por Naze (veja o histórico de edições) Discord: Naze#3578 Ter Linux Dentro de Windows com Acesso 'localhost' para testes e + AutoLoot Otimizado Direto na Source (tfs 0.4/otx) // Pirataria é crime, original é roubo, compartilhar é legal.
Postado Fevereiro 23, 2019 6 anos Solução local DESTINO = {x = 160, y = 54, z = 7} -- POSIÇÃO DE DESTINO local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if getPlayerStorageValue(cid, 12345) > 0 then -- STORAGE selfSay('Você já fez a quest',cid) return false end if msgcontains(msg, "tentar") then selfSay("Você realmente deseja tentar obter aprovação, achar o caminho de volta pode ser muito dificil se não conseguir?", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= 400 then selfSay("Boa sorte!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) else selfSay("Me desculpe, mas você não tem level necessario para obter aprovação. Volte quando atingir level 400.", cid) end talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Fevereiro 23, 2019 6 anos por .Smile (veja o histórico de edições)
Postado Fevereiro 25, 2019 6 anos Autor Obrigado funcionou esse que me passou, mas acabei mudando um pouco antes de ver sua resposta e também consegui um que deu certo, mas muito obrigado. Esse é o que vou usar, e também está funcionando: local DESTINO = {x = 2241, y = 2374, z = 7} -- POSIÇÃO DE DESTINO local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "ancient paradise") then if getPlayerStorageValue(cid, 100101) >= 1 then selfSay("Você ja obteve a aprovação, porque está ocupando meu tempo?", cid) npcHandler:onCreatureDisappear(cid) else doNPCTalkALot(cid, getNpcCid(), 1000, {"Jovem Heroi, Ancient Paradise acreditamos que seja um continente imensuravel, e sua localização foi descoberta por navegadores, e essa ilha a nomeamos como Small Paradise, a primeira ilha antes de chegar em Ancient Paradise Island.", "Eu estou encarregado de aprovar novos aventureiro nessa ilha, se passar pelo meu {teste} podera ir sem mais restrições para Ancient Paradise e também desfrutar dos misterios dessa Small Paradise."}) talkState[talkUser] = 1 end elseif msgcontains(msg, "teste") and talkState[talkUser] == 1 then talkState[talkUser] = 2 doNPCTalkALot(cid, getNpcCid(), 1000, {"Veja bem, meu teste é muito simples, essa Smalll Paradise está repleta de monstros um tanto curioso, então por isso resolvemos usar ela para fazer esse teste.", "Você vai precisar escontrar um báu deixado por mim em uma determinada parte da ilha, após encontra recebera um presente por sua conquista, e também te darei acesso imediato a Ancient Paradise, deseja {tentar} obeter aprovação agora?"}) elseif msgcontains(msg, "tentar") and talkState[talkUser] == 2 then talkState[talkUser] = 3 selfSay("Você realmente deseja tentar obter aprovação, achar o caminho de volta pode ser muito dificil se não conseguir?", cid) elseif msgcontains(msg, "yes") and talkState[talkUser] == 3 then if getPlayerLevel(cid) >= 400 then doNPCTalkALot(cid, getNpcCid(), 2000, {"Para obter sua aprovação você vai precisar busca nesta ilha o baú que contém um presente especial pra você. Se obter isso te teleportarei novamente para vc obter acesso a Ancient Paradise, e também poderá explorar o restante dessa Small Paradise dizem que contém tesouros.", "Jovem herói, não que eu teja olhando para baixo em você, mas você não me parece que possa passar a aprovação com apenas isso... Por isso vou te dar um aviso e também conta como ajuda já que vai saber o que enfrentar, cuidado cons dragões.","Tome esse {machete} também vai precisar."}) local bp = doPlayerAddItem(cid, 1987, 1) doAddContainerItem(bp, 2420, 1) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) else selfSay("Me desculpe, mas você não tem level necessario para obter aprovação. Volte quando atingir level 400.", cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Discord: Naze#3578 Ter Linux Dentro de Windows com Acesso 'localhost' para testes e + AutoLoot Otimizado Direto na Source (tfs 0.4/otx) // Pirataria é crime, original é roubo, compartilhar é legal.
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.