Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

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).

Resolvido por FeeTads

Ir para solução
  • Respostas 32
  • Visualizações 1.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Não posso dar suporte de scripts postados aki, fora do TibiaKing manin segue o código arrumado: caso tenha algum bug, manda print do erro do console. data > npc > scripts > NPCtro

  • boa, funcionou?

Posted Images

Postado
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
  • 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

image.png

Postado
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())


 

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo