Ir para conteúdo
  • Cadastre-se

(Resolvido)Ganhar o item do baú apenas se tiver X quantia, do Item X na Bag.


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Spoiler

Para receber o que tem dentro do baú, o player precisa ter certa quantidade do Item "X" na bag.
Se o player tiver a quantidade certinha, ele receberá do baú uma bag com 5 itens dentro dela.

 Depois de receber a premiação do baú, o player só poderá receber essa recompensa novamente 30 dias depois.

[CONFIGURÁVEL]

 

 

 Agradeço desde já, quem tentar ajudar!

Editado por raphadoidera (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Moderador

Testa ai:

function onUse(cid, item, fromPosition, itemEx, toPosition)
  local itemRequired, amountRequired = 2160, 30 -- ID do item necessário para pegar o baú e a quantidade.
  local itemReward, amountReward = 2153, 100 -- ID do item e a quantidade que o player vai ganhar.
  local backdays = 30 -- Quando tempo o player vai poder pegar o baú novamente (Em dias).
  local storage = 15932 -- Storage que vai armazenar o tempo. NÃO MEXA.

  if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then
    doPlayerSendCancel(cid, "Você não possui "..amountRequired.."x "..getItemInfo(itemRequired).name.." volte mais tarde.")
    doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF)
  end

  if getPlayerStorageValue(cid storage) <= 0 then
    doPlayerAddItem(cid, itemReward, amountReward)
    doPlayerRemoveItem(cid, itemRequired, amountRequired)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você acabou de ganhar "..amountReward.."x "..getItemInfo(itemReward).name..". Parabéns!")
    doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN)
    setPlayerStorageValue(cid, storage, backdays*60*60+os.time())
  else
    doPlayerSendCancel(cid, "Você já coletou seu item hoje, volte daqui a "..backdays.." dia(s).")
  end
  return true
end

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
4 horas atrás, Belmont disse:

Testa ai:


function onUse(cid, item, fromPosition, itemEx, toPosition)
  local itemRequired, amountRequired = 2160, 30 -- ID do item necessário para pegar o baú e a quantidade.
  local itemReward, amountReward = 2153, 100 -- ID do item e a quantidade que o player vai ganhar.
  local backdays = 30 -- Quando tempo o player vai poder pegar o baú novamente (Em dias).
  local storage = 15932 -- Storage que vai armazenar o tempo. NÃO MEXA.

  if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then
    doPlayerSendCancel(cid, "Você não possui "..amountRequired.."x "..getItemInfo(itemRequired).name.." volte mais tarde.")
    doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF)
  end

  if getPlayerStorageValue(cid storage) <= 0 then
    doPlayerAddItem(cid, itemReward, amountReward)
    doPlayerRemoveItem(cid, itemRequired, amountRequired)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você acabou de ganhar "..amountReward.."x "..getItemInfo(itemReward).name..". Parabéns!")
    doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN)
    setPlayerStorageValue(cid, storage, backdays*60*60+os.time())
  else
    doPlayerSendCancel(cid, "Você já coletou seu item hoje, volte daqui a "..backdays.." dia(s).")
  end
  return true
end

 

 

Spoiler

Mano em relação aos itens que o baú vai dar, o que eu quis dizer é que ele dará 5 itens diferentes tlg? 

E deu esse erro na distro

 

image.png

Link para o post
Compartilhar em outros sites
  • Moderador

@raphadoidera
 

local items = { -- ID do item e a quantidade que o player vai ganhar.
  [1] = {itemReward = 2160, amountReward = 50},
  [2] = {itemReward = 2160, amountReward = 50},
  [3] = {itemReward = 2160, amountReward = 50},
  [4] = {itemReward = 2160, amountReward = 50},
  [5] = {itemReward = 2160, amountReward = 50}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
  local itemRequired, amountRequired = 2160, 30 -- ID do item necessário para pegar o baú e a quantidade.
  local backdays = 30 -- Quando tempo o player vai poder pegar o baú novamente (Em dias).
  local storage = 15932 -- Storage que vai armazenar o tempo. NÃO MEXA.

  if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then
    doPlayerSendCancel(cid, "Você não possui "..amountRequired.."x "..getItemInfo(itemRequired).name.." volte mais tarde.")
    doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF)
  end

  if getPlayerStorageValue(cid, storage) <= 0 then
  	local str = ""
  	for i = 1, #items do
  		doPlayerAddItem(cid, items[i].itemReward, items[i].amountReward)
  		str = str..items[i].amountReward.." "..getItemNameById(items[i].itemReward)
  	end
  	doPlayerRemoveItem(cid, itemRequired, amountRequired)
  	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você acabou de ganhar "..str..". Parabéns!")
  	doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN)
  	setPlayerStorageValue(cid, storage, backdays*60*60+os.time())
  else
  	doPlayerSendCancel(cid, "Você já coletou seu item hoje, volte daqui a "..backdays.." dia(s).")
  end
  return true
end

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
47 minutos atrás, Belmont disse:

@raphadoidera
 


local items = { -- ID do item e a quantidade que o player vai ganhar.
  [1] = {itemReward = 2160, amountReward = 50},
  [2] = {itemReward = 2160, amountReward = 50},
  [3] = {itemReward = 2160, amountReward = 50},
  [4] = {itemReward = 2160, amountReward = 50},
  [5] = {itemReward = 2160, amountReward = 50}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
  local itemRequired, amountRequired = 2160, 30 -- ID do item necessário para pegar o baú e a quantidade.
  local backdays = 30 -- Quando tempo o player vai poder pegar o baú novamente (Em dias).
  local storage = 15932 -- Storage que vai armazenar o tempo. NÃO MEXA.

  if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then
    doPlayerSendCancel(cid, "Você não possui "..amountRequired.."x "..getItemInfo(itemRequired).name.." volte mais tarde.")
    doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF)
  end

  if getPlayerStorageValue(cid, storage) <= 0 then
  	local str = ""
  	for i = 1, #items do
  		doPlayerAddItem(cid, items[i].itemReward, items[i].amountReward)
  		str = str..items[i].amountReward.." "..getItemNameById(items[i].itemReward)
  	end
  	doPlayerRemoveItem(cid, itemRequired, amountRequired)
  	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você acabou de ganhar "..str..". Parabéns!")
  	doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN)
  	setPlayerStorageValue(cid, storage, backdays*60*60+os.time())
  else
  	doPlayerSendCancel(cid, "Você já coletou seu item hoje, volte daqui a "..backdays.." dia(s).")
  end
  return true
end

 

Spoiler

Irmão deu certo.

O unico problema que ta dando agora, é que mesmo se o jogador não tiver os itens necessários ele consegue receber a premiação do baú.

 

Link para o post
Compartilhar em outros sites
  • Moderador

Troca:

if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then

Por:

if getPlayerItemCount(cid, itemRequired) <= amountRequired then

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
1 hora atrás, Belmont disse:

Troca:


if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then

Por:


if getPlayerItemCount(cid, itemRequired, amountRequired) then

 

Spoiler

Continua do mesmo jeito pai.

 

Link para o post
Compartilhar em outros sites
  • Moderador

Acho que agora vai, editei ali em cima, tenta ai

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Solução
local items = {{2173,1},{2494,1},{2148,15}}
local itemRequired, amountRequired = 2160, 30 -- ID do item necessário para pegar o baú e a quantidade.
local storage, days = 897458, 30
function onUse(cid, item, frompos, item2, topos)
   if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then
      doPlayerSendCancel(cid, "Você não possui "..amountRequired.."x "..getItemInfo(itemRequired).name.." volte mais tarde.") return true
   elseif getPlayerStorageValue(cid, storage) >= os.time() then
      doPlayerSendCancel(cid, "voce ja pegou seus itens dentro de 30 dias, aguarde.") return true
   end
   local bag =  doPlayerAddItem(cid, 1988, 1)
   for i = 1, table.maxn(items) do
      local item_id, amount = items[i][1], items[i][2]
      if isItemStackable(item_id) or amount == 1 then
         doAddContainerItem(bag, item_id, amount)
      else
         for i = 1, amount do
            doAddContainerItem(bag, 1)
         end
      end
   end
   setPlayerStorageValue(cid, storage, os.time() + days * 24 * 60 * 60)
   doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"You have found a backpack.") return true
end

 

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
31 minutos atrás, Vodkart disse:

local items = {{2173,1},{2494,1},{2148,15}}
local itemRequired, amountRequired = 2160, 30 -- ID do item necessário para pegar o baú e a quantidade.
local storage, days = 897458, 30
function onUse(cid, item, frompos, item2, topos)
   if getPlayerItemCount(cid, itemRequired, amountRequired) <= 0 then
      doPlayerSendCancel(cid, "Você não possui "..amountRequired.."x "..getItemInfo(itemRequired).name.." volte mais tarde.") return true
   elseif getPlayerStorageValue(cid, storage) >= os.time() then
      doPlayerSendCancel(cid, "voce ja pegou seus itens dentro de 30 dias, aguarde.") return true
   end
   local bag =  doPlayerAddItem(cid, 1988, 1)
   for i = 1, table.maxn(items) do
      local item_id, amount = items[i][1], items[i][2]
      if isItemStackable(item_id) or amount == 1 then
         doAddContainerItem(bag, item_id, amount)
      else
         for i = 1, amount do
            doAddContainerItem(bag, 1)
         end
      end
   end
   setPlayerStorageValue(cid, storage, os.time() + days * 24 * 60 * 60)
   doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"You have found a backpack.") return true
end

 

 

Perfeito meu mano Vod, muito obrigado!

Obrigado também @Belmont,  pela ajuda!

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo