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

751
Si tienes el GM original (aunque sea la versión standard) puedes ir al cuadro de notificaciones ocultas de windows (windows 7 xD) que es este:



Ir al iconito del GM y hacer click derecho en él, luego presionas "Check for updates". Si hay una versión diponible (que la hay xD) te enviará a descargarla (creo xD)
752
Pues de parte mía no habrá ningún ejemplo :B
Te voy a explicar, en el evento draw GUI normalmente haces esto:
[gml]
draw_sprite(el_sprite,0,32,32);
[/gml]
(Ignora las posiciones xD)

Pero ese es el error. Tanto en la GUI como con las virtual key las posiciones absolutas son un error. Debes usar posiciones relativas al display
De esta manera yo lo hago:
[gml]
var w = display_get_gui_width(); //Sacamos el anchor del display del dispositivo
var h = display_get_gui_height(); //Sacamos el largor del display del dispositivo
var x32 = w / (w/32); //Sacamos el valor que equivaldría a 32 pixeles en el display del disposivito
var y32 = h / (h/32); //Lo mismo que lo de arriba sólo que en vertical

/*
Ahora imaginemos que el sprite que quieres dibujar mide 64*64:
*/

draw_sprite_stretched(el_sprite,0,x32,y32,x32*2,y32*2);//Dibujamos el sprite en las posiciones 32 y 32 DEL DISPLAY DEL DISPOSITIVO, y el sprite está dimensionado a 32*2 (64)px DEL DISPLAY DEL DISPOSITIVO. Lo que hace que se escale como debería en cualquier resolución :B
[/gml]

(Lee los comentarios (texto en verde :v) del código)
753
Creo que Spine y las imágenes vectorizadas no tienen nada de relación, porque las imágenes vectorizadas se pueden cargar normalmente al GMS como cualquier otro sprite (pero los sprites vectorizados deben estar en SWF, y además no se pueden editar en GM  :-X ) sin necesidad de tocar a Spine xD
754
Naah, no es naah de eso. Lo que pasa es que los elementos en GUI, al igual que las virtual ley, deben dibujsrse usando como referencia las funciones display_get_gui_width(), y display_get_gui_height()
755
PUES ACTUALIZALA! xD
La última versión estable del GM es la 1.4.1657, y con una versión tan antigua como la 1.2 no me extraña que tengas esos problemas
757
Mi tablet tiene esa misma resolución, pero no es la más apropiada, ya que la gran mayoría de dispositivos tienen una resolución de 1280*720, o al menos con esa relación de aspecto (16:9)
759
Anuncios / Re:Busco Scripter (pago 5 y 10 dolares)
Enero 31, 2016, 04:37:48 PM
¿Cómo sabes que si alguien sabe hacerlo no le tomará una hora si tú no lo sabes hacer? O_o (Supongo que no lo sabes hacer porque por eso estás solicitando quién lo haga xD)
760
Guenas, comencé un bonito proshectico muy sensual (este sí lo termino porque lo termino XD ), y he progresado muy bien. El juego está casi, CASI, ¡¡¡CASI!!! listo (en el sentido del motor, no los niveles y eso xD).
Le intenté implantar un sistema de "teletransporte". Que la idea original fuera que funcionara así:

Se tienen varias instancias de "oTeleport" (el objeto de teletransporte xD).
Todas las instancias tienen un ID de teletransporte, y hay parejas de estos, es decir que cada dos instancias tienen el mismo ID para teletransportarse de una a la otra.
Al colisionar con una, se busca a otra instancia con su misma ID de teletransporte, y si la encuentra, teletransportar al player

Ahora los códigos:
En el create del oTeleport tengo esto:
[gml]
teleid = 0;
teled = true;
[/gml]

Y en el evento collision con el oTeleport del player tengo esto:
[gml]
var g = other.teleid;
var d = ds_list_create();
var xX, yY, j, m;
var otherid = other.id;
with oTeleport
{
    if id != otherid
     {
        ds_list_add(d,id);
     }
}

for(i=0;i<ds_list_size(d);i++)
{
    m = d[| i];
    if m.teleid == g and m.id != otherid
     {
        xX = m.x;
        yY = m.y;
        j = m;
        break;
     }
}
ds_list_destroy(d);

if instance_exists(j) and j.teled == true
{
    x = xX;
    y = yY;
    j.teled = false;
}
[/gml]
La variable "teleid" dice a cuál objeto teletransportar el player. Yo configuro estos valores en el Creation Code de cada instancia, aunque por defecto el valor es 0. Tengo dos instancias separadas entre sí, y ambas tienen "teleid" en 1

Más o menos explicado el código hace esto:
Citar
-->se sacan los valores "id" y "teleid" del objeto que colisionó con el player
-->Se crea una lista para almacenar todas las "id" de las instancias de oTeleport
-->Se revisan cada instancia de oTeleport, y si el "id" de la instancia que se está revisando actualmente no es el mismo de la instancia que colisionó con el player, éste se agrega a la lista
--> Se examina cada elemento que quedó guardado en la lista
-->Si el elemento tiene el mismo valor en "teleid", guardar en xX & yY la posición del elemento, y guardar la id del mismo en la variable "j".
-->Si la instancia con la id "j" existe, y éste no ha sido activado (variable "teled"), teletransportar al player hacia esta instancia y desactivar a la que colisionó con él primero.

Pero sencillamente me deja el player en donde está. Pero veo que lo mueve un poquito, como si se tomara a sí mismo como "j", pero eso lo veo imposible porque ni siquiera se agregó a la lista.
Decidí poner un show_message después de las acciones importantes, puse los mensajes así:

[gml]
var g = other.teleid;
show_message(string(g));
var d = ds_list_create();
var xX, yY, j, m;
var otherid = other.id;
show_message(string(otherid));
with oTeleport
{
    show_message(string(id));
    if id != otherid
     {
        ds_list_add(d,id);
        show_message(string(id) + " agregado a la lista");
     }
    else
        show_message(string(id) + " no agregado a la lista");
}

for(i=0;i<ds_list_size(d);i++)
{
    m = d[| i];
    show_message("Instancia numero "+string(i+1)+" probando#id: "+string(m.id)+"#teleid: "+string(m.teleid));
    if m.teleid == g and m.id != otherid
     {
        xX = m.x;
        yY = m.y;
        j = m;
        show_message("Se ha encontrado:#id: "+string(m.id)+"#x: "+string(xX) + "#y: " + string(yY));
        break;
     }
}
ds_list_destroy(d);

if instance_exists(j) and j.teled == true
{
    x = xX;
    y = yY;
    j.teled = false;
}
[/gml]

Y el resultado fue este:

Citar
1

-----------------
110117

-----------------
110117

-----------------
110117 no agregado a la lista

-----------------
110118

-----------------
110118 agregado a la lista

-----------------
Instancia numero 1 probando
id: 110118
teleid: 1

-----------------
Se ha encontrado:
id: 110118
x: 432
y: 432

Efectivamente, los datos que me arrojan los mensajes coinciden con la instancia a la que deseo que el player se teletransporte, pero sencillamente NO lo hace.

¿Alguien logra descubrir cuál es el error?
Muchas gracias de antecabeza :B
761
Porque este tema no tiene que ver con tu duda xD
Claro, si te refieres a esta:
Cita de: Tigerito019 en Enero 30, 2016, 06:47:53 PM
Hola, he estado viendo el tema y he probado el ejemplo que enviaron, pero tengo una duda, cómo hago para hacer que el personaje se mueva hacia arriba y abajo? (Mi juego no es de plataforma, sino vista desde arriba, por eso quiero que se mueva en las 4 direcciones). Agradecía y me ayudaran con esto. De antemano, gracias.  :D :D
762
Pues es lo mismo xD, sólo cambias el evento Collision por Key Press, y en el código agregas una condición algo así:
[gml]
if place_meeting(x,y,obj_carro)
{
//Tu código para subirte y bajarte
}
[/gml]
Y claro, debes aprender GML si quieres hacer un juego de calidad, porque las librerías y el DnD en general es una mierda xD
763
pos puedes hacer una lista con las ID de las bolas que han entrado, y detectar si una de esas bolas aún sigue o no dentro del sector.

Por ejemplo, en el create de un objeto sin sprite ni nada:
[gml]
bolas_adentro = ds_list_create();
[/gml]

Y en su step:
[gml]
obj = collision_rectangle(x, y, x+128, y+128, obj_bola, false, false);
if ds_list_find_index(bolas_adentro,obj) == -1
ds_list_add(bolas_adentro,obj);

for(var i=0;i<ds_list_size(bolas_adentro);i++)
{
j = bolas_adentro[| i];
if j.x > (x+128) or j.x < x or j.y > (y+128) or j.y < y
{
ds_list_destroy(bolas_adentro,i);
}
}
[/gml]

EDIT: le erré al código xD, ya corregí, revísalo de nuevo :B
764
Noticias / Re:Concurso Comunidad Game Maker 2016
Enero 30, 2016, 12:54:52 AM
en GM studio puedes elegir el formato "Single Runtime Executable", con el que te genera un ejecutable sin instalador :v
765
Sí, los archivos de guardado *.ini pueden tener cualquier extensión, incluso una propia, desde que no sea una extensión del sistema como *.dll, *.exe o *.key

Ejemplo:
[gml]
ini_open("MiArchivoDeGuardado.olakasen");
ini_close();
[/gml]