Mira, es muy triste que tenga que llegar a este nivel, pero es que hay gente que se supone que medianamente sabe de scripting pero después no te sabe hacer un mísero bucle. Así gente a patadas me he encontrado. Claro, tampoco les culpo de que no esté explicado absolutamente todo en un tutorial (guiño guiño, el de Xabier que hoy en día es referencia, guiño guiño), pero vaya, que esto ya roza lo absurdo. Pensé que nunca más haría un tutorial relacionado con algo de RH porque ya hace siglos que no toco nada.
Así que aquí estoy, revelando que todo script no tiene por qué ser finito (funcional, por supuesto, ya si se congela la pantalla porque habéis hecho algo mal es cosa vuestra). Explicaré cómo hacer simples bucles, básicamente os revolucionaré el scripting a los que nunca habéis hecho uno y pensaréis: ¿cómo he podido ser tan idiota? Sí, así es. Hoy os explicaré algo que es muy simple, que solo hay que usar un goto, un simple GOTO.
Puedes empezar compilando esto, compañero del metal:
Wow, ¿qué está pasando? Bueno, creo que ni hace falta que lo explique si tienes unas mínimas nociones de Scripting, pero sí, hará falta porque no hay que dar nada por explicado: básicamente estamos llamando al mismo offset una y otra vez. El script empieza por un offset, ejecuta un msgbox y seguidamente vuelve a llamarse dónde este empezaba en la última línea, provocando así, algo que no termina nunca.
Sin embargo, eso no queda ahí, y los más espabilados ya os habréis dado cuenta de que esto da muchísimo juego para optimización de código, reduciendo así enormemente los bytes que desperdiciamos con un mísero bucle, pero claro, tendré que dar algunas pistas a los que necesitáis un pequeño empujoncito, así que aquí va el segundo script:
Y como a algunos os dará pereza compilarlo por vosotros mismos y ver el resultado, aquí una imagen del equipo Pokémon:
Podríamos usar seis givepokemon, sí, pero los bucles nos pueden echar un cable en eso. Quizá en este caso no supone un ahorro y solo es complejidad añadida, pero hay muchísimos casos en los que podemos simplificar todo con un simple bucle.
Y ahora que has leído hasta aquí y piensas que quizá tengo algo más interesante que decir, es sí: no uses XSE por dios, y usa RA que te permite hacer lo mismo más legible con estructuras de alto nivel como un while. RA es RedAlien, otro editor de scripts, y el mejor que hay ahora mismo, así que ya estás tardando en descargártelo si no lo has probado nunca. Ya es hora de abandonar un poco el mítico XSE, que parece que a todos les da miedo probar algo nuevo pero objetivamente mejor.
No hay nada más que decir, es una chorrada, pero hay tanta gente que lo desconoce que tenía que explicarlo en un tema por muy tonto que sea. Quiero ver el tema lleno de comentarios con kokoros azules, btw (?)
EDIT: Como me ha comentado Franco, se pueden usar variables temporales y es lo ideal para estos casos. Pero tampoco quería introducir mucha información y que os explotara el cerebro (?).
¡Nos vemos! Miau revoir~.
Así que aquí estoy, revelando que todo script no tiene por qué ser finito (funcional, por supuesto, ya si se congela la pantalla porque habéis hecho algo mal es cosa vuestra). Explicaré cómo hacer simples bucles, básicamente os revolucionaré el scripting a los que nunca habéis hecho uno y pensaréis: ¿cómo he podido ser tan idiota? Sí, así es. Hoy os explicaré algo que es muy simple, que solo hay que usar un goto, un simple GOTO.
Puedes empezar compilando esto, compañero del metal:
Código:
#dynamic 0x800000
#org @inicio
msgbox @msg 6
goto @inicio
#org @msg
= Hola, soy un mensaje infinito.
Sin embargo, eso no queda ahí, y los más espabilados ya os habréis dado cuenta de que esto da muchísimo juego para optimización de código, reduciendo así enormemente los bytes que desperdiciamos con un mísero bucle, pero claro, tendré que dar algunas pistas a los que necesitáis un pequeño empujoncito, así que aquí va el segundo script:
Código:
#dynamic 0x800000
#org @inicio
setvar 0x4011 0 'Se supone que $4011 ya es cero, pero si la solemos usar para bucles es posible que tengamos que inicializarla de nuevo.
setflag 0x828
msgbox @msg 6
goto @loop
#org @loop
addvar 0x4011 1
givepokemon 0x4011 5 0 0 0 0
compare 0x4011 6
if 3 goto @loop
end
#org @msg
= ¡Te voy a dar seis Pokémon!
Podríamos usar seis givepokemon, sí, pero los bucles nos pueden echar un cable en eso. Quizá en este caso no supone un ahorro y solo es complejidad añadida, pero hay muchísimos casos en los que podemos simplificar todo con un simple bucle.
Y ahora que has leído hasta aquí y piensas que quizá tengo algo más interesante que decir, es sí: no uses XSE por dios, y usa RA que te permite hacer lo mismo más legible con estructuras de alto nivel como un while. RA es RedAlien, otro editor de scripts, y el mejor que hay ahora mismo, así que ya estás tardando en descargártelo si no lo has probado nunca. Ya es hora de abandonar un poco el mítico XSE, que parece que a todos les da miedo probar algo nuevo pero objetivamente mejor.
No hay nada más que decir, es una chorrada, pero hay tanta gente que lo desconoce que tenía que explicarlo en un tema por muy tonto que sea. Quiero ver el tema lleno de comentarios con kokoros azules, btw (?)
EDIT: Como me ha comentado Franco, se pueden usar variables temporales y es lo ideal para estos casos. Pero tampoco quería introducir mucha información y que os explotara el cerebro (?).
¡Nos vemos! Miau revoir~.
Última edición: