Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olá,

Bom... teve um pedido no Discord da TK feito por algum usuário (não estou recordando o nome) que estava tendo dificuldades em fazer determinado script, então decidi fazê-lo. É algo simples, eu já tinha enviado lá no canal de suporte, porém, como já de conhecimento por muitos, o canal foi removido. Decidi refazer de uma forma melhor e mais prática.

* Sobre o Script * 

Quando o jogador utilizar a alavanca para ganhar determinado(s) item(s), ele terá que ter deixado em POSIÇÕES DEFINIDAS alguns itens, sendo assim, possível efetuar a troca. Simples, não? Caso ainda não tenha entendido, tem imagem abaixo de como funciona o mesmo.

 

* Imagens demonstração * 

Screenshot_14.thumb.png.5a3660a6702d46a2179f65cb3fa9dba9.pngScreenshot_15.png.1f65bb4f01d9e48debad1be4dddb3904.png

Tentando efetuar a troca sem tá com os itens posicionados de forma correta...

 

Screenshot_17.thumb.png.f5d998830ae6a6c911fe471e02bd447e.pngScreenshot_18.png.ebe44a4398f9f1431f6eb4952fabed56.png

Efetuando a troca de forma correta.

 

* Instalando o Script * 

Em data/actions/scripts/ crie um arquivo chamado alavanca_troca.lua e cole isto dentro:

--[[
Lordzetros - TK
]]

local config_itens = {
	{id = 2666, pos = {144,63,6}, count = 1}, -- ID DO ITEM NECESSÁRIO, POSIÇÃO QUE DEVE FICAR, QUANTIDADE DE ITEM NECESSÁRIO
	{id = 2667, pos = {145,63,6}, count = 1},
	{id = 2671, pos = {146,63,6}, count = 1}, -- Caso queira colocar outro item, basta seguir esse modelo (ctrl + c)
}

local config_troca = {
	msg_falha = "Falha na troca do item. Necessario: %dx %s em sua devida posicao!",
	msg_sucesso = "A troca foi efetuada com sucesso!",
	recompensas = {{id = 2003, count = 1}, {id = 2004, count = 1}} -- Para deixar apenas uma recompensa, apenas deixe recompensas = {{id = ID_DO_ITEM_A_GANHAR, count = QUANTIDADE_A_GANHAR}}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local ax_t = {}
	for i, v in ipairs(config_itens) do 
		local vt = Tile(Position(v.pos[1], v.pos[2], v.pos[3]))
		local item_t = vt:getItemById(v.id)
		if (not item_t or item_t:getCount() < v.count) then
			player:getPosition():sendMagicEffect(CONST_ME_POFF)
			player:sendTextMessage(36, config_troca.msg_falha:format(v.count, ItemType(v.id):getName()))
			return false
		end
		table.insert(ax_t, {item_t, v.count})
	end
	
	for i, v in ipairs(ax_t) do 
		v[1]:remove(v[2])
	end
	
	for i, v in ipairs(config_troca.recompensas) do 
		player:addItem(v.id, v.count)
	end
	
	player:sendTextMessage(36, config_troca.msg_sucesso)
	player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_RED)
	return true
end

Em seguida, coloque esta linha de código abaixo de uma semelhante em data/actions/actions.xml

<action actionid="30258" script="alavanca_troca.lua" />

 

Para finalizar, abre seu editor de mapa e coloque em algum alavanca o actionID = 30258

Screenshot_13.thumb.png.f784dcea013dbc99dba28b942946ef22.png

 

 

* Configurando o Script * 

Tá tudo comentado no código, portanto, vou falar só por cima.


 {id = 2666, pos = {144,63,6}, count = 1}

Nesta parte, você deve colocar o id do item necessário, a posição que ele deve ficar e a quantidade.

 

E nesta parte você configura a recompensa do jogador

 recompensas = {{id = 2003, count = 1}, {id = 2004, count = 1}}

Id do item que ele ganhará e quantidade

 

 

Enfim, script simples, porém, pode ser útil para muitos, assim como acredito que será para o usuário que solicitou, :). Abraços.

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

  • 1 month later...
  • 1 year later...
Postado
Em 16/01/2019 em 20:28, lordzetros disse:

Olá,

Bom... teve um pedido no Discord da TK feito por algum usuário (não estou recordando o nome) que estava tendo dificuldades em fazer determinado script, então decidi fazê-lo. É algo simples, eu já tinha enviado lá no canal de suporte, porém, como já de conhecimento por muitos, o canal foi removido. Decidi refazer de uma forma melhor e mais prática.

* Sobre o Script * 

Quando o jogador utilizar a alavanca para ganhar determinado(s) item(s), ele terá que ter deixado em POSIÇÕES DEFINIDAS alguns itens, sendo assim, possível efetuar a troca. Simples, não? Caso ainda não tenha entendido, tem imagem abaixo de como funciona o mesmo.

 

* Imagens demonstração * 

Screenshot_14.thumb.png.5a3660a6702d46a2179f65cb3fa9dba9.pngScreenshot_15.png.1f65bb4f01d9e48debad1be4dddb3904.png

Tentando efetuar a troca sem tá com os itens posicionados de forma correta...

 

Screenshot_17.thumb.png.f5d998830ae6a6c911fe471e02bd447e.pngScreenshot_18.png.ebe44a4398f9f1431f6eb4952fabed56.png

Efetuando a troca de forma correta.

 

* Instalando o Script * 

Em data/actions/scripts/ crie um arquivo chamado alavanca_troca.lua e cole isto dentro:


--[[
Lordzetros - TK
]]

local config_itens = {
	{id = 2666, pos = {144,63,6}, count = 1}, -- ID DO ITEM NECESSÁRIO, POSIÇÃO QUE DEVE FICAR, QUANTIDADE DE ITEM NECESSÁRIO
	{id = 2667, pos = {145,63,6}, count = 1},
	{id = 2671, pos = {146,63,6}, count = 1}, -- Caso queira colocar outro item, basta seguir esse modelo (ctrl + c)
}

local config_troca = {
	msg_falha = "Falha na troca do item. Necessario: %dx %s em sua devida posicao!",
	msg_sucesso = "A troca foi efetuada com sucesso!",
	recompensas = {{id = 2003, count = 1}, {id = 2004, count = 1}} -- Para deixar apenas uma recompensa, apenas deixe recompensas = {{id = ID_DO_ITEM_A_GANHAR, count = QUANTIDADE_A_GANHAR}}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local ax_t = {}
	for i, v in ipairs(config_itens) do 
		local vt = Tile(Position(v.pos[1], v.pos[2], v.pos[3]))
		local item_t = vt:getItemById(v.id)
		if (not item_t or item_t:getCount() < v.count) then
			player:getPosition():sendMagicEffect(CONST_ME_POFF)
			player:sendTextMessage(36, config_troca.msg_falha:format(v.count, ItemType(v.id):getName()))
			return false
		end
		table.insert(ax_t, {item_t, v.count})
	end
	
	for i, v in ipairs(ax_t) do 
		v[1]:remove(v[2])
	end
	
	for i, v in ipairs(config_troca.recompensas) do 
		player:addItem(v.id, v.count)
	end
	
	player:sendTextMessage(36, config_troca.msg_sucesso)
	player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_RED)
	return true
end

Em seguida, coloque esta linha de código abaixo de uma semelhante em data/actions/actions.xml


<action actionid="30258" script="alavanca_troca.lua" />

 

Para finalizar, abre seu editor de mapa e coloque em algum alavanca o actionID = 30258

Screenshot_13.thumb.png.f784dcea013dbc99dba28b942946ef22.png

 

 

* Configurando o Script * 

Tá tudo comentado no código, portanto, vou falar só por cima.


 {id = 2666, pos = {144,63,6}, count = 1}

Nesta parte, você deve colocar o id do item necessário, a posição que ele deve ficar e a quantidade.

 

E nesta parte você configura a recompensa do jogador

 recompensas = {{id = 2003, count = 1}, {id = 2004, count = 1}}

Id do item que ele ganhará e quantidade

 

 

Enfim, script simples, porém, pode ser útil para muitos, assim como acredito que será para o usuário que solicitou, :). Abraços.

Cara, eu ainda nem testei...  Mas se não funcionar eu corrijo e adapto. porem, só de eu poder reduzir 10 NPCs de troca que eu tenho no final de uma quest por apenas um SQM com alavanca, tu ja é um mito ! já deixei o troféuzinho ali nao sei se é isso o Tep+ que vcs pedem.. mas ja deixei ali.

  • 1 month later...

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

Informação Importante

Confirmação de Termo