Ir para conteúdo

Featured Replies

Postado

 

Já que no seu script padrão o item é removido, então eu o simplifiquei.

Não testei

local tab = {
    items = {2183, 8920, 2181, 8912, 8921, 2187, 8910, 8922, 7764, 7773, 7770, 7855, 7864, 7861, 7745, 7754, 7751, 7748, 7755, 7753}
}

function onUse(cid, item, frompos, item2, topos)
    local bbp, chances = doPlayerAddItem(cid, 2002, 1), math.random(3, 5)
        for x = 1, table.maxn(tab.items) do
            doRemoveItem(item.uid, 1)
            doAddContainerItem(bbp, tab.items[x], chances)
            doSendAnimatedText(getThingPos(cid), "SURPRESA!", 5)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você abriu a mochila surpresa azul e recebeu uma backpack com "..tab.chances.." equipamentos.")
        end
    return true
end

 

Bom.. eu vi algumas coisas desnecessárias no seu código.

tab = {
    items = {...},
}

Isso é realmente necessário?

Enfim... bom trabalho :)

 

@EDIT

local cfg = {
    remove = true, -- Irá remover ao ser usado?
    max = 5, -- Máximo de items
    min = 3, -- Minimo de items
}
local items = {2183, 8920, 2181, 8912, 8921, 2187, 8910, 8922, 7764, 7773, 7770, 7855, 7864, 7861, 7745, 7754, 7751, 7748, 7755, 7753}

function onUse(cid)
    local bp = doPlayerAddItem(cid, 2002)
    
    for r = 1, #items do
        
        doAddContainerItem(bp, items[r], math.random(cfg.min, cfg.max))
    end
    
    if cfg.remove then
        
        doRemoveItem(item.uid, 1)
    end
    
    doPlayerSendTextMessage(cid, 27, "Voce ganhou uma backpack com items.")
    return true
end

 

Pronto, agora a quantidade aleatória de items, irá funcionar.

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

Tony Araújo  ;D 

 

  • Respostas 17
  • Visualizações 660
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Bom.. eu vi algumas coisas desnecessárias no seu código. tab = {     items = {...}, } Isso é realmente necessário? Enfim... bom trabalho   @EDIT local cfg = {     remove = true, -- Irá remov

  • Já que no seu script padrão o item é removido, então eu o simplifiquei. Não testei local items = {2183, 8920, 2181, 8912, 8921, 2187, 8910, 8922, 7764, 7773, 7770, 7855, 7864, 7861, 7745, 7754, 775

  • Já que no script padrão do membro haviam outros valores a serem configurados, eu ia simplificar tudo em uma única tabela. Mas depois eu notei que o item era removido, então não tinha a necessidade daq

Postado
  • Autor

Mesmo problema ainda gente vocês não estão entendo como eu quero que aconteça a script vou tentar explicar de um jeito melhor!

 

Cliquei no item>ganhei 3 a 5 itens aleatórios>no caso veio 4 itens>desses 4 itens os ids foi 8920, 2181, 8912, 8921.

 

Todos itens que ganhei foi aleatórios, deu pra entender mais ou menos como eu quero a script?? a que vocês mandaram vem 1 tipo de id e outra vem 20 itens com 5 de cada id, não é isso que eu pedir realmente. se puder me ajudar mais uma vez fiquei grato!

Postado
Bom.. eu vi algumas coisas desnecessárias no seu código.

tab = {

items = {...}

} Isso é realmente necessário?

Já que no script padrão do membro haviam outros valores a serem configurados, eu ia simplificar tudo em uma única tabela. Mas depois eu notei que o item era removido, então não tinha a necessidade daqueles outros valores, mas daí esqueci de fazer da tabela uma única variável. Obrigado por avisar.

Agora, falando do seu script (já que falou do meu). Qual a necessidade de haver uma checagem de remoção de um item que dará ao player de 3 à 5, dentre 20 itens? Não é óbvio que ele deve ser removido? Ou será que tem alguma lógica receber de 3 à 5 itens a qualquer hora?

Isso sim é desnecessário.

 

 

Cliquei no item>ganhei 3 a 5 itens aleatórios>no caso veio 4 itens>desses 4 itens os ids foi 8920, 2181, 8912, 8921.

Agora sim você explicou melhor..

 

local items = {2183, 8920, 2181, 8912, 8921, 2187, 8910, 8922, 7764, 7773, 7770, 7855, 7864, 7861, 7745, 7754, 7751, 7748, 7755, 7753}

function onUse(cid, item, frompos, item2, topos)
    local bbp = doPlayerAddItem(cid, 2002, 1)
        for i = 1, math.random(3, 5) do
            doAddContainerItem(bbp, items[math.random(1, #items)], 1)
        end
    doRemoveItem(item.uid, 1)
    doSendAnimatedText(getThingPos(cid), "SURPRESA!", 5)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você abriu a mochila surpresa azul e recebeu uma backpack com alguns itens.")
    return true
end

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

The corrupt fear us.

The honest support us.

The heroic join us.

Postado
  • Autor

era isso mesmo que eu queria só fatou a mensagem pra ficar perfeito. EXEMPLO: quantidade do item que vem > Você abriu a mochila surpresa azul e recebeu uma backpack com " .. quantidade .. " equipamentos. e está dando erro no distro [26/10/2014 00:55:10] [Error - Action Interface] 

[26/10/2014 00:55:10] data/actions/scripts/one/castle/mochila surpresa azul.lua:onUse
[26/10/2014 00:55:10] Description: 
[26/10/2014 00:55:10] (luaDoRemoveItem) Item not found
se puder ageitar esses 2 problemas ajudaria d+

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

Postado

Já que no script padrão do membro haviam outros valores a serem configurados, eu ia simplificar tudo em uma única tabela. Mas depois eu notei que o item era removido, então não tinha a necessidade daqueles outros valores, mas daí esqueci de fazer da tabela uma única variável. Obrigado por avisar.

Agora, falando do seu script (já que falou do meu). Qual a necessidade de haver uma checagem de remoção de um item que dará ao player de 3 à 5, dentre 20 itens? Não é óbvio que ele deve ser removido? Ou será que tem alguma lógica receber de 3 à 5 itens a qualquer hora?

Isso sim é desnecessário.

 

 

Agora sim você explicou melhor..

 

local items = {2183, 8920, 2181, 8912, 8921, 2187, 8910, 8922, 7764, 7773, 7770, 7855, 7864, 7861, 7745, 7754, 7751, 7748, 7755, 7753}

function onUse(cid, item, frompos, item2, topos)
    local bbp = doPlayerAddItem(cid, 2002, 1)
        for i = 1, math.random(3, 5) do
            doRemoveItem(item.uid, 1)
            doAddContainerItem(bbp, items[math.random(1, #items)], 1)
            doSendAnimatedText(getThingPos(cid), "SURPRESA!", 5)
        end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você abriu a mochila surpresa azul e recebeu uma backpack com alguns itens.")
    return true
end

 

Coloquei a configuração de remoção.. porque pelo que eu vi, o dono do tópico não tem nenhum conhecimento com os códigos

Então, eu deixei um código mais configurável, e facil de edição. Porém isso não compara a criação de tabelas inúteis.

 

 

@SCRIPT

Apenas arrumei o script do Suicide.

 

local items = {2183, 8920, 2181, 8912, 8921, 2187, 8910, 8922, 7764, 7773, 7770, 7855, 7864, 7861, 7745, 7754, 7751, 7748, 7755, 7753}

function onUse(cid, item, frompos, item2, topos)
    local bbp = doPlayerAddItem(cid, 2002, 1)
    local r = math.random(3, 5)
        for i = 1, r do
            doAddContainerItem(bbp, items[math.random(1, #items)], 1)
        end
    doSendAnimatedText(getThingPos(cid), "SURPRESA!", 5)
    doRemoveItem(item.uid, 1)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você abriu a mochila surpresa azul e recebeu uma backpack com "..r.." itens.")
    return true
end

 

Visando os erros:

 

Você colocou o "doRemoveItem", dentro do for, ou seja, ele vai executar de 1, até um numero aleatório de 3 a 5, ou seja, ele vai querer remover o item mais de uma vez.

Você também colocou uma função de texto animado dentro do for, ou seja, ela iria mandar de 1 a 5 textos animados. não vejo como um bug, só que ficaria estranho.

 

Enfim... ta fazendo um bom trabalho, parabéns :D

Tony Araújo  ;D 

 

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