Autor Tema: Es posible volver a colorear un map a transparente) (16bits/pixtudio)  (Leído 259 veces)

logotytye

  • Newbie
  • *
  • Mensajes: 18
  • Karma: 0
GRAFICOS DE 16 BITS / PIXTUDIO. En una parte del juego que estoy haciendo tengo que hacerle un "hueco al piso" al scroll y poder ver a través de este hueco el background del scroll, ese que se mueve atrás lentamente, el mapa visible lo creo con new_map y le pintando con tiles con la funcion map_xputnp, pero he intentado volver a colocar otra vez el color transparente y no he podido actualizarlo, pareciera queme aceptara solo colores sólidos. como es posible volver a pintar una zona de un gran mapa de nuevo con color transparente (como si se hubiera creado el mapa vacio)?

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12819
  • Karma: 376
Re:Es posible volver a colorear un map a transparente) (16bits/pixtudio)
« Respuesta #1 en: Abril 12, 2019, 05:56:18 pm »
comparti el codigo de ejemplo... pero llenando con 0 deberia hacer transparente el color...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

logotytye

  • Newbie
  • *
  • Mensajes: 18
  • Karma: 0
Re:Es posible volver a colorear un map a transparente) (16bits/pixtudio)
« Respuesta #2 en: Abril 12, 2019, 11:14:22 pm »
Gracias Splinter, rellené con 0 pixel a pixel usando map_put_pixel() con ultimo parámetro de 0. como comentaste y funcionó, se vuelve  a ver el background, lo que no entiendo es por que al intentar obtener el número del color de esa región recién parcheada me retorna: 65024  y no 0?? (parece que el número cambia según el color del que estaba pintado el pedazo que se cambió, para rgb(0, 255, 0) da este numero y para  rgb(255, 255, 0) da 16711168)  al parchear el mapa de durezas también me retorna ese número por lo tanto según la programación del juego cualquier cosa que no sea 0 es un muro.

Este es el pedazo que parchea para que se pueda ver el fondo, el anchocasilla y altocasilla es de 32, casillax y casillay es la ubicacion del tile, por eso se hace la conversion a coordenadas de pixel dentro de la funcion map_put_pixel.

for(i=0; i<anchocasilla; i++)
         for(j=0; j<altocasilla; j++)
            map_put_pixel(0, map, (casillax*anchocasilla-anchocasilla)+i, (casillay*altocasilla-altocasilla)+j, 0);     //grafico visible
            map_put_pixel(0, mapd, (casillax*anchocasilla-anchocasilla)+i, (casillay*altocasilla-altocasilla)+j, 0);   //grafico de durezas
         end
      end
      say("mapgetpixel: "+map_get_pixel(0, map, (casillax*anchocasilla-anchocasilla)+15, (casillay*altocasilla-altocasilla)+16));  //me ubico en el medio del pedazo parchado (hueco para ver el fondo) y me retorna 65024


inicialmente lo que estaba intentando era rellenar con un mapa recién creado y "en blanco" usando la funcion map_xput() pero de esta forma por lo visto no era el método correcto para esto.
« última modificación: Abril 13, 2019, 12:26:13 am por logotytye »

logotytye

  • Newbie
  • *
  • Mensajes: 18
  • Karma: 0
Re:Es posible volver a colorear un map a transparente) (16bits/pixtudio)
« Respuesta #3 en: Abril 13, 2019, 01:35:38 am »
He encontrado la solución, primero pinto ambos mapas el de durezas y el visible con rgb y luego con el simple 0, así finalmente me retorna el 0 (notese el último parametro de map_put_pixel.

map_put_pixel(0, map, (casillax*anchocasilla-anchocasilla)+i, (casillay*altocasilla-altocasilla)+j, rgb(0,0,0));
map_put_pixel(0, mapd, (casillax*anchocasilla-anchocasilla)+i, (casillay*altocasilla-altocasilla)+j, rgb(0,0,0));
map_put_pixel(0, map, (casillax*anchocasilla-anchocasilla)+i, (casillay*altocasilla-altocasilla)+j, 0);
map_put_pixel(0, mapd, (casillax*anchocasilla-anchocasilla)+i, (casillay*altocasilla-altocasilla)+j, 0);

Aún así me quedo la duda de por que no retornaba 0 al colocar directamente el 0 si no, otros números.

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 336
  • Karma: 12
    • 5Leaps
Re:Es posible volver a colorear un map a transparente) (16bits/pixtudio)
« Respuesta #4 en: Abril 16, 2019, 06:29:37 pm »
Creo que te pasó algo similar a mi: https://forum.bennugd.org/index.php/topic,4641.0.html
Aun que el tema inicial no es el mismo, si te fijas lo que pretendo hacer es un circulo con una sección transparente y baja el rendimiento según como lo hagas. La respuestá la da Splinter un poco más abajo.

logotytye

  • Newbie
  • *
  • Mensajes: 18
  • Karma: 0
Re:Es posible volver a colorear un map a transparente) (16bits/pixtudio)
« Respuesta #5 en: Abril 17, 2019, 04:29:13 pm »
Creo que te pasó algo similar a mi: https://forum.bennugd.org/index.php/topic,4641.0.html
Aun que el tema inicial no es el mismo, si te fijas lo que pretendo hacer es un circulo con una sección transparente y baja el rendimiento según como lo hagas. La respuestá la da Splinter un poco más abajo.

Así es, estoy seguro que lei tu tema hace un tiempo, y por lo visto es el mismo funcionamiento interno y por eso hay que aplicar dos funciones para obtener el resultado, quizás se pueda documentar como una nota de cada función a la que afecte esto en la wiki, ya que varias personas nos quedamos un par de días por lo menos tratando de resolver el misterio.