Postado Agosto 11, 2016 8 anos Opa, eu tentei fazer esse script de mineração, ele até funciona, mas não parece que funfa 100% certin, ele faz o que era pra fazer, mas eu botei o percent bem alto usando o pickaxe e mesmo assim existe dificuldade de pegar o item, eu nunca usei o for, então não sei se usei ele corretamente, alguém que netende bem poderia dar uma olhada e dizer no que estou errado? a parte do ground podem ignorar, só a parte do stones mesmo local configs = { sign = {{level = {0,9}, quant = {1,2}, percent = 5}, {level = {10,19}, quant = {2,4}, percent = 8}, {level = {20,29}, quant = {3,6}, percent = 11}, {level = {30,39}, quant = {4,8}, percent = 14}, {level = {40,49}, quant = {5,10}, percent = 17}, {level = {50,59}, quant = {6,12}, percent = 20}, {level = {60,69}, quant = {7,14}, percent = 23}, {level = {70,79}, quant = {8,16}, percent = 26}, {level = {80,89}, quant = {9,18}, percent = 29}, {level = {90,99}, quant = {10,20}, percent = 32}, {level = {100,200}, quant = {11,22}, percent = 35}}, stones = {1285, 1356}, stones_prize = { {itemprize = 2160, percent = {1,10}}, {itemprize = 2152, percent = {11,30}}, {itemprize = 2148, percent = {31,100}}, }, grounds = {406}, grounds_prize = { {itemprize = 2160, percent = {0,1}}, {itemprize = 2157, percent = {2,3}} }, } function onUse(cid, item, fromPosition, itemEx, toPosition) local skills = getPlayerSkill(cid, SKILL_SWORD) if isInArray(configs.stones, itemEx.itemid) then doPlayerAddSkillTry(cid, SKILL_SWORD, 1) transform_stone = math.random(1, 100) if transform_stone < 16 then doTransformItem(itemEx.uid, 2160) doPlayerSendTextMessage(cid, 22, "More luck in your next time.") else for L = 1, #configs.sign do if skills >= configs.sign[L].level[1] and skills <= configs.sign[L].level[2] then quant = math.random(configs.sign[L].quant[1],configs.sign[L].quant[2]) if item.itemid == 4874 then percent = configs.sign[L].percent + 75 stry = 2 else percent = configs.sign[L].percent stry = 1 end print('Skill: '.. skills ..'.') print('Porce: '.. percent ..'%.') print('Stry: '.. stry ..'.') percent_chance = math.random(1, 100) print('PC '.. percent_chance ..'.') if percent_chance <= percent then for M = 1, #configs.stones_prize do for_stone_prize = math.random(1, 100) print('SP '.. for_stone_prize..'.') if for_stone_prize >= configs.stones_prize[M].percent[1] and for_stone_prize <= configs.stones_prize[M].percent[2] then doPlayerAddSkillTry(cid, SKILL_SWORD, stry) doPlayerAddItem(cid, configs.stones_prize[M].itemprize, quant) doPlayerSendTextMessage(cid, 22, "You won ".. quant .." ".. getItemNameById(configs.stones_prize[M].itemprize) ..".") break_chance = math.random(1,100) if break_chance < 6 then doTransformItem(itemEx.uid, 2160) end break else doPlayerSendTextMessage(cid, 22, "You have not won anything, try again..") break end end else doPlayerSendTextMessage(cid, 22, "You did not succeed in mining , try again.") end break end end end elseif isInArray(configs.grounds, itemEx.itemid) then doPlayerAddSkillTry(cid, SKILL_SWORD, 1) transform_ground = math.random(1, 100) if transform_ground < 16 then doTransformItem(itemEx.uid, 2160) doPlayerSendTextMessage(cid, 22, "Sorry, but this ground was empty.") else for L = 1, #configs.sign do if skills >= configs.sign[L].level[1] and skills <= configs.sign[L].level[2] then quant = math.random(configs.sign[L].quant[1],configs.sign[L].quant[2]) percent_chance = math.random(1, 100) if percent_chance <= percent then for M = 1, #configs.grounds_prize do for_ground_prize = math.random(1, 100) if for_ground_prize >= configs.grounds_prize[M].percent[1] and for_grounds_prize <= configs.grounds_prize[M].percent[2] then doPlayerAddItem(cid, configs.grounds_prize[M].itemprize, quant) doPlayerSendTextMessage(cid, 22, "You won ".. quant .." ".. getItemNameById(configs.grounds_prize[M].itemprize) ..".") doTransformItem(itemEx.uid, 2160) else doPlayerSendTextMessage(cid, 22, "You have not won anything, try again..") end break end else doPlayerSendTextMessage(cid, 22, "You did not succeed in mining , try again.") end break end end end end end tibia.com Eu que não fumo, queria um cigarro Eu que não amo você Envelheci dez anos ou mais Nesse último mês Eu que não bebo, pedi um conhaque Pra enfrentar o inverno Que entra pela porta Que você deixou aberta ao sair
Postado Agosto 11, 2016 8 anos man eu ainda tou aprendendo script e não parece ter nada errado, unica coisa q tou vendo é que a chance ta baixa {level = {10,19}, quant = {2,4}, percent = 8}, do lvl 10 ao 19 pode vir de 2 a 4 com 8% de chance ou seja a cada 100x que for usado vai cair uma media de 8x ou seja a porcentagem ta bem baxinha almenta o 8 pra 90 e testa. acredito que vá cair com mais facilidade
Postado Agosto 12, 2016 8 anos Solução Tente trocar essa parte: Spoiler if percent_chance <= percent then for M = 1, #configs.stones_prize do for_stone_prize = math.random(1, 100) print('SP '.. for_stone_prize..'.') if for_stone_prize >= configs.stones_prize[M].percent[1] and for_stone_prize <= configs.stones_prize[M].percent[2] then doPlayerAddSkillTry(cid, SKILL_SWORD, stry) doPlayerAddItem(cid, configs.stones_prize[M].itemprize, quant) doPlayerSendTextMessage(cid, 22, "You won ".. quant .." ".. getItemNameById(configs.stones_prize[M].itemprize) ..".") break_chance = math.random(1,100) if break_chance < 6 then doTransformItem(itemEx.uid, 2160) end break else doPlayerSendTextMessage(cid, 22, "You have not won anything, try again..") break end end else doPlayerSendTextMessage(cid, 22, "You did not succeed in mining , try again.") end Por essa: Spoiler if percent_chance <= percent then for_stone_prize = math.random(1, 100) print('SP '.. for_stone_prize..'.') for M = 1, #configs.stones_prize do if for_stone_prize >= configs.stones_prize[M].percent[1] and for_stone_prize <= configs.stones_prize[M].percent[2] then doPlayerAddSkillTry(cid, SKILL_SWORD, stry) doPlayerAddItem(cid, configs.stones_prize[M].itemprize, quant) doPlayerSendTextMessage(cid, 22, "You won ".. quant .." ".. getItemNameById(configs.stones_prize[M].itemprize) ..".") break_chance = math.random(1,100) if break_chance < 6 then doTransformItem(itemEx.uid, 2160) end break elseif(M == #configs.stones_prize) then doPlayerSendTextMessage(cid, 22, "You have not won anything, try again..") end end else doPlayerSendTextMessage(cid, 22, "You did not succeed in mining , try again.") end Dica: deixe as variáveis locais e não globais.
Postado Agosto 12, 2016 8 anos Autor @wevertonvrb 13 horas atrás, blackz disse: if item.itemid == 4874 then percent = configs.sign[L].percent + 75 mas se tu olhar aqui, com pickaxe fica bem vantajoso e mesmo assim fica dificil de pegar @MaTTch 4 horas atrás, MaTTch disse: elseif(M == #configs.stones_prize) then doPlayerSendTextMessage(cid, 22, "You have not won anything, try again..") aqui não vai break? ou esquece-se? e mais uma coisinha, podes me explicar o por que de assim funcionar? Editado Agosto 12, 2016 8 anos por blackz (veja o histórico de edições) tibia.com Eu que não fumo, queria um cigarro Eu que não amo você Envelheci dez anos ou mais Nesse último mês Eu que não bebo, pedi um conhaque Pra enfrentar o inverno Que entra pela porta Que você deixou aberta ao sair
Postado Agosto 12, 2016 8 anos @blackz Do jeito que estava ele parava no primeiro loop, ganhando ou perdendo item. E não precisa do break ali por ele já checar se é o ultimo round do loop e caso não tenha ganhado o item ele manda a msg de falha.
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.