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 - fab62

76
hola comunidad, he tenido muchas dudas de como checar un objeto en un juego de carreras, ya que estos utilizan por ej: primer lugar, segundo lugar, ... , etc. pues he querido intentarlo hacerlo con un solo objeto "jugador", y asignarle un numero, hice un codigo, pero lo borr? porque al final no me serv?a. ?C?mo podr?a checar un objeto jugador que est? en un punto x mayor que el objeto jugador que se encuentra mas atras?

hay un objeto que tiene como nombre "obj_controlador" en donde hay una variable "global.primero", que segun mi codigo anterior era solo el objeto "jugador" que tiene el numero asignado como 1.

he dejado el archivo adjunto, gracias :D
77
Preguntas y respuestas / problema con puertas
Julio 14, 2010, 01:28:40 AM
hola makeros, tengo un problema que no se me ocurre como arreglarlo... se trata de una puerta al estilo megaman de Nes, que cuando el personaje llegue a ella se abra de abajo hacia arriba, y cuando pase de ella esta se cierre de arriba hacia abajo, lo estoy tratando de hacer con un solo objeto de 16x16, y todav?a no lo puedo solucionar  :-[. hasta ahora solo lo que llevo es que megaman al tocar la puerta se destruya y nada mas...

los codigos de la puerta son:

Evento Create:
touched = 0;
jumpx = 1


Evento Alarma 0: (aca es cuando se abre)
sound_play(sound_door)
solid = false;
visible = false;
alarm[1] = 60


Evento Alarma 1: (aca es cuando se cierra)
sound_play(sound_door)
solid = true;
visible = true;
touched = 0;
x += sprite_width*jumpx


Evento Step:
if instance_exists(obj_player)
{
if obj_player.x < x
{jumpx = -1}
if obj_player.x > x+sprite_width
{jumpx = 1}
}


Evento de colision con el objeto jugador:
if touched = 0
{
touched = 1;
alarm[0] = 1
}
gracias por leer...
78
Preguntas y respuestas / problema con surfaces
Junio 10, 2010, 03:56:30 AM
hola, hace poco he analizado un script que trata de reemplazar un color RGB por otro, en un sprite y he preguntado en el foro... pero ahora pude colocarlo en el gm8, funciona ahora, pero el surface se ve un poco mas ancho que el sprite y hace que el sprite se vea muy mal.

en la forma en que el script funciona en gm7 el sprite se ve bien pero en gm8 se ve mal talvez por mi adaptacion que hice en el codigo.

el codigo de gm7 es asi
{
    var sprite,oldc,newc;
    sprite = argument0;
    oldc  = argument1;
    newc  = argument2;

    var w,h,n,p,s,l,xo,yo,surf,i,tempsprite,newsprite,alphasprite;
    w  = sprite_get_width(sprite);
    h  = sprite_get_height(sprite);
    n  = sprite_get_number(sprite);
    p  = sprite_get_precise(sprite);
    s  = sprite_get_smooth(sprite);
    l  = sprite_get_preload(sprite);
    xo = sprite_get_xoffset(sprite);
    yo = sprite_get_yoffset(sprite);

    surf = surface_create(w,h+1);
    if (surf < 0) return -1;
    surface_set_target(surf);

    for (i=0; i<n; i+=1) {
        draw_clear_alpha(c_black,1);
        draw_set_blend_mode_ext(bm_inv_dest_color,bm_one);
        draw_sprite(sprite,i,xo,yo);
        draw_set_blend_mode(bm_normal);
        draw_point_color(0,h,oldc);
        tempsprite = sprite_create_from_surface(surf,0,0,w,h+1,p,true,s,l,xo,yo);
        draw_clear_alpha(newc,1);
        draw_sprite(tempsprite,0,xo,yo);
        sprite_delete(tempsprite);
        if (i == 0) {
            newsprite = sprite_create_from_surface(surf,0,0,w,h,p,0,s,l,xo,yo);
            if (newsprite < 0) {
                surface_free(surf);
                return -1;
            }
        }else{
            sprite_add_from_surface(newsprite,surf,0,0,w,h);
        }
        draw_clear_alpha(c_white,1);
        draw_set_blend_mode_ext(bm_zero,bm_src_alpha);
        draw_sprite(sprite,i,xo,yo);
        if (i == 0) {
            alphasprite = sprite_create_from_surface(surf,0,0,w,h,p,0,s,l,xo,yo);
            if (alphasprite < 0) {
                sprite_delete(newsprite);
                surface_free(surf);
                return -1;
            }
        }else{
            sprite_add_from_surface(alphasprite,surf,0,0,w,h);
        }
        draw_set_blend_mode(bm_normal);
    }

    surface_reset_target();
    sprite_assign(sprite,newsprite);
    sprite_set_alpha_from_sprite(sprite,alphasprite);
    sprite_delete(newsprite);
    sprite_delete(alphasprite);
    surface_free(surf);
}


y en el gm8 lo edit? y es
{
    var sprite,oldc,newc;
    sprite = argument0;
    oldc  = argument1;
    newc  = argument2;

    var w,h,n,p,s,xo,yo,surf,i,tempsprite,newsprite,alphasprite;
    w  = sprite_get_width(sprite);
    h  = sprite_get_height(sprite);
    n  = sprite_get_number(sprite);
    p  = 1;
    s  = 0;
    xo = sprite_get_xoffset(sprite);
    yo = sprite_get_yoffset(sprite);

    surf = surface_create(w,h+1);
    if (surf < 0) return -1;
    surface_set_target(surf);

    for (i=0; i<n; i+=1) {
        draw_clear_alpha(c_black,1);
        draw_set_blend_mode_ext(bm_inv_dest_color,bm_one);
        draw_sprite(sprite,i,xo,yo);
        draw_set_blend_mode(bm_normal);
        draw_point_color(0,h,oldc);
        tempsprite = sprite_create_from_surface(surf,0,0,w,h+1,p,s,xo,yo);
        draw_clear_alpha(newc,1);
        draw_sprite(tempsprite,0,xo,yo);
        sprite_delete(tempsprite);
        if (i == 0) {
            newsprite = sprite_create_from_surface(surf,0,0,w,h,p,s,xo,yo);
            if (newsprite < 0) {
                surface_free(surf);
                return -1;
            }
        }else{
            sprite_add_from_surface(newsprite,surf,0,0,w,h,p,s);
        }
        draw_clear_alpha(c_white,1);
        draw_set_blend_mode_ext(bm_zero,bm_src_alpha);
        draw_sprite(sprite,i,xo,yo);
        if (i == 0) {
            alphasprite = sprite_create_from_surface(surf,0,0,w,h,p,s,xo,yo);
            if (alphasprite < 0) {
                sprite_delete(newsprite);
                surface_free(surf);
                return -1;
            }
        }else{
            sprite_add_from_surface(alphasprite,surf,0,0,w,h,p,s);
        }
        draw_set_blend_mode(bm_normal);
    }

    surface_reset_target();
    sprite_assign(sprite,newsprite);
    sprite_set_alpha_from_sprite(sprite,alphasprite);
    sprite_delete(newsprite);
    sprite_delete(alphasprite);
    surface_free(surf);
}


las diferencias son notables, habr? alguna forma de hacer que el surface que se dibuja en el reemplazo de color sea menos ancho?

79
hola makeros!!! tengo un grave problema con un script que encontre en internet, el script se llama sprite_replace_color(sprite,oldcolor,newcolor)

en donde oldcolor es el color que se quiere reemplazar y newcolor es el color que sustituye a oldcolor...

yo por lo menos lo uso con los colores de la funcion "make_color_rgb(r,g,b)"
en el argumento de oldcolor y newcolor...

pero en el gm8 no sirve este codigo, solo sirve en el gm7. como se podra editar este script para que funcione en gm8?

por favor es que lo que mas me cuesta en los codigos se trata de estas funciones de dibujo... les dejo el script:

{
   var sprite,oldc,newc;
   sprite = argument0;
   oldc  = argument1;
   newc  = argument2;

   var w,h,n,p,s,l,xo,yo,surf,i,tempsprite,newsprite,alphasprite;
   w  = sprite_get_width(sprite);
   h  = sprite_get_height(sprite);
   n  = sprite_get_number(sprite);
   p  = sprite_get_precise(sprite);
   s  = sprite_get_smooth(sprite);
   l  = sprite_get_preload(sprite);
   xo = sprite_get_xoffset(sprite);
   yo = sprite_get_yoffset(sprite);

   surf = surface_create(w,h+1);
   if (surf < 0) return -1;
   surface_set_target(surf);

   for (i=0; i<n; i+=1) {
       draw_clear_alpha(c_black,1);
       draw_set_blend_mode_ext(bm_inv_dest_color,bm_one);
       draw_sprite(sprite,i,xo,yo);
       draw_set_blend_mode(bm_normal);
       draw_point_color(0,h,oldc);
       tempsprite = sprite_create_from_surface(surf,0,0,w,h+1,p,true,s,l,xo,yo);
       draw_clear_alpha(newc,1);
       draw_sprite(tempsprite,0,xo,yo);
       sprite_delete(tempsprite);
       if (i == 0) {
           newsprite = sprite_create_from_surface(surf,0,0,w,h,p,0,s,l,xo,yo);
           if (newsprite < 0) {
               surface_free(surf);
               return -1;
           }
       }else{
           sprite_add_from_surface(newsprite,surf,0,0,w,h);
       }
       draw_clear_alpha(c_white,1);
       draw_set_blend_mode_ext(bm_zero,bm_src_alpha);
       draw_sprite(sprite,i,xo,yo);
       if (i == 0) {
           alphasprite = sprite_create_from_surface(surf,0,0,w,h,p,0,s,l,xo,yo);
           if (alphasprite < 0) {
               sprite_delete(newsprite);
               surface_free(surf);
               return -1;
           }
       }else{
           sprite_add_from_surface(alphasprite,surf,0,0,w,h);
       }
       draw_set_blend_mode(bm_normal);
   }

   surface_reset_target();
   sprite_assign(sprite,newsprite);
   sprite_set_alpha_from_sprite(sprite,alphasprite);
   sprite_delete(newsprite);
   sprite_delete(alphasprite);
   surface_free(surf);
}


en el gm8 no se encuentra la funcion "sprite_get_precise(sprite)" y "sprite_get_smooth(sprite)".
80
Preguntas y respuestas / Re: Empujar roca
Mayo 27, 2010, 02:28:59 AM
pero se trata de un juego en donde el personaje empuja una roca? no entiendo mucho tu pregunta
81
mmmm.... sabes lo que te pasa es que el centro del sprite que tienes no esta adecuado a los otros sprites, por ej: yo tengo un sprite en donde le asigno un punto "x" de la mitad del ancho del sprite y un punto "y" como 0, entonces lo que tienes que hacer es colocar o adecuar el punto x e y de todos los sprites que tenga el personaje de igual manera, para que haya un orden y no se produzca un error, en tanto a la instancia que quieres crear cuando se produce la animaci?n de disparo, cr?ala adecuando el punto x e y para que te salga bien. espero que me hayas comprendido. 
82
hola makeros, he visto unos videos en youtube acerca de megaman hecho en el gm y son geniales, descargu? un ejemplo de este tipo de transiciones al estilo de megaman de NES, pero creo que puede existir una mejor forma de realizar estos codigos, les dejo el respectivo ejemplo para que lo vean y puedan comentar porfavor. Y si pudieran ayudarme mejor XD
83
en el eventro draw se pueden colocar sonidos??????, yo sabia que el evento draw solo servia para dibujar...
84
hola makeros, se me gener? un problema con la funcion screen_refresh(), es que en la verdad estoy haciendo un proyecto de megaman al estilo NES, y he visto que en este juego cuando el personaje aumenta su energia el juego se paraliza por un momento, y la barra de energ?a aumenta, y cada vez que aumenta una raya mas de energ?a produce un sonido, he probado con mis codigos pero no me resultan... prob? con alarmas y tampoco, me podr?an ayudar porfavor, les dejo una imagen para que vean de que se trata...
85
hola a todos los makeros... pues se me ha originado una duda muy dudosa XD... he querido de tratar pero nunca me resulta, lo que queria era que cuando una imagen termina su animacion, el personaje baje su gravedad y dispare... pero no me ha resultado  :-[, tengo hecho mis codigos pero no me resultan...

evento step
if an_activ = 0 && state = "trow_jump"
{
gravity = 0.01
if execute_string("sprite_index = "+string(global.create)+"_trow_jump") && image_index = image_number
{
gravity = player_gravity;
an_activ = 1;
}
}


evento de presionar tecla "S"

if state = "jump"
{
state = "trow_jump";
if an_activ = 1
{execute_string("instance_create(x+5,y-16,obj_"+string(global.create)+string(weapon)+")");an_activ = 0;}
}


lo que da como resultado es que an_activ nunca llega a ser 1, y el personaje baja su gravedad, pero lo que pasa despues es de que termina la animacion es que no se crea la instancia y sale con errores en la animacion posteriormente...
86
muchas gracias , este tema termina como solucionado XD
87
hola makeros, estoy haciendo un juego de megaman al estilo de los clasicos de NES... he estado haciendo estos ultimos dias el nivel de metalman, pero el piso corredizo me hace muchos bugs...Por ejemplo el personaje principal colisiona con este tipo de piso y se mueve normalmente de principio, todo bien, pero cuando intento saltar a otro piso corredizo con direcci?n distinta me sale el bug, se cambia la direccion del piso corredizo siendo un desastre en el efecto real... aca les dejo mis novatos codigos:

Evento de colision con el objeto corredizo que mueve al personaje hacia la derecha

hspeed = 3
if (vspeed > 0 and not place_free(x,y+vspeed))
{
sound_play(sound_landing)
move_contact(270);
vspeed = 0;
if state = "jump"{state = "stand";}
if state = "trow_jump"{state = "stand";}
}
else
{vspeed = 0; state = "jump";hspeed = 0}


En el evento de colision con el corredizo que mueve al personaje hacia la derecha solo cambie hspeed = 3 por hspeed = -3

y en el evento step
if vspeed > 0 || vspeed < 0{hspeed = 0}

el codigo del evento step lo puse para que se elimine la velocidad horizontal cuando el personaje este saltando...
mmmm.... me parece que estos codigos son innecesarios y se pueden simplificar...
dejo un mini demo del bug XD

88
muchas gracias, ahora lo entend?, sabia que se podia hacer asi, reitero... muchas gracias makeros
89
hola makeros, tengo una gran duda que se me viene a la cabeza... encontr? un ejemplo de efectos y me llamo la atencion el efecto de luz, ya que en este se formaba un circulo alrededor del mouse, iluminando a la vez que uno mueve el mouse, esto se podr? hacer sin que se vea ese color blanco que forma el circulo?, me podrian ayudar ya que quiero hacer este efecto de luz en un proyecto pero sin que se vea ese color blanco, sino que sea transparente y se vean bien los otros colores en donde se ilumina.

evento create

light_brightness=0.5;
light_color=c_white;
radius=128;
room_darkness=0.9;


evento step

draw_set_alpha(room_darkness);
draw_set_color(c_black);
draw_rectangle(0,0,room_width,room_height,false);
draw_set_alpha(light_brightness);
draw_set_blend_mode(bm_add);
draw_circle_color(mouse_x,mouse_y,radius,light_color,c_black,false);
draw_set_alpha(1);
draw_set_blend_mode(bm_dest_alpha);


este es el objeto obj_lighting
90
ahora no se escucha el sonido cuando el objeto esta dentro de la view, igual gracias, lo bueno que el sonido no se reproduce cuando el objeto esta fuera de la view, pero ahora no se escucha absolutamente nada XD