Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2187
  • Registro em

  • Última visita

  • Dias Ganhos

    57

Tudo que Yan Oliveira postou

  1. Primeiramente que o else if não esta vindo depois do Else (pois isso é errado em programação, o else é sempre a última condição em um bloco if), mas está vindo do primeiro If lá em cima do msgcontains para caso o player passe o estado de fala dele para 1 (talkUser). O else é para o segundo If da verificação da storage 10203. E sim, eu havia esquecido de colocar o end no final do else, pois fiz na correria o script. E o seu script vai dar errado, pois se o player falar com o npc e possuir ou não possuir a storage 10203, nunca mais ele vai sair do else e conseguir entrar na parte da fala da missão, pois o bloco else que você removeu tirou o retorno do estado para a primeira fala. Você nem sabe de qual bloco o else era e inverteu aleatoriamente a ordem dele com o else if, sendo assim, ficou desproporcional o código, e como falei, nunca mais o player vai voltar para o estado de fala da missão. Eu até printei aqui com o seu "código" para você mesmo avaliar, na alavanca atrás do player coloquei para receber a storage para falar com o npc, e veja como nunca mais sai do seu else: Você mesmo pode testar com seu código e veja que não irá funcionar. E fora que você falou para "usar assim" como se fosse garantido que iria funcionar do jeito que você "fez", isso não é certo amigo. E você também precisa entender melhor a leitura dos códigos, pois eu sei que você tem intenção de ajudar, mas para garantir que irá funcionar as coisas, é necessário testar, ainda mais quando você "garante" que vai funcionar. @vitorelias use esse código aqui: 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, 60000) == 1 then selfSay("Preciso que você mate um lagarto que vive aterrorizando a população de Andorhal, este lagarto esta nas tumbas dos lagartos localizada na floresta de Andorhal. Mas para esta missão estou aceitando apenas guerreiros com certificados de explorador Andorhal. Você aceita esse desafio?", cid) talkState[talkUser] = 1 return true else selfSay("É obrigatório ser certificado como explorador de Andorhal. Procure o comprador Tadeu, Kurl e Robens.", cid) talkState[talkUser] = 0 return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then selfSay("Você agora esta autorizado a entrar na sala onde esta o lagarto. Muito cuidado, este lagarto é muito forte. Encontrará ótimas recompenças na sala.", cid) setPlayerStorageValue(cid, 10209, 1) -- TROCAR A STORAGE AQUI PARA A CORRETA, SE NÃO FOR A 10209 COLOCAR A 10208 talkState[talkUser] = 0 return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Eu testei e está funcionando, estou até mandando print para ver: Como pode ver está funcionando, mas caso não funcione, me avise que vejo.
  2. Yan Oliveira

    Auto IP Publico

    Mas você testou? Pelo que entendi, você quer uma rotina que seja tratada no banco, ou seja, que a cada X horas faça Update do ip público, então é algo que se trata no banco, e uma opção para isso é a rotina.
  3. Bom, foi como te falei assim que criei o script para você, no seu post você disse que a storage era 10209, mas no seu código estava 10208, você não comentou qual é a certa, pode ser por isso, no código coloquei 10208, mas pode ser a storage 10209. Estou mandando o código para você com a storage 10209, testa ai e me fala. E deixarei um comentário onde alterar a storage caso não for a 10209. 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, 10203) == 1 then selfSay("Preciso que você mate um lagarto que vive aterrorizando a população de Andorhal, este lagarto esta nas tumbas dos lagartos localizada na floresta de Andorhal. Mas para esta missão estou aceitando apenas guerreiros com certificados de explorador Andorhal. Você aceita esse desafio?", cid) talkState[talkUser] = 1 return true else selfSay("É obrigatório ser certificado como explorador de Andorhal. Procure o comprador Tadeu, Kurl e Robens.", cid) talkState[talkUser] = 0 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then selfSay("Você agora esta autorizado a entrar na sala onde esta o lagarto. Muito cuidado, este lagarto é muito forte. Encontrará ótimas recompenças na sala.", cid) setPlayerStorageValue(cid, 10209, 1) -- TROCAR A STORAGE AQUI PARA A CORRETA, SE NÃO FOR A 10209 COLOCAR A 10208 talkState[talkUser] = 0 return true end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Testa e me diga se funciona.
  4. Yan Oliveira

    Auto IP Publico

    Eu achei esse site que explica bem como usar rotina: Criando Funções com Rotinas Armazenadas
  5. Olá amigo, esse erro aconteceu porque esqueci de colocar o último end. 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, 10203) == 1 then selfSay("Preciso que você mate um lagarto que vive aterrorizando a população de Andorhal, este lagarto esta nas tumbas dos lagartos localizada na floresta de Andorhal. Mas para esta missão estou aceitando apenas guerreiros com certificados de explorador Andorhal. Você aceita esse desafio?", cid) talkState[talkUser] = 1 return true else selfSay("É obrigatório ser certificado como explorador de Andorhal. Procure o comprador Tadeu, Kurl e Robens.", cid) talkState[talkUser] = 0 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then selfSay("Você agora esta autorizado a entrar na sala onde esta o lagarto. Muito cuidado, este lagarto é muito forte. Encontrará ótimas recompenças na sala.", cid) setPlayerStorageValue(cid, 10208, 1) talkState[talkUser] = 0 return true end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Testa ai e me fala.
  6. Yan Oliveira

    adding mission

    Você precisa ser mais específico em sua dúvida, de qual quest (missão) que quer. E sobre criar servidor, a área correta é em OtServ > Suporte > Infraestrutura.
  7. Yan Oliveira

    Auto IP Publico

    Bom, essa não é a área correta para sua dúvida, o correto seria em OtServ > Suporte > Infraestrutura. Eu nunca mexi com rotinas, mas creio que criando uma rotina no banco para sempre dar update a cada X horas (Ou minutos, como preferir) possa ser uma solução.
  8. É como o amigo em cima falou, tem alguns processos para conseguir colocar servidor online, tem que liberar a porta, ver se o firewall não está bloqueando, entre outros. Mas tem que ver se você está configurando corretamente no arquivo Client\modules\client_entergame\entergame.lua
  9. Mas são todos pokémons que tem essa spell? Ou algum específico?
  10. Que bom que conseguiu! Por nada.
  11. 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid msg = string.lower(msg) ----------------------------------- [ DIALOGO COM NPC] --------------------------------- if msgcontains(msg, 'missao') then if getPlayerStorageValue(cid, 10203) == 1 then selfSay("Preciso que você mate um lagarto que vive aterrorizando a população de Andorhal, este lagarto esta nas tumbas dos lagartos localizada na floresta de Andorhal. Mas para esta missão estou aceitando apenas guerreiros com certificados de explorador Andorhal. Você aceita esse desafio?", cid) talkState[talkUser] = 1 return true else selfSay("É obrigatório ser certificado como explorador de Andorhal. Procure o comprador Tadeu, Kurl e Robens.", cid) talkState[talkUser] = 0 elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then selfSay("Você agora esta autorizado a entrar na sala onde esta o lagarto. Muito cuidado, este lagarto é muito forte. Encontrará ótimas recompenças na sala.", cid) setPlayerStorageValue(cid, 10208, 1) talkState[talkUser] = 0 return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Porém no post você disse que se o player estiver certificado ele recebe storage 10208, mas no seu código estava storage 10209, caso seja 10209, só trocar no setPlayerStorageValue. Testa ai e vê se está funcionando, eu adicionei algumas palavras a mais em algumas falas, caso não queira, só remover.
  12. Essa action que você quer é o ID dela?
  13. Esse erro acontece com determinado pokémon? Ou em algum momento específico? Acontece com pokémon do player ou selvagem?
  14. Quando acontece esse ocorrido, aparece algum erro na distro?
  15. De nada! Está funcionando certinho? Era isso que queria?
  16. Vai em data/actions/scripts e crie um arquivo chamado alavanca_hp.lua (ou algum nome que preferir) e adicione o seguinte código dentro: function onUse(cid, item, frompos, item2, topos) local hp_antigo = getCreatureHealth(cid) + 200 -- Pega a vida atual do player antes de clicar na alavanca local hp_alavanca = math.floor(200 - getCreatureHealth(cid)) -- HP que o jogador terá ao clicar na alavanca if item.itemid == 1945 or item.itemid == 1946 then -- Aqui o ID da alavanca que clica para ficar com 200 de vida if getCreatureHealth(cid) > 200 or getCreatureMaxHealth(cid) > 200 then -- Verifica se tem mais de 200 de vida ou se a vida máxima é maior que 200 if getPlayerStorageValue(cid, 45000) == -1 then -- Verifica se o player não tem a storage ao clicar na alavanca doCreatureAddHealth(cid, hp_alavanca) -- Deixa o HP do player com 200 de vida doSendMagicEffect(getThingPos(cid), 27) -- Efeito ao clicar na alavanca setPlayerStorageValue(cid, 45000, 1) -- Adiciona a Storage return true else doPlayerSendTextMessage(cid, 27, "Você não pode usar a alavanca com" ..hp_alavanca.. " ou menos de vida!") return true end else doPlayerSendTextMessage(cid, 27, "Você não pode clicar na alavanca porque tem 200 ou menos de vida.") return true end return true end if item.itemid == 12176 then -- Aqui é o ID da 2º alavanca, que reseta o HP do player como estava antes if getPlayerStorageValue(cid, 45000) == 1 then -- Verifica se tem storage doCreatureAddHealth(cid, hp_antigo) -- adiciona o novo HP ao player doSendMagicEffect(getThingPos(cid), 29) -- efeito doPlayerSendTextMessage(cid, 27, "Seu HP foi restaurado para "..hp_antigo.. " de vida.") setPlayerStorageValue(cid, 45000, -1) -- Remove a storage para voltar a clicar novamente return true end end end Agora vai em data/actions/actions.xml e adicione a tag: <action itemid="1945;12176" script="alavanca_hp.lua" /> <!-- Lembrando que tem que colocar os id das 2 alavancas, só substituir ali pelos seus id --> E vai em data/npc/scripts/heal.lua (ou o arquivo.lua que cura os pokémons ao falar com a Nurse) e adicione o seguinte código dentro da função onCreatureDisappear(cid, pos) if getPlayerStorageValue(cid, 45000) then setPlayerStorageValue(cid, 45000, -1) return true end Lembrando que esse código é para o caso do player clicar na alavanca que tira vida, mas não clicar na que recupera, então ao falar com a Nurse, ele perde a storage para conseguir clicar na alavanca novamente. Eu não consegui testar muito, pois estou com pouco tempo, mas testei e está ficando sempre com 200 de vida ao clicar na alavanca, mas não testei direito se ele recupera a quantidade de vida exata que estava antes de clicar na alavanca que tira vida. Teste e me diga se é isso que quer.
  17. Seu servidor é tibia ou poketibia? E qual a versão do TFS?
  18. Bom, ao que me parece isso é um problema de mapping e não de script, então a seção correta seria na área de Mapping. Mas pelo que vi, o problema é porque não foi criada towns (ctrl+t no remere's) ou as cidades estão diferentes no arquivo de teleport em talkactions.
  19. Se ele usar a alavanca que restaura a vida primeiro é para acontecer algo? E essa ação será sempre, ou somente 1 vez?
  20. Eu comparei aqui e está a mesma coisa do meu 1.9. Minha sugestão para você não perder tempo e ter dor de cabeça, faz um backup do seu server, depois pega o zip (ou rar) do seu pokémon e descompacta e substitui no seu servidor (que está com esse problema da exp) alguns arquivos 1 por 1 (ou todos de uma vez, mas sugiro 1 por 1 para testar e ver o problema) em creaturescripts. Começa pelo pokeexp.lua, se não der certo, substitui o exp2.0.lua e vai olhando pela data os arquivos alterados a partir de quando deu problema e troca, e por precaução troca o creaturescripts.xml também. Faça esse procedimento e me diga se ainda continua que investigamos e tentamos resolver.
  21. Essa quest ai, o player só poderá fazer uma vez? E seria bom postar o seu action também.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...