enum netsrc_t
{
NS_CLIENT1 = 0x0,
NS_MAXCLIENTS = 0x1,
NS_SERVER = 0x2,
NS_PACKET = 0x3,
NS_INVALID_NETSRC = 0x4,
};
enum netadrtype_t
{
NA_BOT = 0x0,
NA_BAD = 0x1,
NA_LOOPBACK = 0x2,
NA_BROADCAST = 0x3,
NA_IP = 0x4,
};
struct netadr_s
{
netadrtype_t type; //0 = Bot
char ip[4];
unsigned short port; //ClientNum
netsrc_t localNetID; // 0 = Client
unsigned int addrHandleIndex;
};
int getClient_t(int client) {
return (*(int*)(0x17BB210)) + (client * 0x68B80);
}
int SV_AddTestClient() {
char buffer[1024];
int botport = 1;
int protocolVersion = ((int(*)())&ParseAddr(0x28FE40))(); //GetProtocolVersion
int checksum = ((int(*)())&ParseAddr(0x2093C))(); //BG_NetDataChecksum
int PersistentDataDefVersion = ((int(*)())&ParseAddr(0x1EA710))(); //LiveStorage_GetPersistentDataDefVersion
unsigned int PersistentDataDefVersionChecksum = ((int(*)())&ParseAddr(0x1EA740))(); //LiveStorage_GetPersistentDataDefFormatChecksum
//0x236084 - client->dropReason, causing issue, source: unknown. (SV_SendMessageToClient)
uint32_t patchData[] = { 0x38800005 };
write_process(0x22E55C, &patchData, 4);
Sprintf(buffer, "connect bot%d \"\\cg_predictItems\\1\\cl_anonymous\\0\\color\\4\\head\\default\\model\\multi\\snaps\\20\\rate\\5000\\name\\bot%d\\protocol\\%d\\checksum\\%d\\statver\\%d %u\\qport\\%d\"", botport, botport, protocolVersion, checksum, PersistentDataDefVersion, PersistentDataDefVersionChecksum, botport);
Memset((void*)ThreadStorage_a, 0, sizeof(netadr_s));
netadr_s* newConnection = (netadr_s*)(ThreadStorage_a);
newConnection->port = botport;
((void(*)(const char*))&ParseAddr(0x1DBA20))(buffer); //SV_CmdTokenizeString(const char* string)
((void(*)(netadr_s*))&ParseAddr(0x226074))(newConnection); //SV_DirectConnect(netadr_s* connectionInfo)
((void(*)())&ParseAddr(0x1DB524))(); //SV_CmdEndTokenizeString()
*(short*)(getClient_t(botport) + 0x352EA) = 0x3FF; //Set Stat Flags
*(short*)(getClient_t(botport) + 0x30) = botport; //botPort
((void(*)(int client))&ParseAddr(0x2284F)(getClient_t(botport)); //SV_SendClientGameState(client_t* client)
((void(*)(int client, int usercmd))&ParseAddr(0x2272DC))(getClient_t(botport), ThreadStorage_a); //SV_ClientEnterWorld(client_t* client, usercmd_s* lastUserCmd)
}
Copyright © 2024, NextGenUpdate.
All Rights Reserved.