Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

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
son_link
Mensajes: 467
Registrado: Mar, 01 Oct 2013, 11:49
Ubicación: Atlantis, Galaxia Pegaso
Contactar:

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor son_link » Dom, 12 Ene 2014, 16:37

na_th_an escribió:
TRaFuGa escribió:PD-Para cuando un curso anexo para hacer gráficos churreros?? :P


Para esto, me temo, no hay curso que valga. Para hacer buenos gráficos lo único que hay que hacer es hacer muchos, muchos, muchísimos.

Dímelo a mi, que modifique 5 o 6 veces a Sami, y en nada otra vez con lo del port a NES
LOAD TAPE ERROR
Imagen
TRaFuGa
Mensajes: 20
Registrado: Mar, 29 Oct 2013, 11:50

Mensajepor TRaFuGa » Dom, 12 Ene 2014, 18:55

Habrá que ir trasteando un poco, a ver si en esta semana que estoy de vacas puedo tocar algo.

Enviado desde mi C6903 mediante Tapatalk
Avatar de Usuario
D_Skywalk
Mensajes: 352
Registrado: Mar, 01 Oct 2013, 13:36

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor D_Skywalk » Mar, 14 Ene 2014, 21:10

na_th_an escribió:
TRaFuGa escribió:PD-Para cuando un curso anexo para hacer gráficos churreros?? :P


Para esto, me temo, no hay curso que valga. Para hacer buenos gráficos lo único que hay que hacer es hacer muchos, muchos, muchísimos.


O ser hijo de vahka!

:vahka: :vahka: :vahka: :vahka: :vahka:
David Skywalker
Weblog: http://david.dantoine.org
Avatar de Usuario
Jarlaxe
Mensajes: 212
Registrado: Jue, 09 Ene 2014, 13:44

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor Jarlaxe » Mié, 15 Ene 2014, 15:57

Hola compañeros!

Ha llegado el momento de freíros a preguntas. :twisted:

De antemano ya os pido disculpas si me hago muy pesado, pero es que lo mío es más la parte artística que la de programación. Y en esta última soy un desastre, incluso con una herramienta tan cojonúa como es la churrera. XD

Ojalá fuera tan versátil en las dos áreas, como muchos de los que estáis por aquí!

Como dato, voy a a actualizar el juego a la versión churreril 3.99.3 y trabajaré sobre esta a partir de ahora.

Bueno, vamos al lío con la primera tanda de preguntas...
Yo expongo lo que sería lo que tengo pensado y vosotros me decís si es posible hacerlo o estoy colgao perdío.

1-Texto en pantalla
Mi idéa es repartir por el juego, una serie de letreros que den pistas e información de que hacer durante el juego.
Al entrar el prota en una pantalla que contenga un letrero, que séa capaz de detectar si el sprite toca el tile del dibujo del letrero y mientras estén en contacto, que aparezca un recuado con texto en pantalla.
En el momento que el prota se ponga a andar y deje de estár en contacto con el tile del letrero, el texto desaparezca automáticamente.

Eso para los letreros "estándar", pero hay alguno "especial" como el letrero de la entrada al templo, que aparte de detectar la colisión entre sprite y tile y mostrar el texto, que haga la comprobación de si han sido derrotados todos los magos para abrir la piedra de la entrada. Si esta condición se cumple, que deje de mostrar ese cuadro de texto al colisionar, ya que en ese momento esa info carecería de sentido.

Algo así:

Imagen

Imagen

¿Es posible hacer esto?

En caso afirmativo..

¿Que código debo escribir en el script para que eso se cumpla?

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

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor na_th_an » Mié, 15 Ene 2014, 16:02

Es posible, pero no está incluido en el motor. Pelao, el motor permite mostrar una linea de texto por pantalla, pero solo una linea, como habrás podido ver en juegos como Cadaverion.

Para hacer lo que tú quieres, tenemos una solución: En el lenguaje de scripting hay un comando que se llama EXTERN, y que recibe un número como parámetro. Este comando lo que hace es llamar a una función en código C del motor que, en principio está vacía, y le pasa dicho número.

La idea es que esa función se utilice para ampliar fácilmente el motor. En tu caso, la utilizaríamos para sacar esos textos. De hecho, si te fijas en Ramiro el Vampiro, muestra textos largos en algunas partes de la aventura de forma muy parecida a la que propones, y está hecho exactamente así. Con código externo.

Si quieres, te puedo adaptar un poco la rutina que uso en Ramiro y te explico cómo se integra.
Como diría Rorshach: "Urm..."
Avatar de Usuario
radastan
Mensajes: 692
Registrado: Vie, 20 Ago 2010, 12:54
Contactar:

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor radastan » Mié, 15 Ene 2014, 16:32

na_th_an escribió:Si quieres, te puedo adaptar un poco la rutina que uso en Ramiro y te explico cómo se integra.


Ya estás tardando, porque somos dos los que queremos usar algo así. Yo lo necesito para los diálogos con la gente y para ver letreros también.
Avatar de Usuario
Jarlaxe
Mensajes: 212
Registrado: Jue, 09 Ene 2014, 13:44

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor Jarlaxe » Mié, 15 Ene 2014, 16:35

Hola na_th_an!

Hombre, si te va a suponer mucho curro no te preocupes, hay que saber renunciar.

Tengo muchas cosas pensadas para hacer en el juego, y seguro que no se van a poder más de una, y tampoco cabrán en memoria.

De todas formas, ya sabía yo que.... "no hay cohóne" de que se pueda hacer. :twisted:

uy, he dicho la palábra mágica. :roll:
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor na_th_an » Mié, 15 Ene 2014, 16:47

No, si en realidad hay poco que hacer, ya está hecho. Mirad extern.h en ramiro:

Código: Seleccionar todo

// Extern actions.
// Add code here at your wish.
// Will be run from scripting (EXTERN n)

extern unsigned char cad1[0];
extern unsigned char cad2[0];
extern unsigned char cad3[0];

unsigned char *cads [3] = {cad1, cad2, cad3};
#asm
   ._cad1
      defm " HOLA, QUERIDO RAMIRO! "
      defb 0
      defm " ASI QUE TU HIJA QUERE "
      defb 0
      defm " EL TESORO DEL MORO... "
      defb 0
      defm " PUEDO ABRIR LA CAMARA "
      defb 0
      defm " PERO NECESITO QUE ME  "
      defb 0
      defm " TRAIGAS LAS 4 PARTES  "
      defb 0
      defm " DEL TALISMAN ALEMAN.  "
      defb 0
   
   ._cad2
      defm " OH, CLARO, ES DE DIA  "
      defb 0
      defm " Y EL SOL TE QUEMA...  "
      defb 0
      defm " CON ESTE HECHIZO POS- "
      defb 0
      defm " TIZO QUE TE LANZO,    "
      defb 0
      defm " PODRAS SALIR FUERA... "
      defb 0
      defm " PERO CUIDADO: SOLO TE "
      defb 0
      defm " PROTEJERA UN MINUTO.  "
      defb 0
   
   ._cad3
      defm " BIEN... VEO QUE TIE-  "
      defb 0
      defm " NES LOS CUATRO TROZOS "
      defb 0
      defm " DEL TALISMAN ALEMAN.  "
      defb 0
      defm " AHORA PUEDO HACER EL  "
      defb 0
      defm " ENCANTAMIENTO DEL PI- "
      defb 0
      defm " MIENTO PARA ABRIR LA  "
      defb 0
      defm " CAMARA DEL TESORO.    "
      defb 0
   
#endasm

void draw_rectangle (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char c) {
   unsigned char i, j;
   for (i = y1; i <= y2; i ++)
      for (j = x1; j <= x2; j ++)
         sp_PrintAtInv (i, j, c, 0);   
}

void draw_texts (unsigned char x, unsigned char y, unsigned char c, char *cad, unsigned char n, unsigned char width) {
   while (n > 0) {
      draw_text (x, y, c, cad);
      y ++;      
      cad += width;
      n --;   
      sp_UpdateNow ();
      peta_el_beeper (7 + ((rand () & 1) << 2));
   }   
}

void do_extern_action (unsigned char n) {
   saca_a_todo_el_mundo_de_aqui ();
   draw_rectangle (4, 6, 26, 14, 7);
   draw_texts (4, 7, 7, cads [n - 1], 7, 24);
   espera_activa (500);
}


Cuando tú, en el script del juego, llamas a EXTERN 2, lo que hace el engine es llamar a la función do_extern_action pasándole ese 2. Esa función lo que hace es pintar un recuadro (draw_rectangle), pintar los textos correspondientes, y esperarse un rato.

Para usarlo vosotros, tendríais que definir vuestros textos tal y como se hace ahí, y quizá ajustar el tamaño y color del rectángulo.

Luego hay que habilitar las funciones externas al script desde config.h con esto:

Código: Seleccionar todo

#define ENABLE_EXTERN_CODE         // Enables custom code to be run from the script using EXTERN n


Así, por ejemplo, si hay que examinar un cartel que hay en la pantalla 7 en la posición de tiles (12, 8), el script sería:

Código: Seleccionar todo

PRESS_FIRE AT SCREEN 7
   IF PLAYER_TOUCHES 12, 8
      EXTERN 1
      REENTER
   END
END


O sea, si pulsamos acción en la pantalla 7 y tocamos el tile (12, 8), llamamos a nuestra función externa para mostrar el texto 1 y luego re-entramos en la pantalla para dibujarla de nuevo.
Como diría Rorshach: "Urm..."
Avatar de Usuario
Jarlaxe
Mensajes: 212
Registrado: Jue, 09 Ene 2014, 13:44

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor Jarlaxe » Mié, 15 Ene 2014, 20:43

Hola de nuevo nathan,

El archivo que he encontrado en el source de ramiro tiene este nombre

msc_extern.h

en lugar de

extern.h

Como tu te refieres. ¿He de recombralo, o lo dejo tal cual está?

He activado #define ENABLE_EXTERN_CODE en el config.h

También he puesto la cadena y los valores en el script. En mi caso:

Código: Seleccionar todo

PRESS_FIRE AT SCREEN 7
   IF PLAYER_TOUCHES 12, 8
      EXTERN 1
      REENTER
   END
END


y he dejado el contenido de msc_extern.h tal cual estaba en el Ramiro, solo para probar que aparecía en pantalla.

He compilado el juego, se ejecuta correctamente, pero no reacciona al ponerse mi personaje en las coordenadas que le he asignado a esa pantalla. Ni pulsando el botón de acción. v_v

También es cierto que he asignado una coordenada en un punto del mapa donde no existe tile, (bueno, es el tile de fondo negro) no se si ese es el problema por no tener un tile "real" donde interactuar con el personaje.

Creo que me dejo algo y no se que es.

Bufff que mal me explico leñe...
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Dogmole Tuppowski - Las Nuevas Aventuras (o casi...)

Mensajepor na_th_an » Jue, 16 Ene 2014, 00:29

Ramiro usaba una versión diferente de la Churrera. Ahora el archivo debe ser extern.h. Si abres el que viene por defecto en el paquete verás que sólo contiene una función do_extern_action que no tiene nada dentro. De todos modos, mañana lo miramos con más detalle.
Como diría Rorshach: "Urm..."

Volver a “La Churrera”

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados