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.

Temas - fab62

21
Preguntas y respuestas / problema con valor m?ximo
Julio 15, 2011, 05:38:48 AM
hola makeros, tengo un problema que no se me ocurre como poder realizarlo, es que tengo una variable llamada "global.mi_puntaje[1,n]", y n va aumentando creando otra variable
(ej: global.mi_puntaje[1,0],global.mi_puntaje[1,1],...n veces)

cada una de estas variables guarda el mejor puntaje obtenido en una vida del personaje.

de primera siempre se crea la variable global.mi_puntaje[1,0], la cual guarda los valores del puntaje cuando el personaje pierde una vida, despues se crea la siguiente, en este caso es global.mi_puntaje[1,1], y asi sucesivamente hasta que acaben todas las vidas del personaje.

como se crean n variables, quiero tratar de compararlas y elegir cual es la que tiene mayor valor entre todas.

pero no puedo utilizar la funcion max(x1,x2,x3,...) ya que los argumentos van aumentando.

como podr?a hacerlo si el personaje puede aumentar sus vidas, y asi tambien aumentaran la cantidad de variables global.mi_puntaje[1,n], ?como se puede tratar de elegir el mejor puntaje? :-\
22
hola amigos de la comunidad, me ocurrio un problema con los scripts... es que quiero tratar de hacer un contador de tiempo en un script, pero no me funciona, talvez porque nose como formularlo, ahi ustedes me corrigen porque se que no se realiza de esa manera... el codigo es:


// contar_segundos(segundos)

tseg = argument0
seg  = 0

if (seg < tseg)
{seg += 1; val = 0} else {val = 1}
return(val)

lo quiero tratar de usar en el evento step pero no me funciona XD
23
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
24
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...
25
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?

26
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)".
27
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
28
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...
29
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...
30
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

31
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
32
hola makeros, lo que sucede es que tengo una gran duda con los sonidos, porque en el codigo no se me ocurre como hacer que desaparezca el sonido cuando el objeto no se ve en la view, he intentado muchas veces y sigo confundido, ayudenme porfavor que este codigo me esta haciendo la vida imposible  :-[,

en el evento create:
inview = 0;

en el evento step:
if x>view_xview+322{instance_destroy();inview = 0;}else{inview = 1;}
if x<view_xview-16{instance_destroy()inview = 0;}else{inview = 1;}
if y>view_yview+242{instance_destroy();inview = 0;}else{inview = 1;}
if y<view_yview-16{instance_destroy()inview = 0;}else{inview = 1;}

if inview = 1 {sound_play(zap); alarm[0]=0.1;}

en el evento alarma 0
inview = 0;

me sigue saliendo el sonido molesto, el instance destroy() es para destruir el objeto cuando este este fuera de la view, y el inview es la variable que no me funciona, esa variable es para el sonido, y puse la alarma para que no se repitiera el sonido, pero no me funciona XD , porfa ayudenme de este problema...
33
Preguntas y respuestas / problema con perseguir
Noviembre 12, 2009, 12:40:56 AM
hola makeros... tengo un peque?o problema con un juego de plataformas que estoy haciendo, es un c?digo de perseguir que encontr? y lo edit?, lo malo es que el enemigo no salta cuando un objeto solido se encuentra en frente de ?l, sino que se queda con el sprite de caminar y no salta...
por favor ay?denme, ac? esta el c?digo

EVENTO CREATE:
image_speed = 0.25
eso es para la velocidad de la animaci?n.

EVENTO STEP:
{
gravity_direction = 270;
  if place_free(x,y+1)
    gravity = 0.7
  else
    gravity = 0;
  // limit the speed
  if (vspeed > 12) vspeed = 12;
}


esto es para la gravedad del enemigo

if instance_exists(spacer)
{
if x< spacer.x and x< view_xview+320
{
image_xscale = 1
if sprite_index = sprbadstand {sprite_index = sprbadwalk;}
if place_free(x+3,y){ x+=2.5}
if not place_free(x,y+1)and place_free(x+8,y+1)
{vspeed-=10; if place_free(x+3,y){ x+=2.5}}}

if x> spacer.x and x> view_xview+1
{
image_xscale = -1
if sprite_index = sprbadstand {sprite_index = sprbadwalk;}
if place_free(x-3,y){ x-=2.5}
if not place_free(x,y+1)and place_free(x-8,y+1)
{vspeed-=10; if place_free(x-3,y){ x-=2.5}}}
}else{x = 0;sprite_index = sprbadstand;}


este es el c?digo de perseguir, lo que no se es como detener al personaje cuando este fuera de la view, y ademas no salta cuando un objeto esta al frente del enemigo, lo unico tambi?n que no me gusta de este codigo es que el enemigo se acerca mucho al personaje quedando en la misma posici?n X.

if x = 0 {sprite_index = sprbadstand}
if vspeed < 0 {sprite_index = sprbadjump}


esto es para que el personaje cambie de sprite cuando esta imovil (pero no me sirve XD) y para cuando el personaj salte cambie de sprite.

EVENTO COLISION CON EL OBJETO SOLIDO:
if (vspeed > 0 and not place_free(x,y+vspeed))
{
move_contact(270);
vspeed = 0;
}

esto es para que el enemigo se detenga en el piso con la gravedad

if sprite_index = sprbadjump
{sprite_index = sprbadstand}


y esto es para cambiar el sprite de saltar por el de pie.