Mensajepor na_th_an » Vie, 16 Oct 2015, 12:28
$this->bbcode_second_pass_quote('fupinet', 'H')ola de nuevo
es posible poner en el script algo como esto
ENTERING SCREEN 1
IF TRUE
THEN
SET FIRE ZONE 1,113,31,143
END
END
PRESS_FIRE_SCREEN 1
IF TILE(1, 8) =14
THEN
#Ejecuta cualquier accion
END
END
Quiero que cuando un tile movible llegue a una zona determinada se ejecute una acción
se puede hacer?
Un saludo y muchas gracias.
Tienes que leerte whatsnew.txt.
Todos tenéis que leeros ese documento
Lo que quieres hacer esta totalmente automatizado desde la versión nomeacuerdo, la que llevaba Cadaverion. De hecho, puedes mirar los fuentes de Cadaverion para ver mil cosas relacionadas con esto y con los temporizadores.
Te pego el cacho de whatsnew.txt donde se menciona:
$this->bbcode_second_pass_code('', 'Control de bloques empujables
=============================
Hemos mejorado el motor para que se pueda hacer más cosas con el tile 14 de
tipo 10 (tile empujable) que simplemente empujarlo o que detenga la trayectoria
de los enemigos. Ahora podemos decirle al motor que lance la sección PRESS_FIRE
de la pantalla actual justo después de empujar un bloque empujable. Además, el
número del tile que se "pisa" y las coordenadas finales se almacenan en tres
flags que podemos configurar, para poderlas usar desde el script para hacer
comprobaciones.
Este es el sistema que se emplea en el script de Cadàveriön para controlar que
coloquemos las estatuas sobre los pedestales, por poner un ejemplo.
Recordemos lo que teníamos hasta ahora:
#define PLAYER_PUSH_BOXES
#define FIRE_TO_PUSH
La primera es necesaria para activar los tiles empujables. La segunda obliga al
jugador a pulsar FIRE para empujar y, por tanto, no es obligatoria. Veamos
ahora las nuevas directivas:
#define ENABLE_PUSHED_SCRIPTING
#define MOVED_TILE_FLAG 1
#define MOVED_X_FLAG 2
#define MOVED_Y_FLAG 3
Activando ENABLE_PUSHED_SCRIPTING, el tile que se pisa y sus coordenadas se
almacenarán en los flags especificados por las directivas MOVED_TILE_FLAG,
MOVED_X_FLAG y MOVED_Y_FLAG. En el código que se muestra, el tile pisado se
almacenará en el flag 1, y sus coordenadas en los flags 2 y 3.
#define PUSHING_ACTION
Si definimos esta, además, se ejecutarán los scripts PRESS_FIRE AT ANY y
PRESS_FIRE de la pantalla actual.
Recomendamos estudiar el script de Cadàveriön, el cual, además de ser un buen
ejemplo del uso del temporizador y del control del bloque empujable, resulta
ser un script bastante complejo que emplea un montón de técnicas avanzadas.')
En el documento sobre el scripting msc3 de MK2 hay un trozo que también habla de él. En la Churrera funcionaba igual, así que también te sirve:
$this->bbcode_second_pass_code('', 'Bloques que se empujan
----------------------
Directivas MOVED_TILE_FLAG, MOVED_X_FLAG y MOVED_Y_FLAG
Si hemos activado que el jugador pueda empujar cajas (tile 14 del tileset,
con "behaviour" = 10) mediante #define PLAYER_PUSH_BOXES, y además activamos
la directiva ENABLE_PUSHED_SCRIPTING, cada vez que el jugador mueva una caja
(o bloque, lo que sea que hayamos puesto en el tile 14 ;-) ), ocurrirá esto:
- El número de tile que se "pisa" se copiará en el flag MOVED_TILE_FLAG.
- La coordenada X a la que se mueve la caja se copia en el flag MOVED_X_FLAG.
- La coordenada Y a la que se mueve la caja se copia en el flag MOVED_Y_FLAG.
Si, además, definimos PUSHING_ACTION, se lanzarán las secciones PRESS_FIRE
(la ANY y la correspondiente a la pantalla actual) y podremos hacer las
comprobaciones inmediatamente.
Este sistema se emplea en Cadaverion (aunque sea un juego de la Churrera,
esto funciona exactamente igual) para comprobar que hemos colocado las
estatuas en sus pedestales.
Por ejemplo, si queremos abrir una puerta si se empuja una caja a la posición
(7, 7) de la pantalla 4, podemos definir:
#define PLAYER_PUSH_BOXES
#define ENABLE_PUSHED_SCRIPTING
#define PUSHING_ACTION
#define MOVED_TILE_FLAG 1 // Esto no lo vamos a usar en este ejemplo
#define MOVED_X_FLAG 2
#define MOVED_Y_FLAG 3
Y en nuestro script...
PRESS_FIRE AT SCREEN 4
IF FLAG 2 = 7
IF FLAG 3 = 7
THEN
# La caja que hemos movido está en la posición 7,7
# abrir puerta...
END
END
Si, por ejemplo, queremos que una puerta se abra siempre que se coloque una
caja sobre un tile "pulsador", que hemos dibujado en el tile, digamos, 3,
(con los mismos defines) tendríamos:
PRESS_FIRE AT SCREEN 4
IF FLAG 1 = 3
THEN
# La caja que hemos movido está sobre un tile 3
# abrir puerta...
END
END')