Noviembre 17, 2019, 01:36:43 AM Ultima modificación: Abril 25, 2021, 07:27:50 AM por dixon
Nombre del creador:  3dgeminis, Johann, Arcadian, somnus, Clamud y mi persona. En colaboración se logró el objetivo. Ver más
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


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.


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é.