Postado Fevereiro 27, 2023 2 anos .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? Preciso de Um Npc Que te de 3 opções de escolha de item, podendo falar com ele se tiver apenas storage x (ele não pede nada em troca) E só pode trocar com ele 1x por mês Está surgindo algum erro? Se sim coloque-o aqui. Citar Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
Postado Fevereiro 27, 2023 2 anos Testa Mostrar conteúdo oculto local ITEM1_ID = 123 -- substitua pelo ID do item 1 local ITEM2_ID = 456 -- substitua pelo ID do item 2 local ITEM3_ID = 789 -- substitua pelo ID do item 3 local STORAGE_VALUE = 12345 -- substitua por um valor único para a chave do storage local MONTH_IN_SECONDS = 30 * 24 * 60 * 60 -- 30 dias em segundos function onCreatureSay(cid, type, msg) if (type == MESSAGE_STATUS_NPC) then if (msgcontains(msg, "Hi")) then local lastTime = getPlayerStorageValue(cid, STORAGE_VALUE) local now = os.time() if (lastTime == -1 or (now - lastTime) >= MONTH_IN_SECONDS) then if (getPlayerStorageValue(cid, storageValueX) == 100101010) then npcHandler:say("Olá, ".. getPlayerName(cid) ..". Vejo que você concluiu a missão X. Eu posso oferecer 3 opções de recompensas para você escolher:", cid) npcHandler:say("Opção 1: [Gold]", cid) npcHandler:say("Opção 2: [Gold Armor]", cid) npcHandler:say("Opção 3: [Gold Legs]", cid) else npcHandler:say("Você precisa concluir a missão X antes de receber recompensas aqui.", cid) end else local timeLeft = os.date("!%X", MONTH_IN_SECONDS - (now - lastTime)) npcHandler:say("Desculpe, ".. getPlayerName(cid) ..". Você já pegou uma recompensa aqui recentemente. Volte em " .. timeLeft .. " para pegar novamente.", cid) end elseif (msgcontains(msg, "Opção 1")) then doPlayerAddItem(cid, ITEM1_ID, 1) npcHandler:say("Aqui está o seu [Gold]. Aproveite!", cid) setPlayerStorageValue(cid, STORAGE_VALUE, os.time()) elseif (msgcontains(msg, "Opção 2")) then doPlayerAddItem(cid, ITEM2_ID, 1) npcHandler:say("Aqui está o seu [Gold Armor]. Aproveite!", cid) setPlayerStorageValue(cid, STORAGE_VALUE, os.time()) elseif (msgcontains(msg, "Opção 3")) then doPlayerAddItem(cid, ITEM3_ID, 1) npcHandler:say("Aqui está o seu [Gold Legs]. Aproveite!", cid) setPlayerStorageValue(cid, STORAGE_VALUE, os.time()) end end return true end
Postado Fevereiro 28, 2023 2 anos Autor Em 27/02/2023 em 21:39, Maniaco disse: Testa Mostrar conteúdo oculto Mostrar conteúdo oculto local ITEM1_ID = 123 -- substitua pelo ID do item 1 local ITEM2_ID = 456 -- substitua pelo ID do item 2 local ITEM3_ID = 789 -- substitua pelo ID do item 3 local STORAGE_VALUE = 12345 -- substitua por um valor único para a chave do storage local MONTH_IN_SECONDS = 30 * 24 * 60 * 60 -- 30 dias em segundos function onCreatureSay(cid, type, msg) if (type == MESSAGE_STATUS_NPC) then if (msgcontains(msg, "Hi")) then local lastTime = getPlayerStorageValue(cid, STORAGE_VALUE) local now = os.time() if (lastTime == -1 or (now - lastTime) >= MONTH_IN_SECONDS) then if (getPlayerStorageValue(cid, storageValueX) == 100101010) then npcHandler:say("Olá, ".. getPlayerName(cid) ..". Vejo que você concluiu a missão X. Eu posso oferecer 3 opções de recompensas para você escolher:", cid) npcHandler:say("Opção 1: [Gold]", cid) npcHandler:say("Opção 2: [Gold Armor]", cid) npcHandler:say("Opção 3: [Gold Legs]", cid) else npcHandler:say("Você precisa concluir a missão X antes de receber recompensas aqui.", cid) end else local timeLeft = os.date("!%X", MONTH_IN_SECONDS - (now - lastTime)) npcHandler:say("Desculpe, ".. getPlayerName(cid) ..". Você já pegou uma recompensa aqui recentemente. Volte em " .. timeLeft .. " para pegar novamente.", cid) end elseif (msgcontains(msg, "Opção 1")) then doPlayerAddItem(cid, ITEM1_ID, 1) npcHandler:say("Aqui está o seu [Gold]. Aproveite!", cid) setPlayerStorageValue(cid, STORAGE_VALUE, os.time()) elseif (msgcontains(msg, "Opção 2")) then doPlayerAddItem(cid, ITEM2_ID, 1) npcHandler:say("Aqui está o seu [Gold Armor]. Aproveite!", cid) setPlayerStorageValue(cid, STORAGE_VALUE, os.time()) elseif (msgcontains(msg, "Opção 3")) then doPlayerAddItem(cid, ITEM3_ID, 1) npcHandler:say("Aqui está o seu [Gold Legs]. Aproveite!", cid) setPlayerStorageValue(cid, STORAGE_VALUE, os.time()) end end return true end falo com ele mas nada acontece não da erro na distro [TFS 0.4]
Postado Março 13, 2023 2 anos Diretor Não testei. 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 -- Configuração das opções de itens local options = { {itemId = 2160, count = 5}, -- Opção 1: 5 Crystal Coins {itemId = 8303, count = 1}, -- Opção 2: 1 Silver Rune Emblem {itemId = 2148, count = 1000} -- Opção 3: 1000 Gold Coins } -- Configuração da mensagem de cada opção local messages = { "Option 1: 5 Crystal Coins", "Option 2: 1 Silver Rune Emblem", "Option 3: 1000 Gold Coins" } function onGreet(cid) selfSay("Hello! What do you want to trade for?", cid) return true end function onTradeRequest(cid) local playerOptions = {} for i, option in ipairs(options) do if getPlayerItemCount(cid, option.itemId) >= option.count then table.insert(playerOptions, i) end end if #playerOptions == 0 then selfSay("You don't have enough items to trade for anything.", cid) return false end local message = "Choose one of these options:\n" for i, optionIndex in ipairs(playerOptions) do message = message .. messages[optionIndex] .. "\n" end npcHandler:say(message, cid) npcHandler.topic[cid] = 0 return true end function onTradeRequest(cid) local playerOptions = {} for i, option in ipairs(options) do if getPlayerItemCount(cid, option.itemId) >= option.count then table.insert(playerOptions, i) end end if #playerOptions == 0 then selfSay("You don't have enough items to trade for anything.", cid) return false end local message = "Choose one of these options:\n" for i, optionIndex in ipairs(playerOptions) do message = message .. messages[optionIndex] .. "\n" end npcHandler:say(message, cid) npcHandler.topic[cid] = 0 return true end function onTradeRequest(cid, target, item, count, ignoreCap, inBackpacks) if not npcHandler:isFocused(cid) then return false end local option = options[npcHandler.topic[cid]] local cost = option.count if getPlayerItemCount(cid, item) < count then selfSay("You don't have enough items to trade for this option.", cid) return false end if not doPlayerRemoveItem(cid, item, count) then selfSay("You don't have enough items to trade for this option.", cid) return false end if not doPlayerAddItem(cid, option.itemId, cost) then selfSay("You don't have enough space to receive the items for this option.", cid) return false end selfSay("Thank you for your trade!", cid) return true end npcHandler:setCallback(CALLBACK_GREET, onGreet) npcHandler:setCallback(CALLBACK_ONTRADEREQUEST, onTradeRequest) npcHandler:setCallback(CALLBACK_ONTRADE, onTrade) npcHandler:addModule(FocusModule:new()) Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código. #OpenSource #Programação #Contribuição
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.