Mostrar Mensajes

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

Mensajes - nonoroman

226
Preguntas y respuestas / COLOR ENTRE NEGRO Y GRIS
Agosto 24, 2017, 11:44:53 AM
Buenas, otra vez ando por aqui.

El caso es que, estoy buscando un color entre el negro y el gris que tiene por defecto game maker.

Sinceramente, para lo que busco, el negro es muy negro, y el gris es demasiado claro.

Mi pregunta es, podria hacer una combinacion de colores y en vez, de utilizar c_black, utilizar el codigo de color o algo asi??

Bueno si sabeis algo, comentadme please. Thank You.  ;)
227
Preguntas y respuestas / Re:Abrir un URL
Agosto 24, 2017, 11:40:12 AM
Prueba mejor con url_open_ext que utiliza el navegador predeterminado del sistema.

A ver que tal.  ;)
228
Muchas gracias, voy a probarlo a ver si consigo lo que busco.

Gracias.  ;D

Cita de: Zapdos43 en Agosto 23, 2017, 10:20:04 PM
En la función draw_surface_ext() el último valor que debes ingresar es el alpha.
Pero si quieres ajustar el alpha usando draw_set_alpha() entonces sería:

Draw Event:
[gml]draw_set_alpha(valor entre 0 y 1);
draw_set_blend_mode(bm_subtract);
draw_surface(light,view_xview,view_yview);
draw_set_blend_mode(bm_normal);

// alpha = 1
draw_set_alpha(1);
[/gml]
229
Y para rizar el rizo.

Como seria para aplicarlo a un surfaces??

Un surfaces es practicamente un rectangulo que ocupa toda la pantalla, en este caso de color negro, para recrear la oscuridad.

Pero si quiero ajustar el alpha de la surfaces, como seria??

execute code:

//create the surface for the lights to be drawn onto
globalvar light;
light = surface_create(view_wview,view_hview);

global.LINTERNA = 1;

Step Event:

execute code:

//get ready to draw on the lighting surface
surface_set_target(light);

//fill in the lighting dark again
draw_set_color(c_white); //choose different colors here to change the darkness eg: c_white, c_gray
draw_rectangle(0,0,view_wview,view_hview,false);

//put drawing back to normal
surface_reset_target();

Draw Event:

execute code:

draw_set_blend_mode(bm_subtract);
draw_surface(light,view_xview,view_yview);
//draw_surface_ext(light, view_xview, view_yview, 1, 1, 0, c_white, 0.15);
draw_set_blend_mode(bm_normal);

230
claro, al finalizar con alpha 1, hace que a todos los demas no les afecte. Esa es la idea, noo??

Cita de: Zapdos43 en Agosto 23, 2017, 08:59:22 PM
Por ejemplo:

[gml]
draw_set_alpha(0.5);
draw_rectangle(x1,y1,x2,y2,false);
draw_set_alpha(0.7);
draw_rectangle(x1,y1,x2,y2,true);
draw_set_alpha(1);
[/gml]

En un evento Draw la primera linea de código se ejecuta primero, en este caso el alpha se pondrá en 0.5
Luego lee la siguiente línea que nos dibuja un rectángulo con relleno (false) y su alpha será igual a 0.5
Después pongo el alpha en 0.7
La siguiente línea dibujará el contorno del rectángulo (true) con un alpha igual a 0.7
Por último pongo el alpha en 1

En tu código finaliza con:
[gml]
draw_set_alpha(1);
[/gml]
231
Con se deforman que quieres decir, que se pixelan??

Si es esto, es natural que se pixelen, creo que no hay forma humana de hacer zoom y no pixelar, o al menos que yo sepa.

No se, a ver que dicen los demas. Suerte!!!  ;)
232
buenas, estoy dibujando unos triangulos y rectangulos en el draw de un objecto, para dar un efecto de sombra.

Pero al utilizar draw_set_alpha se baja todo el alpha del juego.

Como puedo bajar solo el alpha de los triangulos y rectangulos dibujados solo en el draw de este objecto???

os paso el codigo;

draw_set_colour(c_black);

//if place_meeting(x,y,objectPLAYER)
//{
    draw_triangle(x,y,x+lengthdir_x(1000,point_lt),y+lengthdir_y(1000,point_lt),x+30+lengthdir_x(1000,point_rt),y+lengthdir_y(1000,point_rt),0)
    draw_triangle(x,y,x+30+lengthdir_x(1000,point_rt),y+lengthdir_y(1000,point_rt),x+30,y,0)
    draw_triangle(x,y+30,x+lengthdir_x(1000,point_ld),y+30+lengthdir_y(1000,point_ld),x+30+lengthdir_x(1000,point_rd),y+30+lengthdir_y(1000,point_rd),0)
    draw_triangle(x,y+30,x+30,y+30,x+30+lengthdir_x(1000,point_rd),y+30+lengthdir_y(1000,point_rd),0)
    draw_triangle(x,y+30,x,y,x+lengthdir_x(1000,point_lt),y+lengthdir_y(1000,point_lt),0)
    draw_triangle(x,y+30,x+lengthdir_x(1000,point_ld),y+30+lengthdir_y(1000,point_ld),x+lengthdir_x(1000,point_lt),y+lengthdir_y(1000,point_lt),0)
    draw_triangle(x+30,y+30,x+30,y,x+30+lengthdir_x(1000,point_rd),y+30+lengthdir_y(1000,point_rd),0)
    draw_triangle(x+30,y,x+30+lengthdir_x(1000,point_rt),y+lengthdir_y(1000,point_rt),x+30+lengthdir_x(1000,point_rd),y+30+lengthdir_y(1000,point_rd),0)

draw_rectangle(x,y,x+30,y+30,1);
//}


Es bastante basico, pero ahora no recuerdo como se hacia, pufff, estoy fatal.  ???

233
Preguntas y respuestas / Re:ERROR EN EL SCRIPT
Agosto 23, 2017, 08:12:35 PM
Efectivamente parece que era lo que decia Zapdos43

Pero aun asi, me da error, porque ya tengo el motor del juego desarrollado y me va costar mucho meterlo ahora en el codigo.

Voy a utilizar otro metodo que creo que me puede valer.

;)
234
Preguntas y respuestas / Re:ERROR EN EL SCRIPT
Agosto 22, 2017, 08:10:40 PM
Y el surface a que profundidad esta?? a la que el objecto que lo crea??

Cita de: Zapdos43 en Agosto 22, 2017, 08:00:16 PM
Puedes probar por usar la variable depth:

En el create event de cada objeto puedes declarar el depth:
[gml]
depth = -100;
[/gml]

También puedes escribirlo en un evento Step pero creo que un evento create es suficiente.
No te aseguro que funcione pero puedes probarlo.
235
Preguntas y respuestas / Re:ERROR EN EL SCRIPT
Agosto 22, 2017, 07:55:02 PM
ok, muchas gracias. la verdad es que sabia esto de la profundiad, pero a veces me lio, pero que se ejecutaba por orden de profundidad si que no lo sabia.

Te comento, en la habitacion nueva, si que funciona, pero cuando lo pongo con el player y todo lo demas, falla tio.

Y en teoria esta todo bien!!!  :'(

Cita de: Zapdos43 en Agosto 22, 2017, 07:46:56 PM
Al revés, GM entiende que:
más negativo = capa superior
más positivo = capa inferior
XD
236
Preguntas y respuestas / Re:ERROR EN EL SCRIPT
Agosto 22, 2017, 07:40:41 PM
Hostias, pues no sabia esto, que habia una prioridad de ejecucion dependiendo de la profundidad.

Entonces, profundos, te refieres que estan mas abajo, y superiores mas a la vista. Noo??

es decir, mas abajo son negativos y mas arriba positivos.

Cita de: Zapdos43 en Agosto 22, 2017, 07:34:18 PM
Te lo explico a mi manera porque no soy un técnico.  :D

Los objetos en la capa más profunda se ejecutan primero y los objetos en la capa superior son los últimos en ejecutar su código.

En tu caso, el objeto control necesita leer el array que se crea en otros objetos. Entonces, primero debe ejecutarse el array y luego leer el array. De lo contrario, si primero lee el array que no ha sido creado entonces dará error.

Asegúrate de poner al objeto wall una profundidad de más positiva que la del objeto control. Puedes usar los números que quieras.
237
Preguntas y respuestas / Re:ERROR EN EL SCRIPT
Agosto 22, 2017, 07:17:32 PM
Bueno Zapdos, te explico lo que he hecho y lo que ha pasado.

Y creado una habitacion nueva, con solo los 3 objetos a tratar, para descartar otros problemas.

entonces, funcionaba perfecto, con un depth de -1. al cambiarlo a -100, ha salido el error, y al volver a ponerlo a -1, ahora sigue fallando.

Y a 1, vuelve a funcionar, pero claro, el surface esta por debajo de algunas cosas, asi que no entiendo porque si pongo el depht en negativo, este deja de funcionar el array.  :P

Asi que no entiendo nada, que tiene que ver el array con la profundida. Me lo explicas please???

Cita de: Zapdos43 en Agosto 22, 2017, 01:17:22 PM
Prueba a poner en el objeto control un depth de -100. Abre las propiedades del objeto Control para cambiar el Depth.
¿ te ha funcionado ?
238
No esta mal, sigue asi!!!!  ;D
239
Preguntas y respuestas / ERROR EN EL SCRIPT
Agosto 22, 2017, 01:02:18 PM
Bueno, estoy intentando aplicar unas lights y shawdors, pero en el scripts me sale este error a la hora de cargar el juego, por lo visto dice que no existe dicho array, pero el array claro que existe en el objecto. Bueno os paso las lineas por si dais con el error.

ERROR;

FATAL ERROR in
action number 1
of Create Event
for object obj_control:

trying to index a variable which is not an array
at gml_Script_light_update (line 11) -   minx = px[0];
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_light_update (line 11)
called from - gml_Object_obj_control_CreateEvent_1 (line 9) -   light_update();


SCRIPT;

var xp, yp, lw, lh, imin, imax, i, pdmin, pdmax, minx, miny, maxx, maxy, a_min, a_max, a_test;

lw = sprite_width;
lh = sprite_height;

surface_set_target(sur);
draw_clear(c_black);
draw_sprite_ext(sprite_index, image_index, lw / 2, lh / 2, image_xscale, image_yscale, image_angle, c_white, 1);   

with (obj_wall_2) {
  minx = px[0];
  miny = py[0];
  maxx = px[0];
  maxy = py[0];
 
  imin = -1;
  imax = -1;
  a_test = point_direction(other.x, other.y, x, y);
  a_min = -1;
  a_max = -1;
 
  for (i = 0; i < points; i++) {
    if (px[i] < minx)
      minx = px[i];
    if (px[i] > maxx)
      maxx = px[i];
    if (py[i] < miny)
      miny = py[i];
    if (py[i] > maxy)
      maxy = py[i];
     
    pdmin = (point_direction(other.x, other.y, x + px[i], y + py[i]) - a_test + 360) mod 360;
    pdmax = (a_test - point_direction(other.x, other.y, x + px[i], y + py[i]) + 360) mod 360;
    if (pdmin > a_min && pdmin <= 180) {
      a_min = pdmin;
      imin = i;
    }
    if (pdmax > a_max && pdmax <= 180) {
      a_max = pdmax;
      imax = i;
    }
  }
 
  if (rectangle_in_rectangle(x + minx, y + miny, x + maxx, y + maxy, other.x - lw / 2, other.y - lh / 2, other.x + lw / 2, other.y + lw / 2)) {   
    i = imin;
    draw_primitive_begin(pr_trianglestrip);
    do {
      pd = point_direction(other.x, other.y, x + px[i], y + py[i]);
      draw_vertex_color(x + px[i] - other.x + other.sprite_width / 2, y + py[i] - other.y + other.sprite_height / 2, c_black, 1);
      draw_vertex_color(x + px[i] + lengthdir_x(height, pd) - other.x + other.sprite_width / 2, y + py[i] + lengthdir_y(height, pd) - other.y + other.sprite_height / 2, c_black, 1 - fade);
      i += 1;
      i = i mod points;
    } until (i == (imax + 1) mod points)
    draw_primitive_end();
  }
}

surface_reset_target();


OBJECT CONTROL;

Create Event:

execute code:

// MUST HAVE: Create a surface for drawing all the lights
sur = surface_create(room_width, room_height);

// Create a light
m = instance_create(0, 0, obj_light_2);
with (m) {
  light_change_scale(3, 3);
  // Update the light, so it's surface is drawn correctly
  light_update();
}



OBJECT WALL;

Create Event:

execute code:

// How far to draw the shadow
height = 2048;
// Fade the shadow
fade = false;


// Define the points of the shadow caster
points = 4;

px[0] = lengthdir_x(sprite_xoffset, image_angle + 180) + lengthdir_x(sprite_yoffset, image_angle + 90);
py[0] = lengthdir_y(sprite_xoffset, image_angle + 180) + lengthdir_y(sprite_yoffset, image_angle + 90);

px[1] = lengthdir_x(sprite_width - sprite_xoffset, image_angle) + lengthdir_x(sprite_yoffset, image_angle + 90);
py[1] = lengthdir_y(sprite_width - sprite_xoffset, image_angle) + lengthdir_y(sprite_yoffset, image_angle + 90);

px[2] = lengthdir_x(sprite_width - sprite_xoffset, image_angle) + lengthdir_x(sprite_height - sprite_yoffset, image_angle - 90);
py[2] = lengthdir_y(sprite_width - sprite_xoffset, image_angle) + lengthdir_y(sprite_height - sprite_yoffset, image_angle - 90);

px[3] = lengthdir_x(sprite_xoffset, image_angle + 180) + lengthdir_x(sprite_height - sprite_yoffset, image_angle - 90);
py[3] = lengthdir_y(sprite_xoffset, image_angle + 180) + lengthdir_y(sprite_height - sprite_yoffset, image_angle - 90);




Bueno si alguien sabe donde esta el error que comente, porque a mi ya se me escapa.  ???
240
Muchas gracias por contestar. Perp eso mismo es lo que tengo hecho y se produce salto.
Porque desde que se asigna el sprite_index (que comienza en image 0) hasta que la siguiente orden es asignar image_index 1. Pasa un milisegundo y es donde se ve un pequeno salto cuando cambia de la image 0 a la image 1.

Ese es el problema.

A ver como lo resuelvo.

Cita de: Clamud en Agosto 16, 2017, 07:20:51 PM
Puedes usar una variable que indique el estado y asignar el sprite solo cuando ocurre la condición que cambia el estado
[gml]
// Evento Step

if( estado == 1 ) //modo vigilancia
{
   // codigo de vigilancia ...
   
   if( condicion_para_cambiar_a_alerta )
   {
      estado = 2; //alerta
      sprite_index = spr_alerta;
      image_index = 0;
      image_speed = 0;
   }
}

if( estado == 2 ) //modo alerta
{
   // codigo de alerta ...
   
   if( condicion_para_cambiar_a_vigilancia )
   {
      estado = 1; //vigilancia
      sprite_index = spr_vigilancia;
      image_index = 1;
      image_speed = 0.2;
   }
}
[/gml]