Nombre del creador: REYES DAVILA
Breve descripción de su función: conjunto de scripts explicados más abajo
Versión GM utilizada: GM4 - en proceso de compatibilidad, se pretende compatibilidad hasta la versión studio 2
1. numero_mayor(str,index).
2. numero_menor(str,index).
3. orden_alfabetico(str,index).
4. string_mayuscula(str).
5. string_minuscula(str).
6. string_tilde(str).
7. text_scaner(string,w).
Códigos de los Scripts:
1. numero_mayor(str,index): en str se coloca la cadena de números que se quiere ordenar y en index se coloca el número a visualizar, si no se especifica el index, devuelve la cadena ordenada de mayor a menor.
(https://image.ibb.co/bwWWCq/numero-mayor.png) (https://imgbb.com/)
//el numero mayor.
//ordena los numeros de mayor a menor
//numero_mayor(str,index) en str se coloca la cadena de texto con los numeros a ordenar en index se coloca el numero de la posicion que queremos, si no se especifica nada devuelve una cadena con los numeros ordenados.
//ejemplo string0("6 7 88 109 1 4 66 11 43"); esto te devuelve un string ordenado de mayor a menor.
//ejemplo2 string("4 5 3 3 33 22 6 7 88 43 1 5", 3); esto te devuelve el numero en la posición numero 3 de los numeros ordenados de mayor a menor.
//crea los arrays y las variables siguientes:
//numero_n: cantidad de numeros
//numero[num]: numero en la posicion num sin ordenar
//numero_id[num]: posicion que tiene el numero antes de ordenarse
//numero_pos[num]: posicion del numero despues de ordenarse
//numero_org[num]: numero en la posicion num despues de ordenado
//administrador de numeros
numero_n=0
numero_str=""
i2=1
for(i=1;i<=string_length(argument0);i+=1)
{
numero=string_copy(argument0,i,1)
numero_pre=string_copy(argument0,i-1,1)
if(numero!=" ")numero_str+=numero
if(numero_pre!=" " && numero=" " || i=string_length(argument0))
{
numero_n+=1
numero[i2]=real(numero_str)
numero_id[i2]=i2
numero_str=""
i2+=1
}
}
//organizando numeros
for(i=1;i<=numero_n;i+=1)
{
numero_pos[i]=1
for(i2=1;i2<=numero_n;i2+=1)
{
if((i!=i2) && (numero[i]<numero[i2])){
numero_pos[i]+=1}
if((i!=i2) && (numero[i]=numero[i2])){
if(numero_id[i]<numero_id[i2])numero_pos[i]+=1}
}
}
//ordenando numeros
i2=1
for(i=1;i<=numero_n;i+=1)
{
for(i2=1;i!=numero_pos[i2];i2+=1){};
numero_org[i]=numero[i2]
}
//creando return
str2=""
for(i=1;i<=numero_n;i+=1)
{
str2+=string(numero_org[i])+" "
}
if(!argument1)
{
return str2
}
else
{
return numero_org[argument1]
}
2. numero_menor(str,index): en str se coloca la cadena de números que se quiere ordenar y en index se coloca el número a visualizar, si no se especifica el index, devuelve la cadena ordenada de menor a mayor.
(https://image.ibb.co/eM6bdV/numero-menor.png) (https://imgbb.com/)
//el numero menor.
//ordena de menor a mayor los numeros
//numero_menor(str,index) en str se coloca la cadena de texto con los numeros a ordenar en index se coloca el numero de la posicion que queremos, si no se especifica nada devuelve una cadena con los numeros ordenados.
//ejemplo string0("6 7 88 109 1 4 66 11 43"); esto te devuelve un string ordenado
//ejemplo2 string("4 5 3 3 33 22 6 7 88 43 1 5", 3); esto te devuelve el numero en la posición numero 3 de los numeros ordenados de menor a mayor.
//crea los arrays y las variables siguientes:
//numero_n: cantidad de numeros
//numero[num]: numero en la posicion num sin ordenar
//numero_id[num]: posicion que tiene el numero antes de ordenarse
//numero_pos[num]: posicion del numero despues de ordenarse
//numero_org[num]: numero en la posicion num despues de ordenado
//administrador de numeros
numero_n=0
numero_str=""
i2=1
for(i=1;i<=string_length(argument0);i+=1)
{
numero=string_copy(argument0,i,1)
numero_pre=string_copy(argument0,i-1,1)
if(numero!=" ")numero_str+=numero
if(numero_pre!=" " && numero=" " || i=string_length(argument0))
{
numero_n+=1
numero[i2]=real(numero_str)
numero_id[i2]=i2
numero_str=""
i2+=1
}
}
//organizando numeros
for(i=1;i<=numero_n;i+=1)
{
numero_pos[i]=1
for(i2=1;i2<=numero_n;i2+=1)
{
if((i!=i2) && (numero[i]>numero[i2])){
numero_pos[i]+=1}
if((i!=i2) && (numero[i]=numero[i2])){
if(numero_id[i]>numero_id[i2])numero_pos[i]+=1}
}
}
//ordenando numeros
i2=1
for(i=1;i<=numero_n;i+=1)
{
for(i2=1;i!=numero_pos[i2];i2+=1){};
numero_org[i]=numero[i2]
}
//creando return
str2=""
for(i=1;i<=numero_n;i+=1)
{
str2+=string(numero_org[i])+" "
}
if(!argument1)
{
return str2
}
else
{
return numero_org[argument1]
}
3. orden_alfabetico(str,index): en str colocas el conjunto de palabras que desees organizar alfabéticamente y en index colocas el numero de la palabra que quieres ver ya ordenada, si en index no se especifica nada devuelve una cadena ordenada.
(https://image.ibb.co/nJPUyV/orden-alfabetico.png) (https://imgbb.com/)
//orden_alfabetico(str,index): en str colocas el conjunto de palabras que desees organizar alfabéticamente y en index colocas el numero de la palabra que quieres ver ya ordenada, si no se especifica nada devuelve una cadena ordenada.
//devuelve las siguientes variables y arrays
//palabra_numero: cantidad de palabras encontradas.
//palabra[num]: palabra en la posicion num antes de ordenar
//palabra_id[num]: posicion que tiene la palabra en la posicion num antes de ordenar.
//palabra_letra[num]: primera letra de la palabra num antes de ordenar.
//palabra_pos[num]: posicion de la palabra despues de ordenar
//palabra_ordenada[num]: palabra en la posicion num despues de ordenar.
b1=0
b3=0
kbk=0
contador=0
//ADMINISTRADOR DE PALABRAS
palabra_ram=""
i2=1
for(i=1;i<=string_length(argument0);i+=1)
{//inicio for L1
letra=string_copy(argument0,i,1)
letra_pos=string_copy(argument0,i-1,1)
if(letra!=" ")palabra_ram+=letra
if(letra=" " && letra_pos!=" " || i=string_length(argument0))
{
palabra[i2]=palabra_ram
palabra_id[i2]=i2
palabra_letra[i2]=string_copy(palabra[i2],1,1)
if(ord(palabra_letra[i2])>=91 && ord(palabra_letra[i2])<=122)palabra_letra[i2]=chr(ord(palabra_letra[i2])-32)
palabra_ram=""
if(i<string_length(argument0))i2+=1
}
}
palabra_numero=i2
//organizador de palabras
for(i=1;i<=palabra_numero;i+=1)
{
palabra_pos[i]=1
for(i2=1;i2<=palabra_numero;i2+=1)
{//inicio for L2
ord1=ord(palabra_letra[i])
ord2=ord(palabra_letra[i2])
id1=palabra_id[i]
id2=palabra_id[i2]
if(i!=i2 && ord1 > ord2){palabra_pos[i]+=1}
if(i!=i2 && ord1 = ord2)
{ //inicio if L3
if(palabra[i]=palabra[i2])
{
if(id1>id2){palabra_pos[i]+=1}
}
else
{//inicio else L4
if(string_length(palabra[i])>1 && string_length(palabra[i2])>1)
{
superior=0
i3=1
repetir=1
for(i3=1;repetir;i3+=1)
{
repetir=0
letra=string_copy(palabra[i],i3+1,1)
letra2=string_copy(palabra[i2],i3+1,1)
if(string_length(palabra[i])>i3-1 && string_length(palabra[i2])>i3-1)
{
if(ord(letra) > ord(letra2)){superior=1}
if(ord(letra) = ord(letra2)){repetir=1;}
}
}
if(superior){palabra_pos[i]+=1}
}
else
{ //inicio else L6
if(string_length(palabra[i])!=string_length(palabra[i2]))
{
if(string_length(palabra[i])>string_length(palabra[i2])){palabra_pos[i]+=1;}
}
else
{
if(id1>id2){palabra_pos[i]+=1;palabra_cod[i]="aqui"}
}
}//fin else L6
}//fin else L4
}//fin if L3
}//fin for L2
}//fin for L1
//organizador de palabras 2
for(i=1;i<=palabra_numero;i+=1)
{
for(i2=1;i!=palabra_pos[i2];i2+=1){};
palabra_ordenada[i]=palabra[i2]
}
//agrupando palabras
str2=""
for(i=1;i<=palabra_numero;i+=1)
{
str2+=palabra_ordenada[i]+" "
}
//devolviendo valor
if(argument1)
{
return palabra_ordenada[argument1]
}
else
{
return str2
}
4. string_mayuscula(str): en str colocas la cadena que será cambiada a mayúscula.
(https://image.ibb.co/bNxzyV/string-mayuscula.png) (https://imgbb.com/)
//string_mayuscula(str) en str colocas la cadena que será cambiada a mayúscula.
//convierte un máximo de 1024 millones de palabras.
string_mayuscula_argument0=argument0
//EDITANDO PALABRAS
for(string_mayuscula_i=0;string_mayuscula_i<=31;string_mayuscula_i+=1)
{
//string_replace_all(str,substr,newstr);
if(string_mayuscula_i<=25)string_mayuscula_argument0=string_replace_all(string_mayuscula_argument0,chr(97+string_mayuscula_i),chr(65+string_mayuscula_i));
string_mayuscula_argument0=string_replace_all(string_mayuscula_argument0,chr(224+string_mayuscula_i),chr(192+string_mayuscula_i));
}
return string_mayuscula_argument0
5. string_minuscula(str): en str colocas la cadena que será cambiada a minuscula.
(https://image.ibb.co/edbL5A/string-minuscula.png) (https://imgbb.com/)
//string_minuscula(str) en str colocas la cadena que será cambiada a minúscula.
string_minuscula_argument0=argument0
//EDITANDO LAS PALABRAS
for(string_minuscula_i=0;string_minuscula_i<=31;string_minuscula_i+=1)
{
//string_replace_all(str,substr,newstr);
if(string_minuscula_i<=25)string_minuscula_argument0=string_replace_all(string_minuscula_argument0,chr(65+string_minuscula_i),chr(97+string_minuscula_i));
string_minuscula_argument0=string_replace_all(string_minuscula_argument0,chr(192+string_minuscula_i),chr(224+string_minuscula_i));
}
return string_minuscula_argument0
6. string_tilde(str): en str colocas la cadena cuyas palabras se le quitará el acento.
(https://image.ibb.co/jXEZXq/sin-tilde.png) (https://imgbb.com/)
//sin_tilde(str) en str colocas la cadena cuyas palabras se le quitará el acento.
//convierte un máximo de 1024 millones de palabras.
//código asci:
//A=65; Z=90
//a=97; z=122
//À=192-197;È=200-203;Ì=204-207;Ò=210-214;Ù=217-220;Ý=221-221
//à=224-229;è=232-235;ì=236-239;ò=242-246;ù=249-252;ý=253-255
sin_tilde_str3=argument0
//EDITANDO PALABRAS
for(sin_tilde_i=0;sin_tilde_i<=31;sin_tilde_i+=1)
{
//string_count(substr,str)
//string_replace_all(str,substr,newstr)
sin_tilde_newstr=""
if(sin_tilde_i<=29)
{
if(string_count(chr(192+sin_tilde_i),sin_tilde_str3))
{
sin_tilde_acento=192+sin_tilde_i
//À=192-197;È=200-203;Ì=204-207;Ò=210-214;Ù=217-220;Ý=221-221
if(sin_tilde_acento>=192 && sin_tilde_acento<=197)sin_tilde_newstr="A"
if(sin_tilde_acento>=200 && sin_tilde_acento<=203)sin_tilde_newstr="E"
if(sin_tilde_acento>=204 && sin_tilde_acento<=207)sin_tilde_newstr="I"
if(sin_tilde_acento>=210 && sin_tilde_acento<=214)sin_tilde_newstr="O"
if(sin_tilde_acento>=217 && sin_tilde_acento<=220)sin_tilde_newstr="U"
if(sin_tilde_acento=221)sin_tilde_newstr="Y"
sin_tilde_str3=string_replace_all(sin_tilde_str3,chr(192+sin_tilde_i),sin_tilde_newstr)
}
}
if(string_count(chr(224+sin_tilde_i),sin_tilde_str3))
{
sin_tilde_acento=224+sin_tilde_i
//à=224-229;è=232-235;ì=236-239;ò=242-246;ù=249-252;ý=253-255
if(sin_tilde_acento>=224 && sin_tilde_acento<=229)sin_tilde_newstr="a"
if(sin_tilde_acento>=232 && sin_tilde_acento<=235)sin_tilde_newstr="e"
if(sin_tilde_acento>=236 && sin_tilde_acento<=239)sin_tilde_newstr="i"
if(sin_tilde_acento>=242 && sin_tilde_acento<=246)sin_tilde_newstr="o"
if(sin_tilde_acento>=249 && sin_tilde_acento<=252)sin_tilde_newstr="u"
if(sin_tilde_acento>=253 && sin_tilde_acento<=255)sin_tilde_newstr="y"
sin_tilde_str3=string_replace_all(sin_tilde_str3,chr(224+sin_tilde_i),sin_tilde_newstr)
}
}
return sin_tilde_str3
7. text_scaner(str,w): en str colocas el string a evaluar y en w indicas el ancho maximo que deberá tener el texto, si no se indica nada en w el ancho por defecto será el ancho del room.
text_scaner(str,w): Devuelve las siguientes variables y arrays:
palabra_numero: cantidad de palabras que contiene el párrafo incluyendo números y símbolos.
linea_numero: cantidad de lineas que conforman el párrafo.
palabra[num]: palabra de la posicion num.
palabra_index[num]: posición en el string de la primera letra de la palabra de la posicion num
palabra_index2[num]: posición en el string de la ultima letra de la palabra de la posicion num
palabra_x[num]: posición x en el room de la palabra de la posicion num
plabra_x2[num]: posición x2 en el room de la palabra de la posicion num
palabra_linea[num]: linea en donde se encuentra la palabra de la posicion num.
linea[num]: contenido de la linea de la posicion num.
linea_final: contenido de la linea final.
(https://image.ibb.co/i7Z1Cq/scaner-palabra.png) (https://imgbb.com/)
//text_scaner(str,w). en str colocas el string a evaluar y en w indicas el ancho maximo que deberá tener el texto, si no se indica nada en w el ancho por defecto será el ancho del room.
//Devuelve las siguientes variables y arrays:
//palabra_numero: cantidad de palabras que contiene el párrafo incluyendo números y símbolos.
//linea_numero: cantidad de lineas que conforman el párrafo.
//palabra[num]: palabra de la posicion num.
//palabra_index[num]: posición en el string de la primera letra de la palabra de la posicion num
//palabra_index2[num]: posición en el string de la ultima letra de la palabra de la posicion num
//palabra_x[num]: posición x en el room de la palabra de la posicion num
//plabra_x2[num]: posición x2 en el room de la palabra de la posicion num
//palabra_linea[num]: linea en donde se encuentra la palabra de la posicion num.
//linea[num]: contenido de la linea de la posicion num.
//linea_final: contenido de la linea final.
str=argument0
ancho_texto=argument1
if(!ancho_texto)ancho_texto=room_width
str2=string_replace_all(str,string(chr(13))," ")
//CALCULANDO ANCHO MAXIMO PERMITIDO DEL TEXTO
palabra_ram=""
i2=1
for(i=1;i<=string_length(str2);i+=1)
{
letra=string_copy(str2,i,1)
letra_pre=string_copy(str2,i-1,1)
if(ord(letra)!=32)palabra_ram+=letra
if((ord(letra_pre)!=32) && (ord(letra)=32) || i=string_length(str2))
{
if(ancho_texto<string_width(palabra_ram+" "))ancho_texto=string_width(palabra_ram+" ")
palabra_ram=""
}
}
//EVALUANDO Y REEMPLAZANDO SALTO DE LINEA
espacio=""
for(i=1;i<=ancho_texto;i+=1){espacio+=" "}
str2=string_replace_all(str,string(chr(13)),espacio)
//ADMINISTRACION DE PALABRAS
palabra_ram=""
i2=1
index=1
for(i=1;i<=string_length(str2);i+=1)
{
letra=string_copy(str2,i,1)
letra_pre=string_copy(str2,i-1,1)
if((ord(letra_pre)=32) && (ord(letra)!=32))index=i
if(ord(letra)!=32)palabra_ram+=letra
if((ord(letra_pre)!=32) && (ord(letra)=32) || i=string_length(str2))
{
palabra[i2]=palabra_ram
palabra_index[i2]=index
palabra_index2[i2]=index+string_length(palabra[i2])-1
palabra_x[i2]=string_width(string_copy(str2,1,palabra_index[i2]-1))
palabra_x2[i2]=string_width(string_copy(str2,1,palabra_index2[i2]))
palabra_x2max[i2]=palabra_x2[i2]+string_width(" ")
palabra_linea[i2]=1
palabra_ram=""
if(i<string_length(str2))i2+=1
}
}
palabra_numero=i2
//ADMINISTRADOR DE LINEAS
i2=1
i3=1
resta_index=0
resta_x=0
i5=1
for(i=1;i<=string_length(str);i+=1)
{
letra=string_copy(str,i,1)
letra_pre=string_copy(str,i-1,1)
if((ord(letra_pre)!=32) && (ord(letra)=32) || i=string_length(str))i2+=1
if(palabra_x2max[i2]>ancho_texto)
{
linea[i3]=string_copy(str2,1,palabra_index2[i2-1])
str2=string_copy(str2,palabra_index[i2],string_length(str2))
resta_index=palabra_index[i2]-1
resta_x=palabra_x[i2]
for(i4=i2;i4<=palabra_numero;i4+=1)
{
palabra_index[i4]-=resta_index
palabra_index2[i4]-=resta_index
palabra_x[i4]-=resta_x
palabra_x2[i4]-=resta_x
palabra_x2max[i4]-=resta_x
palabra_linea[i4]=i3+1
}
i3+=1
}
}
linea[i3]=str2
linea_numero=i3
linea_final=str2