Página 2 de 4

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 19:56
por D_Skywalk
Ese ejemplo yo lo veo bien, no hay ELSE en sí, pero puedes encadenar diferentes valores de una variable como en ese ejemplo :wan:

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 20:56
por na_th_an
Sï y no, o sea, sí pero no está completo del todo :)

$this->bbcode_second_pass_quote('Gocho', '
')$this->bbcode_second_pass_code('', 'PRESS_FIRE AT SCREEN 7
IF PLAYER_TOUCHES (7,5)
IF FLAG 3 = 0
THEN
SET FLAG 3 = 1
# Bienvenido
EXTERN 4
REDRAW
END
IF FLAG 3 = 1
THEN
# No tengo nada mas que decirte
EXTERN 2
REDRAW
END
END')


No hay ELSEs ni nada, así que necesitarías duplicarlo todo. Además, fíjate como he cambiado de orden las cláusulas. De otra manera, al ejecutarse la primera se pone FLAG 3 a 1 y justo después se ejecutaría la segunda.

$this->bbcode_second_pass_code('', 'PRESS_FIRE AT SCREEN 7
IF PLAYER_TOUCHES (7,5)
IF FLAG 3 = 1
THEN
# No tengo nada mas que decirte
EXTERN 2
REDRAW
END

IF PLAYER_TOUCHES (7,5)
IF FLAG 3 = 0
THEN
SET FLAG 3 = 1
# Bienvenido
EXTERN 4
REDRAW
END
END')

Tú ten en cuenta que se ejecuta TODO a menos que haya un REENTER O un WARP_TO. La segunda cláusula se ejecuta aunque se haya ejecutado la primera. Esto puede parecer un coñazo pero para otras cosas viene bien.

Programando Ninjajar me he dado cuenta de varias carencias. Algunas las he solucionado, pero ahora, tras tanto tiempo, no sé qué es nuevo y qué no :lol: Tengo casi arreglado el MT Engine MK 2 (que es lo que lleva Ninjajar) para que funcione en 48K y entonces podré lanzarlo. Hasta entonces, si digo algo que no funciona ya sabéis por qué es :lol:

Es que creo que metí un BREAK para interrumpir la ejecución pero no sé si lo hice o sólo lo pensé, y si lo hice no sé si fue en la Churrera o ya en el MT Engine MK 2 :lol: Mira motor_de_clausulas.txt a ver si hay un BREAK definido :lol: :lol:

Sobre lo otro que dices, no lo pillo muy bien, pero si quieres que aparezca un texto nada más entrar en una pantalla lo mejor es poner un FIRE_ZONE que pille la pantalla entera y luego poner el EXTERN en el PRESS_FIRE. Contrólalo con un flag para que el FIRE_ZONE y la acción sólo se activen una vez, y listo. Creo que en Ninjajar está hecho así al principio de la fase del poblado, en la pantalla 8 del primer script de ninjajar.spt, por si quieres mirarlo.

Re: Evitar que el prota coja el color del fondo

Publicado: Jue, 19 Jun 2014, 21:31
por Gocho
Vale, eso explica porque salí el 2º texto en lugar del 1º y porque me volvía to loca :loco:

Re: Evitar que el prota coja el color del fondo y Scripts

Publicado: Jue, 19 Jun 2014, 22:26
por Gocho
En algún lado la estoy cagando porque ya no sale ni texto y el extern no lo he tocado :(

Script, con el Redraw comentado por si acaso es muy rapido:

$this->bbcode_second_pass_code('', 'ENTERING SCREEN 9
IF FLAG 1 = 0
THEN
SET_FIRE_ZONE 32,112,48,128
END
END

PRESS_FIRE AT SCREEN 9
IF PLAYER_IN_X 32,48
IF PLAYER_IN_Y 112,128
IF FLAG 1 = 0
EXTERN 4
# REDRAW
END
END
')

El extern:
$this->bbcode_second_pass_code('', 'void do_extern_action (unsigned char n_action) {
switch (n_action){
case 0:
break;

case 1:
print_str (16, 20, 79, " BIENVENIDO. ");
print_str (16, 21, 79, " ESPERO SEPA SER");
print_str (16, 22, 79, "FLEXIBLE CON MIS");
print_str (16, 23, 79, " TRABAJADORES ");
// espera_activa(500);
break;

case 2:
print_str (16, 20, 79, " NO TENGO NADA ");
print_str (16, 21, 79, " MAS QUE HABLAR ");
print_str (16, 22, 79, " CON USTED... ");
print_str (16, 23, 79, " ");
// espera_activa(500);
break;

case 3:
print_str (16, 20, 79, " HOLA JEFE. ?YA ");
print_str (16, 21, 79, " HABLO CON LA ");
print_str (16, 22, 79, " DOCTORA SOBRE ");
print_str (16, 23, 79, " LOS SUICIDIOS? ");
// espera_activa(500);
break;

case 4:
print_str (16, 20, 79, " TENGO QUE VER ");
print_str (16, 21, 79, " AL DIRECTOR DE ");
print_str (16, 22, 79, " LA BASE IO. ");
print_str (16, 23, 79, " ");
// espera_activa(500);
break;


}
}')

Pues el tap ni se inmuta. Entro en la debajo de la 9. Subo a ella, paso por el único pasillo que hay y no salta texto ninguno. Llevo todo el día liado con esto y ya tengo la cabeza como un bombo pero no veo nada mal hecho :bimba:

Re: Evitar que el prota coja el color del fondo y Scripts

Publicado: Vie, 20 Jun 2014, 00:54
por NeilParsons
Buenas a todos. ¡Qué de tiempo!

Pues estoy con Gocho con esto de la BitBitJam y la verdad es que esperemos poder llegar a terminar este proyecto a tiempo. Los tiles que había realizado hasta ahora para los suelos estaban hechos en un principio en varios colores, pero después de ver con más detenimiento el tema, lo mejor que he podido hacer (y ya está resuelto en este momento) es ponerlos con tinta de color blanco, así que el protagonista coja precisamente el color de estos fondos.

En breve le mando a Victor el resultado de esta nueva modificación.

Por cierto, ya he tenido ocasión de ver la última beta del juego y decirme si para evitar que el astronauta pase por encima de las sillas metálicas si éstas han de ir con otro brillo u color, o si una vez se añada la última modificación de los tiles con los suelos en blanco eso se arregla.

Subo aquí un .rzx con lo que he visto hasta este momento.

Estaré aquí presente hasta no muy tarde. De paso, os enseño los tiles:

Re: Evitar que el prota coja el color del fondo y Scripts

Publicado: Vie, 20 Jun 2014, 08:06
por na_th_an
$this->bbcode_second_pass_quote('Gocho', '.')..


Vale.

En primer lugar descomenta los espera_activa.

En segundo lugar, los print_str imprimen en el buffer de splib2, no muestran nada. Para que se vea en pantalla hay que llamar a sp_UpdateNow (). Coloca una llamada a esa función antes de espera_activa y listo. O, mejor, ahorra algo de espacio refactorizando:

$this->bbcode_second_pass_code('', '
void do_extern_action (unsigned char n_action) {
switch (n_action){
case 1:
print_str (16, 20, 79, " BIENVENIDO. ");
print_str (16, 21, 79, " ESPERO SEPA SER");
print_str (16, 22, 79, "FLEXIBLE CON MIS");
print_str (16, 23, 79, " TRABAJADORES ");
break;

case 2:
print_str (16, 20, 79, " NO TENGO NADA ");
print_str (16, 21, 79, " MAS QUE HABLAR ");
print_str (16, 22, 79, " CON USTED... ");
print_str (16, 23, 79, " ");
break;

case 3:
print_str (16, 20, 79, " HOLA JEFE. ?YA ");
print_str (16, 21, 79, " HABLO CON LA ");
print_str (16, 22, 79, " DOCTORA SOBRE ");
print_str (16, 23, 79, " LOS SUICIDIOS? ");
break;

case 4:
print_str (16, 20, 79, " TENGO QUE VER ");
print_str (16, 21, 79, " AL DIRECTOR DE ");
print_str (16, 22, 79, " LA BASE IO. ");
print_str (16, 23, 79, " ");
break;
}
sp_UpdateNow (); // Muestra lo que hay en el buffer en pantalla!
espera_activa (500);
}')

¡Y muy buena pinta esos gráficos!

Re: Evitar que el prota coja el color del fondo y Scripts

Publicado: Vie, 20 Jun 2014, 08:20
por josito
Esos gráficos se salen!!;)

Enviado desde mi GT-I8260 mediante Tapatalk

Re: Evitar que el prota coja el color del fondo y Scripts

Publicado: Vie, 20 Jun 2014, 09:03
por Gocho
Vale POR FIN!

Yo pensando que los espera_activa no funcionaban. Porque el bicho imprimia, pero claro no esperaba para hacer el redraw y es que resulta que no descargaba el buffer en pantalla.

Gracias na_th_an.

Ya solo falta que David me conteste como leches se ponen los hotspots en el Tiled que se le ha olvidado decirlo en el video. Porque si no ni la vida ni la recarga ni las llaves funcionan XDD

EDIT:
Vale ya lo he encontrado y las recargas funcionan. ¿La recarga de vida no es un hotspot? Me lo cambia por el tile 19 aunque es el tile 16 y lo pongo correctamente. Cuando lo coge no hace nada de nada. Si no lo declaro como hotspot y lo pongo como tile de tipo 0 pues obviamente no lo coge.

Re: Evitar que el prota coja el color del fondo y Scripts

Publicado: Vie, 20 Jun 2014, 12:38
por Gocho
¿El script se satura por algo?

Estoy usando lo mismo de siempre para quitar bloques y no lo quita :(
Aunque el texto lo muestra ok.
En ese momento me vuelve a colocar al medico en el mismo lugar original (con lo que asumo que flag 3 = 0) y no parece ponerme el flag 4 a 0 porque no me quita el bloque de la screen 6. Ni cambiando la condicion.

$this->bbcode_second_pass_code('', '
# Juego
# Churrera Script

# flags:
# 0 - Mission start
# 1 - Welcome with the manager
# 2 - Welcome comisaria, searching doctor
# 3 - Welcome Hospital
# 5 - Charla 2 con la doctora en el hospital
# 6 - ALIJO ENCONTRADO
# 9 - item counter

#Externs
#1 Charla director
#2 "No tengo nada más que decirle"

ENTERING_GAME
IF TRUE
SET FLAG 0 = 0
SET FLAG 1 = 0
SET FLAG 2 = 0
SET FLAG 3 = 0
SET FLAG 4 = 0
SET FLAG 5 = 0
SET FLAG 6 = 0
SET FLAG 7 = 0
SET FLAG 8 = 0
SET FLAG 9 = 0
SET FLAG 10 = 0
SET FLAG 11 = 0
SET FLAG 12 = 0
SET FLAG 13 = 0
SET FLAG 14 = 0
THEN
END
END

## Llegada en la nave

ENTERING SCREEN 9
IF FLAG 0 = 0
THEN
SET_FIRE_ZONE 0, 0, 64, 64
END
END

PRESS_FIRE AT SCREEN 9
IF FLAG 0 = 0
THEN
SET FLAG 0 = 1
EXTERN 4
REDRAW
END
END

#Charla director
ENTERING SCREEN 1
IF FLAG 1 = 1
THEN
#Tras hablar con el manager quitamos la puerta a la comisaria
SET TILE (1, 9) = 45
END
IF FLAG 1 = 0
THEN
SET_FIRE_ZONE 100, 70, 132, 102
END
IF FLAG 6 = 1
THEN
SET_TILE (0,3) = 45
END
END


PRESS_FIRE AT SCREEN 1
#Hablar con el director
IF FLAG 1 = 0
THEN
SET FLAG 1 = 1
EXTERN 1
REDRAW
SET TILE (1, 9) = 45
END
END


ENTERING SCREEN 7
IF FLAG 1 > 0
THEN
#Tras hablar con el manager quitamos la puerta a la comisaria
SET TILE (0, 4) = 45
END
IF FLAG 3 = 1
THEN
#Tras hablar con la doctora quitamos la puerta a los barracones
SET TILE (6, 9) = 45
SET TILE (7, 9) = 45
SET TILE (8, 9) = 45
END
END

# Charla en la comisaria
ENTERING SCREEN 11
IF FLAG 3 = 1
THEN
#Tras hablar con la doctora quitamos la puerta a los barracones
SET TILE (14, 7) = 45
SET TILE (14, 8) = 45
END
IF FLAG 2 = 0
THEN
SET_FIRE_ZONE 79, 47, 127, 95
END
IF FLAG 2 = 1
THEN
#Abrir puerta al hospital
SET TILE (6, 9) = 45
SET TILE (7, 9) = 45
END
END

PRESS_FIRE AT SCREEN 11
#Hablar con el ayudante
IF FLAG 2 = 0
THEN
SET FLAG 2 = 1
EXTERN 2
REDRAW
#Abrir puerta al hospital
SET TILE (6, 9) = 45
SET TILE (7, 9) = 45
END
END

# Charla en el hospital
ENTERING SCREEN 15
IF FLAG 3 = 0
THEN
SET_FIRE_ZONE 175, 63, 199, 95
END
IF FLAG 3 = 1
THEN
#Movemos la medico a la nueva posicion
SET TILE (1,2) = 36
SET TILE (12,4) = 29
END
IF FLAG 3 = 1
IF FLAG 4 = 0
THEN
SET_FIRE_ZONE 0, 0, 63, 47
END
END

PRESS_FIRE AT SCREEN 15
#Hablar con la MEDICO 2
IF FLAG 3 = 1
IF FLAG 4 = 0
IF PLAYER_HAS_OBJECTS
#Solo habla con nosotros si tenemos un vial de droga
THEN
SET FLAG 4 = 1
EXTERN 6
REDRAW
END

#Hablar con la MEDICO 1
IF FLAG 3 = 0
THEN
SET FLAG 3 = 1
EXTERN 3
REDRAW
END
END

ENTERING SCREEN 3
IF FLAG 3 = 1
THEN
#Tras hablar con la doctora quitamos la puerta a la cocina
SET TILE (3, 4) = 45
END
END

#Alijo
ENTERING SCREEN 5
IF FLAG 6 = 0
THEN
SET_FIRE_ZONE 31, 23, 95, 95
END
END

PRESS_FIRE AT SCREEN 5
IF FLAG 6 = 0
THEN
SET FLAG 6 = 1
EXTERN 7
REDRAW
END
END

ENTERING SCREEN 6
# IF FLAG 4 = 1
IF PLAYER_HAS_OBJECTS
THEN
#Abrimos la puerta del alijo.
SET_TILE (0,1) = 5
END
END


# End Game
ENTERING SCREEN 14
IF OBJECT_COUNT = 20
Tenemos todos los viales
THEN
SET TILE (7, 4) = 5
SET TILE (8, 4) = 37
SET TILE (11, 4) = 5
#END
END


')

Re: Evitar que el prota coja el color del fondo y Scripts

Publicado: Vie, 20 Jun 2014, 12:44
por na_th_an
No entiendo lo de saturar ¿a qué te refieres? :dalefran: , pero sí que veo algunos errores de sintaxis:

$this->bbcode_second_pass_code('', 'ENTERING_GAME
IF TRUE
SET FLAG 0 = 0
SET FLAG 1 = 0
SET FLAG 2 = 0
SET FLAG 3 = 0
SET FLAG 4 = 0
SET FLAG 5 = 0
SET FLAG 6 = 0
SET FLAG 7 = 0
SET FLAG 8 = 0
SET FLAG 9 = 0
SET FLAG 10 = 0
SET FLAG 11 = 0
SET FLAG 12 = 0
SET FLAG 13 = 0
SET FLAG 14 = 0
THEN
END
END')

El THEN debe ir antes de los comandos. De todos modos esto debería dar igual, los flags de ponen a 0 igualmente de forma automática.

$this->bbcode_second_pass_code('', '

# End Game
ENTERING SCREEN 14
IF OBJECT_COUNT = 20
Tenemos todos los viales
THEN
SET TILE (7, 4) = 5
SET TILE (8, 4) = 37
SET TILE (11, 4) = 5
#END
END')

Esto también está mal. Te falta en # en el comentario y tienes comentado el END...

También hay otro fallo aquí:

$this->bbcode_second_pass_code('', 'ENTERING SCREEN 6
# IF FLAG 4 = 1
IF PLAYER_HAS_OBJECTS
THEN
#Abrimos la puerta del alijo.
SET_TILE (0,1) = 5
END
END')

SET_TILE debería ser "SET TILE".

Estas cosas en teoría no deberían joderte otras, pero el compilador es bastante tonto y a lo mejor se hace un lío con todo. Sobre lo que te falla, tendría que leer el script y "simular" qué quieres hacer, a ver si encuentro rato. Yo también tengo un juego que terminar :D