1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Seek unity between the elements in the 22nd Terraining Contest Poll.
    Dismiss Notice
  3. Seize the moment! The 18th Mini Mapping Contest has commenced.
    Dismiss Notice
  4. Gather 'round - the 20th Icon Contest Poll is out.
    Dismiss Notice
  5. The heavens smile on the old faithful. The 16th Techtree Contest has begun.
    Dismiss Notice
  6. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

iGen

Submitted by Hanky
This bundle is marked as substandard. It may contain bugs, not perform optimally or otherwise be in violation of the submission rules.
Preview: Hanky
Language: vJass
Requires: JassHelper (JassHelper 0.A.2.B)

Short Description:
This system is made to make the life easier for every map creator who needs save/load codes. In the map should be enough documentation how to use the system. If not ask questions per PM or visitor message.

Code
Code (vJASS):
//                                        ,¦¦
//                                        ¦ ¦¦¦¦                                                                
//                                        ¦    ¦¦¦¦¦                          2010 still moving on...
//                                        ¦         ¦¦            ¦¦¦¦¦¦
//                                        ¦         ¦¦      ¦¦¦¦¦¦     ¦¦¦
//                                        ¦        ¦¦     ¦¦¦            ¦¦
//                                        ¦        ¦     ¦                ¦¦     ¦¦¦¦¦¦¦¦
//                                        ¦       ¦¦¦_   ¦                 ¦¦  ¦¦¦      ¯¦.
//                                        ¦       ¦  ¦¦¦¦¦        ____      ¦¦¦¦          ¯¦
//                                        ¦       ¦     ¦¦¦_     _¦¦¦¦______¦¦        __    ¦
//                                       ¦        ¦       ¦     _¦¦¦¦¦¦¦¦¦¦¦¦¦       _¦¦,   ¯¦
//                                       ¦    ,   ¦_      ¦     ¦¦¦¦¦¦¦¦¦¦¦¦¦       _¦¦¯     ¯¦
//                                       ¦    ¦    ¯     ¦¦     ¦¦¦¦¦¦¦¦¦¦¦¦¦       ¦¦¦¦_     ¦.
//                                      ,¦    ¦          ¦      ¦¦¦¦¦¯¯¯¯¯¦¦¦       ¦¦¦¦¦      ¦
//                                      ¦     ¦          ¦      ¯¦¦¦¦     ¯¦¦_      ¦¦¦¦¦      ¦
//                                     ¦¦     ¦_         ¦         ¯¦.     ¯¦¦      ¯¦¦¦¦      ¦
//                                     ¦       ¦         ¦                  ¦¦       ¯¯¯¯      ¦
//                                    ¦¦       ¦         ¦_        _        ¦¦¦                ¦
//                                   _¦        ¦          ¦        ¦        ¦¦¦¦              _¦
//                                   #----------------------------------------------------------#
//                                   |================!NgO is sappin' ma sentry!================|
//                                   #----------------------------------------------------------#
//                      
//                                * NgO is fucking proud to present the release of the new iGen =) *
//
// ************************************************************************************************************************************
// *                                                       ~ Release ~                                                                *
// *                                                       +++++++++++                                                                *
// *                                                                                                                                  *
// *                                                   Name: iGen x2.1a                                                               *
// *                                                   Type: Code Generater                                                           *
// *                                               Language: vJass                                                                    *
// *                                                Made by: Hanky                                                                    *
// *                                                   Date: 10-04-2010                                                               *
// *                                                                                                                                  *
// *                                            Description: This system is there to make your life easier creating a MMORPG.         *
// *                                                         This system is able to create save/load codes. Also this system          *
// *                                                         is using an unique encryption method which is pretty secure.             *
// *                                                                                                                                  *
// *                                                         I can just say: Enjoy our release =)                                     *
// *                                                                                                                                  *
// ************************************************************************************************************************************
//
// ************************************************************************************************************************************
// *                                                        ~ Notes ~                                                                 *
// *                                                        +++++++++                                                                 *
// *                                                                                                                                  *
// *                                                 If you want to contact me,                                                       *
// *                                                   then just contact me?                                                          *
// *                                                                                                                                  *
// ************************************************************************************************************************************

// ************************************************************************************************************************************
// *                                                  ~ Greetings fly out to ~                                                        *
// *                                                  ++++++++++++++++++++++++                                                        *
// *                                                                                                                                  *
// *                               Darkt3mpl3r, JonNny, WaRadius, xxdingoxx93, De.Facto, Toadcop, Paladon                             *
// *                                                Eccho, -BerzeKer-, Fireeye, Bodo                                                  *
// *                                                                                                                                  *
// *                                                         NgO & HIVE                                                               *
// *                                                                                                                                  *
// ************************************************************************************************************************************

// ************************************************************************************************************************************
// *                           One of the last releases NgO will release for Warcraft 3. But we'll never die.                         *
// *                                       So we will continue making mods for Starcraft 2.                                           *
// *                                                                                                                                  *
// *                          With this release I want advice you to take a look at our latest Project Chernobyl.                     *
// *                          It's a riddle map with much stuff you can explore. A playable version will be out                       *
// *                                                              soon.                                                               *
// *                                                                                                                                  *
// ************************************************************************************************************************************
// *_____________________________________________________nfo_design_by_Hanky__________________________________________________________*
// ************************************************************************************************************************************


library iGen
  globals
    public constant boolean keyEncryption =false        //Enable an extra keyEncryption (Important: The char library of every parameter will change to the key char library.)
    public constant integer mparameterSize=20           //This is the maximal size of parameters you can enter. You can change it to your needs.
    public constant integer delimiterInt  =5            //If you use delimiters you can set the interval here.
    public constant string delimiterSign  ="-"          //Remember that the delimiter sign should be never in a library. Otherwise it can't be recogenized correctly.
   
    public constant string colorcodeNum   ="|c000080FF" //For "0..1..2"
    public constant string colorcodeabc   ="|c00008000" //For "a..b..c"
    public constant string colorcodeABC   ="|c00FFFF00" //For "A..B..C"
    public constant string colorcodeXtr   ="|c00FF0000" //For everything else
   
    public constant string signLibrary1   ="0123456789"                 //Set up the numeric characters
    public constant string signLibrary2   ="abcdefghijklmnopqrstuvwxyz" //Set up the normal characters
    public constant string signLibrary3   ="ABCDEFGHIJKLMNOPQRSTUVWXYZ" //Set up the capital characters
    public constant string signLibrary4   ="@$[_!?&%:}~*+=<>)(/-"       //Set up the extra signs/characters
  endglobals

  public struct parameterLibrary
     //==================================================
     //Vars

     //> Sign Library Vars
     string Library   //< Encryption/Decryption Library
     integer Size     //< The Size Of The Library
     integer maxHex   //< The Size Of The Last HexCode
     integer maxInt   //< The Size Of The Last Integer
     //*******************

     //> Parameter Value Vars
     string Encrypt   //< Encrypted         string
     integer Decrypt  //< Decrypted         integer
     integer Extent   //< Extent            integer
     integer Length   //< Length            integer
     integer CRC      //< Checksum          integer
     boolean Active   //< Active            boolean
     //*******************

     //==================================================
     //onStructEvent Methods
     static method create takes nothing returns thistype
       local thistype iCook=thistype.allocate()

       set iCook.Library=null
       set iCook.Size   =0x00
       
       set iCook.Encrypt=null
       set iCook.Decrypt=0x00
       set iCook.Extent =0x00
       set iCook.Length =0x00
       set iCook.CRC    =0x00
       set iCook.Active =false

       return iCook
     endmethod

     //==================================================
     //Convert Methods

     //> Int2Char
     //  > Convert an integer value to a char
     method Int2Char takes integer i returns string
       if i>=0x00 and i<=.Size then
         return SubString(.Library,i,i+0x01)
       debug else
       debug call BJDebugMsg("Error: Invalid parameter")
       endif
       return null
     endmethod

     //> Char2Int
     //  > Convert a char to an integer value
     method Char2Int takes string s returns integer
      local integer l=StringLength(s)
      local integer i=0x00
   
      if l==0x01 then
        loop
          exitwhen i==.Size
         
          if SubString(.Library,i,i+0x01)==s then
            return i
          endif
         
          set i=i+0x01
        endloop
      debug else
      debug call BJDebugMsg("ERROR: Just enter one char")
      endif
     
      debug call BJDebugMsg("ERROR: Invalid parameter")
      return -0x01
     endmethod

     //> Hex2Int
     //  > Convert the encrypt var to an integer value for the decrypt var
     method Hex2Int takes nothing returns nothing
       local integer l=StringLength(.Encrypt)
       local integer m=0x01
       local integer i=0x00
     
       if maxHex>=l then
         loop
           exitwhen 0x00==l
           set i=m*.Char2Int(SubString(.Encrypt,l-0x01,l))+i
           set m=m*.Size
           set l=l-0x01
         endloop
       debug else
       debug call BJDebugMsg("ERROR: Invalid parameter")
       endif
     
       set .Decrypt=i
     endmethod
     
     //> Hex2IntEx
     //  > Convert the encrypt var to an integer value for the decrypt var
     method Hex2IntEx takes string iEx returns integer
       local integer l=StringLength(iEx)
       local integer m=0x01
       local integer i=0x00
     
       if maxHex>=l then
         loop
           exitwhen 0x00==l
           set i=m*.Char2Int(SubString(iEx,l-0x01,l))+i
           set m=m*.Size
           set l=l-0x01
         endloop
       debug else
       debug call BJDebugMsg("ERROR: Invalid parameter")
       endif
     
       return i
     endmethod

     //> Int2Hex
     //  > Convert the decrypt var to a hex string for the encrypt var
     method Int2Hex takes nothing returns nothing
       //! textmacro 2hex
       loop
         set q=i/.Size
         set s=.Int2Char(i-(q*.Size))+s
         set k=k-0x01
         set i=q
         exitwhen k==0x00
       endloop
       //! endtextmacro
       //========================================
       local integer i=.Decrypt
       local integer q=.Size
       local integer k=0x01
       local string s =null
     
       if 0x7FFFFFFF>=.Decrypt then
         loop
           exitwhen q>=.Decrypt
           set q=q*.Size
           set k=k+0x01
         endloop
         //! runtextmacro 2hex()
       elseif .maxInt>=i then
         //Debug Maximal Int Size
         set k=.maxHex
         //! runtextmacro 2hex()
       debug else
       debug call BJDebugMsg("ERROR: Invalid parameter")
       endif
     
       set .Encrypt=s
     endmethod
     
     //> Int2HexEx
     //  > Convert the decrypt var to a hex string for the encrypt var
     method Int2HexEx takes integer iEx returns string
       local integer i=iEx
       local integer q=.Size
       local integer k=0x01
       local string s =null
     
       if 0x7FFFFFFF>=iEx then
         loop
           exitwhen q>=iEx
           set q=q*.Size
           set k=k+0x01
         endloop
         //! runtextmacro 2hex()
       elseif .maxInt>=i then
         //Debug Maximal Int Size
         set k=.maxHex
         //! runtextmacro 2hex()
       debug else
       debug call BJDebugMsg("ERROR: Invalid parameter")
       endif
     
       return s
     endmethod

     //==================================================
     //String Operators

     //> checkCharLibrary
     //  > Check if a char is in a library.
     static method IsCharInLibrary takes string ch,string lib returns boolean
       local integer l=StringLength(ch)
       local integer z=StringLength(lib)
     
       loop
         exitwhen z<l
         if ch==SubString(lib,z-l,z) then
           return true
         endif
         set z=z-0x01
       endloop
     
       return false
     endmethod
     
    //> Int2CharEx
     //  > Convert an integer value to a char
    method Int2CharEx takes integer i,string lib returns string
      if i>=0x00 and i<=.Size then
        return SubString(lib,i,i+0x01)
      debug else
      debug call BJDebugMsg("Error: Wrong char position")
      endif
      return null
    endmethod

     //> Char2IntEx
     //  > Convert an char to an integer value
    method Char2IntEx takes string s,string lib returns integer
      local integer l=StringLength(s)
      local integer i=0x00
   
      if l==1 then
        loop
          exitwhen i==.Size
         
          if SubString(lib,i,i+0x01)==s then
            return i
          endif
         
          set i=i+0x01
        endloop
      debug else
      debug call BJDebugMsg("ERROR: Just enter one char")
      endif
     
      debug call BJDebugMsg("ERROR: Invalid parameter")
      return -0x01
    endmethod

     //> setupCRC
     //  > Setup the CRC value. Remember to set before a decrypted value.
     method setupCRC takes nothing returns nothing
       local string s =I2S(.Decrypt)
       local integer l=StringLength(s)

       loop
         exitwhen l==0x00
         set .CRC=.CRC+.Char2Int(SubString(s,l-0x01,l))+R2I(Pow(0x02,l))
         set l=l-0x01
       endloop
     endmethod

     //> setupLength
     //  > Setup the length of a encrypted value. Remember to set before a decrypted value.
     method setupLength takes nothing returns nothing
       local integer i=.Extent
       local integer q=.Size
       local integer k=0x01
       local string s =null
     
       if 0x7FFFFFFF>=.Decrypt then
         loop
            exitwhen q>=.Extent
            set q=q*.Size
            set k=k+0x01
         endloop
         //! runtextmacro 2hex()
       elseif .maxInt>=i then
         //Debug Maximal Int Size
         set k=.maxHex
         //! runtextmacro 2hex()
       debug else
       debug call BJDebugMsg("ERROR: Invalid parameter")
       endif

       set .Length=StringLength(s)
     endmethod

     //> setupLibrary
     //  > This will setup the library which you'll need to decrypt/encrypt.
     method setupLibrary takes string s returns nothing
       local integer index=0x01
       local integer ltemp=0x00
       local integer temp =StringLength(s)-0x01

       set .Library=s
       set .Size   =temp

       loop
         //0x7FFFFFFF == 2147483647
         exitwhen temp>0x7FFFFFFF or temp<ltemp

         set ltemp=temp
         set temp =temp*.Size
         set index=index+0x01
       endloop
   
       set .maxHex=index
       set .maxInt=ltemp
     endmethod
  endstruct

  public struct Generator
     parameterLibrary array parameter[mparameterSize]
     parameterLibrary key

     string codeString
     integer parameterSize

     integer inParameterCRC
     integer inKeyCRC
     integer outParameterCRC
     integer outKeyCRC

     //==================================================
     //onStructEvent Methods
     static method create takes nothing returns thistype
       local thistype iCook=thistype.allocate()
       local integer i     =mparameterSize-0x01

       set iCook.codeString     =null
       set iCook.key            =parameterLibrary.create()
       set iCook.inParameterCRC =0x00
       set iCook.outParameterCRC=0x00
       set iCook.parameterSize  =0x00
       loop
         exitwhen i<0x00
         set iCook.parameter[i]=parameterLibrary.create()
         set i=i-0x01
       endloop

       return iCook
     endmethod

     method onDestory takes nothing returns nothing
       local integer i=mparameterSize-0x01

       call .key.destroy()
       loop
         exitwhen i<0x00
         call .parameter[i].destroy()
         set i=i-0x01
       endloop
     endmethod

     //==================================================
     //Standart Methods
     
     //> reset
     //  > This will reset your whole generator struct
     method reset takes nothing returns nothing
       local integer i=mparameterSize-0x01

       call .key.destroy()
       set .key=parameterLibrary.create()
       loop
         exitwhen i<0x00
         call .parameter[i].destroy()
         set .parameter[i]=parameterLibrary.create()
         set i=i-0x01
       endloop
     endmethod
     
     //> addDelemiters
     //  > Add some delimiters to your code (Hint: Just use this function after you have generated a codestring and before you added color to the string.)
     method addDelimiters takes nothing returns nothing
        local integer tl
        local integer ti
        local integer tp
        local string ts
     
        if .codeString!=null then
            set tl=StringLength(.codeString)
            set ti=0x00
            set tp=0x00
            set ts=null
            loop
                exitwhen ti==tl
                if tp==delimiterInt then
                    set ts=ts+delimiterSign
                    set tp=0x01
                else
                    set tp=tp+0x01
                endif
                set ts=ts+SubString(.codeString,ti,ti+0x01)
                set ti=ti+0x01
            endloop
            set .codeString=ts
        endif
     endmethod
     
     //> addDelemiters
     //  > Remove all delimiters from your code (Hint: Just use this function after you have generated a codestring and before you added some delimiters to the string.)
     method removeDelimiters takes nothing returns nothing
        local integer tl
        local integer ti
        local string tc
        local string ts
     
        if .codeString!=null then
            set tl=StringLength(.codeString)
            set ti=0x00
            set ts=null
            loop
                exitwhen ti==tl
                set tc=SubString(.codeString,ti,ti+0x01)
                if tc!=delimiterSign then
                    set ts=ts+tc
                endif
                set ti=ti+0x01
            endloop
            set .codeString=ts
        endif
     endmethod
   
     //> addColor
     //  > Add some color to your code (Hint: Just use this function after you have generated a codestring.)
     method addColor takes nothing returns nothing
        local integer m
        local string t
        local string d
     
        if .codeString!=null then
            set m=StringLength(.codeString)-0x01
            set t=null
           
            loop
              exitwhen m<0x00
       
              set d=SubString(.codeString,m,m+0x01)
              if .key.IsCharInLibrary(d,signLibrary1) then
                set d=colorcodeNum+d+"|r"
              elseif .key.IsCharInLibrary(d,signLibrary2) then
                set d=colorcodeabc+d+"|r"
              elseif .key.IsCharInLibrary(d,signLibrary3) then
                set d=colorcodeABC+d+"|r"
              elseif .key.IsCharInLibrary(d,signLibrary4) then
                set d=colorcodeXtr+d+"|r"
              endif
              set t=d+t
       
              set m=m-0x01
            endloop
       
            set .codeString=t
        endif
     endmethod

     //==================================================
     //Set Methods
     
     //> setParameter
     //  > Set the value of a parameter
     method setParameter takes integer i,integer max,string lib returns nothing
       if .parameterSize<mparameterSize then
         set .parameter[.parameterSize].Active =true
         set .parameter[.parameterSize].Decrypt=i
         set .parameter[.parameterSize].Extent =max
         call .parameter[.parameterSize].setupLibrary(lib)
         call .parameter[.parameterSize].setupLength()
         call .parameter[.parameterSize].setupCRC()
         set .parameterSize=.parameterSize+0x01
       debug else
       debug call BJDebugMsg("Error: Wrong size")
       endif
     endmethod
     
     //> setLoadParameter
     //  > Before you load a code you have to set the load parameter
     method setLoadParameter takes integer max,string lib returns nothing
        if .parameterSize<mparameterSize then
         set .parameter[.parameterSize].Active =true
         set .parameter[.parameterSize].Extent =max
         call .parameter[.parameterSize].setupLibrary(lib)
         call .parameter[.parameterSize].setupLength()
         set .parameterSize=.parameterSize+0x01
       debug else
       debug call BJDebugMsg("Error: Wrong size")
       endif
     endmethod

     //> setKey
     //  > Nearly for every function it's very important to have a key setted
     method setKey takes string s,string lib returns nothing
       local integer l=StringLength(s)
       local integer q=0x00
       local integer x

       call .key.setupLibrary(lib)

       loop
         exitwhen l==0
         set x=.key.Char2Int(SubString(s,l-0x01,l))
         if x!=-0x01 then
           set q=q+x
         endif
         set l=l-0x01
       endloop

       set .key.Decrypt=q
       call .key.setupCRC()
       set .outKeyCRC=.key.CRC
     endmethod
     
     //> setLoadCode
     //  > If you want to load a code you have to set the codeString first
     method setLoadCode takes string s returns nothing
        set .codeString=s
     endmethod

     //==================================================
     //Reset Methods
     
     //> resetLastParameter
     //  > If you want to reset you last setted parameter just use this function
     method resetLastParameter takes nothing returns nothing
       if .parameterSize>0x00 then
         set .parameter[.parameterSize].Encrypt=null
         set .parameter[.parameterSize].Library=null
         set .parameter[.parameterSize].Decrypt=0x00
         set .parameter[.parameterSize].Extent =0x00
         set .parameter[.parameterSize].CRC    =0x00
         set .parameterSize=.parameterSize-0x01
       debug else
       debug call BJDebugMsg("Error: Wrong Size")
       endif
     endmethod

     //==================================================
     //Get Methods
     
     //> getParameter
     //  > This function is there to get a decrypted parameter
     method getParameter takes integer pos returns integer
       return .parameter[pos].Decrypt
     endmethod
     
     //> getCode
     //  > After you have generated a code you can get with this function the code
     method getCode takes nothing returns string
        return .codeString
     endmethod

     //==================================================
     //Check Methods
     
     //> checkParameter
     //  > After you have decrypted a code you can check with this function if the checksum of the parameters is correct
     method checkParameter takes nothing returns boolean
       return .inParameterCRC==.outParameterCRC
     endmethod

     //> checkKey
     //  > After you have decrypted a code you can check with this function if the checksum of the key is correct
     method checkKey takes nothing returns boolean
       return .inKeyCRC==.outKeyCRC
     endmethod

     //==================================================
     //Generating Methods

     //> encrypt
     //  > After you have done all settings you can generate your own code
     method encrypt takes nothing returns nothing
        local integer index=.parameterSize-0x01
        local integer ti
        local integer te
        local integer tl
        local string pex
        local string tsg
        local string csg
       
        loop
            exitwhen index<0x00
            if .parameter[index].Active then
                set tsg=null
                call SetRandomSeed(index*.key.CRC)
                set .inParameterCRC=.inParameterCRC+(.parameter[index].CRC*(index+0x01))
                set .parameter[index].Decrypt=ModuloInteger(.parameter[index].Decrypt+GetRandomInt(index,R2I(Pow(index,.key.CRC))),.parameter[index].Extent)
                call .parameter[index].Int2Hex()
                set tl=StringLength(.parameter[index].Encrypt)
                if tl<.parameter[index].Length then
                    set tl =.parameter[index].Length-tl
                    set ti =0x00
                    loop
                        exitwhen ti==tl
                        call SetRandomSeed(R2I(Pow(ti,.key.CRC)))
                        set tsg=tsg+.parameter[index].Int2Char(ModuloInteger(GetRandomInt(0x00,.parameter[index].Size)-((ti+0x01)*index*(ti+0x01)),.parameter[index].Size))
                        set ti =ti+0x01
                    endloop
                else
                    set ti=0x00
                endif
                set csg=null
                set te =0x00
                loop
                    exitwhen ti==.parameter[index].Length
                    call SetRandomSeed(R2I(Pow(ti,.key.CRC)))
                    set csg=csg+.parameter[index].Int2Char(ModuloInteger(.parameter[index].Char2Int(SubString(.parameter[index].Encrypt,te,te+0x01))+GetRandomInt(0x00,.parameter[index].Size)-((ti+0x01)*index*(ti+0x01)),.parameter[index].Size))
                    set ti=ti+0x01
                    set te=te+0x01
                endloop
                set .parameter[index].Encrypt=tsg+csg
            endif
            set index=index-0x01
        endloop
        set pex  =.key.Int2HexEx(.inParameterCRC)
        set index=.parameterSize-0x01
        loop
            exitwhen index<0x00
            set .codeString=.parameter[index].Encrypt+.codeString
            set index=index-0x01
        endloop
        call .key.Int2Hex()
       
        set .codeString=.key.Encrypt+.codeString+pex
        static if keyEncryption then
            set index=StringLength(.codeString)
            set csg  =null
            loop
                exitwhen index==0x00
                call SetRandomSeed(.key.CRC*(index+0x01))
                set csg=.key.Int2Char(ModuloInteger(.key.Char2Int(SubString(.codeString,index-0x01,index))-GetRandomInt(0x00,.key.Size),.key.Size))+csg
                set index=index-0x01
            endloop
            set .codeString=csg
        endif
     endmethod

     //> decrypt
     //  > After you have done all settings you can decrypt an entered code
     method decrypt takes nothing returns nothing
        local parameterLibrary tk=parameterLibrary.create()
        local boolean filter
        local integer index
        local integer pos
        local integer te
        local integer tl
        local integer ti
        local string ts
        local string bs
       
        static if keyEncryption then
            set index=StringLength(.codeString)
            set ts   =null
            loop
                exitwhen index==0x00
                call SetRandomSeed(.key.CRC*(index+0x01))
                set ts=.key.Int2Char(ModuloInteger(.key.Char2Int(SubString(.codeString,index-0x01,index))+GetRandomInt(0x00,.key.Size),.key.Size))+ts
                set index=index-0x01
            endloop
            set .codeString=ts
        endif
       
        call .key.Int2Hex()
        call tk.setupLibrary(.key.Library)
        set tl=StringLength(.key.Encrypt)
        set tk.Encrypt=SubString(.codeString,0x00,tl)
        call tk.Hex2Int()
        call tk.setupCRC()
        set .inKeyCRC=tk.CRC
        set ts=SubString(.codeString,tl,StringLength(.codeString))
       
        if .checkKey() then
            set index=0x00
            set pos  =0x00
            loop
                exitwhen index==.parameterSize
                if .parameter[index].Active then
                    set .parameter[index].Encrypt=SubString(ts,pos,pos+.parameter[index].Length)
                    set filter=false
                    set bs=null
                    set ti=0x00
                    set te=StringLength(.parameter[index].Encrypt)
                    loop
                        exitwhen ti==te
                        call SetRandomSeed(R2I(Pow(ti,tk.CRC)))
                        set tl=ModuloInteger(.parameter[index].Char2Int(SubString(.parameter[index].Encrypt,ti,ti+0x01))-GetRandomInt(0x00,.parameter[index].Size)+((ti+0x01)*index*(ti+0x01)),.parameter[index].Size)
                        if filter or tl!=0x00 then
                            set bs    =bs+.parameter[index].Int2Char(tl)
                            set filter=true
                        endif
                        set ti=ti+0x01
                    endloop
                    if bs==null then
                        set bs=.parameter[index].Int2Char(0x00)
                    endif
                    set .parameter[index].Encrypt=bs
                    call .parameter[index].Hex2Int()
                    call SetRandomSeed(index*.key.CRC)
                    set .parameter[index].Decrypt=ModuloInteger(.parameter[index].Decrypt-GetRandomInt(index,R2I(Pow(index,.key.CRC))),.parameter[index].Extent)
                    call .parameter[index].setupCRC()
                    set .inParameterCRC=.inParameterCRC+(.parameter[index].CRC*(index+0x01))                
                    set pos=pos+.parameter[index].Length
                endif
                set index=index+0x01
            endloop
            set .outParameterCRC=tk.Hex2IntEx(SubString(ts,pos,StringLength(ts)))
        endif
       
   
        call tk.destroy()
     endmethod
  endstruct
endlibrary


And as always greeting my clan NgO and some certain people:
- Darkt3mpl3r (pure win)
- JonNny
- Paladon
- Eccho
- Toadcop
- Berzeker
- WaRadius (miss ya mate)
- xxdingo93xx

Any improvement ideas will be helpful.

Keywords:
codegen, thecakeisaspy, savenload, save, load, code, ngo, hanky, darkt3mpl3r, igen
Contents

iGen x2.1 (Map)

Reviews
Moderator
8 Sep 2011 Bribe: Deprecated in favor of: http://www.hiveworkshop.com/forums/spells-569/save-load-snippets-v1-0-0-7-a-202714/ 20:54, 22nd Aug 2009 hvo-busterkomo: The coding looks good and could definitely be useful. Approved.
  1. xerocheco

    xerocheco

    Joined:
    Oct 10, 2014
    Messages:
    2
    Resources:
    0
    Resources:
    0
    i need to see this