idthief.js - statData faker - Fake all character data
Identity Thief a.k.a. statData changer - noob note: this is just modifying character stuff clientsided (only you can see it)
-lets you change everything about your character that you receive
-lets you change everything about other players on a per name basis
This lets you record and take screenshot "evidence" of people hacking, so if someone pisses you off, you get a few of your friends, customize this script to look exactly like them (and have your friends customize your name so you look like the other player), and you all record you hacking and noclipping and shit like that, and then report the person for hacking.
This is all client sided which is why you need other people with the script also (but modified).
I intend to show how easily video evidence can be faked, in hopes that it this invalidates all video evidence (ie, making kabam's job harder).
This will require you to modify the script a lot, none of it has client commands so you actually have to know basic text editing.
On the line that has "else if", that tells you what statdata you are editing, and on the next line, it shows the actual value, so you will need to change the second line to have the intended in game effect.
example:
else if (statData.id == 26) //vitality
statData.intValue = 42;
That changes your vitality to 42.
To get dye colors, open up a decompressed client in a text editor (use swfdecompress in rabcdasm, or use bin editing if you want, whatever), search for the dye name, and search for this:
<Tex1>0xa00002d</Tex1>
That hex value is the dye value.
Note that changing your name via this method only changes the name you see when you are trading someone, to change it on your menu screen and in game above your inv, you have to memory edit with cheat engine or a hex editor (hxd can open ram, and find/replace). If you want to change a name, your name must be longer than or equal to the length of the name you want to change it to (you can't do larger). Here's how:
To change your name, open a fresh client, and open cheat engine, and target the rotmg process. Change value type to "string", and enter your current name in the text field (case sensitive), and do first scan. Now select every address (click one and ctrl a), then click the arrow to bring them to the value table. Then select them all in the lower part, and press enter, and enter your desired name.
Instead of cheat engine, you can use hxd, and do "open ram" and pick the rotmg process, then simply do a find and replace and replace your name with the desired name. Both work.
Then in rotmg click play, and you should see the name changed.
Here is the script. This should work assuming nothing major changed from 5 months ago, when I last used it.
-lets you change everything about your character that you receive
-lets you change everything about other players on a per name basis
This lets you record and take screenshot "evidence" of people hacking, so if someone pisses you off, you get a few of your friends, customize this script to look exactly like them (and have your friends customize your name so you look like the other player), and you all record you hacking and noclipping and shit like that, and then report the person for hacking.

This is all client sided which is why you need other people with the script also (but modified).
I intend to show how easily video evidence can be faked, in hopes that it this invalidates all video evidence (ie, making kabam's job harder).
This will require you to modify the script a lot, none of it has client commands so you actually have to know basic text editing.
On the line that has "else if", that tells you what statdata you are editing, and on the next line, it shows the actual value, so you will need to change the second line to have the intended in game effect.
example:
else if (statData.id == 26) //vitality
statData.intValue = 42;
That changes your vitality to 42.
To get dye colors, open up a decompressed client in a text editor (use swfdecompress in rabcdasm, or use bin editing if you want, whatever), search for the dye name, and search for this:
<Tex1>0xa00002d</Tex1>
That hex value is the dye value.
Note that changing your name via this method only changes the name you see when you are trading someone, to change it on your menu screen and in game above your inv, you have to memory edit with cheat engine or a hex editor (hxd can open ram, and find/replace). If you want to change a name, your name must be longer than or equal to the length of the name you want to change it to (you can't do larger). Here's how:
To change your name, open a fresh client, and open cheat engine, and target the rotmg process. Change value type to "string", and enter your current name in the text field (case sensitive), and do first scan. Now select every address (click one and ctrl a), then click the arrow to bring them to the value table. Then select them all in the lower part, and press enter, and enter your desired name.
Instead of cheat engine, you can use hxd, and do "open ram" and pick the rotmg process, then simply do a find and replace and replace your name with the desired name. Both work.
Then in rotmg click play, and you should see the name changed.
Here is the script. This should work assuming nothing major changed from 5 months ago, when I last used it.
Code:
/* idthief.js by 059
CREATE_SUCCESS
int objectId
int charId
UPDATE
Tile[] tiles
Entity[] newObjs
int[] drops
NEW_TICK
int tickId
int tickTime
Status[] statuses
StatData
int obf0
int intValue
string obf2
Status
int objectId
Location pos
StatData[] data
*/
var ID_CREATE_SUCCESS = $.findPacketId("CREATE_SUCCESS");
var ID_NEW_TICK = $.findPacketId("NEW_TICK");
var ID_USEITEM = $.findPacketId("USEITEM");
var ID_UPDATE = $.findPacketId("UPDATE");
var ID_TEXT = $.findPacketId("TEXT");
var playerId = -1;
var modify = true;
function onServerPacket(event) {
var packet = event.getPacket();
if (packet.id() == ID_CREATE_SUCCESS) {
playerId = packet.objectId;
}
if (modify) {
if (packet.id() == ID_UPDATE) {
for (var i = 0; i < packet.newObjs.length; i++) {
var objectData = packet.newObjs[i];
/*for (var j = 0; j < packet.newObjs.length; j++) //pet replacing
if (packet.newObjs[j].objectType == 32601) //snail
packet.newObjs[j].objectType = 32627;*/ //new pet id (any object), do the following for a random pet: 1850+Math.floor(Math.random()*6);
for (var j = 0; j < objectData.status.data.length; j++) {
if (objectData.status.objectId === playerId) {
var statData = objectData.status.data[j];
if (statData.id == 0) //max health (after bonus calc)
statData.intValue = 630;
else if (statData.id == 1) //current health, change in new_tick also otherwise it will revert to your real current
statData.intValue = 630;
else if (statData.id == 2) //size
statData.intValue = 100;
else if (statData.id == 3) //max mana
statData.intValue = 389;
else if (statData.id == 4) //current mana, change in new_tick also otherwise it will revert to your real current
statData.intValue = 389;
else if (statData.id == 5) //xp goal, current xp is in new_tick
statData.intValue = -1;
else if (statData.id == 7) //level
statData.intValue = 20;
else if (statData.id == 8) //weapon
statData.intValue = 0xc01;
else if (statData.id == 9) //ability
statData.intValue = 0x911;
else if (statData.id == 10) //armor
statData.intValue = 0x9c4;
else if (statData.id == 11) //ring
statData.intValue = 0xbad;
/*else if (statData.id == 12) //inv1
statData.intValue = 0x9d2;
else if (statData.id == 13) //inv2
statData.intValue = 0x9ce;
else if (statData.id == 14) //inv3
statData.intValue = 0x912;
else if (statData.id == 15) //inv4
statData.intValue = 0x0733;
else if (statData.id == 16) //inv5
statData.intValue = 0x9d3;
else if (statData.id == 17) //inv6
statData.intValue = 0x913;
else if (statData.id == 18) //inv7
statData.intValue = 0xcc1;
else if (statData.id == 19) //inv8
statData.intValue = 0x2294;*/
else if (statData.id == 20) //attack, all these are after bonus calculation
statData.intValue = 85;
else if (statData.id == 21) //defense
statData.intValue = 44;
else if (statData.id == 22) //speed, you get dced if it's greater than your normal
statData.intValue = 50;
else if (statData.id == 26) //vitality
statData.intValue = 42;
else if (statData.id == 27) //wisdom
statData.intValue = 68;
else if (statData.id == 28) //dexterity
statData.intValue = 75;
else if (statData.id == 30) //stars
statData.intValue = 70;
else if (statData.id == 31) //name, only shows up in trades
statData.stringValue = "Deathslayier";
else if (statData.id == 32) //main dye (use the number from the Tex1 tag in the xml, <Tex1>0xa000019</Tex1>
statData.intValue = 0x01FFD700;
else if (statData.id == 33) //accessory dye
statData.intValue = 0x01FFD700;
else if (statData.id == 35) //gold
statData.intValue = 2600;
else if (statData.id == 39) //account fame
statData.intValue = 41166;
else if (statData.id == 46) //health bonus
statData.intValue = 60;
else if (statData.id == 47) //mana bonus
statData.intValue = 115;
else if (statData.id == 48) //attack bonus
statData.intValue = 10;
else if (statData.id == 48) //def bonus
statData.intValue = 19;
else if (statData.id == 50) //spd bonus
statData.intValue = 0;
else if (statData.id == 51) //vit bonus
statData.intValue = 2;
else if (statData.id == 52) //wis bonus
statData.intValue = 8;
else if (statData.id == 53) //dex bonus
statData.intValue = 0;
else if (statData.id == 59) //glow
statData.intValue = 0;
else if (statData.id == 62) //guild
statData.stringValue = "the impresive fihgters";
else if (statData.id == 57) //char fame
statData.intValue = 1545;
else if (statData.id == 58) //char fame goal
statData.intValue = -1;
else if (statData.id == 63) //guild rank, 0 initiate, 10 member, 20 officer, 30 leader, 40 founder
statData.intValue = 30;
/*else if (statData.id == 71) //backpack1
statData.intValue = 0xc01;
else if (statData.id == 72) //backpack2
statData.intValue = 0xba9;
else if (statData.id == 73) //backpack3
statData.intValue = 0xba9;
else if (statData.id == 74) //backpack4
statData.intValue = 0xba9;
else if (statData.id == 75) //backpack5
statData.intValue = 0xba9;
else if (statData.id == 76) //backpack6
statData.intValue = 0xba9;
else if (statData.id == 77) //backpack7
statData.intValue = 0xba9;
else if (statData.id == 78) //backpack8
statData.intValue = 0xba9;
else if (statData.id == 79) //has backpack
statData.intValue = 1;*/
else if (statData.id == 80) //skin (use the number from the Activate tag in the xml, <Activate skinType="914">UnlockSkin</Activate>
statData.intValue = 872;
//this stuff is for pets, I haven't bothered changing it but it should let you change what your pet looks like in the pet tab only
/*PET_ID = 81
PET_SKIN = 82 # Pascal string
PET_TYPE = 83
PET_RARITY = 84
PET_MAX_LEVEL = 85
PET_UNK1 = 86 #Reserved for a pet feature, but not yet implemented (13.2)
FOOD_SPENT_ON_SKILL1 = 87
FOOD_SPENT_ON_SKILL2 = 88
FOOD_SPENT_ON_SKILL3 = 89
PET_SKILL1_LEVEL = 90
PET_SKILL2_LEVEL = 91
PET_SKILL3_LEVEL = 92
PET_SKILL1_TYPE = 93
PET_SKILL2_TYPE = 94
PET_SKILL3_TPYE = 95*/
//uncomment the following lines for debugging:
//$.echo("j = " + j + ", id = "+statData.id);
//$.echo("int = "+statData.intValue);
//$.echo("str = "+statData.stringValue);
//$.echo("newObjs["+i+"].status.data["+j+"].stringValue = "+statData.stringValue);
} else { //OTHER PLAYER MODS - change this stuff to change other players
if (statData.id == 31) {
if (statData.stringValue.equals("old name")) { //CHANGE THIS TO THE VICTIM'S NAME
$.echo("Found other player, replacing");
statData.stringValue = "new name"; //CHANGE THIS TO THE DESIRED NAME
for (var j = 0; j < objectData.status.data.length; j++) {
var statData = objectData.status.data[j];
if (statData.id == 0) //max health (after bonus calc)
statData.intValue = 630;
else if (statData.id == 1) //current health, change in new_tick also otherwise it will revert to your real current
statData.intValue = 630;
else if (statData.id == 2) //size
statData.intValue = 100;
else if (statData.id == 3) //max mana
statData.intValue = 389;
else if (statData.id == 4) //current mana, change in new_tick also otherwise it will revert to your real current
statData.intValue = 389;
else if (statData.id == 5) //xp goal, current xp is in new_tick
statData.intValue = -1;
else if (statData.id == 7) //level
statData.intValue = 20;
else if (statData.id == 8) //weapon
statData.intValue = 0xc01;
else if (statData.id == 9) //ability
statData.intValue = 0x911;
else if (statData.id == 10) //armor
statData.intValue = 0x9c4;
else if (statData.id == 11) //ring
statData.intValue = 0xbad;
/*else if (statData.id == 12) //inv1
statData.intValue = 0x9d2;
else if (statData.id == 13) //inv2
statData.intValue = 0x9ce;
else if (statData.id == 14) //inv3
statData.intValue = 0x912;
else if (statData.id == 15) //inv4
statData.intValue = 0x0733;
else if (statData.id == 16) //inv5
statData.intValue = 0x9d3;
else if (statData.id == 17) //inv6
statData.intValue = 0x913;
else if (statData.id == 18) //inv7
statData.intValue = 0xcc1;
else if (statData.id == 19) //inv8
statData.intValue = 0x2294;*/
else if (statData.id == 20) //attack, all these are after bonus calculation
statData.intValue = 85;
else if (statData.id == 21) //defense
statData.intValue = 44;
else if (statData.id == 22) //speed, you get dced if it's greater than your normal
statData.intValue = 50;
else if (statData.id == 26) //vitality
statData.intValue = 42;
else if (statData.id == 27) //wisdom
statData.intValue = 68;
else if (statData.id == 28) //dexterity
statData.intValue = 75;
else if (statData.id == 30) //stars
statData.intValue = 70;
else if (statData.id == 31) //name, only shows up in trades
statData.stringValue = "Deathslayier";
else if (statData.id == 32) //main dye (use the number from the Tex1 tag in the xml, <Tex1>0xa000019</Tex1>
statData.intValue = 0x01FFD700;
else if (statData.id == 33) //accessory dye
statData.intValue = 0x01FFD700;
else if (statData.id == 35) //gold
statData.intValue = 2600;
else if (statData.id == 39) //account fame
statData.intValue = 41166;
else if (statData.id == 46) //health bonus
statData.intValue = 60;
else if (statData.id == 47) //mana bonus
statData.intValue = 115;
else if (statData.id == 48) //attack bonus
statData.intValue = 10;
else if (statData.id == 48) //def bonus
statData.intValue = 19;
else if (statData.id == 50) //spd bonus
statData.intValue = 0;
else if (statData.id == 51) //vit bonus
statData.intValue = 2;
else if (statData.id == 52) //wis bonus
statData.intValue = 8;
else if (statData.id == 53) //dex bonus
statData.intValue = 0;
else if (statData.id == 59) //glow
statData.intValue = 0;
else if (statData.id == 62) //guild
statData.stringValue = "the impresive fihgters";
else if (statData.id == 57) //char fame
statData.intValue = 1545;
else if (statData.id == 58) //char fame goal
statData.intValue = -1;
else if (statData.id == 63) //guild rank, 0 initiate, 10 member, 20 officer, 30 leader, 40 founder
statData.intValue = 30;
/*else if (statData.id == 71) //backpack1
statData.intValue = 0xc01;
else if (statData.id == 72) //backpack2
statData.intValue = 0xba9;
else if (statData.id == 73) //backpack3
statData.intValue = 0xba9;
else if (statData.id == 74) //backpack4
statData.intValue = 0xba9;
else if (statData.id == 75) //backpack5
statData.intValue = 0xba9;
else if (statData.id == 76) //backpack6
statData.intValue = 0xba9;
else if (statData.id == 77) //backpack7
statData.intValue = 0xba9;
else if (statData.id == 78) //backpack8
statData.intValue = 0xba9;
else if (statData.id == 79) //has backpack
statData.intValue = 1;*/
else if (statData.id == 80) //skin (use the number from the Activate tag in the xml, <Activate skinType="914">UnlockSkin</Activate>
statData.intValue = 872;
}
}
}
}
}
}
if (packet.id() == ID_NEW_TICK) {
for (var x = 0; x < packet.statuses.length; x++) {
if (packet.statuses[x].objectId == playerId) {
for (var y = 0; y < packet.statuses[x].data.length; y++) {
var data = packet.statuses[x].data[y];
if (data.id == 1) //current health
data.intValue = 630;
else if (data.id == 4) //current mana
data.intValue = 389;
else if (data.id == 6) //xp
data.intValue = 2680169;
//uncomment these three lines for debugging:
//$.echo("NewTick "+statuses[x]+"."+data[y]+".id = "+packet.statuses[x].data[y].id);
//$.echo("NewTick "+statuses[x]+"."+data[y]+".intValue = "+packet.statuses[x].data[y].intValue);
//$.echo("NewTick "+statuses[x]+"."+data[y]+".stringValue = "+packet.statuses[x].data[y].stringValue);
}
}
}
}
if (packet.id() == ID_TEXT) {
if (packet.name.equals("Oshyu")) {
packet.name = "New Name - if you\'re reading this in game, ya fucked up";
packet.numStars = 70;
}
}
}
}
}

