Postado Outubro 25, 2014 10 anos 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 Outubro 25, 2014 10 anos por Orochi Elf (veja o histórico de edições) Tony Araújo
Postado Outubro 25, 2014 10 anos 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 Outubro 25, 2014 10 anos 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 Outubro 26, 2014 10 anos por Suicide (veja o histórico de edições) The corrupt fear us. The honest support us. The heroic join us.
Postado Outubro 26, 2014 10 anos 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 Outubro 26, 2014 10 anos por williamcgv (veja o histórico de edições)
Postado Outubro 26, 2014 10 anos 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 Tony Araújo
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.