Enero 27, 2020, 04:53:12 AM Ultima modificación: Febrero 09, 2020, 03:07:15 AM por Johann
Nombre de los creadores: Fabriyin, TheWood, TioGilito22 y mi persona. En colaboración se logró el objetivo. Ver más
Breve descripción de su función: Indicar la versión de Game maker que se esté usando.
Versión GM utilizada: Todas
Código del script:

[gml]{

BATCH="
goto inicio
"
repeat(score=0)
{
version=0
font_color=0.54

//color fondo
color_xx=draw_getpixel(0,0)
//caracter
draw_text(0,0,string(chr(126)))

//evaluador
contadorxx=0
iy=0
repeat(5)
{
ix=0
repeat(5)
{
repeat(draw_getpixel(5+ix,5+iy)=color_xx)contadorxx+=1
ix+=1
}

iy+=1
}

antiguas=0
//#antiguas=1

repeat(antiguas)
{
c1="Html"+string("5")
c2=(c1="Html"+"0")
c3=solid
c4=(solid=0)
c5="include"+string("<iostream>")
c6=(c5="include<iostream>")
repeat(c2*c3)version=1
repeat(c2*c4)version=2
repeat(c6)version=3
}

//#bloquear_codigo='
repeat(0){/*}
version=4
//*/}

repeat(version=0){
repeat(font_color=1){version=5}
}

repeat(font_color<1){
version=6
repeat(contadorxx=17){version=7}
repeat(string_length(string(game_id))=9){version=8}
repeat(self=1000000){version="HTML5"}
repeat(instance_id=-4){version="Studio 1"}
repeat(string_length(string(game_id))=1){version="Studio 2"}
}

//fin_bloquear_codigo='


score+=1
}

repeat(antiguas=0)
{
texto="Estas usando Game Maker "+string(version)
draw_text(0,0,texto)
}

repeat(antiguas)
{
texto="Estas usando Game Maker "
draw_text(0,0,texto)
texto=version
draw_text(150,0,texto)
}

BATCH="
:inicio
cls
@echo off
echo Estas usando el CMD de windows
pause>null
"
}[/gml]

Colocar este script en un evento draw o dibujo.  Se creará una variable llamada versión que nos indicará el numero o nombre del game maker usado.

Nota: Este script es un código híbrido que trabaja tanto en Game Maker como en el CMD de windows. Para hacerlo funcionar en el cmd de windows tenemos que guardarlo en un block de notas y colocarle la extencion ".bat". Ejemplo: get_version.bat

Anexos:


También se agradece realmente la ayuda de Kostra, Jucarave y eduardo960. Aunque por motivos diversos no logramos intercambiar mucha información. Gracias a Black_Cat por indicar que el código presentaba una falla.
Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.

tiene un error y es que lo uso bajo  :GM8: y me dice que es  :GM7:  :-[



Hola, gracias por comentar.

El error fue corregido
Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.

Lo he probado con el gamemaker 6.1 y el mensaje dice que mi versión es  :GM7:     :'(

Estuve dándole vueltas y quizás podemos aprovecharnos de un bug de  :GM6: para detectar dicha versión, pero no sé si está presente en versiones más viejas...

>> median(1,3,5) 1 es devuelto en vez de 3

if (median(1,3,5)==1){version=6}

El error se corrigió en  :GM7:

#5 Enero 30, 2020, 02:24:37 PM Ultima modificación: Enero 30, 2020, 03:28:08 PM por dixon
Hola, gracias por encontrar ese fallo.

la función median() existe solo a partir de la versión 6, si la aplicamos el verificador de errores no la reconocerá en las versiones viejas y dará error. Aunque puede bloquearse su verificación en Gmk4, Gmk3, Gmk2 y Gmk1. El problema es que no puede bloquearse su verificación en Gmk5 porque el visor de errores es diferente a partir de esa versión.

Error en Game maker 5


Pero si existe otra llamada mean() y no nos traerá problemas porque existe en Gmk5 y aunque no existiese en versiones viejas puede bloquearse su verificación, el problema está que si en Gmk 6 el valor será diferente al Gmk 7.

El siguiente script nos dará el valor de mean() al igual que otras funciones para compararlas. Solo debe colocarse en un evento draw y al ejecutar presionar la tecla ENTER para hacer una captura de pantalla, luego podremos subirla. Aunque es mejor subir una imagen jpg porque son más ligeras.

{

repeat(score=0)
{
screen_width=479.5
screen_height=383.5
font_color=0.54
score+=1
}

//dibujo
dy=0
dx=0

texto="screen_width: "+string(screen_width)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="screen_height: "+string(screen_height)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="id: "+string(id)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="instance_id: "+string(instance_id)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="game_id: "+string(game_id)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="string_length(string(game_id)): "+string(string_length(string(game_id)))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="font_color: "+string(font_color)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="self: "+string(self)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="other: "+string(other)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="(self=100000): "+string((self=100000))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="(other=100000): "+string((other=100000))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="(self=other): "+string((self=other))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="c_black: "+string(c_black)
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}


texto="chr(126): "+string(chr(126))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="chr(127): "+string(chr(127))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="(chr(127)=''): "+string((chr(127)=''))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="chr(128): "+string(chr(128))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="(chr(128)='€'): "+string((chr(128)='€'))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="chr(129): "+string(chr(129))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="chr(130): "+string(chr(130))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="(chr(129)=chr(130)): "+string((chr(129)=chr(130)))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="(1.49+0.0000000000000001): "+string((1.49+0.0000000000000001))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="script_get_name(0): "+string(script_get_name(0))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="script_get_name(-1): "+string(script_get_name(-1))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="window_handle(): "+string(window_handle())
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="median(1,3,5): "+string(median(1,3,5))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

texto="mean(1,3,5): "+string(mean(1,3,5))
draw_text(dx,dy,texto)
dy+=20;if(dy>300){dy=0;dx+=300}

if(keyboard_check(13))
{
foto_pantalla=get_save_filename("screenshot|*.png", "");

if(string_length(foto_pantalla)>4)
{
ex1=string_count(".png",foto_pantalla)
ex2=string_count(".gif",foto_pantalla)
ex3=string_count(".jpg",foto_pantalla)
ex4=string_count(".bmp",foto_pantalla)

if(ex1+ex2+ex3+ex4=0)
{
foto_pantalla+=".png"
}
screen_save(foto_pantalla);
}

}

}


Esta es la imagen obtenida en Game Maker 7.
Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.

#6 Enero 30, 2020, 08:07:18 PM Ultima modificación: Enero 30, 2020, 08:15:09 PM por TioGilito22
Aquí te muestro mis resultados en gm6:

#7 Enero 31, 2020, 08:25:06 PM Ultima modificación: Febrero 04, 2020, 08:42:13 PM por dixon
Hola.

Mediante su ayuda hemos logrado corregir el problema con Gmk6, agregando al script un proceso que utilizando la función draw_getpixel se escanea el caracter 126 e identifica la diferencia entre Gmk7 y Gmk6. El problea está en que si se convierte un .exe de Gmk6 para que se pueda ejecutar en windows superiores a XP, el script devolverá que es Gm7 porque deja de existir la diferencia entre caracteres. Para finalizar, el programa que permite que un .exe de Gmk6 se ejecute en versiones superiores a Windows xp se llama GM_Convert_Game y está disponible aquí.
Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.