Evitar que el prota coja el color del fondo y Scripts

For all things Churrera. ¿Estás haciendo un juego? ¿quieres proponer un cambio? ¿tienes alguna duda? ¡Cuéntanoslo!

Moderador: na_th_an

Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Evitar que el prota coja el color del fondo

Mensajepor D_Skywalk » Jue, 19 Jun 2014, 19:56

Ese ejemplo yo lo veo bien, no hay ELSE en sí, pero puedes encadenar diferentes valores de una variable como en ese ejemplo :wan:
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Evitar que el prota coja el color del fondo

Mensajepor na_th_an » Jue, 19 Jun 2014, 20:56

Sï y no, o sea, sí pero no está completo del todo :)

Gocho escribió:

Código: Seleccionar todo

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.

Código: Seleccionar todo

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.
Como diría Rorshach: "Urm..."
Gocho
Mensajes: 123
Registrado: Mar, 19 Nov 2013, 10:32

Re: Evitar que el prota coja el color del fondo

Mensajepor Gocho » Jue, 19 Jun 2014, 21:31

Vale, eso explica porque salí el 2º texto en lugar del 1º y porque me volvía to loca :loco:
Gocho
Mensajes: 123
Registrado: Mar, 19 Nov 2013, 10:32

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

Mensajepor Gocho » Jue, 19 Jun 2014, 22:26

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:

Código: Seleccionar todo

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:

Código: Seleccionar todo

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:
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

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

Mensajepor NeilParsons » Vie, 20 Jun 2014, 00:54

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:
Adjuntos
tiles.PNG
tiles.PNG (3.56 KiB) Visto 4692 veces
Outland-action.zip
(237.9 KiB) Descargado 169 veces
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

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

Mensajepor na_th_an » Vie, 20 Jun 2014, 08:06

Gocho escribió:...


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:

Código: Seleccionar todo

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!
Como diría Rorshach: "Urm..."
Avatar de Usuario
josito
Mensajes: 1030
Registrado: Vie, 09 Ene 2009, 12:57
Ubicación: Ajuenlabrá!
Contactar:

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

Mensajepor josito » Vie, 20 Jun 2014, 08:20

Esos gráficos se salen!!;)

Enviado desde mi GT-I8260 mediante Tapatalk
"Cualquier persona bien investigada, tiene por lo menos diez años de cárcel." (Juan José Millás)
Gocho
Mensajes: 123
Registrado: Mar, 19 Nov 2013, 10:32

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

Mensajepor Gocho » Vie, 20 Jun 2014, 09:03

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.
Gocho
Mensajes: 123
Registrado: Mar, 19 Nov 2013, 10:32

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

Mensajepor Gocho » Vie, 20 Jun 2014, 12:38

¿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.

Código: Seleccionar todo

# 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


Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

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

Mensajepor na_th_an » Vie, 20 Jun 2014, 12:44

No entiendo lo de saturar ¿a qué te refieres? :dalefran: , pero sí que veo algunos errores de sintaxis:

Código: Seleccionar todo

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.

Código: Seleccionar todo


# 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í:

Código: Seleccionar todo

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
Como diría Rorshach: "Urm..."

Volver a “La Churrera”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados