Exacto, lo que digo es que tienes que tener en cuenta que el scripting se ejecuta en momentos específicos:
- Cuando se entra en una pantalla
- Cuando se pulsa disparo
- Cuando se mueve un bloque empujable ( si se define)
- y no se si con el tema de temporizador y/o la nueva funcionalidad de "inventario"...
La cuestión es que no siempre se está ejecutando los scripts y por tanto el concepto de "al vuelo" no es del todo real, ya que sólo cuando ocurra alguna de las anteriores condiciones se ejecutará el script de la pantalla específica (que es donde tendrás el EXTERN n que ejecute el
get_resource (10, sprite_1_a + 144 * 8) (por ejemplo).
Así, para poder hacer algo totalmente al vuelo ya sería cosa de programar en c (dentro de engine.h probablemente) el "comportamiento" para el cambio de los sprites.
¿Qué puedo hacer y que no sin meterme a modificar el motor (usando EXTERN n y get_resource)?. Te pongo una serie de ejemplos
- Quiero cambiar los sprites de los enemigos que hay en ciertas pantallas.
OK - Cambiar los sprites del personaje cuando coje un objeto (usando fire zone)
OK - Cada vez que disparo (o pulso la tecla de acción) cambiar los sprites del personaje
OK - Cambiar los sprites del personaje cuando lleva mucho tiempo sin moverse (tipo batman)
NOP - no estoy muy seguro de esta afirmación por el tema del cambio que se hizo a TIMER desde el scripting - lo que está claro es que no se animaría puesto que no estamos moviendo al personaje xD)
- Digamos que a mitad de la vida de un enemigo quiero cambiarle el sprite por uno en el que se le vea agonizando
NOPSon unos pocos ejemplos para que te hagas una idea de que se puede y que no se puede hacer sin modificar el motor de la churrera; modificándolo "TODO" es posible
(Churrera Power!!)