Página 13 de 19

Re: Terminare mi juego churrero? ;)

Publicado: Mié, 08 Jul 2015, 20:32
por elborra
Buenas fupinet,

1. La musica en 128K puedes pararla con wyz_stop_sound (); y no, no hay un comando ya definido en el motor de clausulas. Pero como bien dices con meter al principio de ese EXTERN la función que te he puesto lo tendrás perfecto.

2. Como dices hay muchas formas, la más sencilla que se me ocurre es crear un offset y precalcular n (en extern.h y la funcion do_extern_action (unsigned char n) antes de hacer el switch dependiendo del idima; pero incluso antes de esto primero tendrías que decidir donde va a ir la selección de idioma: al principio antes del menu, en el propio menu, durante el juego...
Si necesitas que te diga como hacerlo necesitaría saber que estas "implementando" en el extern. ¿puede ser que las "intros" y los textos exclusivamente?. Si me pasas el extern.h siempre puedo ver facilmente como lo tienes distribuido y ponerte el código que necesitarias. ¿español e inglés? ¿no? ¿o planeas poner más?


$this->bbcode_second_pass_quote('fupinet', 'P')ues la verdad no lo habia pensado muchas gracias por el consejo. Dejaré un intro de 2 imágenes como mucho. O le dare una buena pensada.
dos cosillas..
1) Al final del juego, sale unas letras con el extern disparado desde el script, no pega mucho que la musica del juego siga sonando. He intentado pararla en el mismo sitio desde se ejecuta el extern (que es al matar todos los enemigos) con SOUND_STOP(me lo invento xD) pero no funciona jajajajaj no se si existe un comando en el script para eso :D
2) ya que tengo lo del "language" me he preguntado como puedo poner los textos de extern en el idioma que corresponda. Creo que se puede de varias formas..una poniendo un if que dependiendo del valor de language carge extern_es o extern_en o otra forma supongo que poner todos los extern juntos en un archivo y llamarlos dependiendo del idioma...alguna idea de como hacer esto?

Mucha caña hoy no se como agradecertelo te debo un cafe...que coño unas pocas de cervezas! ajajajaj

Muchas gracias

Re: Terminare mi juego churrero? ;)

Publicado: Jue, 09 Jul 2015, 07:55
por na_th_an
Básicamente eso. La Churrera admite pasar a Extern un valor de 0 a 127. Supongo que la mayoría de esos números los tendrás libres. Puedes ampliar la funcionalidad del script todo lo que necesites, por ejemplo para parar la música con un EXTERN n, con n un número que no estés usando.

Sobre lo otro, el módulo de intro que te pasé tiene definidas X cadenas para el juego. Lo que hicimos en Goku Mal para tener los dos idiomas es poner después las X cadenas de nuevo en el otro idioma. Cuando le pides la cadena "N", dependiendo del idioma, mostrará N o X+N. Si quieres poner más idiomas, tendrás que modificarlo para que al pedir N, muestre N, X+N, 2*X+N, 3*X+N... Si en la variable de idioma le das los valores 0, 1, 2, 3... ya lo tienes hecho y apenas tendrás que modificar, sólo añadir los mismos textos una y otra vez en el mismo orden de forma secuencial, en los distintos idiomas. Sólo poner un menú que asigne a la variable de idioma el valor correcto.

Re: Terminare mi juego churrero? ;)

Publicado: Jue, 09 Jul 2015, 12:58
por fupinet
Holaaa esa gente buena ahi!!!! ...siento mucho si os molesto pero es que os echado de menos!
el codigo que me ha funcionado es este no se si era eso... :cheer: :
$this->bbcode_second_pass_code('', 'void do_extern_action (unsigned char n) {
unsigned char text_offs = 6 * language;
saca_a_todo_el_mundo_de_aqui ();
draw_rectangle (4, BOX_Y, 26, BOX_Y + 1 + *(cads [n - 1]), 32);
draw_texts (4, 7, 32, cads [n - 1 + text_offs], 24);
espera_activa (1000);')

Ahora lo otro me da vergüenza decirlo pero no lo pillo....
he puesto wyz_stop_sound (); en el script asi..
$this->bbcode_second_pass_code('', 'ENTERING ANY
IF ENEMIES_KILLED_EQUALS 24
IF FLAG 4 = 0
THEN
SET FLAG 4 = 1
wyz_stop_sound ();
EXTERN 5
WARP_TO 23, 2, 8
END
END')
y no logicamente no va xD
he probado en poner
$this->bbcode_second_pass_code('', 'ENTERING ANY
IF ENEMIES_KILLED_EQUALS 24
IF FLAG 4 = 0
THEN
SET FLAG 4 = 1
EXTERN 99
EXTERN 5
WARP_TO 23, 2, 8
END
')

extern 99 como me dijiste...poner un numero que no tenga el extern creado y lo que hace es que se para el juego un tiempo y salta el siguiente extern...pero la musica sigue sonando.

Un saludo y gracias!!!

Re: Terminare mi juego churrero? ;)

Publicado: Jue, 09 Jul 2015, 13:30
por na_th_an
Pero en tu función extern tienes que tener código que detecte el 99 y pare el sonido. Si no, el EXTERN 99 no va a hacer nada. Tú ahora tienes esto:

$this->bbcode_second_pass_code('', 'void do_extern_action (unsigned char n) {
saca_a_todo_el_mundo_de_aqui ();
draw_rectangle (4, BOX_Y, 26, BOX_Y + 1 + *(cads [n - 1]), 15);
draw_texts (4, 7, 15, cads [n - 1], 24);
espera_activa (1000);
}')

Ese código lo que hace es mostrar el texto según "n" (ahora mismo te estaría mostrando el texto 99... tienes suerte de que no se te cuelgue :D). Puedes hacer esto:

$this->bbcode_second_pass_code('', 'void do_extern_action (unsigned char n) {
if (n == 99) {
wyz_stop_sound ();
} else {
saca_a_todo_el_mundo_de_aqui ();
draw_rectangle (4, BOX_Y, 26, BOX_Y + 1 + *(cads [n - 1]), 15);
draw_texts (4, 7, 15, cads [n - 1], 24);
espera_activa (1000);
}
}')

Re: Terminare mi juego churrero? ;)

Publicado: Jue, 09 Jul 2015, 16:16
por fupinet
:picha:
terminado gracias a vosotros!
Ahora me toca componer musica ...
na_th_an una pregunta que te hice antes....cuando el personaje salta sobre un espejo hay ahora en la version de 128K un pequeño rebote...es posible dejarlo como estaba en la version de 48k..sin rebote..
GRACIAS !!
Un saludo.

Re: Terminare mi juego churrero? ;)

Publicado: Jue, 09 Jul 2015, 23:39
por na_th_an
Sí, claro, mañana te lo miro. Pero te advierto: el rebote se puso cuando jarlaxe pasó a 128K sus nuevas aventuras de Dogmole. La razón fue que en 48K, al parar el sonido la ejecución (porque es la CPU quien lo genera y no puede hacer nada mientras), quedaba bien... pero en 128K, al no parar el sonido la ejecución, quedaba un poco raro.

De todos modos mañana lo miro y te digo qué quitar.

Re: Terminare mi juego churrero? ;)

Publicado: Vie, 10 Jul 2015, 11:40
por na_th_an
En engine.h, a partir de la linea 1925, tenemos:

$this->bbcode_second_pass_code('', '#ifdef MODE_128K
wyz_play_sound (6);
en_an [gpit].state = GENERAL_DYING;
en_an [gpit].count = 12;
en_an [gpit].next_frame = sprite_17_a;
malotes [enoffsmasi].t |= 16; // Mark as dead
player.killed ++;
player.vy = -256;

#else
en_an [gpit].next_frame = sprite_17_a;
sp_MoveSprAbs (sp_moviles [gpit], spritesClip, en_an [gpit].next_frame - en_an [gpit].current_frame, VIEWPORT_Y + (gpen_cy >> 3), VIEWPORT_X + (gpen_cx >> 3), gpen_cx & 7, gpen_cy & 7);
en_an [gpit].current_frame = en_an [gpit].next_frame;
sp_UpdateNow ();

peta_el_beeper (5);
en_an [gpit].next_frame = sprite_18_a;
malotes [enoffsmasi].t |= 16; // Mark as dead

player.killed ++;
#endif ')

El #ifdef controla qué porción de código se compila al pisar el enemigo, dependiendo del modo 128 o 48K. Para dejarlo como en el modo 48, sólo hay que comentar algunas lineas, así:

$this->bbcode_second_pass_code('', '/*#ifdef MODE_128K
wyz_play_sound (6);
en_an [gpit].state = GENERAL_DYING;
en_an [gpit].count = 12;
en_an [gpit].next_frame = sprite_17_a;
malotes [enoffsmasi].t |= 16; // Mark as dead
player.killed ++;
player.vy = -256;

#else*/
en_an [gpit].next_frame = sprite_17_a;
sp_MoveSprAbs (sp_moviles [gpit], spritesClip, en_an [gpit].next_frame - en_an [gpit].current_frame, VIEWPORT_Y + (gpen_cy >> 3), VIEWPORT_X + (gpen_cx >> 3), gpen_cx & 7, gpen_cy & 7);
en_an [gpit].current_frame = en_an [gpit].next_frame;
sp_UpdateNow ();

peta_el_beeper (5);
en_an [gpit].next_frame = sprite_18_a;
malotes [enoffsmasi].t |= 16; // Mark as dead

player.killed ++;
//#endif ')

El problema es el que te comenté, por eso se puso un comportamiento específico para 128K.

Re: Terminare mi juego churrero? ;)

Publicado: Vie, 10 Jul 2015, 11:41
por na_th_an
También puedes hacer esto, creo que puede ser mejor solución: sólo comentar la linea donde se produce el saltito:

$this->bbcode_second_pass_code('', '#ifdef MODE_128K
wyz_play_sound (6);
en_an [gpit].state = GENERAL_DYING;
en_an [gpit].count = 12;
en_an [gpit].next_frame = sprite_17_a;
malotes [enoffsmasi].t |= 16; // Mark as dead
player.killed ++;
//player.vy = -256;

#else
en_an [gpit].next_frame = sprite_17_a;
sp_MoveSprAbs (sp_moviles [gpit], spritesClip, en_an [gpit].next_frame - en_an [gpit].current_frame, VIEWPORT_Y + (gpen_cy >> 3), VIEWPORT_X + (gpen_cx >> 3), gpen_cx & 7, gpen_cy & 7);
en_an [gpit].current_frame = en_an [gpit].next_frame;
sp_UpdateNow ();

peta_el_beeper (5);
en_an [gpit].next_frame = sprite_18_a;
malotes [enoffsmasi].t |= 16; // Mark as dead

player.killed ++;
#endif ')

Re: Terminare mi juego churrero? ;)

Publicado: Vie, 10 Jul 2015, 22:05
por fupinet
Ok he comentado solo esa linea y he tocao un poco un parametro para que no se vea durante tanto tiempo el sprite de la muerte.
Me gusta mucho el rebote que tenia pero no para este juego. El rebote me recuerda a juegos como el mario bros. aunque un poco mas alto y puede ir rebontando mientras saltas sobre varios enemigos..
Una pregunta por curiosidad....ese mismo rebote no se le puede aplicar a la version de 48k?

Una vez mas Muchas Gracias !!!!!! :picha:

Re: Terminare mi juego churrero? ;)

Publicado: Vie, 10 Jul 2015, 22:07
por fupinet
Ok he comentado solo esa linea y he tocao un poco un parametro para que no se vea durante tanto tiempo el sprite de la muerte.
Me gusta mucho el rebote que tenia pero no para este juego. El rebote me recuerda a juegos como el mario bros. aunque un poco mas alto y puede ir rebotando mientras saltas sobre varios enemigos..
Una pregunta por curiosidad....ese mismo rebote no se le puede aplicar a la version de 48k?

Una vez mas Muchas Gracias !!!!!! :picha: