r5sdk/r5dedicated/cvengineserver.cpp

36 lines
1.1 KiB
C++

#include "pch.h"
#include "hooks.h"
namespace Hooks
{
IsPersistenceDataAvailableFn originalIsPersistenceDataAvailable = nullptr;
}
//-----------------------------------------------------------------------------
// Sets the persistence var in the playerstruct to ready for each client
//-----------------------------------------------------------------------------
bool Hooks::IsPersistenceDataAvailable(__int64 thisptr, int client)
{
static bool isPersistenceVarSet[256];
// TODO: Maybe not hardcode
std::uintptr_t playerStructBase = 0x16073B200;
std::uintptr_t playerStructSize = 0x4A4C0;
std::uintptr_t persistenceVar = 0x5BC;
std::uintptr_t targetPlayerStruct = playerStructBase + client * playerStructSize;
*(char*)(targetPlayerStruct + persistenceVar) = (char)0x5;
if (!isPersistenceVarSet[client])
{
printf("\n");
printf("##################################################\n");
printf("] SETTING PERSISTENCE VAR FOR CLIENT #%d\n", client);
printf("##################################################\n");
printf("\n");
isPersistenceVarSet[client] = true;
}
return originalIsPersistenceDataAvailable(thisptr, client);
}