Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

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.


Mensajes - Alesxanderk

Páginas: 1 2 3 4
16
Preguntas y respuestas / Re:Confrontaciones de movimiento :S
« en: Junio 18, 2017, 11:15:07 pm »
En lugar del código donde se comprueba el sentido, debes colocarlo siguiente (no recuerdo si esos eran los nombres de las variables)
Código: [Seleccionar]
if pos_path >= 1{ pos_path = 0; }

17
Preguntas y respuestas / Re:Confrontaciones de movimiento :S
« en: Junio 13, 2017, 10:38:31 pm »
Ohh, lo que debes hacer es con unas variables indicar el centro del movimiento y no usar las formas normal de los paths. Si no obtener con path_get_x();

algo así:

x = centro_x + path_get_x(path, i);
y = centro_y + path_get_y(path, i);

centro_y += v_speed;

Te dejo un adjunto con un ejemplo

18
Preguntas y respuestas / Re:Confrontaciones de movimiento :S
« en: Junio 13, 2017, 09:47:34 pm »
Puedes explicar mejor lo que intentas hacer?
Y si es posible una imagen o algo así ilustrativa

19
Gracias dibtreo por la licencia. Ya me ha llegado el mensaje y también la he registrado.   :D :)

20
Intercambio / Re:Ofrezco mi ayuda a cualquier proyecto
« en: Mayo 15, 2017, 02:13:37 am »
a mi me gustaria que me ayudes a hacer un juego 3D, pero nose si saves o puedes programar en unity?
Disculpa por contestar tanto tiempo después joa, como puedes leer en el post principal, ofrecia mi ayuda para  :GMS: no tengo concimientos de Unity.

Estamos buscando alguien que pueda hacer diseños de personajes y, si se puede, animarlos. Por si te interesa  ;D
Lo siento Bneya, como puedes leer en post principal ofrecia mi ayuda en el área de programación. No soy diseñador y tampoco animador.

21
Preguntas y respuestas / Re:image_angle no me hace ni caso
« en: Mayo 12, 2017, 04:51:58 pm »
Lo único que se me ocurre que podría estar pasando, es que el nuevo objeto tenga el mismo nombre que otro objeto que hayas creado anteriormente, por lo tanto este corrupto o tomando código que quedo por allí perdido.

Dentro de la carpeta del proyecto (documentos/gamemaker/projects/"tu-proyecto") revisa en la carpeta "objects" y con cuidado elimina los objetos que ya no estén usándose dentro del proyecto. Crea una copia del proyecto por si te cargas algo que no deberías.

Intenta de nuevo y cuentas si funciono

22
Juegos en desarrollo / Re:RogueLike Project
« en: Mayo 12, 2017, 04:26:28 pm »
puedes compartir la generación de mazmorra?, me interesa ver varios para aprender, es algo que me interesa mucho plis :B

La generación de la mazmorra es una técnica milenaria que no se le puede dar a cualquiera :v eres digna de ella? haha (te la mando por MP)

23
Te dejo una imagen:
Spoiler



Y el .gmz adjunto

24
Intenta con el codigo cambiado de esta forma:

obj_Oscuridad -  Sin sprite profundidad -1
///Draw Event

///Dibuja la oscuridad
depth = -1; //ajusto la profundidad
draw_set_color(c_black)
draw_set_alpha(1) // 1 oscuro total 0.5 poco oscuro
draw_rectangle(view_xview[0]-2,view_yview[0]-
2,view_xview[0]+view_wview,view_yview[0]+view_hview,0)
draw_set_color(c_white)
draw_set_alpha(1)
//Esto es para hacer un rectángulo negro en la view.

///Creación de la linterna
//para la apariencia de la linterna
draw_set_blend_mode(bm_add)
draw_sprite_ext(spr_Luz,0,x,y,5,5,45,c_white,0.2)
draw_sprite_ext(spr_Luz,0,x,y,1,1,0,c_white,1)
draw_set_blend_mode(bm_normal)

obj_Personaje - cuadrado verde profundidad 0.
//para que se vea el personaje.
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)

obj_Rojo - cuadrado rojo profundidad 0.

25
Juegos en desarrollo / Re:RogueLike Project
« en: Mayo 19, 2016, 12:35:22 am »
Pensandolo bien, seria bueno que fuese como un cubo pero partido por la mitad hacia lo alto, para poder ver los objetos y enemigos pegados a la pared.

26
Juegos en desarrollo / Re:RogueLike Project
« en: Mayo 18, 2016, 03:46:37 am »
// -- Actulización

- Isometric update !! los graficos seran isometricos ahora :D
- Niebla de guerra, aun falta implementar pequeños detalles.
- Corregido varios bug con el sistema de combate.
- Optimizado para mayor fluidez el sistema de micro turnos.

Me gustaria saber si alguien podria hacerme unos cuantos de sprites isometricos de 28x30, seria unos pocos tipos de suelo, paredes, enemigos, personajes, serian sprites del tipo base para modificar o agregar para poder hacer variedad en el juego  :) :D .

27
Disculpa el que no haya contestado antes, la he pasado un poco ocupado  :-[

http://gmc.yoyogames.com/index.php?showtopic=317121 - Gm .net Layer (Post sobre la dll).

En el link anterior encontré la información que he mencionado y tambien la dll, no soy muy bueno con el ingles así que no entiendo todo, pero trataré de traducir lo necesario para que puedas crear tus propias dll  :D
Código: [Seleccionar]
layer_init() - Llamar antes de usar otras funciones, carga la dll que nos permitira trabajar con nuestra dll.
layer_loaddll (DLL NAME) - Regresa la id de la dll (nuestra, hecha en .net).
layer_createinstance (DLL HANDLE, NAMESPACE . NAME CLASS, ARGCOUNT, args...) - Regresa la id de la "instancia creada con la clase que querramos". (Mostly you have no extra arguments.) El segundo argumento debe de tener la siguiente forma: "Namespace.Classname". El constructor se ejecutara con los argumentos datos (si los hay). Se pueden hcar miltiples instancias de una clase.
layer_function (INSTANCE HANDLE, FUNCTION NAME, RETURNTYPE [ty_real/ty_string],ARGCOUNT, args) - Ejecuta la funcion que deseas, sobrecargas (Overloads) son compatibles.

La dll que tu hagas deben de cumplir los siguientes requerimientos:
    * Para recibir/devolver numeros necesitas usar (System.)Double.
    * Para recibir/devolver "strings" necesitas usar (System.)String.
    * Las funciones a usar y la clase en si deben de ser Publicas(Public) y no Estaticas(Static).
    * Solo trabajar con 8 argumentos al mismo tiempo.
    * The type of the arguments is automatically detected. // no se bien que dice alli.

Ahora hare algunas aclaraciones que espero puedan ayudarte y ayudar a otros.

Gamemaker trabaja con dll hechas en c y c++ por los estandares que estos siguen, al crear una "función externa" se debe de especificar el "calltype":
 * - dll_cdecl - Para C o C++.
 * - dll_stdcall - Este es un estandar diferente, desconozco cual es y como usarlo.

Los errores que te saltaban en ventanas de alerta de Windows, es señal de que ibas en buen camino  ;D  por que cargaba la dll correctamente (la que se usa como mediadora), pero habia un pequeño problema del cual no me percate al momento de leerlos si no hasta despues y es que esta dll fue hecha hace ya tiempo (2007) y no soporta dlls hechas en .NetFrameWork 4.0, debes de usar el 3.0, al menos este me funcionó e hice mi primera dll  :love: ahora podre hacer una calculadora con ella :v  XD.

Algo más, debido a que no se usar para nada VB, C o C++, utilice C# que lo manejo mejor y conozco que tiene el "namespace" que pide la funcion "layer_createinstance()".

Espero haberte ayudado y solucionado el problema

28
Consegui que funcionara el Sample que esta dentro del .zip

Despues de trastarlo un poco, se me ocurrio meter todas las dlls que vienen en el .zip y funcionó  :D a medias  :-\ dentro del object0 en los eventos de "clic mouse" llama un script al cual le da 5 argumentos cuando se supone deberian de ser 4. Por lo que tuve que comentar esos codigos en lo que veo como arreglarlo.

El Sample.gmk lo abri con GM:S, algo más el tipo de dato que debes de usar es Double, este es distinto a float, por lo que al poner float, te seguiria dando error


29
Investigando encontré información que podria serte util, si no has encontrado solucion por tu cuenta haha  XD

Al parecer no se puede usar los lenguajes ".net" para crear una dll que funcione con Game Maker. Ha de ser por eso que las dll del Marketplace estan hechas en "c++" ó "c".

Aun asi investigando en internet encontre una "dll" mediadora para poder usar "dll's hechas en .net". Otro punto es que Game Maker no trabaja con numeros int, short, etc., parece funcionar solo con Double, por lo que el "Return 33" te producia el error o eso lei.

Te dejo un .zip adjunto donde esta la dll que menciono y un ejemplo de Game Maker para que veas como funciona, no he tenido tiempo de probarlo asi que no te puedo asegurar que funcione bien.

30
Espero que los ya un poco experimentados en GM:S me ayuden a optimizar o rehacer de mejor forma un script de niebla de guerra y que al mismo tiempo uso para la IA de mi juego RogueLike Project.

El problema es que el script es muy pesado para ejecutarlo en varias instancias, aunque no lo hago en todas al mismo tiempo ni en los eventos steps.

Les explico como lo uso:
- Es un sistema de micro turnos en los cuales, el objeto controlador va activando una alarma de las distintas instancias enemigas, una a una. En esa alarma se ejecuta el script en cuestión para buscar al heroe y así determinar si estoy en su rango visible o no, para perseguirme o en caso de estar a su lado atacarme.

Dejo acá el codigo para quien quiera verlo, en los adjuntos dejo un ejecutable para que vean como funciona, con el boton derecho del ratón creas "Paredes", con el izquierdo creas "Suelos" y con WASD el personaje se mueve. Tengo intensión de publicar el script en su apartado correspondiente una vez logre optimizarlo.

NOTA: Procuren no acercarse demasiado al borde o les saltara error por que uso un array para saber que hay en cada tile de 32x32 del mapa.

Spoiler
Código: [Seleccionar]
Rep=0;ObZ1=false;ObZ2=false;ObZ3=false;ObZ4=false;Vuelta=0;
zx = x/32;
zy = y/32;
repeat(8){
    switch(Vuelta){
        case 0: Rep=5;Ext=4; break;case 1: Rep=5;Ext=3; break;
        case 2: Rep=4;Ext=3; break;case 3: Rep=4;Ext=2; break;
        case 4: Rep=3;Ext=1; break;
        case 5: Rep=2;Ext=0; break;case 6: Rep=2;Ext=0; break;
        case 7: Rep=1;Ext=0; break;
    }
    if Mundo[zx,zy+Vuelta]==1{
        if ObZ1==false{
            draw_sprite(spr_blanco,0,zx*32,(zy+Vuelta)*32);
            Ob1=false;j=0;k=0;Int=1;
            repeat(Rep){
                if Mundo[zx+j,zy+(Vuelta+k)]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx+j)*32,(zy+Vuelta+k)*32);
                        if Int<=Ext{
                            if Mundo[zx+j,zy+(Vuelta+k)+1]==1{
                                draw_sprite(spr_blanco,0,(zx+j)*32,(zy+Vuelta+k+1)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                j++;k++;Int++;
            }
            Ob1=false;j=0;k=0;Int=0;
            repeat(Rep){
                if Mundo[zx+j,zy+(Vuelta+k)]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx+j)*32,(zy+Vuelta+k)*32);
                        if Int<=Ext{
                            if Mundo[zx+j,zy+(Vuelta+k)+1]==1{
                                draw_sprite(spr_blanco,0,(zx+j)*32,(zy+Vuelta+k+1)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                j--;k++;Int++
            }
        }
    }
    else if ObZ1==false{ObZ1=true;}
    if Mundo[zx,zy-Vuelta]==1{
        if ObZ2==false{
            draw_sprite(spr_blanco,0,zx*32,(zy-Vuelta)*32);
            Ob1=false;j=0;k=0;Int=0;
            repeat(Rep){
                if Mundo[zx+j,zy-(Vuelta+k)]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx+j)*32,(zy-(Vuelta+k))*32);
                        if Int<=Ext{
                            if Mundo[zx+j,zy-(Vuelta+k)-1]==1{
                                draw_sprite(spr_blanco,0,(zx+j)*32,(zy-(Vuelta+k)-1)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                j++;k++;Int++;
            }
            Ob1=false;j=0;k=0;Int=0;
            repeat(Rep){
                if Mundo[zx+j,zy-(Vuelta+k)]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx+j)*32,(zy-(Vuelta+k))*32);
                        if Int<=Ext{
                            if Mundo[zx+j,zy-(Vuelta+k)-1]==1{
                                draw_sprite(spr_blanco,0,(zx+j)*32,(zy-(Vuelta+k)-1)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                j--;k++;Int++;
            }
        }
    }
    else if ObZ2==false{ObZ2=true;}
    if Mundo[zx+Vuelta,zy]==1{
        if ObZ3==false{
            draw_sprite(spr_blanco,0,(zx+Vuelta)*32,zy*32);
            Ob1=false;k=0;i=0;Int=0;
            repeat(Rep){
                if Mundo[zx+(Vuelta+k),zy+i]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx+Vuelta+k)*32,(zy+i)*32);
                        if Int<=Ext{
                            if Mundo[zx+(Vuelta+k)+1,zy+i]==1{
                                draw_sprite(spr_blanco,0,(zx+Vuelta+k+1)*32,(zy+i)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                k++;i++;Int++
            }
            Ob1=false;k=0;i=0;Int=0;
            repeat(Rep){
                if Mundo[zx+(Vuelta+k),zy+i]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx+Vuelta+k)*32,(zy+i)*32);
                        if Int<=Ext{
                            if Mundo[zx+(Vuelta+k)+1,zy+i]==1{
                                draw_sprite(spr_blanco,0,(zx+Vuelta+k+1)*32,(zy+i)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                k++;i--;Int++;
            }
        }
    }
    else if ObZ3==false{ObZ3=true;}
    if Mundo[zx-Vuelta,zy]==1{
        if ObZ4==false{
            draw_sprite(spr_blanco,0,(zx-Vuelta)*32,zy*32);
            Ob1=false;i=0;k=0;Int=0;
            repeat(Rep){
                if Mundo[zx-(Vuelta+k),zy+i]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx-(Vuelta+k))*32,(zy+i)*32);
                        if Int<=Ext{
                            if Mundo[zx-(Vuelta+k)-1,zy+i]==1{
                                draw_sprite(spr_blanco,0,(zx-(Vuelta+k)-1)*32,(zy+i)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                k++;i++;Int++;
            }
            Ob1=false;k=0;i=0;Int=0;
            repeat(Rep){
                if Mundo[zx-(Vuelta+k),zy+i]==1{
                    if Ob1==false{
                        draw_sprite(spr_blanco,0,(zx-(Vuelta+k))*32,(zy+i)*32);
                        if Int<=Ext{
                            if Mundo[zx-(Vuelta+k)-1,zy+i]==1{
                                draw_sprite(spr_blanco,0,(zx-(Vuelta+k)-1)*32,(zy+i)*32);
                            }
                        }
                    }
                }
                else if Ob1==false{Ob1=true;}
                k++;i--;Int++;
            }
        }
    }
    else if ObZ4==false{ObZ4=true;}
    Vuelta++;
}

Páginas: 1 2 3 4