diff --git a/bo2plugin_test.vcxproj b/bo2plugin_test.vcxproj index eed1ef1..11d8560 100644 --- a/bo2plugin_test.vcxproj +++ b/bo2plugin_test.vcxproj @@ -163,9 +163,7 @@ - - diff --git a/bo2plugin_test.vcxproj.filters b/bo2plugin_test.vcxproj.filters index b1882b4..3297af8 100644 --- a/bo2plugin_test.vcxproj.filters +++ b/bo2plugin_test.vcxproj.filters @@ -27,12 +27,6 @@ Header Files - - Header Files - - - Header Files - diff --git a/dllmain.cpp b/dllmain.cpp index 4ab2bce..8463068 100644 --- a/dllmain.cpp +++ b/dllmain.cpp @@ -14,15 +14,6 @@ void init() { std::cout << "ClanTagRank (1.0) by INSANEMODE"; - //std::cout << LogHandle << std::endl; - //std::cout << pcod_printf << std::endl; - //Game::Com_Printf(0, "^3test write'\n"); - //std::this_thread::sleep_for(std::chrono::milliseconds(20000)); - //pG_LogPrintf(ch, ch[4]); - //void (*pkillserver)(); - //pkillserver(NULL); clanTagThread() - //std::thread first(Game::Testprint); - //first.detach(); std::thread rank(Game::clanTagThread); rank.detach(); } @@ -36,14 +27,7 @@ BOOL APIENTRY DllMain(HMODULE hModule, { case DLL_PROCESS_ATTACH: { - - //LogHandle = GetModuleHandle(TEXT("plutonium-bootstrapper-win32.exe")); LogHandle = GetModuleHandle(NULL); - //pG_LogPrintf = (G_LogPrintf)(DWORD)(0x44ACE0); - //pcod_printf = (cod_printf)(DWORD)(0xA6DA16);//00A6DA16 - - - init(); } case DLL_PROCESS_DETACH: diff --git a/dllmain.h b/dllmain.h index 6b83176..3ea158c 100644 --- a/dllmain.h +++ b/dllmain.h @@ -4,6 +4,6 @@ HMODULE LogHandle; namespace Game { - void Testprint(); + //void Testprint(); void clanTagThread(); } diff --git a/functions.cpp b/functions.cpp index 6e65b63..9c07342 100644 --- a/functions.cpp +++ b/functions.cpp @@ -6,28 +6,15 @@ #include #include #include -#include "Header.h" -#include "Dvar.h" #include #include #include - -//#include "curl\curl.h" #include "curl\curl.h" namespace Game { - Com_Printf_t Com_Printf = Com_Printf_t(0x006013A0); - SV_GameSendServerCommand_t SV_GameSendServerCommand = SV_GameSendServerCommand_t(0x0040D450); - killserver_t killserver = (killserver_t)(0x00891750);//00A6DA16 - Cbuf_AddText_t Cbuf_AddText = Cbuf_AddText_t(0x006B9D20); - // void Scr_iPrintLn(int clientNum, const std::string& message) - // { - // //SV_GameSendServerCommand(clientNum, 0, Game::VA("%c \"%s\"", 0x66, message.data())); - // SV_GameSendServerCommand(0, 0, "c \"^1Hello there!\""); - // } static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) { @@ -39,7 +26,6 @@ namespace Game CURL* curl; CURLcode res; std::string readBuffer; - //std::cout << clientname << '\n'; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:1624/api/gsc/clientname/" + clientname); @@ -65,52 +51,17 @@ namespace Game std::string ClanTagRequest(std::string username) { std::string readBuffer; - //std::string clantag; const char* constClanTag; if (username.length() >= 3) { readBuffer = testcurl(username); - //std::cout << readBuffer << '\n'; - ////std::string line = "GeeksForGeeks is a must try"; - - //// Vector of string to save tokens - //std::vector tokens; - - //// stringstream class check1 - //std::stringstream check1(readBuffer); - - //std::string intermediate; - - //// Tokenizing w.r.t. space ' ' - //while (std::getline(check1, intermediate, ' ')) - //{ - // tokens.push_back(intermediate); - //} - - //// Printing the token vector - //for (int i = 0; i < tokens.size(); i++) - // std::cout << tokens[i] << '\n'; } - //std::unordered_set allowedValues = { "Admin","Owner","Mod","Trusted","Creator" }; - //std::unordered_set::const_iterator index = allowedValues.find(readBuffer); - //constClanTag = readBuffer.c_str(); readBuffer.erase(std::remove(readBuffer.begin(), readBuffer.end(), '\n'), readBuffer.end()); readBuffer.erase(std::remove(readBuffer.begin(), readBuffer.end(), '\r'), readBuffer.end()); - return readBuffer; - //if (index != allowedValues.end() && readBuffer != "Error:client info is null") - //{ - // constClanTag = readBuffer.c_str(); - // return constClanTag; - //} - //else - // return ""; - //if (username == "INSANEMODE") - // return "Creator"; - //else if (username == "jmc" || username == "JezuzLizard") - // return "Admin"; - //else if (username == "yeah" || username == "zTitan") - // return "Trusted"; + //readBuffer contains the rank that will be put into the clan tag of the client with the requested username + return readBuffer; + @@ -118,53 +69,36 @@ namespace Game void clanTagChanger() { - //char changename[] = "^1INSANEMODE"; - char previousname[16]{}; + + char emptyname[16]{}; char currentname[16]{}; std::string currentname_str; char currentClanTag[8]{}; - //char Creator[8]{"Creator"}; - //char Admin[8]{"Admin"}; - //char treyarc[8]{"3arc"}; - //char Trusted[8]{"Trusted"}; - //char Owner[8]{"Owner"}; - //char Mod[8]{ "Mod" }; - char emptychar[8]{ "" }; const char* changeClanTag{}; std::string changeClanTag_str; - std::string clantag_str; - //std::unordered_set allowedValues = { "Admin","Owner","Mod","Trusted","Creator","Sr.Admin" }; - - //if (index == allowedValues.end()) - int clientaddr = 0x02347CD4 - 0x57F8; - int clantagaddr = 0x6C; - int clientoffset = 0x57F8; + int clientAddr{ 0x02347CD4 - 0x57F8 }; + int clanTagAddr{ 0x6C }; + int clientOffset{ 0x57F8 }; + int client{ (clientAddr + clientOffset) }; for (int i = 1; i < 9; i++) { - memcpy((void*)currentname, (void*)(clientaddr + (clientoffset * i)), 16); + memcpy((void*)currentname, (void*)(client * i), 16); currentname_str = std::string(currentname, 16); - //std::cout << "current name: " << currentname << '\n'; - memcpy((void*)currentClanTag, (void*)(clientaddr + (clientoffset * i) + clantagaddr), 8);//sizeof((void*)0x02347CD4)); - //std::cout << "current clan tag: " << currentClanTag << '\n'; - clantag_str = std::string(currentClanTag, 8); - //std::cout << "clantag_str: " << clantag_str << '\n'; - //std::unordered_set::const_iterator index = allowedValues.find(currentClanTag); - if ((strstr(currentClanTag, "Creator") == NULL) && (strstr(currentClanTag, "Admin") == NULL) && (strstr(currentClanTag, "Trusted") == NULL) && (strstr(currentClanTag, "Mod") == NULL) && (strstr(currentClanTag, "Owner") == NULL) && (strstr(currentClanTag, "3arc") == NULL) && (strncmp(currentname, previousname, 16) != 0)) + memcpy((void*)currentClanTag, (void*)((client * i) + clanTagAddr), 8); + if ((strstr(currentClanTag, "Creator") == NULL) && (strstr(currentClanTag, "Admin") == NULL) && (strstr(currentClanTag, "Trusted") == NULL) && (strstr(currentClanTag, "Mod") == NULL) && (strstr(currentClanTag, "Owner") == NULL) && (strstr(currentClanTag, "3arc") == NULL) && (strncmp(currentname, emptyname, 16) != 0)) { changeClanTag_str = ClanTagRequest(currentname); changeClanTag = changeClanTag_str.c_str(); - if ((strstr(currentClanTag, changeClanTag) == NULL) || (strstr(changeClanTag, "Error: Client info is null") == NULL))//!(changeClanTag_str.find("Error:") != std::string::npos)) + if ((strstr(currentClanTag, changeClanTag) == NULL) || (strstr(changeClanTag, "Error: Client info is null") == NULL)) { - //std::cout << "changeClanTag: " << changeClanTag << '\n'; std::cout << "ClanTag Rank: [" + changeClanTag_str + "]" + currentname + '\n'; - //std::cout << "changeClanTag: " << changeClanTag << '\n'; if(!(changeClanTag_str.find("Error:") != std::string::npos) && !(changeClanTag_str.find("User") != std::string::npos)) { - memcpy((void*)(clientaddr + (clientoffset * i) + clantagaddr), changeClanTag, 8); + memcpy((void*)(clientAddr + (clientOffset * i) + clanTagAddr), changeClanTag, 8); } @@ -174,129 +108,8 @@ namespace Game } - - //std::cout << "previous name: " << previousname << '\n'; - //memcpy((void*)changename, (void*)0x02347CD4, sizeof(changename)); - - //memcpy((void*)0x02347CD4, (void*)currentname, sizeof(currentname)); - //std::cout << "current name: " << currentname << '\n'; - //*(std::string*)0x02347CD4 = "^1INSANEMODE"; - //testname = *(std::string*)0x02347CD4; - // std::cout << "current name: " << testname << '\n'; - //std::this_thread::sleep_for(std::chrono::milliseconds(10000)); } - void Testprint() - { - while (true) - { - if (GetAsyncKeyState(VK_NUMPAD1) & 1) - { - std::cout << "iprintln sent " << '\n'; // print if its on or off - - //Com_Printf(0, "^3test write'\n"); -// Scr_iPrintLn(0, "test"); - SV_GameSendServerCommand(0, 0, "O \"bo2plugin_test: ^1Hello World^7 \""); - } - else if (GetAsyncKeyState(VK_NUMPAD2) & 1) - { - - std::cout << "Kill server " << '\n'; // print if its on or off - - //Com_Printf(0, "^3test write'\n"); -// Scr_iPrintLn(0, "test"); killserver = (killserver_t)(DWORD)(0x00891750);//00A6DA16 - killserver(NULL); - } - else if (GetAsyncKeyState(VK_NUMPAD3) & 1) - { - - std::cout << "fast_restart" << '\n'; // print if its on or off - - //Com_Printf(0, "^3test write'\n"); -// Scr_iPrintLn(0, "test"); killserver = (killserver_t)(DWORD)(0x00891750);//00A6DA16 - Cbuf_AddText(0, "fast_restart"); - } - else if (GetAsyncKeyState(VK_NUMPAD4) & 1) - { - - std::cout << "setting sv_maxclients to 18" << '\n'; // print if its on or off*(BYTE*)0x627049 = 0xE9 - - //Com_Printf(0, "^3test write'\n"); -// Scr_iPrintLn(0, "test"); killserver = (killserver_t)(DWORD)(0x00891750);//00A6DA16 02347CD4 - *(BYTE*)0x029F00E0 = 0x12; - *(BYTE*)0x029F00F0 = 0x12; - Cbuf_AddText(0, "get sv_maxclients"); - } - else if (GetAsyncKeyState(VK_NUMPAD5) & 1) - { - - std::cout << "setting sv_maxclients to 4" << '\n'; // print if its on or off*(BYTE*)0x627049 = 0xE9 - - //Com_Printf(0, "^3test write'\n"); -// Scr_iPrintLn(0, "test"); killserver = (killserver_t)(DWORD)(0x00891750);//00A6DA16 - *(BYTE*)0x029F00E0 = 0x04; - *(BYTE*)0x029F00F0 = 0x04; - } - else if (GetAsyncKeyState(VK_NUMPAD6) & 1) - { - - //std::cout << "setting sv_maxclients to 4" << '\n'; // print if its on or off*(BYTE*)0x627049 = 0xE9 - - //Com_Printf(0, "^3test write'\n"); -// Scr_iPrintLn(0, "test"); killserver = (killserver_t)(DWORD)(0x00891750);//00A6DA16 - //std::string testname = *(BYTE*)0x02347CD4; - //std::cout << "previous name: " << testname << '\n'; - - char changename[]{ "^1INSANEMODE" }; - char previousname[16]{}; - char currentname[16]{}; - char currentClanTag[8]{}; - - - memcpy((void*)previousname, (void*)0x02347CD4, 16); - std::cout << "previous name: " << previousname << '\n'; - - memcpy((void*)0x02347CD4, (void*)changename, sizeof(changename)); - memcpy((void*)currentname, (void*)0x02347CD4, 16);//sizeof((void*)0x02347CD4)); - std::cout << "current name: " << previousname << '\n'; - //std::cout << "previous name: " << previousname << '\n'; - //memcpy((void*)changename, (void*)0x02347CD4, sizeof(changename)); - - //memcpy((void*)0x02347CD4, (void*)currentname, sizeof(currentname)); - //std::cout << "current name: " << currentname << '\n'; - //*(std::string*)0x02347CD4 = "^1INSANEMODE"; - //testname = *(std::string*)0x02347CD4; - // std::cout << "current name: " << testname << '\n'; - } - else if (GetAsyncKeyState(VK_NUMPAD7) & 1) - { - - dvar_s* iw4madmin_admins = Dvar_RegisterString("iw4madmin_admins", "none", 0x0001, "contains admins for server, seperated by ;"); //(const char* dvarName, const char* value, unsigned __int16 flags, const char* description); - char dvarstringtest[]{ "test" }; - iw4madmin_admins->current.string = dvarstringtest; - } - //else if (GetAsyncKeyState(VK_NUMPAD8) & 1) { - - // //std::string mapname = Dvar_GetString("mapname"); - // const char* hostname_char = Dvar_GetString(0x00574D85); - // //std::string&& hostname = hostname_char.c_str(); - // //char dvarstringtest[] = "test"; - // //mapname->current.string; - // //SetConsoleOutputCP(65001); - // //std::cout << hostname_char << '\n'; - // char hostname[16] = {}; - // //memcpy((void*)hostname, (void*)hostname_char, sizeof((void*)hostname_char)); - // std::cout << "host name: " << hostname_char << '\n'; - - //} - else if (GetAsyncKeyState(VK_NUMPAD8) & 1) - { - clanTagChanger(); - } - } - - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - } void clanTagThread() { while (true) @@ -308,39 +121,4 @@ namespace Game } } -//void clanTagChanger() -//{ -// while (true) -// { -// //char changename[] = "^1INSANEMODE"; -// char previousname[16] = {}; -// char currentname[16] = {}; -// char currentClanTag[8] = {}; -// const char* changeClanTag; -// std::unordered_set allowedValues = { "Admin","Owner","Mod","Trusted","Creator","Sr.Admin" }; -// //std::unordered_set::const_iterator index = allowedValues.find(input); -// //if (index == allowedValues.end()) -// -// memcpy((void*)currentname, (void*)0x02347CD4, 16); -// std::cout << "current name: " << currentname << '\n'; -// -// -// memcpy((void*)currentClanTag, (void*)0x0234D4CC, 8);//sizeof((void*)0x02347CD4)); -// std::cout << "current clan tag: " << currentClanTag << '\n'; -// changeClanTag = ClanTagRequest(currentname).c_str(); -// memcpy((void*)0x0234D4CC, changeClanTag, sizeof(changeClanTag)); -// -// //std::cout << "previous name: " << previousname << '\n'; -// //memcpy((void*)changename, (void*)0x02347CD4, sizeof(changename)); -// -// //memcpy((void*)0x02347CD4, (void*)currentname, sizeof(currentname)); -// //std::cout << "current name: " << currentname << '\n'; -// //*(std::string*)0x02347CD4 = "^1INSANEMODE"; -// //testname = *(std::string*)0x02347CD4; -// // std::cout << "current name: " << testname << '\n'; -// std::this_thread::sleep_for(std::chrono::milliseconds(10000)); -// } -// -//} -