Nombre del creador: 3dgeminis, Johann, Arcadian, somnus, Clamud y mi persona. En colaboración se logró el objetivo. Ver más (https://www.comunidadgm.org/preguntas-y-respuestas/como-lograr-un-hola-mundo-solucionado-en-parte/msg138561/#msg138561)
Breve descripción de su función: ejecuta el código que se encuentre en una cadena de texto. Solo soporta una función a la vez la cual puede ser: draw_text, draw_line o draw_circle.
Versión GM utilizada: Desde la versión 4.3c (March 4, 2003) hasta la studio 2
(http://imgfz.com/i/oPcf8D7.png)
Código del Script:
[gml]
//posicion del primer parentesis
parentesis=string_pos("(",argument0);
funcion=string_copy(argument0,1,parentesis-1)
//Escaner de funciones
argumentos=string_count(",",argument0);//contando cantidad de argumentos de la funcion
for(i=0;i<=argumentos;i+=1)
{
caracter_inicial=",";
if(i=0){caracter_inicial="("}
caracter_final=",";
if(i=argumentos){caracter_final=")"}
argument0=string_copy(argument0,string_pos(caracter_inicial,argument0)+1,string_length(argument0));
argumento=string_copy(argument0,1,string_pos(caracter_final,argument0)-1);
//quitando comillas
argumento=string_replace_all(argumento,'"',"");
argumento=string_replace_all(argumento,"'","");
}
//variables de sistema
for(i=0;i<=argumentos;i+=1)
{
if(argumento="mouse_x"){argumento=string(mouse_x)}
if(argumento="mouse_y"){argumento=string(mouse_y)}
if(argumento="score"){argumento=string(score)}
}
if(funcion="draw_text")
{
dx=real(argumento[0]);
dy=real(argumento[1]);
draw_text(dx,dy,argumento[3]);
}
if(funcion="draw_line")
{
x1=real(argumento[0]);
y1=real(argumento[1]);
x2=real(argumento[2]);
y2=real(argumento[3]);
draw_line(x1,y1,x2,y2);
}
if(funcion="draw_circle")
{
cx=real(argumento[0]);
cy=real(argumento[1]);
cr=real(argumento[2]);
ca=10;//angulos internos del circulo
cdm=30;
i=0;
repeat(360/ca)
{
i+=ca
cd=i+cdm
p1x=floor((cx+(cr)*cos(cd*pi/180)));
p1y=floor((cy-(cr)*sin(cd*pi/180)));
p2x=floor((cx+(cr)*cos((cd+ca)*pi/180)));
p2y=floor((cy-(cr)*sin((cd+ca)*pi/180)));
draw_line(p1x,p1y,p2x,p2y);
}
}
[/gml]
Debe colocarse en un evento draw o dibujo.
Ejemplo1 : execute_string('draw_text(0,0,"Hola Mundo")')
Esto mostrará un Hola mundo en las coordenadas especificadas
Ejemplo2 : execute_string('draw_line(0,0,100,100)')
Esto mostrará una linea en las coordenadas especificadas.
El draw_text no soporta el caracter positivo (+), tampoco soporta la funcion string() y no reconoce las variables predeterminadas. Está en proceso de desarrollo.
Ejemplo de error: execute_string('draw_text(0,0,"La posicion x es: "+string(x))')
Esto dará un error porque no entiende eso, aún tengo que mejorarlo.