Registrarse

duda scripting flags o var

Estado
Cerrado para nuevas respuestas.
Buenas a todos,

Tengo otra duda acerca de los script. Cuando yo uso por ejemplo este script para un entrenador en la primera ruta:

#org @inicio
lock
faceplayer
compare 0x40FF 0x9
if 0x1 goto @2
msgbox @1 0x6
giveitem 0x4 0xA 0x0
setvar 0x40FF 0x9
release
end

El script 0x40FF ya no lo puedo volver a usar mas verdad? Me refiero que sino puedo pegar tal cual este script en otro entrenador de una ruta mas adelante?

Supongo que os parecera una estupidez, pero tengo bastantes dudas al respeto. Y si tal como creo, no se puede repetir ese numero 0x40FF, podrias decirme que numeros tendria libre (de cual a cual) para poder desarrollar mas scripts como este a lo largo del juego.

Muchas gracias chicos!
 

BandeDollio

Extintor-Sama
Te dejo el enlace a un tema similar con las variables y flags libres en Fire Red aquí.
De todas formas no se para entrenadores pero para el resto de cosas con las variables te las puedes apañar para usar la misma variando los valores y tener el equivalente de muchos flags
 

Sasaki Haise

Sugoi desu~
Una variable puede ser usada hasta un máximo de FFFF veces, simplemente la dale otro valor a la variable.
Si en este script usaste 40FF 0x9 en el siguiente usa 40FF 0xA y así una y otra vez.
Aunque lo más lógico sería comenzar con la var en valor 1 osease, 40FF 0x1, 40FF 0x2, 0x3, 0x4, 0x5 y así un largo etc...
Respeto a lo de vars libres puedes usar desde esa misma hacia abajo osease, 40FF, 40FE, 40FD, FC, FB, FA, F9, F8, etc...
Saludos!
 
Última edición:

Xabier2012

Usuario mítico
Te han explicado arriba como funciona unja variable. Guarda valores. Exactamente el mismo script no lo puedes utilizar a no ser que:
-Antes cambiar el valor de 40FF, puesto que iniciará el script y como es 9 irá a goto2
-O pongas el mismo script pero con otros valores, como por ejemplo comprobar si es 10 y luego hacer un setvar y dejarlo en 10
 
Buenas a todos,

Tengo otra duda acerca de los script. Cuando yo uso por ejemplo este script para un entrenador en la primera ruta:

#org @inicio
lock
faceplayer
compare 0x40FF 0x9
if 0x1 goto @2
msgbox @1 0x6
giveitem 0x4 0xA 0x0
setvar 0x40FF 0x9
release
end

El script 0x40FF ya no lo puedo volver a usar mas verdad? Me refiero que sino puedo pegar tal cual este script en otro entrenador de una ruta mas adelante?

Supongo que os parecera una estupidez, pero tengo bastantes dudas al respeto. Y si tal como creo, no se puede repetir ese numero 0x40FF, podrias decirme que numeros tendria libre (de cual a cual) para poder desarrollar mas scripts como este a lo largo del juego.

Muchas gracias chicos!
Mmm , osea como te pudiste haber dado cuenta las variables una sola variable , ejemplo 40FF , puede almacenar 65... y pico xD...por lo que no deberia haber problema si usas muchas valores para los entrenadores
-Lo que tu dijiste con los entrenadores , osea quieres copiar el mismo offset ,para los demas entrenadores verdad , pues la verdad solo cambia los valores para los msgbox.. porque sino haces eso ,el script quedaria algo asi
El primer entrenador , se va ejecutar el mensaje y la batalla
pero el segundo solo se ejecutara el mensaje porque en la primera batalla ya activaste la variable , y se salta al mensaje...
-Y bueno como ya te dije el 40FF alamacena 65..y pico valores por lo que , no creo que ocupes todos los valores , por lo que eso no te preocupes...
Si no me equivoco quisiste hacer entrenadores de rutas ,usando variables verdad...aqui te dejo un ejemplo y como usaria yo las variables para hacerlo

#dynamic 0x800000

#org @inicio
lock
faceplayer
compare 0x40FF 0x1
if 0x1 goto @luego
trainerbattle 0x0 0x2E5 0x0 @1 @2
setvar 0x40FF 0x1
release
end

#org @luego
msgbox @men2 0x6
release
end

#org @men2
= Que quieres xddd

#org @1
= vas a perder

#org @2
= eh sido yo el perdedor..

Bueno esto seria solo para un entrenador , faltaria para los demas , pero para que se haga mas facil y no volver hacer todo, solo cambia las Variables , el mensaje si quieres , y entrenador ahora para el siguiente entrenador pon setvar 0x40FF 0x2 --compare 0x40FF 0x2 , y listo creo que si me entendiste.. y bueno
Como alguien me dije , ninguna pregunta es estupida , tratas de aprender eso es bueno pregunta No mas ^-^
Salu8
 

Bugrhak

A long time ago I used to call myself "Subzero".
Primero que nada, como ya te han dicho, las variables tienen como máximo el valor FFFF (65535 si lo pasas a hexadecimal)...
En cuanto al script, dependiendo del caso, puedes usar o no un variable, hay casos en los que no es necesario, por ejemplo: Cuando te dan un ítem que no es tan común y que lo vas a tener ahí en la mochila por siempre, no hace falta usar una variable, solo con hacer un checkitem da y sobra.

Volviendo al tema que me parece central, tanto el script como la variable se puede decir que una vez que las uses van a quedar inutilizadas ya que si a la variable le cambias el valor a otro que no sea ese, al volver a ejecutar el script, te va a volver a dar el objeto. Y la variable pues quedara inútil porque la tendrás que tener siempre con ese "X" valor para que no te vuelva a dar el objeto.
Lo que se me ocurre que puedas hacer es que compares el valor de 40FF pero en ves de compararlo como solo "igual", compara el valor de la variable como "mayor o igual" de ese modo si la variable tiene el valor 0x9 o uno mayor, no te dará el objeto y ya. Supongo que con esto puedes seguir usando la variable pero igualmente tendrás que usar otro script para otros minis.

Un saludo '^^
 
Primero que nada, como ya te han dicho, las variables tienen como máximo el valor FFFF (65535 si lo pasas a hexadecimal)...
En cuanto al script, dependiendo del caso, puedes usar o no un variable, hay casos en los que no es necesario, por ejemplo: Cuando te dan un ítem que no es tan común y que lo vas a tener ahí en la mochila por siempre, no hace falta usar una variable, solo con hacer un checkitem da y sobra.

Volviendo al tema que me parece central, tanto el script como la variable se puede decir que una vez que las uses van a quedar inutilizadas ya que si a la variable le cambias el valor a otro que no sea ese, al volver a ejecutar el script, te va a volver a dar el objeto. Y la variable pues quedara inútil porque la tendrás que tener siempre con ese "X" valor para que no te vuelva a dar el objeto.
Lo que se me ocurre que puedas hacer es que compares el valor de 40FF pero en ves de compararlo como solo "igual", compara el valor de la variable como "mayor o igual" de ese modo si la variable tiene el valor 0x9 o uno mayor, no te dará el objeto y ya. Supongo que con esto puedes seguir usando la variable pero igualmente tendrás que usar otro script para otros minis.

Un saludo '^^
Mmm , osea como te pudiste haber dado cuenta las variables una sola variable , ejemplo 40FF , puede almacenar 65... y pico xD...por lo que no deberia haber problema si usas muchas valores para los entrenadores
-Lo que tu dijiste con los entrenadores , osea quieres copiar el mismo offset ,para los demas entrenadores verdad , pues la verdad solo cambia los valores para los msgbox.. porque sino haces eso ,el script quedaria algo asi
El primer entrenador , se va ejecutar el mensaje y la batalla
pero el segundo solo se ejecutara el mensaje porque en la primera batalla ya activaste la variable , y se salta al mensaje...
-Y bueno como ya te dije el 40FF alamacena 65..y pico valores por lo que , no creo que ocupes todos los valores , por lo que eso no te preocupes...
Si no me equivoco quisiste hacer entrenadores de rutas ,usando variables verdad...aqui te dejo un ejemplo y como usaria yo las variables para hacerlo

#dynamic 0x800000

#org @inicio
lock
faceplayer
compare 0x40FF 0x1
if 0x1 goto @luego
trainerbattle 0x0 0x2E5 0x0 @1 @2
setvar 0x40FF 0x1
release
end

#org @luego
msgbox @men2 0x6
release
end

#org @men2
= Que quieres xddd

#org @1
= vas a perder

#org @2
= eh sido yo el perdedor..

Bueno esto seria solo para un entrenador , faltaria para los demas , pero para que se haga mas facil y no volver hacer todo, solo cambia las Variables , el mensaje si quieres , y entrenador ahora para el siguiente entrenador pon setvar 0x40FF 0x2 --compare 0x40FF 0x2 , y listo creo que si me entendiste.. y bueno
Como alguien me dije , ninguna pregunta es estupida , tratas de aprender eso es bueno pregunta No mas ^-^
Salu8
Te han explicado arriba como funciona unja variable. Guarda valores. Exactamente el mismo script no lo puedes utilizar a no ser que:
-Antes cambiar el valor de 40FF, puesto que iniciará el script y como es 9 irá a goto2
-O pongas el mismo script pero con otros valores, como por ejemplo comprobar si es 10 y luego hacer un setvar y dejarlo en 10
Una variable puede ser usada hasta un máximo de FFFF veces, simplemente la dale otro valor a la variable.
Si en este script usaste 40FF 0x9 en el siguiente usa 40FF 0xA y así una y otra vez.
Aunque lo más lógico sería comenzar con la var en valor 1 osease, 40FF 0x1, 40FF 0x2, 0x3, 0x4, 0x5 y así un largo etc...
Respeto a lo de vars libres puedes usar desde esa misma hacia abajo osease, 40FF, 40FE, 40FD, FC, FB, FA, F9, F8, etc...
Saludos!
Te dejo el enlace a un tema similar con las variables y flags libres en Fire Red aquí.
De todas formas no se para entrenadores pero para el resto de cosas con las variables te las puedes apañar para usar la misma variando los valores y tener el equivalente de muchos flags

Muchisimas gracias a todos! La verdad que da gusto el soporte que dais a la gente con sus dudas y problemas. La duda queda resuelta, aunque todavia estoy asimilando lo de las variables y las flags jaja llevo poco tiempo en esto pero poco a poco lo ire pillando
 

Cheve

MoonLover~
Miembro de honor
Sé que haz dicho que la duda está resuelta, peeeeero...

Por lo que leí quieres hacer un Entrenador, no un simple script que te den algo ¿verdad? porque si es así puedes usar un Trainerbattle 0x1 y te ahorras el uso de la variable para otra cosa.


La estructura de un Trainerbattle 0x1 es así:

trainerbattle 0x1 0x201 0x0 String1 String2 @snippet4


0x201 en éste caso es el numero de Batalla que vas a hacer

String1 y String2 son mensajes antes de empezar la batalla y cuando le ganas, respectivamente

Snippet4 es un offset a una continuación de script que se ejecutará una sola vez.

Tomando tu script incial:

#org @inicio
lock
faceplayer
trainerbattle 0x1 0x201 0x0 @String1 @String2 @snippet4
call @2

#org @snippet4
msgbox @1 0x6
giveitem 0x4 0xA 0x0
setvar 0x40FF 0x9
release
end
 
Estado
Cerrado para nuevas respuestas.
Arriba