Ir para conteúdo
Entre para seguir isso  
Fadi

[N:Fácil] comando math.random:como usar

Recommended Posts

Fadi    0
Fadi

não encontrei tutorial sobre math.random, entaum resolvi postar um:

 

:o que é math.random?

 

É uma função usada em scripts, serve para adicionar uma "chance" de acontecer diversas coisas em um script

2º:Como funciona?

 

math.random(valor inicial,valor final)

valor inicial e valor final é de que numero ateh q numero a função vai randomizar.

por exemplo, se eu colocar math.random(100,500), o valor retornado vai ser algum entre 100 e 500, randomicamente.

 

voce deve escolher uma variável para o math.random, para facilitar sua vida, ela vai usar o valor q o math.random retornou.

 

exemplo:

hit = math.random(100,500)

 

no exemplo, se o math.random retornar, digamos, 350, o valor de hit vai ser 350, se retornar 400, o valor vai ser 400, e assim vai

 

agora, dois exemplos de script usando o math.random: um usando pra ter chances de acontecer certas actions, outro usando pra retornar um value e usar ele junto com alguma action

 

function onUse(cid, item, frompos, item2, topos)

----variáveis-----

porcent = math.random(1, 100)

lever = 1945

leverUID = 8790

-----------------

 

if item.itemid == lever

and item.uid == leverUID then

 

if porcent >= 1 and

porcent <= 50 then

 

doTransformItem(item.uid,item.itemid+1)

doPlayerSendTextMessage(cid,22,'Você conseguiu mexer a alavanca!')

 

else

 

doPlayerSendTextMessage(cid,22,'Você não teve força para mexer a alavanca!')

 

end

return 1

end

end

 

em verde: os valores do math random, alí embaixo o if porcent >= 1 and

porcent <= 50 then quer dizer q se o numero sorteado for menor q 50 e maior q 1, os comandos desse if vaum acontecer

 

em azul claro, o comando else tah finalizando a função "if porcent >=1 and porcent <=50", tipow, else eh se porcent for equivalente a qlqr outro numero q naum seja de 1 a 50

 

agora o segundo script

 

function onUse(cid, item, frompos, item2, topos)

----variáveis-----

hit = math.random(100, 300)

lever = 1945

leverUID = 8800

-----------------

 

if item.itemid == lever

and item.uid == leverUID then

 

doPlayerAddHealth(cid,-hit)

doPlayerSendTextMessage(cid,22,'Você se machucou tentando mexer a alavanca!')

 

end

return 0

end

 

nesse caso, o math.random retorna um valor q será um hit randomico q o player irá receber ao tentar usar a alavanca

 

em "doPlayerAddHealth(cid,-hit)", o "hit" tah negativo pq o player tah levando hit e essa eh uma função de adicionar vida, botando negativo ele recebe dano, deixando positivo ele recupera vida

 

espero q esse tuto seja util =]

no more~

Compartilhar este post


Link para o post
Dark    3
Dark

Muito Bom, não encontrei nada semelhante, está muito bem explicado, bem formatado, adorei, espero continuar vendo seus tutoriais por aqui ;)

 

Aprovado

Movido

(Scripting -> Tutoriais)

Compartilhar este post


Link para o post
buuster    0
buuster

bem legal e util!

aprovado ;)

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

Eu tenho uma duvida com math.random

 

Vamos supor, o script ta math.random(1,3)

Dai o player uso e caiu no 3, blz, agora como eu fasso para n cair mais no 3, para o 3 ser descartado, so podendo agora cair 1 e 2, e se usar dnovo e cai o 2, blz agora so pod cair o 1 e se usar dnovo e cair o 1, blz agora n pod mais usar, teria q fazer um script para resetar e voltar a ficar 1,3, como fasso isso?

Compartilhar este post


Link para o post
alecio_sm    0
alecio_sm

sem zuuu

 

esse script é firme cara

gostei vo ver isso melhor

aaaaa!!!!!!!!

...entrando na loja...

Compartilhar este post


Link para o post
Tae Angy    0
Tae Angy
;211778']Eu tenho uma duvida com math.random

 

Vamos supor' date=' o script ta math.random(1,3)

Dai o player uso e caiu no 3, blz, agora como eu fasso para n cair mais no 3, para o 3 ser descartado, so podendo agora cair 1 e 2, e se usar dnovo e cai o 2, blz agora so pod cair o 1 e se usar dnovo e cair o 1, blz agora n pod mais usar, teria q fazer um script para resetar e voltar a ficar 1,3, como fasso isso?[/quote']

Ai não passa a ser math.random. Você pode usar setPlayerStorageValue, ou algo semelhante. Pelo que conheço, math.random não é capaz de realizar o que desejas. Se ainda possui dúvidas, ou não fui claro com a resposta, você pode procurar um scripter no fórum ou visitar a seção de Ajuda e Suporte.

 

@topic

Muito bem explicado mesmo, viu!? Consegui rever o meu conceito sobre o math.random, hehe...

Ótimo tutorial, muito bom mesmo. Parabéns, :lol:

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

@Tae Angy

 

Vc consegue me dar um exemplo de script com math.random usando o setPlayerStorageValue?

Compartilhar este post


Link para o post
Blazeiker    0
Blazeiker

OMG!!

 

Agora sei pra que serve este "math.random". =D

 

Vlws...

^^

Compartilhar este post


Link para o post
Tae Angy    0
Tae Angy

 
ACTION_STATUS == getPlayerStorageValue(cid,1111)
rand = math.random(1, 2)
if ACTION_STATUS == -1 and rand == 1 then
   doPlayerSendTextMessage(cid,22,'Você tirou o número 1 e não pode tirar ele de novo!.')
   setPlayerStorageValue(cid,1111,1) -- 1111 é o storageValue

 

Mais ou menos assim. Aconselho um bom scripter. ^^

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

@Tae

 

Vlw a intenção, mas eu ja pensei assim e da certo, mas não é assim que eu quero, mesmo pq ainda tem a chance de cair no numero 1 mas nada acontecera pq a função esta travada.

 

Eu quero um jeito que ele exclua da lista o random q ja caiu :S

To falando com um amigo meu aqui, se ele me ajuda eu edito o post

 

 

Mas vlw ae a intenção

Compartilhar este post


Link para o post
plomentes    0
plomentes

Gostei, vou tentar criar algo

Obrigado

Compartilhar este post


Link para o post
Fadi    0
Fadi
;211778']Eu tenho uma duvida com math.random

 

Vamos supor' date=' o script ta math.random(1,3)

Dai o player uso e caiu no 3, blz, agora como eu fasso para n cair mais no 3, para o 3 ser descartado, so podendo agora cair 1 e 2, e se usar dnovo e cai o 2, blz agora so pod cair o 1 e se usar dnovo e cair o 1, blz agora n pod mais usar, teria q fazer um script para resetar e voltar a ficar 1,3, como fasso isso?[/quote']

 

kra, tem várias formas de fzr isso, vou mostrar uma me aproveitando da ajuda do Tae Angy (Tae, vlws por tentar ajudar o povo aki =]])

 

ACTION_STATUS == getPlayerStorageValue(cid,1111)

 

if ACTION_STATUS == -1 then

rand = math.random(1, 2)

 

elseif ACTION_STATUS == 1 then

rand = 1

elseif ACTION_STATUS == 2 then

rand = 2

 

end

 

if rand == 1 and ACTION_STATUS == -1 then

 

doPlayerSendTextMessage(cid,22,'Você tirou o número 1 e não pode tirar ele de novo!.')

setPlayerStorageValue(cid,1111,2) -- 1111 é o StorageValue

end

 

if rand == 2 and ACTION_STATUS == -1 then

 

doPlayerSendTextMessage(cid,22,'Você tirou o número 2 e não pode tirar ele de novo!.')

setPlayerStorageValue(cid,1111,1) -- 1111 é o StorageValue

endif rand == 1 and ACTION_STATUS == 1 then

 

doPlayerSendTextMessage(cid,22,'Você tirou o número 1 depois de tirar o número 2, e agora os valores foram resetados!')

setPlayerStorageValue(cid,1111,-1) -- 1111 é o StorageValue

endif rand == 1 and ACTION_STATUS == 1 then

 

doPlayerSendTextMessage(cid,22,'Você tirou o número 2 depois de tirar o número 1, e agora os valores foram resetados!')

setPlayerStorageValue(cid,1111,-1) -- 1111 é o StorageValue

end

end

axo q eh por aí, na verdade nem testei, entaum num sei se funciona oO mas deve funcionar =]

 

espero ter ajudado :lol:

qualquer outra duvida q tiver, pode postar =]

Compartilhar este post


Link para o post
xyHedyxy    0
xyHedyxy

Gostei kra....

sempre soube oq era mas nunk tinha entendido a logica...

agora sim...

vlw t+

Compartilhar este post


Link para o post
Fadi    0
Fadi

math.random eh um comando extremamente facil, mas mto util tmb, e como eh um comando geral de programação lua, e naum um comando de otserv, eu axei q seria util repassar pro povo =]

qualquer duvida, postem no tópico q eu respondo

Compartilhar este post


Link para o post
Jovial    2
Jovial

O tutorial ta +/-, mas tem coisa que pelo amor de deus, não presisam ter tutorial. Para evitar tutoriais de math.min, math.max etc leiam http://www.lua.org/manual/5.1/pt/

 

Math.random n é um comando e sim uma função, e ele n foi feito para adicionar chance e si mapra sortear um numero entre 2 valores.

 

A e como ja ta o tutorial aki explica direito... O math.random pode ser usado de 3 jeitos:

 

Sem parametros, somente math.random(), que irá retornar 0 ou 1

Com 1 parametro, por exemplo math.random(100), que irá retornar de 1 a 100

E terceiro com 2 parametros, que é o jeito que vc explicou

Compartilhar este post


Link para o post
GDLib    2
GDLib

Existe o seed random também, e Fadi, aprenda a estruturar seus códigos.

E é exatamente o que o Jovial falando, apenas complementando que as funções random independente da linguagem, são as de mais baixo nível possível.

Compartilhar este post


Link para o post
viniciusfeijo    0
viniciusfeijo

Bem legal, eu uso bastante esse comando em meus scripts :P

Compartilhar este post


Link para o post
Fadi    0
Fadi

*jovial -

 

dito como "comando" ou "função" seria a mesma coisa nesse sentido, uma vez q qm vai ler esses tutorias não vão ser experts em scripting q entram em tópicos para tentar axar erros nos mesmos (isso naum eh uma indireta, mas entenda como quiser).

 

além disso, antes de citar se eh um comando ou uma função, leia o tutorial inteiro para ver se eu mesmo jah não o fiz. por sinal naum seria necessário lê-lo inteiro, uma vez q logo no início eh dito "É uma função usada em scripts", como você pode bem ver olhando o tutorial mais uma vez

 

adicionar chance seria no sentido da utilidade da função/comando(use a palavra que quiser) em um otserv. independente de como está escrito na descrição do tutorial, alguém que o ler por inteiro vai certamente entender sua utilidade.

 

aparentemente a intenção do seu post foi, na verdade, fazer uma crítica ao tópico, critica essa q possivelmente lhe pareceu útil, mas que na verdade teria como unica função me constranger. entretanto posso lhe dizer q isso não aconteceu

 

quanto aos parâmetros, seria apenas uma complicação a mais na cabeça das pessoas q vão utilizar a função(jah q lhe faz tanta diferença se eh um comando ou uma função). sendo q as condições da não-utilização de parametros podem ser criadas também com a utilização dos mesmos, não me pareceu um acréscimo tão pertinente quanto aparentemente lhe pareceu.

 

e ainda ao jovial, quanto a existência ou naum de um tutorial sobre tais funções, como math.random, math.abs ou math.max, na verdade eles passam a ser úteis quando vc se lembra q nem todos possuem ciencia de tal tutorial (apesar de eu a possuir), e também passa a ser ainda mais útil quando o tutorial criado está mais explicativo e fácil de entender do que o por vc apresentado.

 

*GDLib -

 

vc naum eh nenhuma autoridade em scripting, apesar de aparentemente pensar ser, qdo eu lhe pedir um conselho quanto à minha forma de estruturar meus códigos, aí sim tome a liberdade de a criticar

 

e ainda: mais baixo nivel ou mais alto nivel, eh uma função muito usada por scripters de todos os níveis, uma função básica q ainda naum havia sido explicada como devia para a maioria dos iniciantes. exatamente por ser do mais baixo nivel possivel, como vc diz, passa a ser uma das mais importantes. cuidado com suas palavras, GDLib, ou elas podem se virar contra vc mesmo.

 

no more~

Compartilhar este post


Link para o post
Chê.    1
Chê.

Muito util para actions.

Gostei... dá pra ter uma noção basica ;D

 

Flws;

Compartilhar este post


Link para o post
loopy    0
loopy

Agora sei pra que serve thx

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×