Ir para conteúdo
Entre para seguir isso  
Eventide

"Math", a matemática por traz do script

Recommended Posts

Eventide    7
Eventide

Math

A matemática por traz do script

 

introdução:

 

bem, antes de começar a explicar o math em si, acho melhor explicar que:

  • não é recomendado colocar variáveis como x ou y em uma equação
  • alem do exemplo acima, funções lua ou de otserv, não podem ser declaradas como nome de variáveis
  • "=" é diferente de "=="

para facilitar, de uma olhada nessa tabela com os simbulos matemáticos em lua :

 

 

+ ---------------------- adição

- ------------------ subtração

*---------------- multiplicação

/ ---------------------- divisão

== ------------------ igualdade

~= -------------- desigualdade

> ----------------- maior que

>= -------- maior ou igual que

< ----------------- menor que

<= -------- menor ou igual que

^ ----------------- potenciação

O math sozinho:

 

O math, sozinho, serve somente para colocar equações e cálculos em geral. ficando assim :


local var = getPlayerHealth(cid)
local resultado = math((var-(var/2)))

 

no caso, var é a vida do player, e na variavel resultado e math resolve a equação que está em seu parametro.

 

math.random:

 

O math.random, pode pegar um numero aleatorio entre um minimo e um maximo, pegar um numero de uma tabela, ou ate mesmo randomizar frases e etc...

randomizando numeros por min/max :

 

observe


resultado = math.random(1,3)

 

no caso ali, 1 é o numero minimo a ser sorteado, e 3 é o maximo.

randomizando por meio de tabelas

 

novamente com um codigo de base :

 


tabela = {1, "eu sou de...mai...onese!", " tutorial by Eventide =D ", 2, 3, 5}
Sorteio = math.random(1, table.getn(tabela))
resultado = tabela[sorteio]

 

primeiramente, foi feito uma tabela com o que seria sorteado.

depois, declarei que ia sortear em uma variavel (sorteio), usando math.random, o primeiro numero de seu parametro, indica em qual valor da tabela ele começara a contar, o numero pode ser considerado ordinal, mas é escrito como cardinal, veja o exemplo:

 


table = {
"1° valor (ordinal), é representado por 1 ( cardinal )",
"2° valor (ordinal), é representado por 2 (cardinal)"
}

 

 

outro modo:


tab = {"sete", "mih", "exemplo" }
R = math.random(1,table.maxn(tab))
rand = tab[R]

assim, você cria uma tabela, randomiza normalmente pelo metodo min/max, sendo que o max é o numero de valores contidos na tabela, e depois na variavel rand, você pega a tabela randomizada, com esse metodo, da pra inserir novos valores na tabela futuramente, sendo que estes tambem serão randomizados...

 

math.fmod(x, y)

 

Retorna o resto da divisão de x por y, caso necessario o valor é arredondado para baixo.


math.fmod(4,2)
-- retornara 0

 

 

math.sqrt (x)

 

Retorna a raiz quadrada de x.


math.sqrt(9)
-- retornara 3

 

math.pow (x, y)

 

Retorna x elevado a y

 


math.pow(x, 2)
-- retornara x²

 

math.abs( )

retorna o valor absoluto do valor contido em seu parametro, ou seja, os números negativos são automaticamente transformados em positivos.

 


math.abs(-x)
-- retornara x

 

math.floor (x)

 

transorma um numero decimal em inteiro, exemplo, se x for 1,3 depois de passar pelo floor ele se torna 1.

 


math.floor(1,5)
-- retornara 1

é sempre bom usar isto após uma divisão

 

 

 

 

 

 

 

creditos: (60%)Eventide (30%)Merdamen (10%) Dark( pelas dicas... ;p)

 

 

 

 

para saber mais, acesse :

logo.gif

 

 

 

 

 

 

 

 

 

Editado por Eventide

Compartilhar este post


Link para o post
Dark    3
Dark

So para completar, o math.floor aredonda para o numero inteiro menor mais próximo, por exemplo, se tem 2,56 ele retorna 2, não por que tirou os decimais, mas sim por que ele aredondo para o menor numero inteiro mais próximo, ou seja dois ;). Podia ter colocado um exemplo de uso, mas como ta bem feitinho vou aprovar

 

Aprovado

Compartilhar este post


Link para o post
Tonholoko    0
Tonholoko

existe math.ceil tbm? :P

tudo igual java as funções xD

demorei pra descobrir que ~= é "diferente" xDD

 

Muito bom pra quem não sabe!!

 

Parabéns pelo Tópic!

Compartilhar este post


Link para o post
Teron    0
Teron

Gostei deste tutorial.

Estou começando em script.

 

teron~

Compartilhar este post


Link para o post
Fletch    0
Fletch

@eventide

finalmente aprovou em cara ficou show de bola

__________

pra quem pediu um exemplo de uso ta ai o:

function onSay(cid, words, param)
tabela = {"lol", "xisde", "vsf"}
sort = math.random(1 , table.getn(tabela))
result = tabela[sort]
doCreatureSay(cid,'random:' ..result.. '.', 1)
end

 

uma talkaction q utiliza do math.random para falar 3 frazes randomicas.

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf

Eu só conhecia alguns: '/', '*', '+', '-', '=', '==', '>=', e '<='. E só conhecia o 'Math' e o 'Math.Random'. Sem dúvida um bom tutorial.

Compartilhar este post


Link para o post
Eventide    7
Eventide

@skyen

pois é, agora vc conhece o ^

que é bem util... :D

 

@attux

lugar errado... reportado!

 

@tonho

não conheço essa função não... :/

Compartilhar este post


Link para o post
Foda_rj    0
Foda_rj

@Topic

Boa Eventive ^^ "otimo" tuto mais só achei pessima a formatação e a "definição" do oque é oque ... mais o conteudo tah bom...

 

Cya~

Compartilhar este post


Link para o post
Bloodslayer    0
Bloodslayer

Bom tuto :)

Vai ajudar mt gente

Compartilhar este post


Link para o post
HenneT    2
HenneT

Chegou em boa hora, estava vendo outro tutorial e contia a funçao math.abs e eu nao sabia como usar e pra que usar.

O link pra site do Lua nao esta correto, clicar na imagem com o novo script em ajax faz com que a imagem seja carregada nao o site ;P

 

 

Hennet, :)

Compartilhar este post


Link para o post
Jereziah    0
Jereziah

Muito Bom o Tutorial.

Realmente Exelente!

Me ajudou muito no projeto que estou criando.

 

Mais o que eu fico de cara mesmo.

É da inteligência do Dark.

Sério mesmo... Pago um Pau.

Compartilhar este post


Link para o post
ultimatearmor    0
ultimatearmor

Otimo tutorial deve ajudar muita gente no futuro

Compartilhar este post


Link para o post
Kaotar    5
Kaotar

Na verdade existem mais uns 20 math, mas esses são os mais usados, e sim existe o math.ceil conceituado no lua.org como (Retorna o menor inteiro maior ou igual a x.), mas dentro do x você pode por os caculos como "math.ceil(10*(20/100))".

 

Acho que deu pra entender.

Flws :bye:

 

PS: O tuturial ficou simples, mas bom.

Compartilhar este post


Link para o post
MotoBoy    0
MotoBoy

vlw Eventide ;X

eu só fiquei com duvida em como usar a potenciação..

se eu quiser fazer um numero elevado a outro é só usando math.. pelo que eu saiba..

então pra que serve a potenciaçõa? o.O

 

vlw

 

flws~~

Compartilhar este post


Link para o post
Eventide    7
Eventide

para usar potenciação, você pode fazer assim:

2AoCubo = math(2^3) --// recomendado //--

ou

2AoCubo = math((2*2)*2) --// não faz assim plxxx //-- 

Compartilhar este post


Link para o post
lokedis    2
lokedis

putz UEHuhEu eu queria entender do que estão falando

mais sempre achei script muito complicado, logico que da pra entender uns 15% :D

 

bom topico ;x

Compartilhar este post


Link para o post
LordDarkk    0
LordDarkk

Rox, só estudar bastante que fica esperto em scripting =]

Compartilhar este post


Link para o post
maruits    0
maruits

tendi nada ¬¬

Compartilhar este post


Link para o post
the Gray Fox    0
the Gray Fox

Boa! Mto poucos tutos flam sobre 'Math'. Eu realmente nunca vi 1 ;X

Sabia +- por noção de otras programações... vlw!

Compartilhar este post


Link para o post
MotoBoy    0
MotoBoy

o pessoal todo falando que não entendeu nada x.x

coloca um [N: intermediario] antes do nome do topico ae xD

 

pessoal que entra aqui e não entende este topico tá de sacangem ;/

 

excelente topico Eventide.. vlw por explicar a potenciação xD

 

flws~~

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.

×