Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - NiuWeb

Páginas: 1 2 3 ... 9
4
Intercambio / MOVIDO: Canal de tutoriales en Youtube
« en: Abril 28, 2019, 10:21:38 pm »

15
Desarrollo de Scripts / Invetir componentes de un color
« en: Noviembre 17, 2018, 07:37:03 pm »
Autor: NiuWeb.
Versión de GM: Studio 1.4.9999.
Descripción: Invierte los componentes de un color representado como número entero. Es decir, el componente rojo pasará a ser azul, y viceversa.

Resulta que en la versión 1.4.9999 las funciones effect_create_below() y effect_create_above() tienen un error que les hace interpretar los colores al revés.

Es decir, este código de aquí:
effect_create_above(ef_firework, 128, 128, 0, c_orange);
effect_create_below(ef_firework, 256, 128, 0, c_teal);

effect_create_above(ef_firework, 128, 256, 0, c_blue);
effect_create_below(ef_firework, 256, 256, 0, c_red);
Muestra en pantalla esta locura:


Código: El problema se puede solucionar con este código.
///color_rgb_fix(color);
//Invierte los componentes del color dado

//Obtener componentes iniciales
var red   = argument0 & 255;
var green = (argument0 >> 8) & 255;
var blue  = argument0 >> 16;

//Rehacer el color
return (red << 16) | (green << 8) | (blue);

Ejemplo:
Esta sería la versión corregida de las constantes de color, para usar con estas funciones:
aqua    = color_rgb_fix(c_aqua);
black   = color_rgb_fix(c_black);
blue    = color_rgb_fix(c_blue);
dkgray  = color_rgb_fix(c_dkgray);
fuchsia = color_rgb_fix(c_fuchsia);
gray    = color_rgb_fix(c_gray);
green   = color_rgb_fix(c_green);
lime    = color_rgb_fix(c_lime);
ltgray  = color_rgb_fix(c_ltgray);
maroon  = color_rgb_fix(c_maroon);
navy    = color_rgb_fix(c_navy);
olive   = color_rgb_fix(c_olive);
orange  = color_rgb_fix(c_orange);
purple  = color_rgb_fix(c_purple);
red     = color_rgb_fix(c_red);
silver  = color_rgb_fix(c_silver);
teal    = color_rgb_fix(c_teal);
white   = color_rgb_fix(c_white);
yellow  = color_rgb_fix(c_yellow);
Y así, cuando necesitemos usar constantes de color en las funciones de efectos, no usaríamos c_yellow sino yellow, por ejemplo.

Así que, el código que puse al principiose corregiría de esta forma:
effect_create_above(ef_firework, 128, 128, 0, orange);
effect_create_below(ef_firework, 256, 128, 0, teal);

effect_create_above(ef_firework, 128, 256, 0, blue);
effect_create_below(ef_firework, 256, 256, 0, red);
Y en pantalla:


Páginas: 1 2 3 ... 9