This will be fun for ANYONE who want to show off (or get opinions on) anything ROTMG related.
Hacks, Clients, Work in Progress, Drops, Characters/Stats, Mules, Items, etc...
I'll go first,
Here's my un-manned trade bot, work in progress. Inspired by hooi's trade bot. This one also runs without the need for a client.
Will move around every few minutes. Core trading functions seem to be working, been testing it over-night, but still some issues with D/Cing (It runs into walls)
Looks good fly. Pretty cool that it doesn't need to client open.
Now that I got my Mod Selector done, I'm free to work on other things. I'm kind of split between an anti-spam program and a code deobfuscator that gets rid of junk code. Getting rid of the junk code should, in theory, lead to a better performing client.
Interesting, what would be defined as "junk code"?
Feel free to show-off what else you've been working on
Also, on my proxy, I decided to abandon the whole "Chat HP Notification" thing. It just looks horrible when running low quality on a fullscreen client. The previous way was much better as it was color coded. Just need to find and remove the checks they have for displaying only 1 notification at a time.
Last edited by flyrocket; 10-08-2012 at 06:46 PM.
The junk is is just the code that the deobfuscator inserts into the client in an attempt to break disassemblers. Things like:
Ever wonder why practically every function starts out this way? The code is actually code that was added during obfuscation. The function will then use local1 and local2 with other junk code throughout it. Since there is a pattern to the way the junk code is inserted I figured it would be interesting to see how the client performs without all of it.Code:pushfalse pushtrue swap jump L10 equals getlocal2 istypelate lessthan newactivation increment L10: setlocal1 setlocal2
As far as other things I have done. What about projectile no clip on player's weapon only allowing one to hide behind rocks and still shoot out? I got a couple other things but nothing really visual to show off.
Ikulip is working on an anti spam prog when he has time. ( ie a tad at a time since he does several different things) I would suggest the code deobfuscator due to the same theory you suggested and since the anti spam program is already half done and going to be a public release.
Last edited by MindlessChaos; 10-08-2012 at 08:01 PM.
@nilly, does your noclip d/c you eventually (I don't know if it's because you are shooting through objects, or walking through objects that causes you to d/c)? Are you just adding an element to the xml definitions for those objects?
Ya the no clip suffers from from disconnection issues (it doesn't happen too often but does happen). Basically it adds the property passescover to the player's weapon and only their weapon.
Interesting, very interesting, I guess there's no way to beat the system if the servers are calculating your bullet projectiles and if they're hitting anything too. (Or else I'd be spamming ENEMYHIT Packet 24/7 to bosses, lol).
Anyhow, can you help guide me in what to look for in order to allow notifications to be spammed once again?
Using the newest client (AssembleeGameClient1349818828), check out _-Iy/_-00M . This is the object passed to addQueuedText function of _-0Ks\_-Nr (the function that is responsible for on screen popups).
I traced the parameters of what was sent to the constructor of _-00M and got this:
The last two parameters look like delay stuff. I would check that out.Code:Param1:<Char><Name>Lauk</Name><ObjectType>782</ObjectType><Level>1</Level><Exp>13</Exp><Equipment>2711,2606,-1,-1,2594,-1,-1,-1,-1,-1,-1,-1</Equipment><MaxHitPoints>100</MaxHitPoints><HitPoints>100</HitPoints><MaxMagicPoints>100</MaxMagicPoints><MagicPoints>100</MagicPoints><Attack>12</Attack><Defense>0</Defense><Speed>10</Speed><HpRegen>12</HpRegen><MpRegen>12</MpRegen><Dexterity>15</Dexterity></Char> Param2: Quest Complete! Param3: 65280 Param4: 2000
Thanks nilly! Param 3 and 4 is your object id and delay time. Interesting thing you got there to trace down functions
I managed to do it by adding a pop and pushfalse here:
https://i.imgur.com/KcHa2.png
Glad I could help. Flash's trace function is an invaluable resource when trying to figure out what does what or debugging some more complicated code like my auto heal pot hack. You just need to reference the trace function in code, open the .swf in flash debugger (w/logging enabled), and use a program like Vizzy to see the log in realtime.
The trace reference general form in flash assembly (RABCDAsm syntax) is:
You can look at more parameters at once but in an effort to not complicate things I'll leave it at that. Just place the thing you want to look at between the findpropstrict/callpropvoid instructions.Code:findpropstrict QName(PackageNamespace(""), "trace") getlocal1 callpropvoid QName(PackageNamespace(""), "trace"), 1
Well I was successful in getting rid of 99% of the junk code. The difference in size from the client without the obfuscated junk code and the one with is 157KB. The performance difference between the two seems to be negligible, maybe a couple frames. I didn't do any quality tests to test the performance difference.
I have another project in mind that will build upon this. I'm excited about it.
Kushala Daora (03-26-2017)