Ir para conteúdo
  • Cadastre-se

Action TFS 0.X Baú/Chest shop - Comprar mesmo item com 2 moedas diferentes


Posts Recomendados

  • Cat mudou o título para Baú/Chest shop - Comprar mesmo item com 2 moedas diferentes

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.

 

Link para o post
Compartilhar em outros sites

Muito bom!!

 

Porém tem um problema, se você remover o ITEM1 do jogador e ele não tiver o ITEM2, a compra não vai ter sucesso e ele irá sair lesado...

 

use a função "getPlayerItemCount (cid, itemid)" para saber se ele tem o item e a quantidade pedida!!

 

abraços

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
41 minutos atrás, Vodkart disse:

Muito bom!!

 

Porém tem um problema, se você remover o ITEM1 do jogador e ele não tiver o ITEM2, a compra não vai ter sucesso e ele irá sair lesado...

 

use a função "getPlayerItemCount (cid, itemid)" para saber se ele tem o item e a quantidade pedida!!

 

abraços

 

Não tinha percebido, obrigado por avisar.

 

Corrigido:

 

local coin = 2148  -- id da primeira moeda
local coin2 = 2160 -- id da segunda moeda
local eff = 28     -- efeito mágico ao comprar o item

local lever = {
[7017] = {50, 50, 10522} -- [actionid] = {quantidade da moeda 1, quantidade da moeda 2, id do item a comprar}
}

function onUse(cid,item,fromPosition,itemEx,toPosition)

if  getPlayerItemCount(cid, coin) >= (lever[item.actionid][1]) and getPlayerItemCount(cid, coin2) >= (lever[item.actionid][2]) then
	doPlayerRemoveItem(cid,coin,lever[item.actionid][1]) 
	doPlayerRemoveItem(cid,coin2,lever[item.actionid][2])
	
		doPlayerAddItem(cid,lever[item.actionid][3], isItemStackable(lever[item.actionid][3]) and 1)
		doPlayerSendTextMessage(cid,22,"Voce comprou " .. getItemNameById(lever[item.actionid][3]) .." por "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2))
		doSendMagicEffect(getCreaturePosition(cid), config.eff)

		else

    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sao necessarios "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2).. " para realizar esta compra.")
end
end

 

Editado por Daniel (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 01/06/2018 em 21:39, Nolis disse:

Vim disponibilizar esse código de chest que eu tava precisando e não achei em lugar algum.

Agradecimento ao @Sttorm que me ajudou a entender a estrutura do código.

 

 

Comprar mesmo item com 2 moedas diferentes! (Chest Action)

 

image.png.8a66662d4ab3045d603f135e770e21d4.png

23:31 Sao necessarios 50 gold coin e 50 crystal coin para realizar esta compra.

23:32 Voce comprou crown backpack por 50 gold coin e 50 crystal coin

 

 

data/actions/actions.xml: (mude baus/bau01.lua se o seu esquema for diferente)


<action actionid="6012" event="script" value="baus/bau01.lua"/>

 

data/actions/scripts/baus/bau01.lua: ( " )


local coin = 2148  -- id da primeira moeda
local coin2 = 2160 -- id da segunda moeda
local eff = 28     -- efeito mágico ao comprar o item

local lever = {
[7017] = {50, 50, 10522} -- [actionid] = {quantidade da moeda 1, quantidade da moeda 2, id do item a comprar}
}

function onUse(cid,item,fromPosition,itemEx,toPosition)

if  getPlayerItemCount(cid, coin) >= (lever[item.actionid][1]) and getPlayerItemCount(cid, coin2) >= (lever[item.actionid][2]) then
	doPlayerRemoveItem(cid,coin,lever[item.actionid][1]) 
	doPlayerRemoveItem(cid,coin2,lever[item.actionid][2])
	
		doPlayerAddItem(cid,lever[item.actionid][3], isItemStackable(lever[item.actionid][3]) and 1)
		doPlayerSendTextMessage(cid,22,"Voce comprou " .. getItemNameById(lever[item.actionid][3]) .." por "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2))
		doSendMagicEffect(getCreaturePosition(cid), config.eff)

		else

    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sao necessarios "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2).. " para realizar esta compra.")
end
end

 

versao..

8.54???

Link para o post
Compartilhar em outros sites
  • 9 months later...

Sei que o tópico é antigo, mas curti a ideia e coloquei no meu baiak caso queiram pra tfs 1.x é assim.

Não entendo nada de script mas assim funcionou 100%

 

Spoiler

local coin = 2148  -- id da primeira moeda
local coin2 = 2160 -- id da segunda moeda


local lever = {
[7017] = {50, 50, 10522} -- [actionid] = {quantidade da moeda 1, quantidade da moeda 2, id do item a comprar}
}

function onUse(player,item,fromPosition,itemEx,toPosition)

if 	getPlayerItemCount(player, coin) >= (lever[item.actionid][1]) and getPlayerItemCount(player, coin2) >= (lever[item.actionid][2]) then
	doPlayerRemoveItem(player,coin,lever[item.actionid][1]) 
	doPlayerRemoveItem(player,coin2,lever[item.actionid][2])
	
		doPlayerAddItem(player,lever[item.actionid][3], isItemStackable(lever[item.actionid][3]) and 1)
		doPlayerSendTextMessage(player,22,"Voce comprou " .. getItemNameById(lever[item.actionid][3]) .." por "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2))
		player:getPosition():sendMagicEffect(5)

		else

    return doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Sao necessarios "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2).. " para realizar esta compra.")
end
end

 

 

Em lib\compat

Coloca no final essa função no final que funciona 100%

 

function getItemNameById(itemId) 
return ItemType(itemId):getName() 
end

Creditos pela função ao Zbizu da otland

Link para o post
Compartilhar em outros sites
  • 8 months later...
Em 01/06/2018 em 23:39, Cat disse:

Vim disponibilizar esse código de chest que eu tava precisando e não achei em lugar algum.

Agradecimento ao @Sttorm que me ajudou a entender a estrutura do código.

 

 

Comprar mesmo item com 2 moedas diferentes! (Chest Action)

 

image.png.8a66662d4ab3045d603f135e770e21d4.png

23:31 Sao necessarios 50 gold coin e 50 crystal coin para realizar esta compra.

23:32 Voce comprou crown backpack por 50 gold coin e 50 crystal coin

 

 

data/actions/actions.xml: (mude baus/bau01.lua se o seu esquema for diferente)


<action actionid="6012" event="script" value="baus/bau01.lua"/>

 

data/actions/scripts/baus/bau01.lua: ( " )


local coin = 2148  -- id da primeira moeda
local coin2 = 2160 -- id da segunda moeda
local eff = 28     -- efeito mágico ao comprar o item

local lever = {
[7017] = {50, 50, 10522} -- [actionid] = {quantidade da moeda 1, quantidade da moeda 2, id do item a comprar}
}

function onUse(cid,item,fromPosition,itemEx,toPosition)

if  getPlayerItemCount(cid, coin) >= (lever[item.actionid][1]) and getPlayerItemCount(cid, coin2) >= (lever[item.actionid][2]) then
	doPlayerRemoveItem(cid,coin,lever[item.actionid][1]) 
	doPlayerRemoveItem(cid,coin2,lever[item.actionid][2])
	
		doPlayerAddItem(cid,lever[item.actionid][3], isItemStackable(lever[item.actionid][3]) and 1)
		doPlayerSendTextMessage(cid,22,"Voce comprou " .. getItemNameById(lever[item.actionid][3]) .." por "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2))
		doSendMagicEffect(getCreaturePosition(cid), config.eff)

		else

    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sao necessarios "..lever[item.actionid][1].." " ..getItemNameById(coin).. " e "..lever[item.actionid][2].." " ..getItemNameById(coin2).. " para realizar esta compra.")
end
end

 

@Cat consegui  adaptar para tfs 1.2 versão 1098 ?

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Imperius
      Olá, pessoal! Acabei encontrando um script que tinha feito a um tempo atrás. Estou compartilhando aqui para quem quiser usar ou melhorar.
       
      É bem parecido com os outros sistemas de roleta, igual deste tópico: https://tibiaking.com/forums/topic/101557-action-cassino-roleta-de-items/
       
      Como funciona?
       
      O "Treasure Chest" é um item custom, onde o jogador têm a possibilidade de ganhar itens raros ou bem meia boca. Tudo dependerá da sorte.
       
      O jogador precisa tacar o treasure chest na bancada e acionar a alavanca. O treasure chest irá se transformar em vários itens de forma randômica no qual o jogador poderá ou não ganhar. No final, apenas um item é entregue ao jogador.
       
      Para entender melhor o seu funcionamento, segue o GIF abaixo:
       

       
       
      em data > actions > actions.xml
       
       
      em data > actions > scripts > crie um arquivo chamado leverTreasureChest.lua
       
       
      no banco de dados do servidor, adicione o seguinte código em "SQL":
       
       
       

      Também estou disponibilizando uma página PHP, para quem quiser usar no site do servidor. Na página tem informações sobre o funcionamento, quais são os possíveis prêmios e a lista de jogadores que ganharam os itens raros.
       

       
       
      Espero ter ajudado de alguma forma! : )
       
      treasure_chest.php
    • Por amoxicilina
      Action: Remover skull
       
       
    • Por Thony D. Serv
      tfs 0.4 (não testei em outras apenas na 0.4)
      Esse script eu fiz pois, meu servidor sempre que reiniciava todos os players voltavam sem bless, então para sanar isso eu fiz um check de bless pela database para poder sempre que cair o servidor os players não morressem sem bless e dropassem os itens
      vamos lá!

      Primeiro Execute Este Comando Em Sua Db:
       

      Va No Fim E Adicione
      050-function.lua 
       

      Agora vá no seu comando de Bless ou Npc e ponha cada um no seu devido lugar
       
       
      Agora Em Creaturescript/scripts Crie Uma Pasta Chamada Bless E Ponha La Dentro:

      blessingdeath.lua
       

      blessinglogin.lua
       

      Adicione Ambas No Login.lua
       
       
      Creaturescript.xml
       

      -- Creditos A Mim Mesmo hahaha. Espero Ajudar Vocês ?
    • Por Dono do WNA
      Andei procurando aqui pelo TK inteiro e não acho um script funcional para um boss room onde o player clica com direito num altar (parecido com uma alavanca) podendo ir sozinho ou com até 10 jogadores ele é teleportado para uma sala com o boss, podendo desafiar ele a cada 20 horas, toda vez que um jogador puxa a alavanca ele checa se tem player na sala e caso tenha, precisa esperar todos os jogadores sairem. Caso o boss esteja vivo sem players dentro da sala ele remove e adiciona um novo assim que puxam a alavanca.

      Achei scripts parecidos no forum porém são todos para TFS 1.x+ e eu uso o 0.4 e nenhum compatível que achei esta funcionando

      TFS 0.4 REV 3996
    • Por Imperius
      Tinha visto isso no servidor do MegaTibia / Kaldrox e achei bem interessante.
       
      Todos os tópicos que encontrei sobre o assunto de alterar a cor das mensagens dos GMs, CMs e ADM no channel Help para vermelho, falavam que tinham que fazer uma configuração na própria source do servidor.
       
      Fiz uma gambiarra que funciona, sem a necessidade de mexer na source do servidor e de utilizar comandos para isso. Testei somente em TFS 0.4 e funciona tranquilamente.
       
      segue abaixo como configurar em seu otserver:
       
      data > talkactions > scripts > crie um arquivo chamado gmsayred.lua e cole o código abaixo:
       
      function onSay(cid, words, param, channel) if channel == CHANNEL_HELP then for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', "".. getCreatureName(cid) .. ": ".. words, TALKTYPE_CHANNEL_R1, CHANNEL_HELP) end return true end end  
      em talkactions.xml cole a tag abaixo:

       
      <!-- Gamemasters --> <talkaction default="yes" filter="quotation" logged="no" access="3" event="script" value="gmsayred.lua"/>    
      e pronto! Agora é só enviar alguma mensagem no Help que a mensagem ficará em vermelho.
       

       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo