
Originally Posted by
cehrenr
I mean, truth be told, this thread already spoon feeds everyone the client as it is. I am completely retarded when it comes to this stuff, and I managed to figure it out. People who are asking/complaining for a pre-built client are, quite simply, just lazy. Thats all there is to it. There is nothing in this thread that a 12 year old couldn't figure out, because it is laid out in step-by-step, copy/paste directions. People just don't want to do it, which is honestly a shame.
I agree, that's why I took it down. Had to think about it for an hour or so... and I realized...
I thought... "Wait. It did take me eight hours to do this, but I had no knowledge of it and figured it out. So, couldn't everyone else do this?"
Maybe I'll release it to members of my Guild. If you're interested in joining my guild... well... I have the feeling that if you say you're interested now you just want the client. So, instead of providing the client, I'll put this entire topic together in a single message.
Step 1: Install Yogda. Yogda can be found by googling Yogda and clicking on the first link.
Step 2: In your web browser, look at the source at Realmofthemadgod.com. In chrome, you'd type view-source://realmofthemadgod.com. Search for ACGLoader. Copy the numbers after that and then type realmofthemadgod.com/AssembleeGameClient[YOurnumbersherewithoutbrackets].swf. Now click the Wrench on the top right of your screen and do Save Page As. Then save it to your desktop.
Step 3: Open up the client in Yogda. This might take a bit since the loading bars appear for about 30 seconds. Be patient. On the right, click the little plus next to the client name. Once it pops down, click the plus next to WebMain (frame 1). Then, go down to Strings. Right click it and do Find. Search for "rotmgtesting.appspot.com" and replace it with "realmofthemadgod.appspot.com".
Step 4: Click the plus next to Classes. Find com.company.assembleegameclient.objects.player. Click the plus next to that. Click the update() function at the bottom. On the right you'll see the update() function. Go to the bottom of that. You'll see returnvalue. Right click that, and do insert byte code. Paste this in:
pop
getlocal0
getlex map_
getproperty player_
ifne 42
getlex map_
getproperty name_
pushstring Nexus
ifeq 31
getlex _-24
convert_d
getlex _-mH
convert_d
divide
pushbyte 7
convert_d
pushbyte 20
convert_d
divide
ifgt 11
getlex map_
getproperty gs_
getproperty gsc_
callpropvoid _-m3,0
pushtrue
Press okay. Then, at the top left of Yogda, click the disk. A popup will appear that it's saved under a different name. The client with a different name now has Autonexus in it.
Part II: Autoaim. This part is a bit more tricky. For this, you'll need rabcdasm. Google Rabcdasm. Click the first link. It'll be GitHub. On the right click Downloads. Download it. Then extract it. Put the new client with autonexus in it. Open up Command Prompt (windows) or Terminal.
On windows: CD into the directory Rabcdasm is in. I.e. if it's in Downloads, type cd Downloads, then cd Rabcdasm_v1.11. It'll be the same way on Mac, but in the Terminal utility.
Replacing nameofyourclient with the autonexus client you've just made, type:
swfdecompress nameofyourclient.swf
Then, type abcexport nameofyourclient.swf
Go into the folder where rabcdasm is. Click on your client's folder. Find the Com folder and doubleclick that. Doubleclick assembleegameclient. Doubleclick objects. Find player.class.asasm and edit that in your notepad of choice. Find _-u7 in the document. Replace _-u7 with the following code (note the _-u7 function ends with the text end ; method).
Code:
trait method QName(PackageNamespace(""), "_-u7")
method
refid "com.company.assembleegameclient.objects:Player/_-u7"
param QName(PackageNamespace(""), "Number")
returns QName(PackageNamespace(""), "void")
body
maxstack 16
localcount 16
initscopedepth 16
maxscopedepth 18
code
;aimingAngle = arg1 + Parameters.data_.cameraAngle;
getlocal0
pushscope
getlocal1
getlex QName(PackageNamespace("com.company.assembleegameclient.parameters"), "Parameters")
getproperty QName(PackageNamespace(""), "data_")
getproperty Multiname("cameraAngle", [PrivateNamespace("*", "com.company.assembleegameclient.objects:Player#0"), PackageNamespace(""), PrivateNamespace("*", "com.company.assembleegameclient.objects:Player#1"), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-GV"), StaticProtectedNs("_-GV"), StaticProtectedNs("_-n2"), StaticProtectedNs("_-Sa"), StaticProtectedNs("_-0FI")])
add
setlocal 7
;if (Left_Clicking) don't alter aimingAngle
getlex QName(PackageNamespace(""), "map_")
getproperty QName(PackageNamespace(""), "gs_")
getproperty QName(PackageNamespace(""), "mui_")
getproperty QName(PrivateNamespace("*", "com.company.assembleegameclient.game:_-8L#0"), "_-Jt")
iftrue L138
;Get game object
pushnull
coerce QName(PackageNamespace("com.company.assembleegameclient.objects"), "GameObject") ;coerce null that was pushed onto stack into a GameObject obj ???
setlocal 4 ;save object to local register 4
;initialize current target distance to -1
pushbyte 255
setlocal 8
;initialize considered target distance to 0
pushbyte 0
setlocal 9
;set local register 11 to any type (used for speed and lifetime of player's projectile)
pushnull
coerce_a
setlocal 11
;current target max health
pushbyte 0
setlocal 12
;considered target max health
pushbyte 0
setlocal 13
;used for hasnext2 instruction
pushbyte 0
setlocal 5
;get the list of every object in game? jump to start going through list
getlex QName(PackageNamespace(""), "map_")
getproperty QName(PackageNamespace(""), "goDict_")
coerce_a
setlocal 6
jump L131
L40:
label
getlocal 6
getlocal 5
nextvalue
coerce QName(PackageNamespace("com.company.assembleegameclient.objects"), "GameObject")
dup
setlocal 4
;getlocal 4
;getlex QName(PackageNamespace("com.company.assembleegameclient.objects"), "Player")
;istypelate
;iftrue L131
;make sure object is a character and not something like a wall
;getlocal 4
getlex QName(PackageNamespace("com.company.assembleegameclient.objects"), "Character")
istypelate
iffalse L131
;make sure object is an enemy
getlocal 4
getproperty QName(PackageNamespace(""), "props_")
getproperty QName(PackageNamespace(""), "isEnemy_")
iffalse L131
getlocal 4
callproperty QName(PackageNamespace(""), "_-41"), 0 ;<--don't aim at ???
iftrue L131
getlocal 4
callproperty QName(PackageNamespace(""), "_-gO"), 0 ;<--don't aim at targets that are in stasis
iftrue L131
getlocal 4
callproperty QName(PackageNamespace(""), "_-Kr"), 0 ;<--don't aim at shielded targets
iftrue L131
;make sure considered target isn't paused
;getlocal 4
;callproperty QName(PackageNamespace(""), "isPaused"), 0
;iftrue L131
;calculate distance enemy is from player
getlex QName(PackageNamespace(""), "Math")
getlocal 4
getproperty QName(PackageNamespace(""), "y_")
getlex QName(PackageNamespace(""), "y_")
subtract
dup
multiply
getlocal 4
getproperty QName(PackageNamespace(""), "x_")
getlex QName(PackageNamespace(""), "x_")
subtract
dup
multiply
add
callproperty QName(PackageNamespace(""), "sqrt"), 1
dup
setlocal 9 ;store considered target distance
;load up equiped weapon info ???
getlex QName(PackageNamespace("com.company.assembleegameclient.objects"), "ObjectLibrary")
getproperty QName(PackageNamespace(""), "_-0Kv")
getlex QName(PackageNamespace(""), "_-Bj")
pushbyte 0
getproperty MultinameL([PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#0"), PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#1"), PackageNamespace(""), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-0J8"), StaticProtectedNs("_-0J8"), StaticProtectedNs("_-0FI")])
convert_i
getproperty MultinameL([PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#0"), PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#1"), PackageNamespace(""), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-0J8"), StaticProtectedNs("_-0J8"), StaticProtectedNs("_-0FI")])
getproperty QName(PackageNamespace(""), "_-052")
pushbyte 0
getproperty MultinameL([PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#0"), PrivateNamespace("*", "com.company.assembleegameclient.objects:Projectile#1"), PackageNamespace(""), PackageNamespace("com.company.assembleegameclient.objects"), PackageInternalNs("com.company.assembleegameclient.objects"), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("_-0J8"), StaticProtectedNs("_-0J8"), StaticProtectedNs("_-0FI")])
dup
setlocal 11 ;store weapon data in registry
;calculate if considered target is in range using weapon projectile speed and lifetime
getproperty QName(PackageNamespace(""), "speed_")
pushshort 10000
divide
getlocal 11
getproperty QName(PackageNamespace(""), "lifetime_")
multiply
ifgt L131 ;jump to next considered object (current considered object out of range)
;get considered target max health
getlocal 4
getproperty QName(PackageNamespace(""), "_-mH")
dup
setlocal 13 ;store max health
;if considered target max health is the same as current target max health, check distance
getlocal 12
ifeq L109
;if considered target max health is less than current target max health, move on to next object.
getlocal 13
getlocal 12
iflt L131
jump L1099 ;considered target max health is greather than current target's, set new target
L109:
;if there is no current target, set new target
;getlocal 8
;pushbyte 255
;ifeq L1099
;if considered target distance is less than current target distance, set new target
getlocal 9 ;considered target
getlocal 8 ;current target
iflt L1099
jump L131 ;current target is closer than considered target, check next object
L1099:
;considered target max health is more than current, set at new target.
getlocal 13
setlocal 12
getlocal 9
setlocal 8
;calculate shooting angle
getlex QName(PackageNamespace(""), "Math")
getlocal 4
getproperty QName(PackageNamespace(""), "y_")
getlex QName(PackageNamespace(""), "y_")
subtract
getlocal 4
getproperty QName(PackageNamespace(""), "x_")
getlex QName(PackageNamespace(""), "x_")
subtract
callproperty QName(PackageNamespace(""), "atan2"), 2
setlocal 7 ;store new angle
jump L131 ;look at next object
L131:
hasnext2 6, 5
iftrue L40
kill 6
kill 5
getlocal 12
pushbyte 0
ifeq L141
L138:
getlocal0
getlocal 7
callpropvoid QName(PrivateNamespace("*", "com.company.assembleegameclient.objects:Player#0"), "shoot"), 1
L141:
returnvoid
end ; code
end ; body
end ; method
end ; trait
Save the file. Go back to Terminal/Command Prompt and type:
rabcasm nameofyourclient-1\nameofyourclient-1.main.asasm
abcreplace nameofyourclient.swf 1 nameofyourclient-1\nameofyourclient-1.main.abc
You're now done. Your client has autonexus and autoaim.
If you want antiblind/paralyze/confused:
Back at the yogda step, before you save, find the package: com.company.assembleegameclient.objects::GameObjec t. Click the plus next to it. Find the _-ob function. Click it. On the right at the very top of the code, right click the pushfalse and click Insert Byte Code. Type:
pushfalse
returnvalue
Repeat this for the _-cI and _-S7 functions. Save your client. Your newest client now has antiparalyze/confuse/blind.
If you don't want the Nexus/Realm of the Mad God screens with your character walking: In yogda, search for:
public function _-ze(_-048:_-0Cv):void
On the top left. Double click it, then on the first line, right click, Modify Byte Code, and change it to returnvoid.
I hope this guide helped summarize and make it easier for those who kept having to search through the thread to find various points, and to those who are having trouble making a client.
This entire tutorial should take you a little less than 30 minutes. Good luck.