Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

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


Temas - knd144

Páginas: 1 2
1
Preguntas y respuestas / [RESUELTO]Problema con draw_healthbar
« en: Octubre 22, 2018, 05:31:58 am »
Hola de nuevo.

Me he estado volviendo loco al usar la función draw_healthbar, principalmente por que es una función sencilla.  :-[

Tengo el siguiente código, todo en el evento "draw_gui":

Código: [Seleccionar]
    var largo_vista = view_wport[0] ;
    var alto_vista = view_hport[0];
   
    var inicio_gui_coordenada_y = alto_vista - global.altura_gui_estadisticas;
    var espacio_entre_texto = 20;
    var tabulacion = 5;
    var longitud_columna = 400;
    var espacio_antes_de_barra_recarga = 200;
    var altura_barra_recarga = 5;
    var multiplicador_longitud_barra_recarga = 5;


draw_healthbar(
        (tabulacion+(longitud_columna*2)+espacio_antes_de_barra_recarga), //Coordenada x1
        (inicio_gui_coordenada_y+espacio_entre_texto*1), //coordenada y1
        (tabulacion+(longitud_columna*2)+espacio_antes_de_barra_recarga)+(tiempo_ataque), //coordenada x2
        (inicio_gui_coordenada_y+espacio_entre_texto*1)+altura_barra_recarga,//coordenada y2
        (tiempo_recorrido), //variable que indica el valor de la "vida" (Aunque la use para otra cosa).
        c_white,c_blue,c_blue,0,true,true); //El fondo es blanco y se va llenando de azul


En este caso la variable "tiempo_ataque" tiene un valor de 30 y "tiempo_recorrido" va de 0 a 30 (se le suma 1 cada "step"); en fin que en lugar de llenarse por completo la barra, se queda como a una cuarta parte (Es más, me parece que la barra blanca es la que es más larga de lo que debería). La imagen es la siguiente (La barra es la que está en el centro):



Los otros números son, de hecho, debugs que he estado haciendo para saber el valor de x1, x2, x1 + tiempo_recorrido, tiempo recorrido y tiempo ataque; el código es el siguiente:

Código: [Seleccionar]
//debug de la barra de vida
    draw_text(tabulacion+longitud_columna*2, inicio_gui_coordenada_y+espacio_entre_texto*2, string(tabulacion+
       (longitud_columna*2)+espacio_antes_de_barra_recarga)); //Valor de x1

    draw_text(tabulacion+longitud_columna*2, inicio_gui_coordenada_y+espacio_entre_texto*3, string((tabulacion+
       (longitud_columna*2)+espacio_antes_de_barra_recarga)+(tiempo_ataque))); //valor de x2

    draw_text(tabulacion+longitud_columna*2, inicio_gui_coordenada_y+espacio_entre_texto*4, string((tabulacion+
       (longitud_columna*2)+espacio_antes_de_barra_recarga)+(tiempo_recorrido))); //valor de x1 + tiempo_recorrido
   
    draw_text(tabulacion+longitud_columna*3, inicio_gui_coordenada_y+espacio_entre_texto*1, string(tiempo_ataque));
    draw_text(tabulacion+longitud_columna*3, inicio_gui_coordenada_y+espacio_entre_texto*2, string(tiempo_recorrido));

Como ven en las últimas 2 línea, los valores de "tiempo_ataque" y "tiempo_recorrido" es el mismo; y las coordenadas de x2 y de x1 + tiempo recarga es la misma... sin embargo la barra no se muestra llena.

¿Alguien sabe qué está sucediendo antes de que termine de volverme loco?  :-[

2
Preguntas y respuestas / Crear una "zona" en la vista para información.
« en: Octubre 15, 2018, 03:26:01 am »
Esta es más bien una consulta de ideas.  :-[
Creo que mas o menos han respondido esto pero no encuentro los temas; lo que quiero es poner un contenedor para poner información del personaje: vida, nivel, experiencia, estadísticas de daño y defensa... pero hasta donde sé no se puede poner algo fuera de las vistas (Y lograr que se vea), aunque claro, yo me quedé en la versión 8 y ahora estoy en el GM Studio 1.4.

Quisiera hacer algo así:



Pero aclaro, estoy haciendo un juego de plataformas.

Cualquier sugerencia es bienvenida.  :)

3
Preguntas y respuestas / [Solucionado] Crear "catálogos" e inventarios.
« en: Octubre 10, 2018, 12:50:03 am »
Perdón si no supe cómo poner el título.  ???

Lo que quiero es tener un catálogo de varios objetos con la misma estructura:

Código: [Seleccionar]
{
  id: 1,
  ataque: 0,
  defensa: +10,
  vida: +10,
  velocidad: +20,
  ...
}

En fin que quiero tener la lista de estos objetos en memoria; y mi personaje tendrá un inventario de estos objetos para poder equiparlos (Creería que solo es necesario tener una lista con los "id" de los items que tiene) por lo que tendré que estar consultando el catálogo de objetos a cada momento para calcular las estadísticas finales, para mostrar el inventario al jugador y que él pueda interactuar con esos items para equiparlos.
Mi pregunta es ¿Tienen alguna forma eficiente de mantener ese catálogo de objetos en memoria? Lo que no quisiera es tener ese catálogo en un archivo externo y estar consultando a cada momento la información de todos los posibles items que el personaje tenga en el inventario.  ???
¿Crear una DLL con C/C++ me serviría para eso?

4
Pues tengo esa duda existencial, tanto tiempo entregando trabajos "formales" en la escuela me han enseñado que la letra arial o New Times Roman es la que hay que elegir, pero en un vídeo-juego no se ve muy bien...
Intenté jugar con las fonts pero luego se ven borrosas, opacas o parece muy formal  :'(

Sólo les pregunto ¿Qué tipo de fuente recomiendan? ¿Cuál acostumbran usar para diálogos y mensajes al jugador? :P

5
Hola camaradas.
Ahora la escuela me tiene ocupado, pero me las arreglé para que en una materia me acepten de trabajo final un videojuego; bueno, en fin.
Lo que ahora quiero hacer es que un objeto busque en las 4 direcciones posibles si hay camino por donde él pueda pasar lo escoja al azar, para ello uso la función "collision_rectangle"; mi script es éste:


Código: [Seleccionar]
var i,direccion;
direccion=0;
i=0;
for(i=0;i<4;i+=1)
{
    direcciones[i]=-1;
}
i=0;
for(i=0;i<4;i+=1)
{
    while(true)
    {
        if(direccion>=360)
        {
            direccion-=360;
        }
        switch(direccion)
        {
            case 0:
                {
                    if(!collision_rectangle(x,y+(sprite_height/2),x+50,y-(sprite_height/2),obj_colision_calles_parent,false,true))
                    {
                        direcciones[i]=0;
                    }
                    break;
                }
            case 90:
                {
                    if(!collision_rectangle(x-(sprite_width/2),y,x+(sprite_width/2),y-50,obj_colision_calles_parent,false,true))
                    {
                        direcciones[i]=90;
                    }
                    break;
                }
            case 180:
                {
                    if(!collision_rectangle(x,y+(sprite_height/2),x-50,y-(sprite_height/2),obj_colision_calles_parent,false,true))
                    {
                        direcciones[i]=180;
                    }
                    break;
                }
                case 270:
                {
                    if(!collision_rectangle(x-(sprite_width/2),y,x+(sprite_width/2),y+50,obj_colision_calles_parent,false,true))
                    {
                        direcciones[i]=270;
                    }
                    break;
                }
        }
        direccion+=90;
        if(direcciones[i]!=-1)
        {
            break;
        }
    }
}
direction=direcciones[floor(random(4))]
speed=3;
Pero ocurre que se buclea el programa.  ???
¿Alguien que me pueda ayudar?  :-[

6
hola
Tengo la necesidad de mostrar el inventario de mi personaje en la pantalla miestras se juega, así como algunas otras estadísticas. El problema es que no quiero que se sobreponga con la vista del juego (la view), así que quisiera saber si puedo poner un objeto (que se vea, claro  :-[) dentro de la pantalla de juego pero que no esté en la vista del juego, para que no tape nada de la acción  :P.

Pregunto, se puede ???
o hay alguna forma de hacer algo que lo reemplace?

SALUDOS

7
Preguntas y respuestas / Enviar un array como argumento a un script
« en: Agosto 03, 2010, 08:37:30 pm »
Pues ese el mi problema, no puedo manejar un arreglo y enviarlo aun script (ni returnarlo desde el script). Se supone que basta con poner algo así:
script(array) y se mandaría todo el arreglo, pero no  :-\.
O bien, he intentato también en script(array[]) pero es lo mismo, solo hace referencia a la primera posición del arreglo  ???.
inclusive lo he hecho de esta manera:
array[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] pero me toma como si quisiera usar un array de 20 dimensiones, cosa rara para como he trabajado en C/C++ y Java  :-[
Al parecer el Game Maker trabaja un tanto diferente con estos recursos, me podrían hechar la mano  ;D

Gracias de antemano

8
Preguntas y respuestas / por q este script traba el juego?
« en: Julio 09, 2010, 01:03:18 am »
Hola.
Pues cree un script para el desplazamiento de un enemigo, que se dirija a un punto que le quede más cerca (y libre) al personaje. Pero cuando está el juego en marcha y el enemigo en esa room actual el juego se traba  :-\ .
Les explico lo que tengo:
en el create del personaje están estas variables:
Citar
xx=x
yy=y

en el step:
Citar
if(xx=x and yy=y)
{
  //scr_ia_mov_bot3();
}
else
{
 ......
}
y el script es este:

Citar
var dir,x1,y1;
dir=0
//25
while(direction<360)
{
  x1=x+25*(seno(dir))
  y1=y-25*(seno(dir))
  if(place_free(x1,y1))
  {
    if(point_distance(x1,y1,obj_personaje.x,obj_personaje.y)<point_distance(xx,yy,obj_personaje.x,obj_personaje.y))
    {
      xx=x1
      yy=y1
    }
  }
  dir+=10
}

speed=3
direction=point_direction(x,y,xx,yy)

La verdad no veo el por qué se traba el juego, el script solo se llama 1 vez y luego el enemigo prosigue a moverse  :-\ después lo mismo.
Incluso intenté que la variable "dir" aumente en 20 pero ni así.
Ustedes que dicen?  :-[

9
Pues esa es mi pregunta:
tengo una aplicacion converter.bat que al ejecutarse acepta 2 argumentos, por lo que uso la función:

execute_program("converter.bat",a,b,false);

siendo a y b 2 variables, pero me sale el error al ejecutar:
"Wrong number of arguments to function or script."
diciendo que me falla el número de argumentos, pero necesito forzosamente 2 argumentos. Alguna manera de enviar 2 argumentos?  :-[


P.D.: También he usado esta función:
execute_shell("converter.bat",a,b)
Pero el mismo problema :(

10
Preguntas y respuestas / Que no se vea el cursor en la pantalla
« en: Junio 30, 2010, 07:45:47 pm »
Estoy casi seguro que hace tiempo vi en algún lugar de la comunidad cómo hacer para que no se dibuje el cursor en la pantalla, pero ahora no lo encuentro  :-[
Me podrían decir si en verdad se puede (o solo fué producto de mi distorcionadamente) y cómo? Se los agradecería mucho.

SALUDOS  :)

11
Pues esto programando un tanque, dividiendolo en 2 partes: el cuerpo y la torreta (de forma parecida a lo que viene en la sección de artículos). Pero yo quiero que cuando la torreta no se este moviendo con las teclas que la hacen girar, no esté a la misma dirección que el tanque y este (el tanque) se empiece a mover, la torreta gire por si misma para que tome la misma dirección (vista) que el tanque. Así que hice una condicional (muuuy grande) para que la torreta tome la dirección de rotación más corta para quedar igual que la del tanque; y funciona casi perfectamente, solo que cuando el tanque está mirando a una dirección superior a 180 grados y la torreta a una dirección inferior a 180, cuando el tanque se empieza a desplazar y la torreta deviera rotar para mirar igual que el tanque, empieza a rotar al sentido contrario y cuando está mirando de manera opusta al tanque (una diferencia de 180 grados) se queda trabada allí y no se mueve al menos que el tanque mire a una direccion inferior a 180 grados o se rote la torreta con las teclas.

El código que tengo para que la torreta gire por si sola es este:

Citar
// direction= la direccion a la que mira la torreta
// obj_tanque = es el tanque, asi que indico a la direccion del tanque


if((direction<=180 && (instance_nearest(x,y,obj_tanque)).direction<=180 && direction>(instance_nearest(x,y,obj_tanque)).direction) or (direction>180 && (instance_nearest(x,y,obj_tanque)).direction>180 && direction>(instance_nearest(x,y,obj_tanque)).direction) or (direction>180 && (instance_nearest(x,y,obj_tanque)).direction<=180 && direction-180<=(instance_nearest(x,y,obj_tanque)).direction) or (direction<=180 && (instance_nearest(x,y,obj_tanque)).direction>180 && direction+180>=(instance_nearest(x,y,obj_tanque)).direction))
    {
      direction-=5
    }
    else
    {
      direction+=5
    }


Le he checado mil veces y no veo el problema; aun que como ven es un codigo grande, mas sin embargo es la misma condicion que use para la GIA 2 con mi nave para que mire siempre hacia el oponente y con ella no tuve el mismo problema  :'(
Espero que le encuentren el problema, o si necesitan una prueba con el juego, les paso la parte del programa que necesitan saber.
Ya que si tienen algun script u otro método para lograrlo, se los agradecería. Pero tengo GM7 Lite

 :(

12
Preguntas y respuestas / No cambia de sprite y no funciona la image_speed
« en: Diciembre 28, 2009, 09:17:26 pm »
En unas pruebas de juego, me encontré con un problema que no entiendo por qué ocurre y es el siguiente:
Tengo 2 sprites del personaje caminando: uno que mira a la derecha y otro a arriba, manejo los sprites correspondientes con image_xscale e image_yscale, tiene el sprite camiando a la derecha por defecto. Aquí el problema es que se supone que puse que para cuando el mouse esté entre 45º y 135º o este entre 225º y 315º de dirección del personaje cambie de sprite al que camina hacia arriba, ya después lo controlo con image_yscale, pero tal cambio no ocurre, o sea se mantiene siempre con el mismo sprite, lo que si ocurre es que realiza el image_yscale pero con el sprite de caminando a la derecha. Además de que tiene por defecto la image_speed=0.3 pero no se realiza la animación.
Aquí les pongo los códigos que puse en el step del personaje:
el sprite:  spr_personaje es el que mira a la derecha y el spr_personaje2 es el que mira a la izquierda.

Citar
image_speed=0.3

Citar
if ((point_direction(x,y,mouse_x,mouse_y)>45 && point_direction(x,y,mouse_x,mouse_y)<135) or (point_direction(x,y,mouse_x,mouse_y)>225 && point_direction(x,y,mouse_x,mouse_y)<315))
{
  image_index=spr_personaje2
}
else
{
  image_index=spr_personaje
}

Citar
if ((point_direction(x,y,mouse_x,mouse_y)>45 && point_direction(x,y,mouse_x,mouse_y)<135) or (point_direction(x,y,mouse_x,mouse_y)>225 && point_direction(x,y,mouse_x,mouse_y)<315))
{

  if (mouse_y<y)
  {
    image_yscale=1
    direction=90
  }
  if (mouse_y>y)
  {
    image_yscale=-1
    direction=270
  }
}
else
{

  if (mouse_x<x)
  {
    image_xscale=-1
    direction=180
  }

  if (mouse_x>x)
  {
    image_xscale=1
    direction=0
  }
}

Le he estado buscando el error pero no le encuentro  :-\

13
Preguntas y respuestas / problemas con script de redireccionamiento
« en: Diciembre 21, 2009, 01:45:53 am »
hola
Resulta que estoy intentando hacer un script que devuelva la dirección resultado de un objeto al rebotar contra otro (como un bloque, por ejemplo) considerando una variable que represente la resistencia que opone el objeto golpeado (en este caso la variable peso, aun que no refiere especificamente al peso real  :P ); la cosa es que ya tengo las cuentas hechas y el script listo, perooooo pasa que la dirección que toma después de la colision es algo erronea si lo consideramos desde el punto de vista real.

Lo que fallan no creo que sean los calculos que los he repasado un par de veces, lo que veo es que al considerar la fuerza que ejerce el bloque hacia el objeto (en este caso un balon) se considera la dirección desde el centro del bloque en lugar de tomar encuenta la dirección desde el punto de colision con el balon, o sea que si el balon golpea a un bloque casi por la esquina izquierda por la parte superior, no se considera que el bloque ejerce una resistencia en dirección de 90 grados sino a un grado superior como de 140 grados, lo que nos dá un ángulo más agudo en lugar de uno obtuso como deberia ser  :'(

Para que vean el problema ustedes mismos, les pongo el programa con el script y todo.

El balob se ueve con las flechas y se puede reiniciar con la tecla R y con S se detiene

Adjunto una imagen que aclara mas mi problema, en el se ve al balon golpeando al bloque y la dirección que tiene (en este caso hacia abjo) se muestra con la flecha negra, y la flecha verda muestra la fuerza que ejerce el bloque con el rebote; la primera imagen muestra la direccion que ejerce el bloque desde el centro hacia el balon, y la segunda imagen muestra el como deberia ser la direccion de la fuerza  :'(

14
Estoy haciendo un trabajillo con el Game Maker y necesito utilizar las funciones de seno, coseno y tangente pero en el manual me encontré con que devuelve (en caso del seno) el seno de x pero que x en radianes  ???
La verdad no entiendo a que se refiere con eso, yo lo que quiero es realizar calculos vectoriales, o sea tendiendo un vector, sacarle los componentes horizontales y verticales, y para eso necesito el seno y el coseno pero no entiendo eso de los radianes. Encontré despues una funcion que me convierte los radianes en grados y los grados en radianes pero no se como me pueden ayudar.
Además de que tengo otro propósito para la tangente que es sacar la inversa a la tangente, o sea tan-1 y de eso menos viene explicado en el manual  :'(
Toda via hay cosas que no entiendo de como funciona bien el GM por eso pido esta ayuda.

Desde ya gracias  ;)

15
Preguntas y respuestas / Marco en una View
« en: Noviembre 24, 2009, 02:54:15 am »
Lo que tengo es una View grande que sirve como vista del juego, además de una view muy pequeña ,pero que muestra una mayor area del room ya que la uso como un mapa, que se ve dentro de la View más grande. El problema es que quiero hacer que alrededor de la view pequeña haya algún marco para que no se llegue a confundir como parte de la view grande, o sea que sirva de separación.
No se si me doy a explicar  :(

Páginas: 1 2