Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: Fenris78 en Marzo 16, 2011, 01:49:35 AM

Título: Codificacion/decodificacion de cadenas
Publicado por: Fenris78 en Marzo 16, 2011, 01:49:35 AM
Revisando portales de videojuegos, he visto que resulta muy usual que los juegos tengan un menu desde el que seleccionar varios perfiles. Dado que GM tiene un sistema para gestionar archivos .ini bastante eficiente, he decidido desarrollar este script para poder utilizarlos sin tener problemas con el usuario medio.

Autor:

Fenris78

Descripci?n:

Este script codifica un texto a formato ascii o recupera el texto a partir de dicho formato. Util para codificar por ejemplo, los archivos .ini en los que guardemos datos importantes para nuestro juego.

Versi?n GM:

:GM8:

[gml]

//argument0 cadena a codificar/decodificar
//argument1 true codifica, false decodifica

var codoutput; codoutput=string(argument0);

if(argument1=true)
{
   for(i=0; i<255; i+=1)
   {
       codoutput=string_replace_all(codoutput,chr(i+1),chr(i))
   }
}
else if(argument1=false)
{
   for(i=255; i>0; i-=1)
   {
       codoutput=string_replace_all(codoutput,chr(i),chr(i+1))
   }
}

return codoutput;[/gml]

Ejemplo de uso:

Codificar:
[gml]codificado=sc_codif("HOLA",true);[/gml]

Decodificar:
[gml]sc_codif(codificado,false);[/gml]
Título: Re: Codificacion/decodificacion de cadenas
Publicado por: licshendu en Marzo 31, 2011, 09:05:28 PM
Hola Fenris  :D veo que tu script usa el m?todo de cifrado del cesar, me gusta ese m?todo de cifrado, la uso con mi novia para escribirnos en el facebook y que no nos entiendan XD, es divertido y desespera a los dem?s

Creo que se puede ahorrar tiempo de c?mputo en este proceso de la forma siguiente:
[gml]//argument0 cadena a codificar/decodificar
//argument1 true codifica, false decodifica

var char,put,out;
put=string(argument0);out="";

for(i=1; i<=string_length(put); i+=1)
    {
        char=string_char_at(put,i)
        if(argument1)
            out+=chr(ord(char)-1)
        else
            out+=chr(ord(char)+1)
           
    }
return out;[/gml]

saludos :D
Título: Re: Codificacion/decodificacion de cadenas
Publicado por: Ciberman en Abril 02, 2011, 12:03:24 AM
bueno depende, si el string es m?s largo de 255 caracteres conviene usar el m?todo de fenris...
asi que se podr?a hacer al principio de todo un if que separe los dos m?todos...
si bien la funcion string_replace_all tiene un bucle interno creo que es mucho m?s r?pido que los bucles interpretados... por eso no lo cuento mucho..

ahora si lo que se quiere un codigo corto en cuanto a caracteres se puede... mh... creo que los dos est?n por ahi...


Título: Re: Codificacion/decodificacion de cadenas
Publicado por: Wadk en Abril 02, 2011, 02:11:17 AM
Cita de: Ciberman en Abril 02, 2011, 12:03:24 AMsi bien la funcion string_replace_all tiene un bucle interno creo que es mucho m?s r?pido que los bucles interpretados..
La verdad dudo que sea 256 veces m?s r?pido.
Yo apostar?a por la versi?n de licshendu. Si tuviera el GM har?a la prueba.

En cualquier caso, el script es bastante simple, y la encripci?n d?bil. No lo recomendar?a para encriptar cosas importantes.