Bielzet 0 Postado 23 de Setembro Compartilhar Postado 23 de Setembro Rapaziada, eu sou novo nesse Revscript e eu estou precisando de uma ajuda, a quest não mostra iniciada (oque não é tão relevante assim para mim) e quando eu clico no bau eu escolho qual dos items eu quero e pego um deles (onde finalizo a quest) não aparece no quest log que aquela quest foi completada ou finalizada etc No caso a quest era para funcionar assim: Passa pela porta lvl 200 o tile ou a porta mesmo notifica o player que a quest foi iniciada, e quando clicar no bau a quest finaliza e mostra no quest log, ou então apenas quando ele clica no bau a quest é mostrada finalizada no quest log Esse aqui é meu Moviments Citar local theFlameDoor = MoveEvent() function theFlameDoor.onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end if player:getStorageValue(Storage.Quest.TheFlame.QuestStart) ~= 1 then player:setStorageValue(Storage.Quest.TheFlame.QuestStart, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have entered the quest area. Defeat the monsters and claim your reward!") end return true end theFlameDoor:type("stepin") theFlameDoor:aid(50001) -- Action ID da porta no RME theFlameDoor:register() esse aqui é meu Storages Citar Storage = { Quest = { Key = { ID1000 = 103, }, ExampleQuest = { Example = 9000, Door = 9001, }, TheFlame = { QuestStart = 50001, ChestReward = 50002, QuestComplete = 50003, }, }, DelayLargeSeaShell = 30002, Imbuement = 30004, } GlobalStorage = { ExampleQuest = { Example = 60000, }, } esse é meu LIB/QUEST.LUA Citar if not Quests then Quests = { [1] = { name = "Example", startStorageId = Storage.Quest.ExampleQuest.Example, startStorageValue = 1, missions = { [1] = { name = "The Hidden Seal", storageId = Storage.Quest.ExampleQuest.Example, missionId = 1, startValue = 1, endValue = 1, description = "You broke the first seal.", }, }, }, } end -- Adicionando nova quest (sem apagar a anterior) Quests[#Quests + 1] = { name = "The Flame", startStorageId = Storage.Quest.TheFlame.QuestStart, startStorageValue = 1, missions = { [1] = { name = "The Flame", storageId = Storage.Quest.TheFlame.QuestComplete, missionId = 1001, startValue = 0, endValue = 1, states = { [0] = "Enter The Flame quest area, defeat the monsters and claim your legendary reward!", [1] = "You have completed The Flame quest and claimed your legendary weapon!" } } } } e esse é meu ESSE É MEU ACTIONS/QUEST/THE_FLAME_CHEST.LUA Citar local theFlameChest = Action() local choiceRewards = { [8001] = {id = 3309, count = 1}, -- thunder hammer [8002] = {id = 8097, count = 1}, -- solar axe [8003] = {id = 8103, count = 1}, -- epiphany (sword) } function theFlameChest.onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Verifica se o player já pegou a recompensa if player:getStorageValue(Storage.Quest.TheFlame.ChestReward) == 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "It is empty.") return true end -- Verifica se o player iniciou a quest if player:getStorageValue(Storage.Quest.TheFlame.QuestStart) ~= 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You haven't completed the requirements for this quest.") return true end -- Pega a recompensa do baú específico local reward = choiceRewards[item.uid] if not reward then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "This chest has no reward.") return true end local rewardItem = player:addItem(reward.id, reward.count) if rewardItem then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have found a " .. ItemType(reward.id):getName():lower() .. ".") player:setStorageValue(Storage.Quest.TheFlame.ChestReward, 1) player:setStorageValue(Storage.Quest.TheFlame.QuestComplete, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Quest completed!") else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don't have enough space in your inventory.") end return true end -- Registrando os 3 baús pelo UID theFlameChest:uid(8001) theFlameChest:uid(8002) theFlameChest:uid(8003) theFlameChest:register() Link para o comentário https://tibiadevs.com/forums/topic/1253-revscript-quest-n%C3%A3o-aparece-no-quest-log-e-n%C3%A3o-da-inicio-de-quest/ Compartilhar em outros sites Mais opções de compartilhamento...
amoxicilina 277 Postado 24 de Setembro Compartilhar Postado 24 de Setembro Amigo @ Bielzet Abra o arquivo lib/quest.lua no seu servidor, apague todo o conteúdo atual do arquivo e cole o código abaixo no lugar e teste para ver se ele vai ser exibido como você deseja. xD if not Quests then Quests = { [1] = { name = "Example", startStorageId = Storage.Quest.ExampleQuest.Example, startStorageValue = 1, missions = { [1] = { name = "The Hidden Seal", storageId = Storage.Quest.ExampleQuest.Example, missionId = 1, startValue = 1, endValue = 1, description = "You broke the first seal.", }, }, }, [2] = { name = "The Flame", startStorageId = Storage.Quest.TheFlame.QuestStart, startStorageValue = 1, missions = { [1] = { name = "The Flame", storageId = Storage.Quest.TheFlame.QuestComplete, missionId = 1001, startValue = 0, endValue = 1, description = "Begin your journey into the flames.", states = { [0] = "Enter The Flame quest area, defeat the monsters and claim your legendary reward!", [1] = "You have completed The Flame quest and claimed your legendary weapon!" } } } } } end ACTIONS/THE_FLAME_CHEST.LUA local theFlameChest = Action() -- Tabela de recompensas por UID do baú local chestRewards = { [8001] = {id = 3309, name = "Thunder Hammer"}, -- Thunder Hammer [8002] = {id = 8097, name = "Solar Axe"}, -- Solar Axe [8003] = {id = 8103, name = "Epiphany"}, -- Epiphany (Sword) } -- Mensagens padrão local MESSAGES = { EMPTY = "Está vazio.", NOT_ELIGIBLE = "Você não concluiu os requisitos para esta missão.", NO_REWARD = "Este baú não tem recompensa.", SUCCESS = "Você encontrou um %s.", QUEST_COMPLETE = "Missão concluída!", NO_SPACE = "Você não tem espaço suficiente no seu inventário." } function theFlameChest.onUse(player, item, fromPosition, target, toPosition, isHotkey) local reward = chestRewards[item.uid] -- Verifica se o baú tem recompensa definida if not reward then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NO_REWARD) return true end -- Verifica se o jogador já recebeu a recompensa if player:getStorageValue(Storage.Quest.TheFlame.ChestReward) == 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.EMPTY) return true end -- Verifica se o jogador iniciou a quest if player:getStorageValue(Storage.Quest.TheFlame.QuestStart) ~= 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NOT_ELIGIBLE) return true end -- Tenta adicionar o item ao inventário local itemReceived = player:addItem(reward.id, 1) if itemReceived then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format(MESSAGES.SUCCESS, reward.name:lower())) player:setStorageValue(Storage.Quest.TheFlame.ChestReward, 1) player:setStorageValue(Storage.Quest.TheFlame.QuestComplete, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.QUEST_COMPLETE) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NO_SPACE) end return true end -- Registra os baús com seus respectivos UIDs for uid in pairs(chestRewards) do theFlameChest:uid(uid) end theFlameChest:register() Espero ter ajudado! 1 Link para o comentário https://tibiadevs.com/forums/topic/1253-revscript-quest-n%C3%A3o-aparece-no-quest-log-e-n%C3%A3o-da-inicio-de-quest/#findComment-6454 Compartilhar em outros sites Mais opções de compartilhamento...
Bielzet 0 Postado 28 de Setembro Autor Compartilhar Postado 28 de Setembro Em 24/09/2025 em 20:59, amoxicilina disse: Amigo @ Bielzet Abra o arquivo lib/quest.lua no seu servidor, apague todo o conteúdo atual do arquivo e cole o código abaixo no lugar e teste para ver se ele vai ser exibido como você deseja. xD if not Quests then Quests = { [1] = { name = "Example", startStorageId = Storage.Quest.ExampleQuest.Example, startStorageValue = 1, missions = { [1] = { name = "The Hidden Seal", storageId = Storage.Quest.ExampleQuest.Example, missionId = 1, startValue = 1, endValue = 1, description = "You broke the first seal.", }, }, }, [2] = { name = "The Flame", startStorageId = Storage.Quest.TheFlame.QuestStart, startStorageValue = 1, missions = { [1] = { name = "The Flame", storageId = Storage.Quest.TheFlame.QuestComplete, missionId = 1001, startValue = 0, endValue = 1, description = "Begin your journey into the flames.", states = { [0] = "Enter The Flame quest area, defeat the monsters and claim your legendary reward!", [1] = "You have completed The Flame quest and claimed your legendary weapon!" } } } } } end ACTIONS/THE_FLAME_CHEST.LUA local theFlameChest = Action() -- Tabela de recompensas por UID do baú local chestRewards = { [8001] = {id = 3309, name = "Thunder Hammer"}, -- Thunder Hammer [8002] = {id = 8097, name = "Solar Axe"}, -- Solar Axe [8003] = {id = 8103, name = "Epiphany"}, -- Epiphany (Sword) } -- Mensagens padrão local MESSAGES = { EMPTY = "Está vazio.", NOT_ELIGIBLE = "Você não concluiu os requisitos para esta missão.", NO_REWARD = "Este baú não tem recompensa.", SUCCESS = "Você encontrou um %s.", QUEST_COMPLETE = "Missão concluída!", NO_SPACE = "Você não tem espaço suficiente no seu inventário." } function theFlameChest.onUse(player, item, fromPosition, target, toPosition, isHotkey) local reward = chestRewards[item.uid] -- Verifica se o baú tem recompensa definida if not reward then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NO_REWARD) return true end -- Verifica se o jogador já recebeu a recompensa if player:getStorageValue(Storage.Quest.TheFlame.ChestReward) == 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.EMPTY) return true end -- Verifica se o jogador iniciou a quest if player:getStorageValue(Storage.Quest.TheFlame.QuestStart) ~= 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NOT_ELIGIBLE) return true end -- Tenta adicionar o item ao inventário local itemReceived = player:addItem(reward.id, 1) if itemReceived then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format(MESSAGES.SUCCESS, reward.name:lower())) player:setStorageValue(Storage.Quest.TheFlame.ChestReward, 1) player:setStorageValue(Storage.Quest.TheFlame.QuestComplete, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.QUEST_COMPLETE) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NO_SPACE) end return true end -- Registra os baús com seus respectivos UIDs for uid in pairs(chestRewards) do theFlameChest:uid(uid) end theFlameChest:register() Espero ter ajudado! Funcionou sim irmão, muito obrigado E se eu fosse fazer uma quest que ganha apenas um item seria da mesma maneira? @amoxicilina esse seria o Crystal_Arrow_chest Citar local CrystalArrowChest = Action() -- Tabela de recompensas por UID do baú local chestRewards = { [8004] = {id = 3239, name = "Thunder Hammer"}, -- Thunder Hammer } -- Mensagens padrão local MESSAGES = { EMPTY = "Está vazio.", NOT_ELIGIBLE = "Você não concluiu os requisitos para esta missão.", NO_REWARD = "Este baú não tem recompensa.", SUCCESS = "Você encontrou um %s.", QUEST_COMPLETE = "Missão concluída!", NO_SPACE = "Você não tem espaço suficiente no seu inventário." } function CrystalArrowChest.onUse(player, item, fromPosition, target, toPosition, isHotkey) local reward = chestRewards[item.uid] -- Verifica se o baú tem recompensa definida if not reward then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NO_REWARD) return true end -- Verifica se o jogador já recebeu a recompensa if player:getStorageValue(Storage.Quest.CrystalArrow.ChestReward) == 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.EMPTY) return true end -- Verifica se o jogador iniciou a quest if player:getStorageValue(Storage.Quest.CrystalArrow.QuestStart) ~= 1 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NOT_ELIGIBLE) return true end -- Tenta adicionar o item ao inventário local itemReceived = player:addItem(reward.id, 1) if itemReceived then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, string.format(MESSAGES.SUCCESS, reward.name:lower())) player:setStorageValue(Storage.Quest.CrystalArrow.ChestReward, 1) player:setStorageValue(Storage.Quest.CrystalArrow.QuestComplete, 1) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.QUEST_COMPLETE) else player:sendTextMessage(MESSAGE_EVENT_ADVANCE, MESSAGES.NO_SPACE) end return true end -- Registra os baús com seus respectivos UIDs for uid in pairs(chestRewards) do CrystalArrowChestt:uid(uid) end CrystalArrowChest:register() esse seria o storage Citar Storage = { Quest = { Key = { ID1000 = 103, }, ExampleQuest = { Example = 9000, Door = 9001, }, TheFlame = { QuestStart = 500012, ChestReward = 500022, QuestComplete = 500032, }, CrystalArrow = { QuestStart = 50022, ChestReward = 50023, QuestComplete = 50024, }, }, DelayLargeSeaShell = 30002, Imbuement = 30004, } GlobalStorage = { ExampleQuest = { Example = 60000, }, } esse seria o quest.lua Citar if not Quests then Quests = { [1] = { name = "Example", startStorageId = Storage.Quest.ExampleQuest.Example, startStorageValue = 1, missions = { [1] = { name = "The Hidden Seal", storageId = Storage.Quest.ExampleQuest.Example, missionId = 1, startValue = 1, endValue = 1, description = "You broke the first seal.", }, }, }, [2] = { name = "The Flame", startStorageId = Storage.Quest.TheFlame.QuestStart, startStorageValue = 1, missions = { [1] = { name = "The Flame Trial", storageId = Storage.Quest.TheFlame.QuestComplete, missionId = 1001, startValue = 0, endValue = 1, description = "Begin your journey into the flames.", states = { [0] = "Enter The Flame quest area, defeat the monsters and claim your legendary reward!", [1] = "You have completed The Flame quest and claimed your legendary weapon!" } } } }, [3] = { name = "Crystal Arrow", startStorageId = Storage.Quest.CrystalArrow.QuestStart, -- Storage próprio startStorageValue = 1, missions = { [1] = { name = "Crystal Arrow", storageId = Storage.Quest.CrystalArrow.QuestComplete, -- Storage próprio missionId = 1002, startValue = 0, endValue = 1, description = "Begin your journey to find the Crystal Arrow.", states = { [0] = "Enter Crystal Arrow quest area, defeat the monsters and claim your legendary reward!", [1] = "You have completed Crystal Arrow quest and claimed your legendary weapon!" } } } } } end Se estiver errado e puder falar onde eu errei para que eu possa arrumar para aprender e não encher o saco mais do pessoal obrigado mano Link para o comentário https://tibiadevs.com/forums/topic/1253-revscript-quest-n%C3%A3o-aparece-no-quest-log-e-n%C3%A3o-da-inicio-de-quest/#findComment-6472 Compartilhar em outros sites Mais opções de compartilhamento...
amoxicilina 277 Postado 9 de Outubro Compartilhar Postado 9 de Outubro Em 28/09/2025 em 03:44, Bielzet disse: Funcionou sim irmão, muito obrigado E se eu fosse fazer uma quest que ganha apenas um item seria da mesma maneira? @amoxicilina esse seria o Crystal_Arrow_chest esse seria o storage esse seria o quest.lua Se estiver errado e puder falar onde eu errei para que eu possa arrumar para aprender e não encher o saco mais do pessoal obrigado mano Nessa sua dúvida sobre o arquivo Crystal_Arrow_chest.lua, temos duas questões a serem consideradas. 1° Primeira. CORRETA -- Tabela de recompensas por UID do baú local chestRewards = { [8004] = {id = 3239, name = "Thunder Hammer"}, -- Thunder Hammer } 2° Segunda. ERRADA CrystalArrowChestt:uid(uid) Sua variável é CrystalArrowChest "(com um t)" você colocou com dois. Isso vai causar erro (attempt to index global 'CrystalArrowChestt') @ Bielzet Se você tiver outras dúvidas sobre algum assunto específico, recomendo criar um novo tópico. Caso a questão principal deste tópico já tenha sido solucionada, peça aos moderadores para marcá-lo como “Resolvido”. Assim evitamos que o tópico fique poluído e ajudamos a manter o fórum mais organizado e dinâmico, facilitando também para quem, no futuro, tiver dúvidas semelhantes às suas. Link para o comentário https://tibiadevs.com/forums/topic/1253-revscript-quest-n%C3%A3o-aparece-no-quest-log-e-n%C3%A3o-da-inicio-de-quest/#findComment-6579 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