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

1
Hola amigos

Tengo un problema a la hora de equipar algún ítem ya sea armas o alguna poción de salud.

he probado varias maneras pero no he pidido

Alguna idea que debo hacer para hacerlo??
paso el proyecto por si lo quieren revisar

2
Preguntas y respuestas / Re: Items con descripcion
Junio 27, 2021, 06:18:36 PM
Muchas gracias amigo void

me has sido como siempre de mucha ayuda
3
Preguntas y respuestas / Re: Items con descripcion
Junio 25, 2021, 03:00:02 AM
Tengo un objeto Inventario
En el create
[gml]///Variables
open = true;

L = 18; //Distancia entre dos slots
slotT = 16; //Total de slots

for (i = 1; i <= slotT; i++;) {
   slot = 0; //Item que almacena el slot i
   slot_n = 0; //Cantidad de ítems en el slot
}

//variables del mouse
mouse = 0;
mouse_n = 0; //Cantidad de ítems en el mouse[/gml]

en el Evento Draw
[gml]//Dibujar Inventario


if open {
   var h = 0,
      k = 0,
      vx = view_xport,
      vy = view_yport,
      color = c_ltgray;
      
   for (i=1; i<=slotT; i++;) {
      //coordenadas individuales
      var sx = vx + L*k, sy = vy + L*h;
      
      //interaccion
      if point_in_rectangle(mouse_x, mouse_y, sx, sy, sx+16, sy+16) {
         //click
         if mouse_check_button_pressed(mb_left){
            //mouse vacio y slot lleno
            if mouse = 0 and slot != 0 {
               mouse = slot;
               mouse_n = slot_n;
               slot = 0;
               slot_n = 0;
            }
            //mouse lleno y slot vacio
            else if mouse != 0 and slot = 0 {
               slot = mouse;
               slot_n = mouse_n;
               mouse = 0;
               mouse_n = 0;
            }
            //mouse lleno y slot lleno
            else if mouse != 0 and slot != 0 {
               //variable de respaldo
               var _item = slot;
               var _item_n = slot_n;
               
               //si ambos items son iguales
               if slot == mouse {
                  slot_n += mouse_n;
                  mouse = 0;
                  mouse_n = 0;
               }
               //si los items son diferentes
               else{
                  slot = mouse;
                  slot_n = mouse_n;
                  mouse = _item;
                  mouse_n = _item_n;
               }
            }
         }
         color = c_yellow;
      } else {
         color = c_white;
      }
      
      //fondo
      draw_sprite_ext(spr_borde, 1, sx, sy, 1, 1, 0, color, 1);
      
      //borde
      draw_sprite_ext(spr_borde, 0, sx, sy, 1, 1, 0, c_white, 1);
      
      //item
      if slot != 0 {
         draw_sprite(spr_items, slot, sx, sy);
         
         //Dibuja la cantidad de items si es mayor que 1
         if slot_n>1 {
            draw_set_color(c_black);
            draw_text_transformed(sx+12, sy+12, "x"+string(slot_n), 0.25, 0.25, 0);
            draw_set_color(c_white);
         }
      }
      
      //aumentar coordenadas
      k++;
      if frac(i/4) = 0 {
         h += 1;
         k = 0;
      }
   }
}

//Dibujar item del mouse
if mouse != 0 {
   //Dibujar item
   draw_sprite(spr_items, mouse, mouse_x-8, mouse_y-8);
   //dibuja la cantidad de items si es mayor que 1
   if mouse_n > 1{
      draw_set_color(c_black);
      draw_text_transformed(mouse_x+4, mouse_y+4, "x"+string(mouse_n), 0.25, 0.25, 0);
      draw_set_color(c_white);
   }
   
   //Soltar item
   if mouse_check_button_pressed(mb_right) {
      with(instance_create_depth(obj_player.x-8, obj_player.y-8, 0, obj_item)){
         item = other.mouse;
      }
      mouse_n--;
      if mouse_n == 0 mouse = 0;
   }
}
[/gml]

Y tengo este script para agregar
[gml]function scr_agregar(){
   
   var _item = argument0;
   var _number = argument1;
   
   with obj_inventario {
      //Busca si el ítem ya existe en el inventario y es apilable
      for ( i = 1; i <= slotT; i++;) {
         if scr_stackable(i, _item){
            slot = _item;
            slot_n += _number;
            return(1);
         }
      }
      //Busca si hay un espacio vacio para poner el item
      for ( i = 1; i <= slotT; i++;) {
         if slot = 0 {
            slot = _item;
            slot_n = _number;
            return(1);
         }
      }
      return(0);
   }
}[/gml]
4
Hola amigos

Tengo una consulta
ya solucionado el tema del inventario quisiera que cuando ya tenga los items en el inventario
en el cuadro de al lado al poner el mouse en el ítem salga la descripción del articulo.

alguien me pude ayudar guiarme

5
Pudiste resolver como hacer el inventario????
6
Si muchas gracias por tu ayuda de verdad eres un grande en esto

Disculpa q te moleste tanto

hay algunos errores a la hora se soltar el objeto y volverlo a agarrar
pero tratare de resolverlo!! muy agradecido contigoo
7
Amigo si quisiera que por ejemplo una de las pociones Rojas tenga por por ejemplo 5

Tendría que agregarle en el create code del la instancia algún number= 5

Algo asi??
8
Entonces si quiero que otro ítem sea apilable en ese script lo colocaría

Ir ítem==1||ítem==2||ítem==3|| etc etc ...???
9
Amigo Excelente gracias por tu ayuda
Muy muy buena tu ayuda
todo muy bn explicado

solo quede con una duda

veo q se apilan los dos primeros items q es la poción roja y la azul
pero por ejemplo si cambio de orden los items entonces se apilarian la espada y el pico

mi pregunta seria si hay alguna forma o manera de saber cual puedo apilar o cual no?

lo digo por si tengo por ejemplo 50 items
10
Hola amigos

tengo un inventario echo por un tutorial de youtube que pertenece a Woynert:

-Se puede abrir y cerrar el inventario
-Se pueden agregar los items
-Se pueden intercambiar los items
-Se pueden sacar los items del inventario

Pero quisiera que algunos items como por ejemplo las pociones se apilen
pero las espadas o las hachas no se apilen
los items en el create code de la room tiene su ID

no se si alguno me puede ayudar con eso
dejare el codigo

dejo el exportable por si acaso lo necesitan

sirve para GSM1 y para GSM2


ObjInventario

CREATE
[gml]///Variables
open = true;

L = 18; //Distancia entre dos slots
slotT = 16; //Total de slots

for (i = 1; i<=slotT; i++;) {
   slot = 0; //Item que almacena el slot i
}

//variables del mouse
mouse = 0;[/gml]

DRAW
[gml]//Dibujar Inventario

if open {
   var h = 0,
      k = 0,
      vx = view_xport,
      vy = view_yport,
      color = c_ltgray;
      
   for (i=1; i<=slotT; i++;) {
      //coordenadas individuales
      var sx = vx + L*k, sy = vy + L*h;
      
      //interaccion
      if point_in_rectangle(mouse_x, mouse_y, sx, sy, sx+16, sy+16) {
         //click
         if mouse_check_button_pressed(mb_left){
            //mouse vacio y slot lleno
            if mouse = 0 and slot != 0 {
               mouse = slot;
               slot = 0;
            }
            //mouse lleno y slot vacio
            else if mouse != 0 and slot = 0 {
               slot = mouse;
               mouse = 0;
            }
            //mouse lleno y slot lleno
            else if mouse != 0 and slot != 0 {
               //variable de respaldo
               var _item = slot;
               
               slot = mouse;
               mouse = _item;
            }
         }
         color = c_yellow;
      } else {
         color = c_white;
      }
      
      //fondo
      draw_sprite_ext(spr_borde, 1, sx, sy, 1, 1, 0, color, 1);
      
      //borde
      draw_sprite_ext(spr_borde, 0, sx, sy, 1, 1, 0, c_white, 1);
      
      //item
      if slot != 0 {
         draw_sprite(spr_items, slot, sx, sy);
      }
      
      //aumentar coordenadas
      k++;
      if frac(i/4) = 0 {
         h += 1;
         k = 0;
      }
   }
}

//Dibujar item del mouse
if mouse != 0 {
   //Dibujar item
   draw_sprite(spr_items, mouse, mouse_x-8, mouse_y-8);
   
   //Soltar item
   if mouse_check_button_pressed(mb_right) {
      with(instance_create_depth(obj_player.x-8, obj_player.y-8, 0, obj_item)){
         item = other.mouse;
      }
      mouse = 0;
   }
}[/gml]

KEY-PRESS-E
[gml]//Abrir y Cerrar

if open {
   open = false;
} else {
   open = true;
}
[/gml]


ObjItem

DRAW
[gml]//Dibuja inventario

image_index = item;
draw_self();[/gml]

LEFT PRESSED
[gml]//Agarra item

if scr_agregar(item) {
   instance_destroy();
}
[/gml]

SCRIPTS
[gml]
   var _item = argument0;
   
   with obj_inventario {
      for ( i = 1; i <= slotT; i++;) {
         if slot = 0 {
            slot = _item;
            return(1);
            exit;
         }
      }
      return(0);
   }[/gml]


https://www.youtube.com/watch?v=PVKWKjJh3rs Aca esta el link del video
11
Hola amigos tengo una barra de vida para los enemigos

Es el mismo enemigo por ende el mismo objeto
pero cuando ataco a uno de ellos !! la barra se les baja a todos

que podria hacer para que no me suceda eso

coloco el codigo con el que gestiono la parte de la vida y de la barra de vida del enemigo

CREATE
[gml]Create
///Inicializacion
event_inherited();

enum es {
    parado = serpienteParado,
    corriendo = serpienteCorriendo,
    atacando = serpienteAtacando,
    muriendo = serpienteMuriendo
}

dir = "abajo";          //Direccion miramos por defecto
estado = es.parado;     //Estado por defecto
//vida = 10;               //Vida por defecto

radio_ataque = 18;      //Radio para empezar a atacar
crear_ataque = true;    //Crea el ataque
perseguir = false;      //Enemigo nos persige

//Codigo para caminata aleatoria
dx = -1; // Destino X al que se moverá el conejo, -1 = ninguno
dy = -1; // Destino Y al que se moverá el conejo, -1 = ninguno

alarm[0] = room_speed * choose(1,2,3);      //Para generar nueva posicion

//vida enemigo
vida = 10;              //Vida por defecto
vidaMaxE = vida;

//variables del contador
LongitudE = 40;          //longitud del contador
CalibreE = 0;            //valor del contador

//regeneracionVidaPlayer = 0;     //tiempo regenarion vida[/gml]


STEP
[gml]///Gestión de estado de movimiento, dirección y muerte
//Determinamos direccion
if (vv > 0) dir = "abajo";
else if (vv < 0) dir = "arriba";
else if (vh > 0) dir = "derecha";
else if (vh < 0) dir = "izquierda";

//Si no estamos atacando comprovamos estados parado y caminar
if (estado != es.atacando){
    if (dir != "") estado = es.corriendo;
    if (vh == 0 and vv == 0) estado = es.parado;
}
//Y si estamos atacando nos paramos
else {

    vh = 0;
    vv = 0;

    //Arreglar direccion solo si atacamos
    grados = point_direction(x,y,obj_player.x,obj_player.y);
    if (grados < 45 or grados > 315) dir = "derecha";
    else if (grados >= 45 and grados < 135) dir = "arriba";
    else if (grados >= 135 and grados < 225) dir = "izquierda";
    else if (grados >= 225 and grados <= 315) dir = "abajo";
}

//Comprobar vida y muerte (prioridad)
if (vida <= 0) {
    estado = es.muriendo;
    colision = false;
    vh = 0;
    vv = 0;
}
//-----------------------------------------------------------------------------------------------------
///Gestion valor y regeneracion de la vida
if (instance_exists(obj_serpiente)){
   CalibreE = round((obj_serpiente.vida * LongitudE) / obj_serpiente.vidaMaxE);
}[/gml]

DRAW GUI
[gml]///Dibuja barra vida
draw_sprite_stretched(spr_barraVida, 1, x-22, y-32, LongitudE, 7);//fondo del contador
draw_sprite_stretched(spr_barraVida, 0, x-22, y-32, CalibreE, 7);//contador
[/gml]
12
No me resulto amigo

intente hacerlo igual y solo se alinea pero no se mueve mas

no se si hago algo mal!!
no soy experto por si acaso
13
Trate de hacerlo y no me salio
no se si es por que lo hago en GM1

lo copie igual como sale en GMLive

pero no se si hago algo mal
14
Perfecto me funciono super

asi como tu me lo dijiste
15
Como lo dice el titulo

Busco quien pueda guiarme en ese tema

he buscado por youtube y por aca tambien ese tema
y todos los tutoriales son de que el enemigo te siga y te ataque cuando estes en su rango o en su radio

Pero lo que busco es que el enemigo me ataque solo si el jugador lo ataque y lo persiga y ataque hasta que muera el player o el enemigo

gracias de antemano