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 Citar Link para o comentário 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 Citar Link para o comentário 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 Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da Conversa
Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.