Postado Julho 27, 2022 2 anos Olá, boa noite, eu gostaria de um script 8.60 que funciona da seguinte maneira, vc tem vários itens digamos que seja 4 itens diferentes e usa esses itens para trocar por x item ( um unico item ), e qnd vc falar com o npc ele fala que vai demorar x tempo para montar o item, após passar esse tempo vc vai ter que voltar lá falar com ele e pegar o item. ( a ideia é entregar vários itens para ele, qnd falar com ele remover os itens e dps do x tempo ter que falar novamente e assim entrega o item que no caso seria uma espada).
Postado Julho 28, 2022 2 anos Em 27/07/2022 em 20:13, Strikerzerh disse: vc tem vários itens digamos que seja 4 itens diferentes e usa esses itens para trocar por x item (um unico item) vai em e cria um arquivo .lua chamado NPCtroca.lua vai ficar assim: data > npc > scripts > NPCtroca.lua ai add esse código: -- make by FeeTads //assistente TibiaKing local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} local itemid = {1111,2222,3333,4444} -- id dos items necessários pra troca local save_items = 0 -- variavel apenas pra salvar a quantidade de items //nao mexer local tempo_de_espera = 60 -- em minutos local storage = 58458711 -- storage //se não souber, não mexer local item_trocado = 6565 -- id do item que vira após a troca local trocar_mais_de_uma_vez = true -- o player pode trocar varias vezes esse 4 items por 1? //true pode trocar mais de 1x //false só troca uma vez function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) if isInArray({"trocar","troca","trocar item"}, msg) then -- mensagem do player selfSay("Você deseja trocar"..#itemid.." items pelo supremo item?", cid) -- msg do NPC talkState[talkUser] = 2 elseif isInArray({"sim","quero","yes","yeah"}, msg) and talkState[talkUser] == 2 then if trocar_mais_de_uma_vez == false and getPlayerStorageValue(cid, storage) ~= -1 then selfSay("Desculpe, você já fez sua troca!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) return true end for i=1, #itemid do -- for pra fazer a contagem dos items if getPlayerItemCount(cid, itemid[i]) > 0 then -- caso o player tenha o item save_items = save_items + 1 -- salva na variavel end end if save_items >= #itemid then -- se tiver todos os items necessários selfSay("Parabéns! agora vou craftar seu item, ele irá demorar"..tempo_de_espera.." pra ficar pronto", cid) -- manda a mensagem setPlayerStorageValue(cid, storage, os.time() + (tempo_de_espera*60)) -- seta a storage pra 60 minutos for i=1, #itemid do doPlayerRemoveItem(cid, itemid[i], 1) -- remove os items do player end else selfSay("Desculpe, você não tem os items necessários!", cid) -- mensagem caso não tenha os items necessários talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif isInArray({"no","não","nao","not"}, msg) and talkState[talkUser] == 2 then -- caso o player não queira trocar, só da tchau selfSay("Tudo bem então, Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif isInArray({"receber","receber item"}, msg) then -- caso o player digite "receber" if getPlayerStorageValue(cid, storage) - os.time() <= 0 and getPlayerStorageValue(cid, storage) ~= 0 then -- checa se já passou [tempo de espera], e não é 0 if (doPlayerAddItemEx(cid, item_trocado, true) ~= RETURNVALUE_NOERROR) then -- caso o player tenha slot na bp, etc.. selfSay("Parabéns! seu item está entregue, bom jogo!", cid) -- msg do NPC setPlayerStorageValue(cid, storage, 0) -- seta a storage do player pra 0 talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else selfSay("Seu item está pronto, deixe espaço em sua BP!", cid) -- caso não consiga entregar o item só pede pra deixar espaço talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end else selfSay("Seu item {não está pronto}, volte em"..math.floor((getPlayerStorageValue(cid, storage)-os.time())/60).." minutos e"..((getPlayerStorageValue(cid, storage)-os.time())%60).." segundos", cid) -- caso ainda não esteja pronto o item talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) ai cria o xml do NPC data > npc > NPCtroca.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="[NPC] Troca" script="data/npc/scripts/NPCtroca.lua" walkinterval="0" floorchange="0" emblem="3"> <health now="100" max="100"/> <look type="133" head="21" body="1" legs="76" feet="25" addons="3"/> <parameters> <parameter key="message_greet" value="Ola, voce gostaria de {trocar} seus items pelo item supremo, ou {receber}?" /> </parameters> </npc>
Postado Julho 29, 2022 2 anos Autor Em 28/07/2022 em 15:30, FeeTads disse: vai em e cria um arquivo .lua chamado NPCtroca.lua vai ficar assim: data > npc > scripts > NPCtroca.lua ai add esse código: -- make by FeeTads //assistente TibiaKing local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} local itemid = {1111,2222,3333,4444} -- id dos items necessários pra troca local save_items = 0 -- variavel apenas pra salvar a quantidade de items //nao mexer local tempo_de_espera = 60 -- em minutos local storage = 58458711 -- storage //se não souber, não mexer local item_trocado = 6565 -- id do item que vira após a troca local trocar_mais_de_uma_vez = true -- o player pode trocar varias vezes esse 4 items por 1? //true pode trocar mais de 1x //false só troca uma vez function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) if isInArray({"trocar","troca","trocar item"}, msg) then -- mensagem do player selfSay("Você deseja trocar"..#itemid.." items pelo supremo item?", cid) -- msg do NPC talkState[talkUser] = 2 elseif isInArray({"sim","quero","yes","yeah"}, msg) and talkState[talkUser] == 2 then if trocar_mais_de_uma_vez == false and getPlayerStorageValue(cid, storage) ~= -1 then selfSay("Desculpe, você já fez sua troca!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) return true end for i=1, #itemid do -- for pra fazer a contagem dos items if getPlayerItemCount(cid, itemid[i]) > 0 then -- caso o player tenha o item save_items = save_items + 1 -- salva na variavel end end if save_items >= #itemid then -- se tiver todos os items necessários selfSay("Parabéns! agora vou craftar seu item, ele irá demorar"..tempo_de_espera.." pra ficar pronto", cid) -- manda a mensagem setPlayerStorageValue(cid, storage, os.time() + (tempo_de_espera*60)) -- seta a storage pra 60 minutos for i=1, #itemid do doPlayerRemoveItem(cid, itemid[i], 1) -- remove os items do player end else selfSay("Desculpe, você não tem os items necessários!", cid) -- mensagem caso não tenha os items necessários talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif isInArray({"no","não","nao","not"}, msg) and talkState[talkUser] == 2 then -- caso o player não queira trocar, só da tchau selfSay("Tudo bem então, Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif isInArray({"receber","receber item"}, msg) then -- caso o player digite "receber" if getPlayerStorageValue(cid, storage) - os.time() <= 0 and getPlayerStorageValue(cid, storage) ~= 0 then -- checa se já passou [tempo de espera], e não é 0 if (doPlayerAddItemEx(cid, item_trocado, true) ~= RETURNVALUE_NOERROR) then -- caso o player tenha slot na bp, etc.. selfSay("Parabéns! seu item está entregue, bom jogo!", cid) -- msg do NPC setPlayerStorageValue(cid, storage, 0) -- seta a storage do player pra 0 talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else selfSay("Seu item está pronto, deixe espaço em sua BP!", cid) -- caso não consiga entregar o item só pede pra deixar espaço talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end else selfSay("Seu item {não está pronto}, volte em"..((getPlayerStorageValue(cid, storage)-os.time())/60).." minutos", cid) -- caso ainda não esteja pronto o item talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) ai cria o xml do NPC data > npc > NPCtroca.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="[NPC] Troca" script="data/npc/scripts/NPCtroca.lua" walkinterval="0" floorchange="0" emblem="3"> <health now="100" max="100"/> <look type="133" head="21" body="1" legs="76" feet="25" addons="3"/> <parameters> <parameter key="message_greet" value="Ola, voce gostaria de {trocar} seus items pelo item supremo, ou {receber}?" /> </parameters> </npc> Está dando esse erro na distro quando o player vai receber o item e o player não recebe o item, e eu gostaria se possível que colocasse quantidade nos itens para entregar ao npc, e um outro bug seria esse aqui o minuto ta bugado em vez de aparecer tipo 55:16 aparece 55.16666666616:02 Roger: Seu item não está pronto, volte em55.166666666666 minutos
Postado Julho 29, 2022 2 anos 2 horas atrás, Strikerzerh disse: Está dando esse erro na distro quando o player vai receber o item e o player não recebe o item trocou os ID's certinho no cabeçalho? confere o ID do "item_trocado" 2 horas atrás, Strikerzerh disse: tipo 55:16 aparece 55.1666666661 nesse, troque isso: selfSay("Seu item {não está pronto}, volte em"..((getPlayerStorageValue(cid, storage)-os.time())/60).." minutos", cid) -- caso ainda não esteja pronto o item pra isso: selfSay("Seu item {não está pronto}, volte em"..math.floor((getPlayerStorageValue(cid, storage)-os.time())/60).." minutos e"..((getPlayerStorageValue(cid, storage)-os.time())%60).." segundos", cid) -- caso ainda não esteja pronto o item 2 horas atrás, Strikerzerh disse: player não recebe o item caso esteja certo os ID's, tenta essa script: 1º fix: coloquei o "doCreateItemEx" antes de add -- make by FeeTads //assistente TibiaKing local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} local itemid = {8976,8978} -- id dos items necessários pra troca local save_items = 0 -- variavel apenas pra salvar a quantidade de items //nao mexer local tempo_de_espera = 20 -- em minutos local storage = 58458711 -- storage //se não souber, não mexer local item_trocado = 7775 -- id do item que vira após a troca local trocar_mais_de_uma_vez = true -- o player pode trocar varias vezes esse 4 items por 1? //true pode trocar mais de 1x //false só troca uma vez function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) if isInArray({"trocar","troca","trocar item"}, msg) then -- mensagem do player selfSay("Você deseja trocar"..#itemid.." items pelo supremo item?", cid) -- msg do NPC talkState[talkUser] = 2 elseif isInArray({"sim","quero","yes","yeah"}, msg) and talkState[talkUser] == 2 then if trocar_mais_de_uma_vez == false and getPlayerStorageValue(cid, storage) ~= -1 then selfSay("Desculpe, você já fez sua troca!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) return true end for i=1, #itemid do -- for pra fazer a contagem dos items if getPlayerItemCount(cid, itemid[i]) > 0 then -- caso o player tenha o item save_items = save_items + 1 -- salva na variavel end end if save_items >= #itemid then -- se tiver todos os items necessários selfSay("Parabéns! agora vou craftar seu item, ele irá demorar"..tempo_de_espera.." pra ficar pronto", cid) -- manda a mensagem setPlayerStorageValue(cid, storage, os.time() + (tempo_de_espera)) -- seta a storage pra 60 minutos for i=1, #itemid do doPlayerRemoveItem(cid, itemid[i], 1) -- remove os items do player end else selfSay("Desculpe, você não tem os items necessários!", cid) -- mensagem caso não tenha os items necessários talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end elseif isInArray({"no","não","nao","not"}, msg) and talkState[talkUser] == 2 then -- caso o player não queira trocar, só da tchau selfSay("Tudo bem então, Bye!", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) elseif isInArray({"receber","receber item"}, msg) then -- caso o player digite "receber" if getPlayerStorageValue(cid, storage) - os.time() <= 0 and getPlayerStorageValue(cid, storage) ~= 0 then -- checa se já passou [tempo de espera], e não é 0 local new_item = doCreateItemEx(item_trocado, 1) local receive = doPlayerAddItemEx(cid, new_item) if receive == RETURNVALUE_NOERROR then -- caso o player tenha slot na bp, etc.. selfSay("Parabéns! seu item está entregue, bom jogo!", cid) -- msg do NPC setPlayerStorageValue(cid, storage, 0) -- seta a storage do player pra 0 talkState[talkUser] = 0 npcHandler:releaseFocus(cid) else selfSay("Seu item está pronto, deixe espaço em sua BP!", cid) -- caso não consiga entregar o item só pede pra deixar espaço talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end else selfSay("Seu item {não está pronto}, volte em"..math.floor((getPlayerStorageValue(cid, storage)-os.time())/60).." minutos e"..((getPlayerStorageValue(cid, storage)-os.time())%60).." segundos", cid) -- caso ainda não esteja pronto o item talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Postado Julho 30, 2022 2 anos Autor Está dando vários bugs, porem agora ele ta entregando o item... teria como vc me adicionar no discord e qnd arrumar certinho a gente posta a solução aqui?
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.