Postado Março 12, 2021 4 anos .Qual servidor ou website você utiliza como base? Pokezring Qual o motivo deste tópico? Procurar solucionar problema de variável com valor aleatório. Está surgindo algum erro? Se sim coloque-o aqui. Quote Estou editando um sistema de catch num server de pokémon, e preciso que toda vez que eu jogasse a pokébola uma variável recebesse um valor aleatório de 4 a 10, decidi utilizar a função math.random porém a variável está preenchendo somente uma vez quando o servidor sobe e mantém o mesmo valor sempre, em vez de gerar aleatório toda vez que a pokébola é jogada. Alguém conseguiria me auxiliar? Preciso que a variável receba o valor aleatório constantemente. math.randomseed(os.time()) num1 = math.random(4,10) Você tem o código disponível? Se tiver publique-o aqui: ----------------------- actions.lua ----------------- <action itemid="15980-15996;16157" event="script" value="catch.lua" allowfaruse="1"/> ------------------------cactch.lua ------------------------------------------ math.randomseed(os.time()) num1 = math.random(4,10) Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. Editado Março 12, 2021 4 anos por leessandro (veja o histórico de edições)
Postado Março 12, 2021 4 anos Solução @leessandro então amigo, eu nunca usei math.randomseed enquanto programo para tibia, pelo simples fato do tempo! vou explicar melhor, quando não se tem algo gerando valores de tempo, não se usa math.randomseed, mas oque seria o tempo? vou tentar explicar de uma forma mais simples sem você se perder, o console em si, já é um math.randomseed, ele já irá gerar pra você novos valores sem precisar ter que ficar usando está função! então onde se usaria ela? num OTC, que ali os valores precisam ser gerados pelo gerador e como não tem nada para que gere isso para ele como o console que já faz este processo! vou te dar um exemplo de um catch que eu mesmo desenvolvi! local catch local srand = math.random(1, x.chance) if srand > Pokebals_chance["pokeball"] and srand <= Pokebals_chance["greatball"] then -- ## se o valor gerado for maior que a chance da pokebola, e que este valor seja menor que o da great ball catch = true else catch = false end if catch then doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoON) addEvent(function() doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) item = doCreateItemEx(12664, 1) doItemSetAttribute(item, "poke", name) doItemSetAttribute(item, "nome", i) doItemSetAttribute(item, "description", description) doPlayerAddItemEx(cid, item, true) end, 3000) else doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoOff) addEvent(doPlayerSendTextMessage, 3000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Escapou!.") end espero que tenha entendido! e fica livre ai se outro tiver uma explicação melhor sobre!!!!. claro que não postei o catch completo, é apenas um exemplo!
Postado Março 12, 2021 4 anos Em 12/03/2021 em 17:22, Sun disse: @leessandro então amigo, eu nunca usei math.randomseed enquanto programo para tibia, pelo simples fato do tempo! vou explicar melhor, quando não se tem algo gerando valores de tempo, não se usa math.randomseed, mas oque seria o tempo? vou tentar explicar de uma forma mais simples sem você se perder, o console em si, já é um math.randomseed, ele já irá gerar pra você novos valores sem precisar ter que ficar usando está função! então onde se usaria ela? num OTC, que ali os valores precisam ser gerados pelo gerador e como não tem nada para que gere isso para ele como o console que já faz este processo! vou te dar um exemplo de um catch que eu mesmo desenvolvi! local catch local srand = math.random(1, x.chance) if srand > Pokebals_chance["pokeball"] and srand <= Pokebals_chance["greatball"] then -- ## se o valor gerado for maior que a chance da pokebola, e que este valor seja menor que o da great ball catch = true else catch = false end if catch then doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoON) addEvent(function() doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) item = doCreateItemEx(12664, 1) doItemSetAttribute(item, "poke", name) doItemSetAttribute(item, "nome", i) doItemSetAttribute(item, "description", description) doPlayerAddItemEx(cid, item, true) end, 3000) else doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoOff) addEvent(doPlayerSendTextMessage, 3000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Escapou!.") end espero que tenha entendido! e fica livre ai se outro tiver uma explicação melhor sobre!!!!. claro que não postei o catch completo, é apenas um exemplo! Eu ia fazer mas vc ja respondeu o cara, o que ele quer é que cada item tenha uma porcentagem random diferente, os item registrados no xml, eu acho
Postado Março 12, 2021 4 anos Em 12/03/2021 em 17:30, FlameArcixt disse: Eu ia fazer mas vc ja respondeu o cara, o que ele quer é que cada item tenha uma porcentagem random diferente, os item registrados no xml, eu acho sim, mas ele não queria a script em si! ele quer uma explicação do porque da forma que ele está editando, está dando erro.
Postado Março 12, 2021 4 anos Autor Em 12/03/2021 em 17:22, Sun disse: @leessandro então amigo, eu nunca usei math.randomseed enquanto programo para tibia, pelo simples fato do tempo! vou explicar melhor, quando não se tem algo gerando valores de tempo, não se usa math.randomseed, mas oque seria o tempo? vou tentar explicar de uma forma mais simples sem você se perder, o console em si, já é um math.randomseed, ele já irá gerar pra você novos valores sem precisar ter que ficar usando está função! então onde se usaria ela? num OTC, que ali os valores precisam ser gerados pelo gerador e como não tem nada para que gere isso para ele como o console que já faz este processo! vou te dar um exemplo de um catch que eu mesmo desenvolvi! local catch local srand = math.random(1, x.chance) if srand > Pokebals_chance["pokeball"] and srand <= Pokebals_chance["greatball"] then -- ## se o valor gerado for maior que a chance da pokebola, e que este valor seja menor que o da great ball catch = true else catch = false end if catch then doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoON) addEvent(function() doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) item = doCreateItemEx(12664, 1) doItemSetAttribute(item, "poke", name) doItemSetAttribute(item, "nome", i) doItemSetAttribute(item, "description", description) doPlayerAddItemEx(cid, item, true) end, 3000) else doRemoveItem(itemEx.uid, 1) addEvent(doSendMagicEffect, 1, toPosition, bolaefeitoOff) addEvent(doPlayerSendTextMessage, 3000, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Escapou!.") end espero que tenha entendido! e fica livre ai se outro tiver uma explicação melhor sobre!!!!. claro que não postei o catch completo, é apenas um exemplo! Fechou, eu tive que setar a variavel como local e retirar o math.randomseed. Obrigado
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.