Ir para conteúdo

Featured Replies

Postado
Em 17/06/2017 em 19:23, lordzetros disse:

   Olá pessoal da comunidade de Tibia!
   Bom, hoje trouxe um pequeno e simples script, mas que pode ajudar muita gente. Vi alguns posts referindo aos NPCs que trocam determinados itens por outros, então tive a ideia de fazer algo que possa ter uma função semelhante e que funcione de uma maneira rápida. Fique à vontade em utilizá-la da maneira que quiser.

Como funciona?

    O usuário vai usar a alavanca e irá adicionar um item em troca de outra item que você configurou no script. Em outras palavras, o usuário irá ganhar uma determinada quantidade de um item em troca de outra quantidade de um item diferente. (Tudo configurável)

VERSÃO TESTADA: 8.60 - OTX

-->  Começando...

Crie um arquivo com nome de changeItem.lua no diretório data/actions/scripts/

   Logo após, adicione esse código dentro do arquivo criado:


-- Script por Lordzetros para o forum Tibia King. 

local config = {
itemNec = 2160, -- ID do item que necessita para efetuar a troca
qtNec = 50, -- Quantidade do item que necessita para efetuar a troca
itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca
qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca
stor = 25869, -- Storage, ou seja, a numeracao que identificara se o usuario fez ou nao fez a quest ainda
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
pos = getPlayerPosition(cid)
if getPlayerStorageValue(cid,config.stor) ~= -1 then
	doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"So eh permitido fazer a troca de itens apenas uma vez!")
	doSendMagicEffect(pos, CONST_ME_POFF)
elseif getPlayerStorageValue(cid,config.stor) == -1 then
	if item.itemid == 1945 then
		if getPlayerItemCount(cid,config.itemNec) >= config.qtNec then
				doPlayerAddItem(cid, config.itemNovo,config.qtNova)
				doPlayerRemoveItem(cid,config.itemNec,config.qtNec)
				doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de trocar "..config.qtNec.." "..getItemNameById(config.itemNec).." por "..config.qtNova.." "..getItemNameById(config.itemNovo)..".")
				doSendMagicEffect(pos, CONST_ME_HOLYAREA)
				setPlayerStorageValue(cid, config.stor, 1)				
		else
			doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce nao tem "..config.qtNec.." "..getItemNameById(config.itemNec).." para trocar por "..config.qtNova.." "..getItemNameById(config.itemNovo)..".")
			doSendMagicEffect(pos, CONST_ME_POFF)
end
end
end	
end

Em seguida, abra o arquivo com nome actions.xml que está localizada em data/actions/

    E adicione essa linha de código no mesmo:


<action actionid="9139" event="script" value="changeItem.lua"/>

   Preste atenção, pois o actionid será o número que irá colocar na alavanca em seu editor de mapa, ou seja, no caso acima está como 9139, logo, na alavanca terá que está como a seguinte imagem:

ttIfaqN.png

Obs1.: Reparem que na imagem tem outro número destacado, que é o ID 1945, CERTIFIQUE-SE que a alavanca que irá utilizar no seu OT tenha esse mesmo ID, caso não tenha, basta mudar o número no código do script para o que irá utilizar no seu servidor.

Obs2.: O código está configurado para que o usuário efetue a troca APENAS 1 VEZ, caso queira que ele troque quantas vezes quiser, apenas remova o seguinte comando do código:
 


setPlayerStorageValue(cid, config.stor, 1)	

Obs3.: O resto que tinha que explicar está no próprio código, apenas faça um esforço de ler, agradeço.

 

 

  É isso, pessoal, espero que goste e aproveite. Como falei antes, é um código simples, pois comecei agora com Script, pretendo avançar no nível e funções que os mesmos desempenham, isso é só o começo, leve isso como uma prática de uma atividade para iniciante em scripts. :)  

 

Como eu faço pra essa alavanca fica dando item toda vez que clica e sem precisa de storage. Ex sempre que clica ganha um item aleatório sem precisa de tempo e nem de moeda. Clico ganho. 

Jamais se desespere em meio as sombrias afeiçoes da sua vida, pois das nuvens mais negras cai água límpida e fecunda

  • Respostas 18
  • Visualizações 3.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Então, cimmeria, tudo bem? Está no tópico como remover o storage, assim o player poderá fazer mais de uma vez, certo? Basta apenas você remover do código o seguinte comando:   setPlayerStorageVa

  • @louco3626 por nada! Claro que tem, aqui o código:   -- Script por Lordzetros para o forum Tibia King. local config = { itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca

  • -- Script por Lordzetros para o forum Tibia King. local config = { itemNec = 2160, -- ID do item que necessita para efetuar a troca qtNec = 50, -- Quantidade do item que necessita para efetuar a tro

Postado
  • Autor
-- Script por Lordzetros para o forum Tibia King. 

local config = {
itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca
qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
pos = getPlayerPosition(cid)
if item.itemid == 1945 then -- id da alavanca
	doPlayerAddItem(cid, config.itemNovo,config.qtNova)
	doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".")
	doSendMagicEffect(pos, CONST_ME_HOLYAREA)			
end
end	

 

@louco3626 acredito que isso resolva o que deseja, :D.

Editado por lordzetros (veja o histórico de edições)

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

 

               

star-wars-animated-gif-23.gif

Postado
6 horas atrás, lordzetros disse:

-- Script por Lordzetros para o forum Tibia King. 

local config = {
itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca
qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
pos = getPlayerPosition(cid)
if item.itemid == 1945 then -- id da alavanca
	doPlayerAddItem(cid, config.itemNovo,config.qtNova)
	doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".")
	doSendMagicEffect(pos, CONST_ME_HOLYAREA)			
end
end	

 

@louco3626 acredito que isso resolva o que deseja, :D.

 

Obrigado man! nem coloquei la mais ja agradeço, sao poucos que ajuda com as coisa aqui vlw. <3

8 horas atrás, lordzetros disse:

-- Script por Lordzetros para o forum Tibia King. 

local config = {
itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca
qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
pos = getPlayerPosition(cid)
if item.itemid == 1945 then -- id da alavanca
	doPlayerAddItem(cid, config.itemNovo,config.qtNova)
	doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".")
	doSendMagicEffect(pos, CONST_ME_HOLYAREA)			
end
end	

 

@louco3626 acredito que isso resolva o que deseja, :D.

 

@lordzetros E se nao for incomoda muito tem como add uma funçao de teleporte assim que clica ser teleportado. 

Jamais se desespere em meio as sombrias afeiçoes da sua vida, pois das nuvens mais negras cai água límpida e fecunda

Postado
  • Autor

@louco3626 por nada!
Claro que tem, aqui o código:
 

-- Script por Lordzetros para o forum Tibia King. 

local config = {
itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca
qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca
telePosicao = {x=155, y=54, z=7}, -- Local que o player ira se teleportar ao usar a alavanca
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
pos = getPlayerPosition(cid)
if item.itemid == 1945 then -- id da alavanca
	doPlayerAddItem(cid, config.itemNovo,config.qtNova)
	doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de ganhar "..config.qtNova.." "..getItemNameById(config.itemNovo)..".")
	doTeleportThing(cid,config.telePosicao)
	doSendMagicEffect(pos, CONST_ME_HOLYAREA)			
end
end

Onde tem telePosicao, você irá colocar as coordenadas de onde o player irá se teletransportar. ^^ 

Editado por lordzetros (veja o histórico de edições)

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

 

               

star-wars-animated-gif-23.gif

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