i wanna share my old fantasy tennis bot with you.
i am not sure if the code is still working but you can try it!
itīs written in C/C++
Code:
#include <iostream> #include <windows.h> #include <tlhelp32.h> using namespace std; HWND GameWindow = FindWindowA(0, "FantasyTennis");; bool CheckForProcessAlive(LPSTR str); BOOL IsAdministrator(VOID); void sendKey(int vk, BOOL bExtended); bool state = FALSE; BOOL IsAdministrator(VOID) { SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; PSID AdministratorsGroup; if( !AllocateAndInitializeSid(&NtAuthority,2,SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,0, 0, 0, 0, 0, 0,&AdministratorsGroup)) { return FALSE; } BOOL IsInAdminGroup = FALSE; if(!CheckTokenMembership(NULL,AdministratorsGroup,&IsInAdminGroup)) { IsInAdminGroup = FALSE; } FreeSid(AdministratorsGroup); return IsInAdminGroup; } void SetDebugPrivilege() { HANDLE hProcess=GetCurrentProcess(), hToken; TOKEN_PRIVILEGES priv; LUID luid; OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken); priv.PrivilegeCount = 1; priv.Privileges[0].Luid = luid; priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &priv, 0, 0, 0); CloseHandle(hToken); } int main(int argc, char *argv[]){ SetConsoleTitle("XxharCs-Bot"); if(IsAdministrator() == FALSE) { MessageBoxA(0, "Please start it as admin !", "Error", MB_ICONERROR); //ExitProcess(1); return 0; } SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10); char* ProcessName = "FT_Client.exe"; cout << "================================\n"; cout << " Fantasy Tennis Bot by XxharCs\n"; cout << "================================\n\n"; SetDebugPrivilege(); cout << "Waiting for Fantasy Tennis..." << endl; while(CheckForProcessAlive(ProcessName)){ } cout << "Fantasy Tennis found!" << endl; while (!CheckForProcessAlive(ProcessName)) { if(GetAsyncKeyState(0x70)&1)state =! state; // 0x70 = F1 if(state){ SetForegroundWindow(GameWindow); Sleep(50); sendKey(0x57, FALSE); // 0x57 = W Sleep(2000); } } state = FALSE; cout << "Fantasy Tennis is closed !" << endl; Sleep(1000); return 0; } bool CheckForProcessAlive(LPSTR str) { HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32* processInfo=new PROCESSENTRY32; processInfo->dwSize=sizeof(PROCESSENTRY32); DWORD processID = 0; BOOL bFound = TRUE; while(Process32Next(hSnapShot,processInfo)!=FALSE) { processID = processInfo->th32ProcessID; if(lstrcmp(processInfo->szExeFile,str) == 0) { bFound = FALSE; //break; } } CloseHandle(hSnapShot); if(bFound) { return TRUE; } return FALSE; } void sendKey(int vk, BOOL bExtended) { KEYBDINPUT kb = {0}; INPUT Input = {0}; int scan = MapVirtualKey(vk, 0); /* Generate a "key down" */ if (bExtended) { kb.dwFlags = KEYEVENTF_EXTENDEDKEY; } kb.wVk = vk; Input.type = INPUT_KEYBOARD; Input.ki = kb; Input.ki.wScan = scan; SendInput(1, &Input, sizeof(Input)); /* Generate a "key up" */ ZeroMemory(&kb, sizeof(KEYBDINPUT)); ZeroMemory(&Input, sizeof(INPUT)); kb.dwFlags = KEYEVENTF_KEYUP; if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; } kb.wVk = vk; Input.type = INPUT_KEYBOARD; Input.ki = kb; Input.ki.wScan = scan; SendInput(1, &Input, sizeof(Input)); return; }