Postado Março 31, 2017 8 anos 7 horas atrás, Thenebrozo disse: Deu certo a sua e a do Vod mais irei usar a sua, fico agradecido ao Vod ter me ajudado tbm, mas vc foi o unico que me respondeu e me ajudou quando eu precisei sendo assim fico muito grato e gostei muito, obrigado mesmo de coração. Tenho uma duvida onde eu mudo para ficar mais dificil para pescar os monstro? e quanto maior o level mais facil fica ? eu montei uma fórmula com base nas informações que você me passou. a chance é calculada nessa linha: if level >= i then ishable[#fishable + 1] = {chance = 5 * (level - i + 1), monster = mob} --- aqui < perceba que ele usa 5 * (level - i + 1) sendo que o i é sempre menor ou igual ao level, ou seja: se eu sou level 5 e estou no primeiro nivel i ("water elemental") eu vou fazer 5-1 + 1 que dá 5, ou seja, a porcentagem fica 25%. Se você quiser você pode diminuir esse numero 5 ou modificar a formula livremente. Nesse sentido o do vodkart é melhor configuravel porém ele usa muito mais espaço de memória que o meu (pra valores simples é muito melhor você fazer contas simples de soma e multiplicação para chegar nos valores do que salvá-los numa tabela consumindo espaço de memória) A questão é que o script do vodkart possui alguns erros lógicos então a % que ele colocou lá não necessariamente vai ser a % correta então eu sugiro você realmente usar o meu com essas pequenas edições na formula. Note que o código que eu te passei e o código que você falou que eu te passei estão diferentes, o código que eu te mandei foi esse aqui: https://repl.it/Gh8z/1 Spoiler -- tabela de nivel -- [nivel] = {level, fishing} local tablelevel = { [1] = {400, 100}, [2] = {500, 105}, [3] = {600, 110}, [4] = {700, 120}, [5] = {800, 130} } -- tabela de monstros -- [nivel] = monstro adicionado -- note que se voce for nivel 3 vc tera os monstros do 2 e do 1 tambem. local tablemonsters = { [1] = "Water Elemental", [2] = "Massive Water Elemental", [3] = "Blood Crab", [4] = "Quara Constrictor", [5] = "Quara Predator Scout" } -- Aqui eu defino valores aleatorios de level e de fishing de um suposto player e printo esses valores plvl, fishing = math.random(300, 1000), math.random(95, 140) print("Nivel "..plvl..". Fishing: ".. fishing) --- isso aqui so serve para testes mas lembre-se de que plvl tem que ser igual a getCreatureLevel(cid) -- e que fishing tem que ser getPlayerSkill(cid, SKILL_FISHING) -- aqui fazemos o algoritmo para definir qual o level de pesca o player sera local level = 0 for i, lvl in ipairs(tablelevel) do if plvl >= lvl[1] and fishing >= lvl[2] then level = i else break end end print("Level: ".. level) -- a partir daqui o level do player pode ser pego atraves da variavel "level" -- aqui nos retornamos a tabela de monstros pescaveis pelo player local fishable = {} -- partimos de uma tabela vazia for i, mob in ipairs(tablemonsters) do if level >= i then fishable[#fishable + 1] = {chance = 5 * (level - i + 1), monster = mob} else break end end -- pra cada monstro temos uma chance associada que vai variar do nivel do player e da dificuldade do monstro -- printando tudo que tem em fishable for i = 1, #fishable do print(fishable[i].chance, fishable[i].monster) end -- isso aqui é só pra testar que funciona -- retornando oque vai pescar local get = false -- nao vai pescar nada de inicio for i = 1, #fishable do if fishable[i].chance >= math.random(1, 100) then get = fishable[i].monster break end end if not get then -- se nao pescou nada, da peixe print("pescou peixe") else -- se pescou algo, falar oque pescou/criar a criatura print("pescou ".. get) end e eu te mandei ele no repl.it justamente pra vc editar e clicar no run pra ver o que acontece com cada edição. A cada run ele vai te retornar isso aqui: Nivel 916. Fishing: 133 (nivel do player e nivel de fishing) Level: 5 (level de pesca) -- monstros que participam desse nivel de pesca -- chance na frente e nome do monstro (a chance é a fórmula que eu falei) 25 Water Elemental 20 Massive Water Elemental 15 Blood Crab 10 Quara Constrictor 5 Quara Predator Scout -- -- resultado final: pescou peixe
Postado Março 31, 2017 8 anos Autor 11 horas atrás, xWhiteWolf disse: eu montei uma fórmula com base nas informações que você me passou. a chance é calculada nessa linha: if level >= i then ishable[#fishable + 1] = {chance = 5 * (level - i + 1), monster = mob} --- aqui < perceba que ele usa 5 * (level - i + 1) sendo que o i é sempre menor ou igual ao level, ou seja: se eu sou level 5 e estou no primeiro nivel i ("water elemental") eu vou fazer 5-1 + 1 que dá 5, ou seja, a porcentagem fica 25%. Se você quiser você pode diminuir esse numero 5 ou modificar a formula livremente. Nesse sentido o do vodkart é melhor configuravel porém ele usa muito mais espaço de memória que o meu (pra valores simples é muito melhor você fazer contas simples de soma e multiplicação para chegar nos valores do que salvá-los numa tabela consumindo espaço de memória) A questão é que o script do vodkart possui alguns erros lógicos então a % que ele colocou lá não necessariamente vai ser a % correta então eu sugiro você realmente usar o meu com essas pequenas edições na formula. Note que o código que eu te passei e o código que você falou que eu te passei estão diferentes, o código que eu te mandei foi esse aqui: https://repl.it/Gh8z/1 Mostrar conteúdo oculto -- tabela de nivel -- [nivel] = {level, fishing} local tablelevel = { [1] = {400, 100}, [2] = {500, 105}, [3] = {600, 110}, [4] = {700, 120}, [5] = {800, 130} } -- tabela de monstros -- [nivel] = monstro adicionado -- note que se voce for nivel 3 vc tera os monstros do 2 e do 1 tambem. local tablemonsters = { [1] = "Water Elemental", [2] = "Massive Water Elemental", [3] = "Blood Crab", [4] = "Quara Constrictor", [5] = "Quara Predator Scout" } -- Aqui eu defino valores aleatorios de level e de fishing de um suposto player e printo esses valores plvl, fishing = math.random(300, 1000), math.random(95, 140) print("Nivel "..plvl..". Fishing: ".. fishing) --- isso aqui so serve para testes mas lembre-se de que plvl tem que ser igual a getCreatureLevel(cid) -- e que fishing tem que ser getPlayerSkill(cid, SKILL_FISHING) -- aqui fazemos o algoritmo para definir qual o level de pesca o player sera local level = 0 for i, lvl in ipairs(tablelevel) do if plvl >= lvl[1] and fishing >= lvl[2] then level = i else break end end print("Level: ".. level) -- a partir daqui o level do player pode ser pego atraves da variavel "level" -- aqui nos retornamos a tabela de monstros pescaveis pelo player local fishable = {} -- partimos de uma tabela vazia for i, mob in ipairs(tablemonsters) do if level >= i then fishable[#fishable + 1] = {chance = 5 * (level - i + 1), monster = mob} else break end end -- pra cada monstro temos uma chance associada que vai variar do nivel do player e da dificuldade do monstro -- printando tudo que tem em fishable for i = 1, #fishable do print(fishable[i].chance, fishable[i].monster) end -- isso aqui é só pra testar que funciona -- retornando oque vai pescar local get = false -- nao vai pescar nada de inicio for i = 1, #fishable do if fishable[i].chance >= math.random(1, 100) then get = fishable[i].monster break end end if not get then -- se nao pescou nada, da peixe print("pescou peixe") else -- se pescou algo, falar oque pescou/criar a criatura print("pescou ".. get) end e eu te mandei ele no repl.it justamente pra vc editar e clicar no run pra ver o que acontece com cada edição. A cada run ele vai te retornar isso aqui: Nivel 916. Fishing: 133 (nivel do player e nivel de fishing) Level: 5 (level de pesca) -- monstros que participam desse nivel de pesca -- chance na frente e nome do monstro (a chance é a fórmula que eu falei) 25 Water Elemental 20 Massive Water Elemental 15 Blood Crab 10 Quara Constrictor 5 Quara Predator Scout -- -- resultado final: pescou peixe Entendi perfeitamente e usarei o seu pois é exatamente oq eu queria e com o repl.it como exemplo eu posso editar a porcetagem deixar do jeito que eu quero a adificuldade muito obrigado mesmo de coração cara, não sei se vc acredita em Deus mais que Deus te abençôe e ilumine seu caminho obrigado msm tava tentando fazer isso tem muito tempo, e vc não me cobrou nada por isso ! Obrigado
Postado Setembro 10, 2017 7 anos @Thenebrozo Sei que o seu problema já foi resolvido, mas o vídeo que você postou é do meu server que nunca abri kk O script que eu usava está postado logo abaixo : Spoiler local config = { waterIds = {493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4820, 4821, 4822, 4823, 4824, 4825}, rateSkill = getConfigValue("rateSkill"), allowFromPz = false, useWorms = false, randomsize = 2000, v = { [{1, 300}] = {level = 200, fishing = 80, monster = "Water Demon", msg = "You've caught a Water Demon!"}, [{301, 450}] = {level = 500, fishing = 100, monster = "Hydrosea", msg = "You've caught a Hydrosea!", bc1 = true}, [{451, 530}] = {level = 800, fishing = 105, monster = "Leviatan", msg = "You've caught a Leviatan!", bc2 = true}, [{531, 600}] = {level = 1200, fishing = 105, monster = "Equidna", msg = "You've caught an Equidna!", bc3 = true}, [{601, 635}] = {level = 1750, fishing = 110, monster = "Massive Hydrosea", msg = "You've caught a Massive Hydrosea!", bc4 = true}, [{636, 755}] = {level = 2500, fishing = 110, monster = "Lerna", msg = "You've caught a Lerna!", bc5 = true}, [{756, 764}] = {level = 3500, fishing = 115, monster = "Tifon", msg = "You've caught a Tifon!", bc6 = true}, [{765, 770}] = {level = 3500, fishing = 115, monster = "Water Anfitrity", msg = "You've caught a Water Anfitrity", bc7 = true}, [{771, 774}] = {level = 4500, fishing = 120, monster = "Wartoise", msg = "You've caught a Wartoise!", bc8 = true}, [{775, 776}] = {level = 5000, fishing = 125, monster = "Poseidon", msg = "You've angered the water gods and a water god has been sent to kill you!!", bc = true} } } function onUse(cid, item, fromPosition, itemEx, toPosition) if not isInArray(config.waterIds, itemEx.itemid) then return false end if (config.allowFromPz or not getTileInfo(getThingPos(cid)).protection) and itemEx.itemid ~= 493 and math.random((100 + (getPlayerSkill(cid, SKILL_FISHING) / 50))) < getPlayerSkill(cid, SKILL_FISHING) and (not config.useWorms or (getPlayerItemCount(cid, ITEM_WORM) > 0 and doPlayerRemoveItem(cid, ITEM_WORM, 1))) then doPlayerAddSkillTry(cid, SKILL_FISHING, 1) doPlayerAddItem(cid, ITEM_FISH, 1) local formula, lvl = math.random(config.randomsize), getPlayerLevel(cid) local fishing = getPlayerSkillLevel(cid, SKILL_FISHING) for range, inf in pairs(config.v) do if formula >= range[1] and formula <= range[2] and lvl >= inf.level and fishing >= inf.fishing then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, inf.msg) doSummonCreature(inf.monster, getThingPos(cid)) if inf.bc then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has angered the goddess of water, The POSEIDON !", 22) end if inf.bc1 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Hydrosea !", 22) end if inf.bc2 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Leviatan !", 22) end if inf.bc3 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Equidna !", 22) end if inf.bc4 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Massive Hydrosea !", 22) end if inf.bc5 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Lerna !", 22) end if inf.bc6 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Trifon !", 22) end if inf.bc7 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Water Anfitrity !", 22) end if inf.bc8 then doBroadcastMessage(" WATER FISHING : " .. getPlayerName(cid) .. " has fishing a Wartoise !", 22) end break end end end doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY) return true end PS : Desculpe reviver o tópico, só quero colaborar também! XD
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.