Hello, just made this to make it easier for who ever makes loggers.
Code:
void GenerateClass(char* classname, char* names[], char* types[], DWORD addr[], int size) {
stringstream ss;
int spacer = 0;
ss << "class " << classname << " {" << endl;
ss << "public:" << endl;
if(addr[0] == 0) ss << " " << types[0] << " " << names[0] << "; //0x" << hex << addr[0] << endl;
else {
ss << " char spacer" << spacer << "[0x" << hex << addr[0] << "]; //0x0" << endl;
ss << " " << types[0] << " " << names[0] << "; //0x" << hex << addr[0] << endl;
spacer++;
}
if(size > 1) {
for(int i = 1; i < size; i++) {
if(addr[i] - 4 == addr[i - 1]) ss << " " << types[i] << " " << names[i] << "; //0x" << hex << addr[i] << endl;
else {
ss << " char spacer" << spacer << "[0x" << hex << (addr[i] - addr[i - 1] - 4) << "]; //0x" << (addr[i - 1] + 4) << endl;
ss << " " << types[i] << " " << names[i] << "; //0x" << hex << addr[i] << endl;
spacer++;
}
}
}
ss << "};";
string s = ss.str();
const char* c = s.c_str();
//Here you put your log function or change the type of the function and put a return
}
How to use?
Code:
char* names[] = {"InfiniteAmmo1", "InfiniteAmmo2", "InfiniteAmmo3", "Object", "Yaw", "Pitch", "NoSpread", "RapidFire", "NoRecoil", "CurrentWeapon", "Fly"}; //example
char* types[] = {/*put the types here*/};
DWORD addr[] = {/*put variables here*/};
GenerateClass("cPlayerClient", names, types, addr, /*size of the arrays*/);
If you use it give credits (Myself).