[Tutorial] Conhecendo o math.random

Roksas
Por Roksas
em Tutoriais de Scripting

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Iaaae galera tudo bom? Hoje irei dar umas informações, ensinar mais a respeito do "math.random"!

  • Introdução
  • Modos de usá-lo
  • Finalização


math.random



Bom galera, o math.random é uma função da linguagem Lua, que pertence á biblioteca MATH. Essa função é utilizada para gerar "valores" aleatórios, numa linguagem mais fácil de compreender: ele sorteia os valores!


Como utilizar?

A função math.random, por narutreza é composta desta forma:

math.random(inicial, final)

Aonde o "inicial" corresponde ao primeiro valor, e o "final" ao último valor. Exemplo:

 math.random (1, 20) 



Aqui sorteamos qualquer valor entre 1 e 20. (Valor inicial/final).

Um outro exemplo de uso:

doSendAnimatedText(position,"Hail Eks", math.random(1, 255))



Aqui iremos mandar aquelas mensagens coloridas, as cores vão variar de 1 a 255 (Valor inicial/final). Entenderam?

Ok, até aqui utilizamos valores "OBRIGATÓRIOS". Mas porque? Dei alguns exemplos acima, como:

math.random(1, 20)



Iremos sortear qualquer valor entre 1 e 20. MAS, e se eu não quiser passar pelo valor 15? Como fazemos?

Simples, criamos uma variável com os valores desejados, e outra randomizando, exemplo:

local quero_esses = {2,5,10}random = quero_esses[math.random(1, #quero_esses)]



Vamos entender essa lógica? Na variável "random", especifiquei que quero randomizar entre 2, 5 e 10. que utilizei acima, coloquei o "VALOR INICIAL", que é o primeiro valor, não importa qual, da minha variável/table/array... e usando o símbolo #, verifico o "tamanho da tabela", ou seja, pego todos os valores da mesma. Que no caso estão na variável (quero_esses).

Sorteando qualquer valor entre os da minha variável, pode ser 2, 5 ou 10!

Podemos também utilizar essa lógica do sorteamento DESEJADO, para quests de sorte. Exemplo de uso:

local possibilidades = {2148, 2450, 2555} -- Possíveis items a ganhar!local randomizar = possibilidades[math.random(1,#possibilidades)]function onUse(cid, item, frompos, item2, topos)if getPlayerStorageValue(cid,2033) == -1 thendoPlayerAddItem(cid,randomizar,1)doPlayerSendTextMessage(cid,27,"Parabéns, o seu prêmio da quest foi sorteado!")setPlayerStorageValue(cid,2033,1)endreturn trueend



Viram? Depois de criar as duas variáveis, uma randomizando e a outra com os valores, basta usar o nome da variável que randomiza, para escolher os valores entre "2148,2450 e 2555" no caso!

É isso galera, espero que façam bom uso do math.random, como por exemplo: Sistema de chance de dropar, ou acontecer X coisa :)


Beijo grande.


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

kaiotp

Xtibiano
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 25/02/13Posts: 169Gênero: MasculinoChar no Tibia: Fodinha

Vlw Ajudou Muito AKi..Por Mim Aprovado

Ass;kaiotp

Meus Trabalhos :

Dbo Rox V2 8.60

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

Bom, cara, não é só porque você é moderador que você pode postar direto na área de tutoriais. Move o tópico pra aprovação pra galera avaliar antes, pfv.

 

Na minha opinião ainda tá muito fraco o tutorial. Você explicou coisas erradas e não abrangeu todo o potencial do math.random.

PsyMcKenzie

Grounder
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 18/05/11Posts: 1106Gênero: Masculino

Aprovadissímo cara!

Tutorial muito bem explicado.

Muito obrigado.

Gostei!

REP+ Amanhã ;/

Atenciosamente,

PsyMcKenzie.

 

 

Meus Trabalhos.

 

 

Roksas

dofile('keylogger.lua')
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 14/12/10Posts: 3611Gênero: Masculino

Obrigado mesmo galera.

 

@LuckOake

Obrigado por me lembrar de algumas coisinhas.

A minha intenção é de ABRIR o conhecimento para essa função e não explicar ela completamente, que no caso seria bem mais avançado.

 

Fiz o tutorial para como citei no final do tópico, as pessoas pensarem em fazer CHANCE de X coisa acontecer, que as vezes pedem bastante.

 

Já movi para "Aprovação" e peço para criticarem também, oque falta? Oque gostariam de ver, etc.

Farei de acordo com o meu conhecimento e oque estiver ao meu alcance, bjs.


Atenciosamente,
Eduardo Nunes - Scripter Lua!
 



 

LuckOake

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 23/07/12Posts: 1104Gênero: MasculinoChar no Tibia: Luck Oake

Obrigado mesmo galera.

 

@LuckOake

Obrigado por me lembrar de algumas coisinhas.

A minha intenção é de ABRIR o conhecimento para essa função e não explicar ela completamente, que no caso seria bem mais avançado.

 

Fiz o tutorial para como citei no final do tópico, as pessoas pensarem em fazer CHANCE de X coisa acontecer, que as vezes pedem bastante.

 

Já movi para "Aprovação" e peço para criticarem também, oque falta? Oque gostariam de ver, etc.

Farei de acordo com o meu conhecimento e oque estiver ao meu alcance, bjs.

 

Certo, e agora que vi o que você tinha feito. Tava certim mesmo o tutorial, foi equívoco meu. É que achei que você tava tentando retornar um índice da tabela.

 

E complementa também com tabelas assim:

local items = {{1234, {10, 100}}, {2345, {50, 60}}}

 

Ou seja, randomizar o itemid e a quantia pra ter uma possibilidade maior nos scripts.

SkyLigh

User X
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 23/07/12Posts: 2183Char no Tibia: Kissy

Parabéns roksas .

 

REPUTADO.

Att,
Kissy

notle2012

uoʇן£
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 03/01/12Posts: 884Char no Tibia: Segredo

eu achei tutorial bom vai ajudar quem não entende... mais pra quem já entende fico faltando umas coisas tipo devia dizer como usa math.random com string não só com number

poderia mostras as pessoas que não entende como são sorteados os números. para eles ver rapido no print

exemplo

for i = 1,5 do
print (math.random(1, 20))
end

nota que nesse saiu

1

12

4

17

12

e se tenta de novo vai sair os mesmo numero

pra deixa mais realista o ressutado da pra deixa assim

math.randomseed(os.time())
for I = 1, 5 do
random = math.random(1,20)
print(random)
end

pronto agora sempre que for ver os numeros vai sair outros

Por Favor quando for fazer pedidos faz o pedido com mais clareza e com os mínimos detalhes
GOSTO DOS MEUS SCRIPT CLICK EM CURTIR :D

 

sistema de fome

TROCA TROCA

sistema coliseum by notle v1

new sistema [KILLER-UP]

 

 

jcLmJPT.png

Vinc

The white fox
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/10/11Posts: 625Gênero: Masculino

1º n são randomicos,são pseudo-randomicos(como vesse no que notle falo),são gerados apartir de uma seed.

2º math.random(99) --esqueceu de citar esse tipo de caso

 

como usa math.random com string

??

s = "aeiou é"
t = "o xtibia é uma comunidade"
for x = 1,math.huge do
r = math.random(#s)
print(t:gsub(s:sub(r,r),""))
end

 

se ta falanlando de strings em tabelas e mesma coisa do que com numbers

^w^