Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: scripts PACK  (Leído 486 veces)

0 Usuarios y 1 Visitante están viendo este tema.

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

Código: [Seleccionar]
//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.

Código: [Seleccionar]
//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.

Código: [Seleccionar]
//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.

Código: [Seleccionar]
//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.

Código: [Seleccionar]
//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.

Código: [Seleccionar]
//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.

Código: [Seleccionar]
//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
« última modificación: Noviembre 16, 2018, 06:11:36 pm por dixon2010 »

Dios nos ayuda y nos da sabiduría para vivir. Cáda código es una obra maestra que hay que respetar aunque exista un código mas eficiente y sencillo.
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.