Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: dixon2010 en Noviembre 09, 2018, 04:54:13 PM

Título: scripts PACK
Publicado por: dixon2010 en Noviembre 09, 2018, 04:54:13 PM
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