Registrarse

[Scripting] Comando Random

Zik

Usuario Habitual
Que tal gente de WAH, unos me conocen otros no...
Pero bueno eso no importa. Hoy vengo con este tutorial para usar ente fabuloso comando. ¿A cual me refiero?
Me refiero al comando "RANDOM"


Empecemos:

¿Que es el comando random 0x0?
Es un comando que genera un numero al azar entre 0 y el numero que asignemos menos 1. Luego dicho valor generado es guardado en LASTRESULT.
NOTA: El numero maximo que podemos asignar es 0xFFFF


¿En que lo podemos usar?
Bueno, eso depende de que tan creativo eres, puedes darles muchos usos y convinarlos con otros comandos(giveitem, giveegg, givepokemon, etc.).
Eso depende de ti.



Bueno yo explicare 3 formas de usarlo(aunque yo les recomiendo usar la segunda y la tercera).Usare el comando giveitem, para los ejemplos.

1º Forma de uso(Nivel Facil) no recomendado:
La primera es simple, esta forma se basa en obtener cualquier objeto de la lista de items desde la 0x0(ITEM_NONE) hasta el 0x15A(ITEM_HM8)
NOTA: Para saber los codigos de los items pueden revisar el "stditems.rbh" que viene en la carpeta de su XSE, ahí vienen todos los items
.

Bueno asi debe de ir nuestro script con nuestro comando random:

#org 0xDir1(aqui pondremos la direccion de nuestro escript, les recomiendo usar desde la 6B2000 en adelante)
|
| lock, msgbox, applymovement o lo que llevara el script antes de llegar
| al comando.
|
random 0x15A (Con esto generamos un numero entre 0 y cualquier valor
que asignemos, en este caso 15A)
giveitem LASTRESULT 0xcantidad que se recivira 0x0
|
|Lo que ira despues.
|
end

Simple no, bueno la verdad esto no tiene sentido, ya que estamos generando que te den un item de toda la lista, eso icluye desde un pokeball hasta una masterball o incluso un ?????????. Pero esto nomas sirve para que entiendan el uso de random, ok.

2º Forma de usar(Nivel: Medio):
La segunda obviamente es mas difícil, es como hacer para obtener un item al azar, pero de una lista asignada o mas bien dicho dentro de un rango para que se entienda mejor, en este ejemplo usar las piedras evolutivas, que estan desde 0x5D a 0x62, o sea 6 objetos(0x5D, 0x5E, 0x5F, 0x60, 0x61 y 0x62).
Ok, empecemos:


Esta es la estructura de como debe ir el script:

#org 0xDir1(Direccion que usaremos)
|
| Lo que llevara antes de llegar al comando
|
random 0x6 (generaremos un valor entre 0 y 6, que sera el rango de nuestra lista)
addvar LASTRESULT 0x5D (Aqui, añadimos el valor inferior de nuestro rango en este caso 0x5D)
giveitem LASTRESULT 0x cantidad que recibiras 0x0
|
|Resto de nuestro script
|
end

¿Mas elaborado no creen?, bueno esto esta mejor hecho, ya que ahora solo vamos a entregar un item de un rango especificado, este caso las piedras evolutivas.

SUNSTONE (0x5D)
MOONSTONE (0x5E)
FIRESTONE (0x5F)
THUNDERSTONE (0x60)
WATERSTONE (0x61)
LEAFSTONE (0x62)

En este punto se deben de estar preguntando, ¿Pero si lo items que quiero poner al azar, no estan consecutivamente uno despues del otro?
Bueno, asi de largo no creo, pero parecido debe de estar xD


3º Forma de usar(Nivel: Medio):
Ahora la estructura del script sera mas dificil, ya que escojeremos 3 objetos que no estan uno despues de otro, en este caso:

FULLRESTORE 0x13
MOOMOOMILK 0x1D
PROTEIN 0x40

Como pueden ver no estan en un rango.

Asi debe ir el script para que funcione:

#org 0xDir1(Direccion de nuestro script)
|
|Inicio del script
|
random 0x3 (Aqui asignaremos el valor del numero de objetos que se dara al azar, en este caso 3)
copyvar 0xVar1(asignaremos una variable) LASTRESULT(El numero que se genere, sera copiado en la variable que asignemos)
compare 0xVAR1(aquí ira la misma variable que usamos) 0x0 ' Para 1º objeto
if 0x1 call 0xDIR2(aquí escojan otra dirección)
compare 0xVAR1 (la misma variable que están usando) 0x1 (Porque 1, al final explico)
if 0x1 call 0xDIR3(aquí va otra dirección)
compare 0xVAR1 (igual la misma variable) 0x2 (ahora porque 2, al final explico)
if 0x1 call 0xDIR4(otra dirección)
|
|Resto del script
|
end


#org 0xDir2
giveitem 0x13 0x(cantidad a recibir) 0x0
-(aquí ponemos un simple giveitem con el primer objeto que se genere al azar)
return(para regresar a nuestro script)

#org 0xDir3
giveitem 0x1D 0x(cantidad a recibir) 0x0
-(aqui ponemos nuestro segundo objeto)
return(para regresar a nuestro script)

#org 0xDir4
giveitem 0x1D 0x(cantidad a recibir) 0x0
-(aqui ponemos nuestro tercer objeto)
return(para regresar a nuestro script)

Algo confuso, pero bueno vamos a explicar lo que hice:

Lo que hago con el copyvar es copiar el valor que se genero con random y asignarlo a nuestra variable, que puede ser 0, 1, 2, ¿porque solo asta el dos si escojimos 3 como valor maximo a escojer?, eso es simple, si leyeron desde el principio random genera un numero al azar menos uno(osea, si genero 1 se resta 1 y obtenemos 0 y asi secesivamente(2-1=1, 3-1=2, 4-1=3.....).

Bueno luego de que se copio ese valor "x" a nuestra variable, los compare compararan si nuestra variable tiene el valor que se esta comparando, en este caso el valor 0, 1 y 2
por eso los compares van asi:

compare 0xVar1 0x0(compara si el valor de la variable es 0)
compare 0xVar1 0x1(compara si el valor de la variable es 1)
compare 0xVar1 0x2(compara si el valor de la variable es 2)

Si el valor es igual al valor que se esta comparando, aqui es donde entran los if 0x1 call 0x(una direccion que escojamos), ya que estos irán a la dirección asignada donde esta nuestro giveitem si nuestra variable cumplio con un valor a comparar.

Talvez me explique mal o nose, pero asi es como entiendo que funciona.

NOTA: Si te preguntas que variables estan disponibles
Pues...
RUBY 5000- 6FFF (segun tengo entendido)
FIRERED (la verdad no se)
ESMERALDA (tampoco se)
En cuanto aprenda cuales son edito.

Y tambien recuerden que manejamos HEX, lo que significa que cuando queramos asignar por ejemplo, 10 objetos, no pondremos 10 sino que pondremos A.Para saber que valor pondran en hex, usen la calculadora de windows en modo cientifica.

Una ultima cosa, las tres formar de usar sirven para el giveitem, si lo quieren usar para otros comandos(givepokemon, giveegg, msgbox...) tienen que usar la tercera forma.

Bueno creo que hasta aqui llego mi tutorial, quiero agradecer a RIBON22X que no se de donde rayos saque un tutorial de como usar este comando.

Espero y se entienda, para la proxima talvez haga uno sobre como hacer eventos diarios.

Si tienen dudas mandeme un MP o comenten.
 

Javi4315

Babyface
Miembro de honor
RE: Comando "Random"

Buen tutorial y muy buen explicado, te felicito ;D

La verdad es que este comando es bastante bueno para algunas cosas. Yo lo usé en el primer gym de mi hack para que salieran preguntas al azar xD.

Bueno, eso muy bueno :D
 

zaux

Usuario mítico
RE: Comando "Random"

[align=center]Se entiende a la perfección, espero algún día utilizarlo en el Mysteries.
Se le puede dar varias funciones, es muy interesante.

Nos Vemos!
[/align]
 

IceKiller

Baneado
RE: Comando "Random"

bro gran tuto, me ayuda mucho are la intro de mi hack y que te regalen cualquier pokemon (si tenes suerte un legendario) XD
graacias y +gracias
 

Cheve

MoonLover~
Miembro de honor
RE: Comando "Random"

Jajá! Justo ayer me estaba preguntando sobre como era para hacer éstas cosas xD

Muchas Gracias, sin tí me habría costado un poco recordarlo D:

Bueno, el Tutorial está bien Explicado y escrito.
Sigue aportando ^^v
Salu2!
 

fm~

Llámame FM.
RE: Comando "Random"

Muchas Gracias!

Estube piensando en hacer un script de givepokemon aleatorio, y ahora, gracias a ti, puedo hacerlo!
Esta muy bien escrito y detallado, es un exelente tuto, servirá mucho a todos.

Gracias, +Gracias & Repu +1.
Me despido.
 
Arriba