Página 3 de 26

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

Publicado: Dom, 12 Ene 2014, 16:37
por son_link
$this->bbcode_second_pass_quote('na_th_an', '')$this->bbcode_second_pass_quote('TRaFuGa', 'P')D-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

Publicado: Dom, 12 Ene 2014, 18:55
por TRaFuGa
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

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

Publicado: Mar, 14 Ene 2014, 21:10
por D_Skywalk
$this->bbcode_second_pass_quote('na_th_an', '')$this->bbcode_second_pass_quote('TRaFuGa', 'P')D-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:

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

Publicado: Mié, 15 Ene 2014, 15:57
por Jarlaxe
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í:

Image

Image

¿Es posible hacer esto?

En caso afirmativo..

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

Gracias!

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

Publicado: Mié, 15 Ene 2014, 16:02
por na_th_an
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.

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

Publicado: Mié, 15 Ene 2014, 16:32
por radastan
$this->bbcode_second_pass_quote('na_th_an', 'S')i 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.

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

Publicado: Mié, 15 Ene 2014, 16:35
por Jarlaxe
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:

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

Publicado: Mié, 15 Ene 2014, 16:47
por na_th_an
No, si en realidad hay poco que hacer, ya está hecho. Mirad extern.h en ramiro:

$this->bbcode_second_pass_code('', '// 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:

$this->bbcode_second_pass_code('', '#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:

$this->bbcode_second_pass_code('', '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.

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

Publicado: Mié, 15 Ene 2014, 20:43
por Jarlaxe
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:

$this->bbcode_second_pass_code('', '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...

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

Publicado: Jue, 16 Ene 2014, 00:29
por na_th_an
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.