Posts: 1
Threads: 0
Joined: May 2015
Reputation:
0
(02-28-2014, 14:39)master131 Wrote: ufgzuzuzu
Started working on this ages ago, only start polishing and refining the code/features recently. Thought it was about time I actually released it. Picture explains it all, pretty simple to get GSCs decompiled. If no output directory is specified (eg. because you drag-and-dropped), it defaults to a "Decompiled" folder.
Features:
- Decompiles all GSCs from @kokole GSC rip.
- Optimizes expressions to make them more readable. Example: if ( !( !isDefined( level.usingscorestreaks ) ) ) --> if ( isDefined( level.usingscorestreaks ) )
- Can print out the raw instructions of every GSC, similar to IL in .NET
- Automatic detection of undiscovered DVARs in hash form as well as detection of infinite loops.
Example of "instructions" (--out-instr):
Code: getrankxpstat()
{
/* I_0000: OP_CreateLocalVariable () { rankxp, rankxpcapped } */
/* I_0006: OP_PreScriptCall */
/* I_0007: OP_GetString "StatValue" */
/* I_000A: OP_GetString "RANKXP" */
/* I_000E: OP_GetString "playerstatslist" */
/* I_0012: OP_GetSelf */
/* I_0013: OP_ScriptMethodCall getdstat */
/* I_001C: OP_EvalLocalVariableRefCached 1 */
/* I_001E: OP_SetVariableField */
rankxp = self getdstat( "playerstatslist", "RANKXP", "StatValue" );
/* I_001F: OP_PreScriptCall */
/* I_0020: OP_EvalLocalVariableCached 1 */
/* I_0022: OP_ScriptFunctionCall getrankxpcapped */
/* I_0028: OP_EvalLocalVariableRefCached 0 */
/* I_002A: OP_SetVariableField */
rankxpcapped = getrankxpcapped( rankxp );
/* I_002B: OP_EvalLocalVariableCached 1 */
/* I_002D: OP_EvalLocalVariableCached 0 */
/* I_002F: OP_greater */
/* I_0030: OP_JumpOnFalse I_004D */
if ( rankxp > rankxpcapped )
{
/* I_0034: OP_PreScriptCall */
/* I_0035: OP_EvalLocalVariableCached 0 */
/* I_0037: OP_GetString "StatValue" */
/* I_003A: OP_GetString "RANKXP" */
/* I_003E: OP_GetString "playerstatslist" */
/* I_0042: OP_GetSelf */
/* I_0043: OP_ScriptMethodCall setdstat */
/* I_004C: OP_DecTop */
self setdstat( "playerstatslist", "RANKXP", "StatValue", rankxpcapped );
}
/* I_004D: OP_EvalLocalVariableCached 0 */
/* I_004F: OP_Return */
return rankxpcapped;
}
Known bugs:
- Some if statements might be slightly inaccurate if they combine different logical operators (&& and ||) in the same statement.
Changes in v1.1: (1st March 2014)
- Improved detection of infinite loops.
- Added proper continue and return support for while loops.
- Added else block detection.
- Fixed the calls to getDvarColorXXXX.
- Fixed developer code blocks.
Changes in v1.2: (1st March 2014)
- Fixed bug with "Object reference not set to instance of an object" message on DLC.
- Added support for compound assingments (+=, -=, *=, /=)
Credits:
Thanks to @kokole and @Nukem for their reversing efforts.
I've attached an archive containing @kokole 's entire GSC rip in decompiled form.
Posts: 1
Threads: 0
Joined: May 2015
Reputation:
0
I can't find the link
Posts: 1
Threads: 0
Joined: Jun 2015
Reputation:
0
06-07-2015, 23:41
(This post was last modified: 06-07-2015, 23:44 by Hax.)
Stop spamming kids, this is NOT for you to decompile another person's "GSC mods" or what have you, stop trying to cheat online.
I will put a mirror here just so you may all get a life.
https://www.mediafire.com/?s5ulej3tu4z72ps
Now, go do something productive.
Posts: 1
Threads: 0
Joined: May 2015
Reputation:
0
(02-28-2014, 14:39)master131 Wrote:
Started working on this ages ago, only start polishing and refining the code/features recently. Thought it was about time I actually released it. Picture explains it all, pretty simple to get GSCs decompiled. If no output directory is specified (eg. because you drag-and-dropped), it defaults to a "Decompiled" folder.
Features:
- Decompiles all GSCs from @kokole GSC rip.
- Optimizes expressions to make them more readable. Example: if ( !( !isDefined( level.usingscorestreaks ) ) ) --> if ( isDefined( level.usingscorestreaks ) )
- Can print out the raw instructions of every GSC, similar to IL in .NET
- Automatic detection of undiscovered DVARs in hash form as well as detection of infinite loops.
Example of "instructions" (--out-instr):
Code: getrankxpstat()
{
/* I_0000: OP_CreateLocalVariable () { rankxp, rankxpcapped } */
/* I_0006: OP_PreScriptCall */
/* I_0007: OP_GetString "StatValue" */
/* I_000A: OP_GetString "RANKXP" */
/* I_000E: OP_GetString "playerstatslist" */
/* I_0012: OP_GetSelf */
/* I_0013: OP_ScriptMethodCall getdstat */
/* I_001C: OP_EvalLocalVariableRefCached 1 */
/* I_001E: OP_SetVariableField */
rankxp = self getdstat( "playerstatslist", "RANKXP", "StatValue" );
/* I_001F: OP_PreScriptCall */
/* I_0020: OP_EvalLocalVariableCached 1 */
/* I_0022: OP_ScriptFunctionCall getrankxpcapped */
/* I_0028: OP_EvalLocalVariableRefCached 0 */
/* I_002A: OP_SetVariableField */
rankxpcapped = getrankxpcapped( rankxp );
/* I_002B: OP_EvalLocalVariableCached 1 */
/* I_002D: OP_EvalLocalVariableCached 0 */
/* I_002F: OP_greater */
/* I_0030: OP_JumpOnFalse I_004D */
if ( rankxp > rankxpcapped )
{
/* I_0034: OP_PreScriptCall */
/* I_0035: OP_EvalLocalVariableCached 0 */
/* I_0037: OP_GetString "StatValue" */
/* I_003A: OP_GetString "RANKXP" */
/* I_003E: OP_GetString "playerstatslist" */
/* I_0042: OP_GetSelf */
/* I_0043: OP_ScriptMethodCall setdstat */
/* I_004C: OP_DecTop */
self setdstat( "playerstatslist", "RANKXP", "StatValue", rankxpcapped );
}
/* I_004D: OP_EvalLocalVariableCached 0 */
/* I_004F: OP_Return */
return rankxpcapped;
}
Known bugs:
- Some if statements might be slightly inaccurate if they combine different logical operators (&& and ||) in the same statement.
Changes in v1.1: (1st March 2014)
- Improved detection of infinite loops.
- Added proper continue and return support for while loops.
- Added else block detection.
- Fixed the calls to getDvarColorXXXX.
- Fixed developer code blocks.
Changes in v1.2: (1st March 2014)
- Fixed bug with "Object reference not set to instance of an object" message on DLC.
- Added support for compound assingments (+=, -=, *=, /=)
Credits:
Thanks to @kokole and @Nukem for their reversing efforts.
I've attached an archive containing @kokole 's entire GSC rip in decompiled form.
hmmmmmm
Posts: 1
Threads: 0
Joined: Jun 2015
Reputation:
0
Um, where is the download link?
Posts: 2
Threads: 0
Joined: Mar 2015
Reputation:
0
(02-28-2014, 14:39)master131 Wrote:
Started working on this ages ago, only start polishing and refining the code/features recently. Thought it was about time I actually released it. Picture explains it all, pretty simple to get GSCs decompiled. If no output directory is specified (eg. because you drag-and-dropped), it defaults to a "Decompiled" folder.
Features:
- Decompiles all GSCs from @kokole GSC rip.
- Optimizes expressions to make them more readable. Example: if ( !( !isDefined( level.usingscorestreaks ) ) ) --> if ( isDefined( level.usingscorestreaks ) )
- Can print out the raw instructions of every GSC, similar to IL in .NET
- Automatic detection of undiscovered DVARs in hash form as well as detection of infinite loops.
Example of "instructions" (--out-instr):
Code: getrankxpstat()
{
/* I_0000: OP_CreateLocalVariable () { rankxp, rankxpcapped } */
/* I_0006: OP_PreScriptCall */
/* I_0007: OP_GetString "StatValue" */
/* I_000A: OP_GetString "RANKXP" */
/* I_000E: OP_GetString "playerstatslist" */
/* I_0012: OP_GetSelf */
/* I_0013: OP_ScriptMethodCall getdstat */
/* I_001C: OP_EvalLocalVariableRefCached 1 */
/* I_001E: OP_SetVariableField */
rankxp = self getdstat( "playerstatslist", "RANKXP", "StatValue" );
/* I_001F: OP_PreScriptCall */
/* I_0020: OP_EvalLocalVariableCached 1 */
/* I_0022: OP_ScriptFunctionCall getrankxpcapped */
/* I_0028: OP_EvalLocalVariableRefCached 0 */
/* I_002A: OP_SetVariableField */
rankxpcapped = getrankxpcapped( rankxp );
/* I_002B: OP_EvalLocalVariableCached 1 */
/* I_002D: OP_EvalLocalVariableCached 0 */
/* I_002F: OP_greater */
/* I_0030: OP_JumpOnFalse I_004D */
if ( rankxp > rankxpcapped )
{
/* I_0034: OP_PreScriptCall */
/* I_0035: OP_EvalLocalVariableCached 0 */
/* I_0037: OP_GetString "StatValue" */
/* I_003A: OP_GetString "RANKXP" */
/* I_003E: OP_GetString "playerstatslist" */
/* I_0042: OP_GetSelf */
/* I_0043: OP_ScriptMethodCall setdstat */
/* I_004C: OP_DecTop */
self setdstat( "playerstatslist", "RANKXP", "StatValue", rankxpcapped );
}
/* I_004D: OP_EvalLocalVariableCached 0 */
/* I_004F: OP_Return */
return rankxpcapped;
}
Known bugs:
- Some if statements might be slightly inaccurate if they combine different logical operators (&& and ||) in the same statement.
Changes in v1.1: (1st March 2014)
- Improved detection of infinite loops.
- Added proper continue and return support for while loops.
- Added else block detection.
- Fixed the calls to getDvarColorXXXX.
- Fixed developer code blocks.
Changes in v1.2: (1st March 2014)
- Fixed bug with "Object reference not set to instance of an object" message on DLC.
- Added support for compound assingments (+=, -=, *=, /=)
Credits:
Thanks to @kokole and @Nukem for their reversing efforts.
I've attached an archive containing @kokole 's entire GSC rip in decompiled form.
thx bro
Posts: 1
Threads: 0
Joined: Jul 2015
Reputation:
0
Posts: 1
Threads: 0
Joined: Sep 2015
Reputation:
0
09-03-2015, 14:48
nice job
Posts: 1
Threads: 0
Joined: Oct 2015
Reputation:
0
where is the download link?
Posts: 1
Threads: 0
Joined: Nov 2015
Reputation:
0
awesome post bro
|