Junio 18, 2015, 04:24:22 AM Ultima modificación: Junio 18, 2015, 04:27:03 AM por Nick el capo
el problema es que soy nuevo en esto de game maker 8 y  si me pueden ayudar como hago una barra de hambre y que se restaure comiendo lo agradecería si es posible sin códigos

Cita de: Nick el capo en Junio 18, 2015, 04:24:22 AM
el problema es que soy nuevo en esto de game maker 8 y  si me pueden ayudar como hago una barra de hambre y que se restaure comiendo lo agradecería si es posible sin códigos

Puedes usar los eventos alarm.
Pones un tiempo en alarm, haciendo que en el evento de ese alarm se produzca la "muerte por hambre". La comida incrementaría el valor del alarm, demorando la activación del evento.

No hay muchas opciones para dibujar la barra sin escribir código, sólo están las acciones "dibujar rectángulo" y "dibujar gradiente", pero al final resulta más complicado que usar una función como draw_healthbar, además con código puedes hacer una barra con forma personalizada y con cualquier tipo de decoraciones.

No temas escribir código, es mejor que el sistema DnD, y éste problema es lo bastante sencillo para empezar a practicar.

Lo que propuso Marth es una buena idea, lo implementé en el ejemplo adjunto.

#3 Junio 18, 2015, 08:05:18 PM Ultima modificación: Junio 18, 2015, 08:09:09 PM por king195
Yo uso Sprites para las barras de vida(es lo mismo que una barra de hambre, de mana de lo que sea) pero por que quería hacer una barra de vida más estilizada con degradados y tal, el spr_mitad_vida es el que esta en medio de la barra y el que básicamente sumara o restara dependiendo siempre de la vida que tenga tu personaje.

var i,xx_hp=71,yy_hp=144,xx_mana=71,yy_mana=160;
         
         if(hp_player >= 1){
            draw_sprite(spr_inicio_vida,0,xx_hp-1,yy_hp);
             for(i=0;i<hp_player;i++){
                draw_sprite(spr_mitad_vida,0,xx_hp,yy_hp);
                xx_hp++;
             }
             draw_sprite(spr_final_vida,0,xx_hp,yy_hp);
         }
         
         if(mana_player >= 1){
             draw_sprite(spr_inicio_mana,0,xx_mana-1,yy_mana);
             for(i=0;i<mana_player;i++){
                draw_sprite(spr_mitad_mana,0,xx_mana,yy_mana);
                xx_mana++;
             }
             draw_sprite(spr_final_mana,0,xx_mana,yy_mana);
         }


Tienes que ser consciente que la barra visual es nada más un elemento visual, que sume o baje el hambre no depende de la barra si no de otro factor, de la variable que se llame hp_player en mi caso en el tuyo sera barra_hambre por ejemplo y que se incremente de una u otra forma depende de ti, es decir quieres que al coger un objeto y comertelo se incremente, pues tienes que realizar una función que se encargue de ello con un distance_point + mouse_check_button etc...

Muy fácil.
solo crearemos un objeto cualquiera que servirá de controlador:

obj_HungerControl:


Create Event:

globalvar hunger; //Inicializa globalmente la variable hunger
hunger = 10 //la cantidad de "hambre" que debería tener el player"

Draw Event:

draw_rectangle(0,0,hunger*10,32,false) //personaliza las dimensiones a gusto


si queremos que el nivel de "hunger" disminuya constantemente ponemos en el create una alarma(alarm[0] = room_speed) y hacemos esto:

alarm 0 event:

hunger -= 1 //disminuye una determinada cantidad de hambre
alarm[0] = room_speed //repite la alarma



digamos que "comer" equivale a colisionar con un objeto que represente la comida

obj_player:

Collision Event:

hunger += 2
with other instance_destroy()



y listo 8)
alaberga regué el café.

BA:STFW&RTFM