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;
}






