Ir para conteúdo

Featured Replies

Postado
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

  • Respostas 17
  • Visualizações 2.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • não é por nada não mas achei que a pessoa que fosse te ajudar seguiria meu modelo de algoritmo. Já que o vod praticamente ignorou meu código eu decidi fazer um script de pesca com base no que eu já ha

  • testa o do vodkart, se funcionar troca essa linha aqui do meu: doCreateMonster(get, fromPosition) por doCreateMonster(get, getCreaturePosition(cid)) Tecnicamente as duas eram pra dar errado,

  • @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 :   PS : Desculpe reviv

Postado
  • 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

  • 5 months later...
Postado

@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.

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