Página 2 de 2

Re: Cambiar color icono de objeto

Publicado: Vie, 15 Nov 2013, 14:05
por son_link
$this->bbcode_second_pass_quote('na_th_an', '')$this->bbcode_second_pass_quote('son_link', 'c')uando cojo un huevo también pone que tengo una llave


Vaya por dios, esto fue un bug de lanzamiento de la 3.99.1 que corregimos un par de días después ¿no actualizaste? Envíame tu /dev y te lo corrijo, es cambiar una linea de sitio.

Ahora mismo, si se define ONLY_ONE_OBJECT, lo que se hace es pintar el tile del objeto con FLASH parpadeante. Si quieres que en lugar de ocurrir esto se pinte otro objeto del tileset, el cambio es muy sencillo. Pásame tu /dev, te arreglo el bug, te hago el cambio, y te explico qué he hecho.

Pues que raro, creo que actualice a la 3.99.2 ...
Aquí tienes mi dev

Re: Cambiar color icono de objeto

Publicado: Vie, 15 Nov 2013, 14:39
por D_Skywalk
Hay una parte de la pantalla que los atributos (22528 ó 0x5800h), cada posición es un char, con la chuletilla que nos pasó nathan cambias los colores y listo. Como esa zona sólo se actualiza con llamadas directas (no por personajes o animaciones) es una buena forma de activar el marcador.

Yo lo que hice para Justin (lo tienes en el extern.h - lo que es el no saber) es pintar directamente el tile en la posición que necesitaba con la llamada de draw_coloured_tile, no se en tu juego que sería más sencillo, quizás sea pintarlo también encima :)

Venga ánimo! :cheer:

Re: Cambiar color icono de objeto

Publicado: Lun, 18 Nov 2013, 08:49
por na_th_an
Bueno, arreglado el bug. No tenías la 3.99.2, o al menos no totalmente. El bug era un break mal puesto en mainloop.h.

Para corregir el bug tienes que buscar esto en mainloop.h, a partir de la linea 406 (verás que el break final lo tienes diferente a esto, ponlo como este):

$this->bbcode_second_pass_code('', '#ifdef ONLY_ONE_OBJECT
if (player.objs == 0) {
player.objs ++;
peta_el_beeper (9);
} else {
peta_el_beeper (4);
draw_coloured_tile (VIEWPORT_X + (hotspot_x >> 3), VIEWPORT_Y + (hotspot_y >> 3), 17);
gpit = 1;
}
#else
player.objs ++;
peta_el_beeper (9);

#endif
break;
#endif')

Y para lo que tú querías tienes que modificar este trozo de código, a partir de la linea 110 de printer.h:

$this->bbcode_second_pass_code('', '#ifndef DEACTIVATE_OBJECTS
void draw_objs () {
#if defined(ONLY_ONE_OBJECT) && defined(ACTIVATE_SCRIPTING)
if (player.objs) {
sp_PrintAtInv (OBJECTS_ICON_Y, OBJECTS_ICON_X, 135, 132);
sp_PrintAtInv (OBJECTS_ICON_Y, OBJECTS_ICON_X + 1, 135, 133);
sp_PrintAtInv (OBJECTS_ICON_Y + 1, OBJECTS_ICON_X, 135, 134);
sp_PrintAtInv (OBJECTS_ICON_Y + 1, OBJECTS_ICON_X + 1, 135, 135);
} else {
draw_coloured_tile (OBJECTS_ICON_X, OBJECTS_ICON_Y, 17);
}
print_number2 (OBJECTS_X, OBJECTS_Y, flags [OBJECT_COUNT]);
#else
print_number2 (OBJECTS_X, OBJECTS_Y, player.objs);
#endif
}
#endif')

Ahí verás cuatro llamadas a sp_PrintAtInv. Estas llamadas pintan cada uno de los cuatro caracteres del icono de objeto (132, 133, 134 y 135) usando el atributo 135 (que es INK 7, FLASH 1; 135 = 7 + 8*0 + 64*0 + 128*1) en la posición del objeto en el marcador (OBJECTS_ICON_X y OBJECTS_ICON_Y). Eso es lo que tendrías que cambiar. Puedes sustituir los cuatro por un draw_coloured_tile (OBJECTS_ICON_X, OBJECTS_ICON_Y, t); donde "t" es el número de tile.

Cuando el jugador coge el objeto, se "marca" en el marcador con ese código. Luego, en el scripting, habría que detectar "lo que fuera" (en Dogmole, por ejemplo, se trata de poner los objetos en un sitio, por lo que en el scripting se detecta que estemos en ese sitio) para decrementar el contador de objetos y dejarlo a cero, con lo que el marcador se restauraría. En Dogmole, además, se incrementa una flag que es la que controla cuantos objetos hemos cogido y posteriormente depositado.

No tengo muy claro qué quieres hacer, por eso no te lo he modificado yo. Descríbeme cuál sería la dinámica del juego para con los objetos y te digo.

Re: Cambiar color icono de objeto

Publicado: Lun, 18 Nov 2013, 11:21
por son_link
Es similar a dogmole, o sea, ir recogiendo los objetos (en este caso los huevos) y depositarlos en la incubadora, y cuando estén todos ir hasta la zona del mapa donde se encuentra la sala de mandos para terminar el juego

Re: Cambiar color icono de objeto

Publicado: Lun, 18 Nov 2013, 11:40
por na_th_an
Pues entonces perfecto. ¿Qué quieres exactamente que pase con el marcador? ¿Te vale sustituir el gráfico con otro tile? ¿O prefieres cambiarlo de color?

Re: Cambiar color icono de objeto

Publicado: Vie, 22 Nov 2013, 16:09
por son_link
$this->bbcode_second_pass_quote('na_th_an', 'P')ues entonces perfecto. ¿Qué quieres exactamente que pase con el marcador? ¿Te vale sustituir el gráfico con otro tile? ¿O prefieres cambiarlo de color?

Pues ya lo tengo, pero son 2 tiles, ya que también he añadido uno cuando no hay ninguno.
Y ya de paso preguntar ¿por que el fondo de la fuente se ve gris cuando le puse el color verde, justo para que pegue con la zona donde esta?