luzetti06 7 Postado 29 de Setembro 2023 Compartilhar Postado 29 de Setembro 2023 Olá galera, eu estava atrás de um npc onde o player poderia acessar varios locais escondidos através de um npc, porém, nao estava conseguindo, hoje que saiu o npc...ou seja como funciona. O player chega no npc fala hi, o npc pede pra ele dizer a palavra chave secreta, caso ele acerte, ele é teleportado em 1 das 10 posições disponiveis no script, porem caso ele erre a palavra chave, ele leva um hit de dano na hp. local cfg = { keyword = "SENHA_AQUI", -- A SENHA, MUDE A SEU CRITÉRIO damageAmount = 100, -- QUANTIDADE DE DANOS NO HP teleportPositions = { -- LISTA DAS 10 POSIÇÕES {x = 1506, y = 742, z = 6}, {x = 1510, y = 746, z = 6}, {x = 1499, y = 738, z = 6}, {x = 1515, y = 748, z = 6}, {x = 1495, y = 736, z = 6}, {x = 1520, y = 750, z = 6}, {x = 1490, y = 734, z = 6}, {x = 1525, y = 752, z = 6}, {x = 1485, y = 732, z = 6}, {x = 1530, y = 754, z = 6} }, correctKeywordEffect = 30, -- EFEITO CASO ACERTE A PALAVRA CHAVE incorrectKeywordEffect = 11 -- EFEITO CASO ERRE A PALAVRA CHAVE } 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 -- FUNÇÃO DE TELEPORTE CASO A SENHA SEJA CORRETA function teleportToRandomPosition(cid) local randomIndex = math.random(1, #cfg.teleportPositions) local randomPosition = cfg.teleportPositions[randomIndex] doTeleportThing(cid, randomPosition) end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, cfg.keyword) then -- Palavra-chave correta, teletransporte o jogador e exiba o efeito correto selfSay("Palavra-chave correta! Teleportando você para o local secreto.") doSendMagicEffect(getCreaturePosition(cid), cfg.correctKeywordEffect) teleportToRandomPosition(cid) -- Teleporte o NPC para uma posição aleatória doSendMagicEffect(getCreaturePosition(cid), 21) -- Teleport effect else -- Palavra-chave incorreta, causa dano e exibe o efeito incorreto selfSay("Palavra-chave incorreta! Você sofre danos de vida.") doSendMagicEffect(getCreaturePosition(cid), cfg.incorrectKeywordEffect) doCreatureAddHealth(cid, -cfg.damageAmount) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) XML <?xml version="1.0" encoding="UTF-8"?> <npc name="Room Guardian" script="tphit.lua" walkinterval="3000" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="1158" head="114" body="119" legs="114" feet="114" corpse="2212"/> <health now="150" max="150"/> <look type="520" head="115" body="88" legs="114" feet="0"/> <parameters> <parameter key="message_greet" value="Eu posso te levar a alguns lugares secreto, diga a senha correta!"/> <parameter key="message_walkaway" value="Boa Sorte aventureiro!"/> </parameters> </npc> 4 Link para o comentário https://tibiadevs.com/forums/topic/166-npc-de-teleport-com-senha/ Compartilhar em outros sites Mais opções de compartilhamento...
ThonySz 2 Postado 29 de Setembro 2023 Compartilhar Postado 29 de Setembro 2023 Nossa muito bom!! editei um pouco botei outras posições e uma senha especifica para cada posição Spoiler local cfg = { teleportPositions = { {x = 1506, y = 742, z = 6, keyword = "SENHA_1"}, {x = 1510, y = 746, z = 6, keyword = "SENHA_2"}, {x = 1499, y = 738, z = 6, keyword = "SENHA_3"}, {x = 1515, y = 748, z = 6, keyword = "SENHA_4"}, {x = 1495, y = 736, z = 6, keyword = "SENHA_5"}, {x = 1520, y = 750, z = 6, keyword = "SENHA_6"}, {x = 1490, y = 734, z = 6, keyword = "SENHA_7"}, {x = 1525, y = 752, z = 6, keyword = "SENHA_8"}, {x = 1485, y = 732, z = 6, keyword = "SENHA_9"}, {x = 1530, y = 754, z = 6, keyword = "SENHA_10"} }, correctKeywordEffect = 30, incorrectKeywordEffect = 11, damageAmount = 100 } 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 teleportToRandomPosition(cid) local randomIndex = math.random(1, #cfg.teleportPositions) local randomPosition = cfg.teleportPositions[randomIndex] doTeleportThing(cid, randomPosition) end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end local keywordFound = false for _, position in ipairs(cfg.teleportPositions) do if msgcontains(msg, position.keyword) then selfSay("Palavra-chave correta! Teleportando você para o local secreto.") doSendMagicEffect(getCreaturePosition(cid), cfg.correctKeywordEffect) doTeleportThing(cid, position) doSendMagicEffect(getCreaturePosition(cid), 21) keywordFound = true break end end if not keywordFound then selfSay("Palavra-chave incorreta! Você sofre danos de vida.") doSendMagicEffect(getCreaturePosition(cid), cfg.incorrectKeywordEffect) doCreatureAddHealth(cid, -cfg.damageAmount) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) 1 Link para o comentário https://tibiadevs.com/forums/topic/166-npc-de-teleport-com-senha/#findComment-706 Compartilhar em outros sites Mais opções de compartilhamento...
luzetti06 7 Postado 29 de Setembro 2023 Autor Compartilhar Postado 29 de Setembro 2023 17 minutos atrás, ThonySz disse: Nossa muito bom!! editei um pouco botei outras posições e uma senha especifica para cada posição codigo: Ocultar conteúdo local cfg = { teleportPositions = { {x = 1506, y = 742, z = 6, keyword = "SENHA_1"}, {x = 1510, y = 746, z = 6, keyword = "SENHA_2"}, {x = 1499, y = 738, z = 6, keyword = "SENHA_3"}, {x = 1515, y = 748, z = 6, keyword = "SENHA_4"}, {x = 1495, y = 736, z = 6, keyword = "SENHA_5"}, {x = 1520, y = 750, z = 6, keyword = "SENHA_6"}, {x = 1490, y = 734, z = 6, keyword = "SENHA_7"}, {x = 1525, y = 752, z = 6, keyword = "SENHA_8"}, {x = 1485, y = 732, z = 6, keyword = "SENHA_9"}, {x = 1530, y = 754, z = 6, keyword = "SENHA_10"} }, correctKeywordEffect = 30, incorrectKeywordEffect = 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 teleportToRandomPosition(cid) local randomIndex = math.random(1, #cfg.teleportPositions) local randomPosition = cfg.teleportPositions[randomIndex] doTeleportThing(cid, randomPosition) end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end local keywordFound = false for _, position in ipairs(cfg.teleportPositions) do if msgcontains(msg, position.keyword) then selfSay("Palavra-chave correta! Teleportando você para o local secreto.") doSendMagicEffect(getCreaturePosition(cid), cfg.correctKeywordEffect) doTeleportThing(cid, position) doSendMagicEffect(getCreaturePosition(cid), 21) keywordFound = true break end end if not keywordFound then selfSay("Palavra-chave incorreta! Você sofre danos de vida.") doSendMagicEffect(getCreaturePosition(cid), cfg.incorrectKeywordEffect) doCreatureAddHealth(cid, -cfg.damageAmount) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) aqui vc retiro o damageAmount mais a ideia é boa 1 1 Link para o comentário https://tibiadevs.com/forums/topic/166-npc-de-teleport-com-senha/#findComment-709 Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora