Página 1 de 1

Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Mié, 12 Oct 2016, 18:12
por errecepe
buenas

empecé, junto con la primera parte prácticamente, esta segunda parte, y me he dispuesto también a acabarla.

Tenía una dudilla: sería sencillo modificar el compartamiento de uno sólo de los enemigos, para que use un frame cuando va en una dirección, y otro cuando va en otra, en vez de como ahora hace, que va
continuamente alternando ?

Es para uno de los sprites que uso de los enemigos, que básicamente es un fantasmita, y me gustaría que los 2 frames que dispongo por sprite, me sirva cada uno para usarse cuando se mueve hacia la derecha o izquierda.

gracias,

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Jue, 13 Oct 2016, 10:40
por na_th_an
Todo puede hacerse. ¿Qué versión estás usando? ¿MK1, MK2?

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Jue, 13 Oct 2016, 21:41
por errecepe
MK1.

he estado olisqueando los fuentes de la carpeta \dev pero no soy capaz ni de localizar donde pueda estar lo que busco.
si me orientas, aunque sea en la ubicación de los fuentes (y si no es ensamblador) prometo darle un vistazo!

gracias!

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Vie, 14 Oct 2016, 09:44
por na_th_an
Hace tanto tiempo que no miro esos fuentes que para orientarte tendría que mirar y ya que miro, pues pienso como hacerlo XD

Uf, lo que es mirar código de hace más de tres años. La parte donde se elige el sprite para pintar un enemigo tiene un montón de peste, y es esta, situada en engine.h alrededor de la linea 1836

Código: Seleccionar todo

if (active) {         
   // Animate
   en_an [gpit].count ++;
   if (en_an [gpit].count == 4) {
      en_an [gpit].count = 0;
      en_an [gpit].frame = !en_an [gpit].frame;
      en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];
   }


Aquí se utiliza en_an [gpit].frame como flip-flip, y luego se mira en enem_frames usando la "base_frame" del enemigo sumándole el valor del flip-flop.

Puedes pinchar ahí, por ejemplo. Si tu enemigo especial es, por ejemplo, el número 1, pondrías:

Código: Seleccionar todo

if (active) {         
   // Animate
   if (malotes [enoffsmasi].t == 1) {
      en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + (malotes [enoffsmasi].mx < 0)];
   } else {
      en_an [gpit].count ++;
      if (en_an [gpit].count == 4) {
         en_an [gpit].count = 0;
         en_an [gpit].frame = !en_an [gpit].frame;   
         en_an [gpit].next_frame = enem_frames [en_an [gpit].base_frame + en_an [gpit].frame];         
      }
   }


Si el muñeco se mueve a la izquierda, o sea, la velocidad horizontal es negativa (mx < 0), (malotes [enoffsmasi].mx < 0) valdrá 1, si no valdrá 0. Eso significa que en tu spriteset tendrás que poner primero al muñeco mirando a la derecha y luego a la izquierda. Si lo quieres poner al revés, cambia < por >.

Esto lo he programao así al voleo, a lo mejor no va.

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Sab, 15 Oct 2016, 18:16
por errecepe
funciona!

perfectamente!

gracias!

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Lun, 17 Oct 2016, 09:05
por na_th_an
Pues mira qué bien :D

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Sab, 22 Oct 2016, 01:11
por errecepe
hay algún problema en el siguiente 'cacho' de script, y no consigo verlo... y cada pequeño cambio, me supone tener que perder un rato pasándome el juego (pese a darme ventajas, ciertas partes hay que hacerlas si o si.. y se pierde bastante tiempo) para probar...

Código: Seleccionar todo

ENTERING SCREEN 11
   IF TRUE
   THEN
         #012345678901234567890123456789
      TEXT !!NECESITAS!LOS!28!DIAMANTES!!
      #decoracion
      SET TILE(2,2) = 36
      SET TILE(3,2) = 38
   END
   IF FLAG 1 = 28
   THEN
         #012345678901234567890123456789
      TEXT !!!COLOCA!LOS!28!DIAMANTES!!!!
   END
END


Teniendo en config.h

Código: Seleccionar todo

#define OBJECT_COUNT         1      // Defines which FLAG will be used to store the object count.


porqué pese a entrar en la pantalla 11, con los dichosos 28 diamantes, nunca se cumple el IF ?


gracias!

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Sab, 22 Oct 2016, 23:58
por errecepe

Código: Seleccionar todo

IF OBJECT_COUNT = 28


así funciona ok..

pero aun no se porque no funciona el IF FLAG 1 = 28.. en la primera parte me funcionó (con otro valor más bajo... es la única opción que me queda..)

Re: Proyecto Doctor Adventures 2, Lost in Ishir

Publicado: Lun, 24 Oct 2016, 10:12
por na_th_an
Um - debería funcionar si tienes el #define. Déjame que miro el código, a ver si veo el gazapo.