Sorry i put version 1.5.3 i ment to put 1.15.3, so sorry feel like a idiot now!
If you want to know why i've found these im thinking about making a mod, read here if your interested http://www.bwhacks.com/forums/revers...-who-wish.html
Otherwise these are most of the offsets for the upgrades for player zero, if you want player 1 add 0x2E from these if you want player 2 add (0x2E*2) and so on . . . All of these were in the original starcraft if your looking for brood war upgrades look in this area
this is the code that sets the upgradeCode:00454999 MOV BYTE PTR DS:[EAX+EDX*4+58F110],BL edx=5 eax=ecx=1b DS:[0058F13F]=mind control DS:[0058F143]=malee storm
and all the locations, these could be useful for a "upgrade alert" or something of that sort.Code:difference between player 1 and 2 = 0x2E so we have EAX= player offset, ecx = upgrade offset and DL is the new value of the upgrade 004CE40C MOV BYTE PTR DS:[EAX+ECX+58D298],DL
here is a quick class to use this easilyCode:-- player zero upgrade offsets -- DS:[0058D298]= ground armor terrain(2) DS:[0058D299]= vehicle armor terrain(2) DS:[0058D29A]= ship plating terrain(2) DS:[0058D29B]= zerge carapace zerg (2) DS:[0058D29C]= zerg air def (2) DS:[0058D29D]= ground armor toss(2) DS:[0058D29E]= air armor toss(2) DS:[0058D29F]= ground attack terrain(2) DS:[0058D2A0]= vehicle wepons terrain(2) DS:[0058D2A1]= ship wepons terrain(2) DS:[0058D2A2]= zerg melee wepons zerg (2) DS:[0058D2A3]= zerg missle attacks zerg (2) DS:[0058D2A4]= zerg air attack (2) DS:[0058D2A5]= ground wepons toss(2) DS:[0058D2A6]= air wepons toss(2) DS:[0058D2A7]= psi sheild toss(2) DS:[0058D2AB]= science vessel + energy terrain (2) DS:[0058D2AC]= ghost ocular enhance terrain (2) DS:[0058D2AD]= ghost +50 energy terrain (2) DS:[0058D2AE]= +50 wraith energy terrain (2) DS:[0058D2AF]= titain reactor terrain (2) DS:[0058D2B3]= zergling speed upgrade zerg(2) DS:[0058D2B4]= zergling faster attack 2 (2) DS:[0058D2B5]= zerg faster hydra move (2) DS:[0058D2B6]= zerg hydra inc attack (2) DS:[0058D2B7]= zerg queen +energy (2) DS:[0058D2B8]= zerg metasync thing (2) DS:[0058D2B9]= dragoon attack range toss(2) DS:[0058D2BA]= zlot leg enhance toss(2) DS:[0058D2BB]= scarab damage toss(2) DS:[0058D2BC]= rever capacity toss(2) DS:[0058D2BD]= gravitic drive (transport) toss(2) DS:[0058D2BE]= sensor array (probe) toss(2) DS:[0058D2BF]= gravitic booster (probe) toss(2) DS:[0058D2C0]= + templar energy toss(2) DS:[0058D2C1]= apial sensors toss(2) DS:[0058D2C2]= gravitic thursters (scout) toss(2) DS:[0058D2C3]= +4 max interceptors toss(2) DS:[0058D2C4]= + 50 arbitur energy toss(2)
If anyone has more offsets please post them here so we can save some time and do more real reversing instead of finding what is already found.Code:lass SCUpgrades{ public: SCUpgrades(); // just a constructor char getUpgrade(short, char); // return current upgrade bool setUpgrade(short , int, char); // set this upgrade private: char *upgrades; }; SCUpgrades::SCUpgrades() { this->upgrades = (char*)(0x0058D298); // setup char array } // usage .getUpgrade(player number, upgrade offset) char SCUpgrades::getUpgrade(short pnum, char upgrade) { return *(this->upgrades + (pnum*0x2E) + upgrade); } // usage .setUpgrade(player number, upgrade offset, new value) bool SCUpgrades::setUpgrade(short pnum, int upgoffset, char newval) { *(this->upgrades + upgoffset + (pnum*0x2E)) = newval; if (getUpgrade(pnum, upgoffset) == newval) return true; return false; }
Ps, it feels icky doing this in c++, when i debug my code i dont recognize it at all. But im doing this to become more familiar with c++. Eventually ill use inline asm, but not yet.


LinkBack URL
About LinkBacks






Reply With Quote
. Also think of scv's that can repair themselves !! You can have your scv's repair themselves while being attacked, and that wont disc you. 


