mirror of
https://github.com/DumbDev69420/EscapeTheBackrooms_Internal.git
synced 2024-12-22 22:47:30 +08:00
Added Fix for Equip Item "exploit" for People Hosting with Trainer Loaded, and reworked some Code Functionality. Finna add more "exploit" fixes soon.
This commit is contained in:
parent
d95714f19a
commit
0470691dfd
@ -7,7 +7,7 @@
|
|||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
|
||||||
|
|
||||||
#define DEBUG
|
//#define DEBUG
|
||||||
#define Gatekeep
|
#define Gatekeep
|
||||||
|
|
||||||
void RunMainHost();
|
void RunMainHost();
|
||||||
|
@ -6,7 +6,7 @@ namespace HostOptions {
|
|||||||
{
|
{
|
||||||
ULONGLONG TickCount = GetTickCount64();
|
ULONGLONG TickCount = GetTickCount64();
|
||||||
|
|
||||||
if (Settings::Host_CollisionPlayers || Settings::Host_Event_TeleportPlayers)
|
if (Settings::Host_CollisionPlayers || Settings::Host_FunMode || Settings::Host_Event_TeleportPlayers)
|
||||||
{
|
{
|
||||||
static ULONGLONG TickCount_Host = 0;
|
static ULONGLONG TickCount_Host = 0;
|
||||||
|
|
||||||
|
@ -31,22 +31,33 @@ void ConsoleExit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
namespace FunctionPtrsProcessEvent {
|
namespace FunctionPtrsProcessEvent {
|
||||||
void* Lobby_PlayerController_COC_KickedFromLobby = nullptr;
|
enum FunctionDefs
|
||||||
void* MP_PlayerController_COC_KickedFromLobby = nullptr;
|
{
|
||||||
void* Lobby_PlayerController_CReceiveBeginPlay = nullptr;
|
Lobby_PlayerController_COC_KickedFromLobby,
|
||||||
void* W_Kicked_C_Tick = nullptr;
|
MP_PlayerController_COC_KickedFromLobby,
|
||||||
|
W_Kicked_C_Tick,
|
||||||
|
Lobby_PlayerController_CReceiveBeginPlay,
|
||||||
|
BPCharacter_Demo_C_SpawnEquipItem_SERVER,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void* FunctionHooks[5];
|
||||||
|
|
||||||
|
const size_t FunctionHookSize = sizeof(FunctionHooks) / 8;
|
||||||
|
|
||||||
void NullObjects() {
|
void NullObjects() {
|
||||||
Lobby_PlayerController_COC_KickedFromLobby = nullptr;
|
|
||||||
MP_PlayerController_COC_KickedFromLobby = nullptr;
|
for (size_t i = 0; i < FunctionHookSize; i++)
|
||||||
Lobby_PlayerController_CReceiveBeginPlay = nullptr;
|
{
|
||||||
W_Kicked_C_Tick = nullptr;
|
FunctionHooks[i] = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms) {
|
void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms) {
|
||||||
|
using namespace FunctionPtrsProcessEvent;
|
||||||
|
|
||||||
auto execF = Function;
|
auto execF = Function;
|
||||||
|
|
||||||
@ -55,7 +66,8 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
|
|
||||||
#pragma region FindPointers
|
#pragma region FindPointers
|
||||||
|
|
||||||
if (!FunctionPtrsProcessEvent::Lobby_PlayerController_COC_KickedFromLobby) {
|
|
||||||
|
if (!FunctionPtrsProcessEvent::FunctionHooks[Lobby_PlayerController_COC_KickedFromLobby]) {
|
||||||
|
|
||||||
static ULONGLONG TickCount_ = 0;
|
static ULONGLONG TickCount_ = 0;
|
||||||
auto Tick = GetTickCount64();
|
auto Tick = GetTickCount64();
|
||||||
@ -70,13 +82,13 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
auto Func = Class_->GetFunction("Lobby_PlayerController_C", "OC_KickedFromLobby");
|
auto Func = Class_->GetFunction("Lobby_PlayerController_C", "OC_KickedFromLobby");
|
||||||
if (Func)
|
if (Func)
|
||||||
{
|
{
|
||||||
FunctionPtrsProcessEvent::Lobby_PlayerController_COC_KickedFromLobby = Func;
|
FunctionPtrsProcessEvent::FunctionHooks[0] = Func;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FunctionPtrsProcessEvent::MP_PlayerController_COC_KickedFromLobby) {
|
if (!FunctionPtrsProcessEvent::FunctionHooks[MP_PlayerController_COC_KickedFromLobby]) {
|
||||||
|
|
||||||
static ULONGLONG TickCount_ = 0;
|
static ULONGLONG TickCount_ = 0;
|
||||||
auto Tick = GetTickCount64();
|
auto Tick = GetTickCount64();
|
||||||
@ -91,13 +103,13 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
auto Func = Class_->GetFunction("MP_PlayerController_C", "OC_KickedFromLobby");
|
auto Func = Class_->GetFunction("MP_PlayerController_C", "OC_KickedFromLobby");
|
||||||
if (Func)
|
if (Func)
|
||||||
{
|
{
|
||||||
FunctionPtrsProcessEvent::MP_PlayerController_COC_KickedFromLobby = Func;
|
FunctionPtrsProcessEvent::FunctionHooks[1] = Func;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FunctionPtrsProcessEvent::W_Kicked_C_Tick) {
|
if (!FunctionPtrsProcessEvent::FunctionHooks[W_Kicked_C_Tick]) {
|
||||||
|
|
||||||
static ULONGLONG TickCount_ = 0;
|
static ULONGLONG TickCount_ = 0;
|
||||||
auto Tick = GetTickCount64();
|
auto Tick = GetTickCount64();
|
||||||
@ -113,7 +125,7 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
|
|
||||||
if (Func)
|
if (Func)
|
||||||
{
|
{
|
||||||
FunctionPtrsProcessEvent::W_Kicked_C_Tick = Func;
|
FunctionPtrsProcessEvent::FunctionHooks[2] = Func;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -121,7 +133,7 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!FunctionPtrsProcessEvent::Lobby_PlayerController_CReceiveBeginPlay) {
|
if (!FunctionPtrsProcessEvent::FunctionHooks[Lobby_PlayerController_CReceiveBeginPlay]) {
|
||||||
|
|
||||||
static ULONGLONG TickCount_ = 0;
|
static ULONGLONG TickCount_ = 0;
|
||||||
auto Tick = GetTickCount64();
|
auto Tick = GetTickCount64();
|
||||||
@ -136,7 +148,28 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
auto Func = Class_->GetFunction("Lobby_PlayerController_C", "ReceiveBeginPlay");
|
auto Func = Class_->GetFunction("Lobby_PlayerController_C", "ReceiveBeginPlay");
|
||||||
if (Func)
|
if (Func)
|
||||||
{
|
{
|
||||||
FunctionPtrsProcessEvent::Lobby_PlayerController_CReceiveBeginPlay = Func;
|
FunctionPtrsProcessEvent::FunctionHooks[3] = Func;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!FunctionPtrsProcessEvent::FunctionHooks[BPCharacter_Demo_C_SpawnEquipItem_SERVER]) {
|
||||||
|
|
||||||
|
static ULONGLONG TickCount_ = 0;
|
||||||
|
auto Tick = GetTickCount64();
|
||||||
|
|
||||||
|
if (Tick >= TickCount_) {
|
||||||
|
TickCount_ = Tick + 100;
|
||||||
|
|
||||||
|
auto Class_ = SDK::ABPCharacter_Demo_C::StaticClass();
|
||||||
|
|
||||||
|
if (Class_)
|
||||||
|
{
|
||||||
|
auto Func = Class_->GetFunction("BPCharacter_Demo_C", "SpawnEquipItem_SERVER");
|
||||||
|
if (Func)
|
||||||
|
{
|
||||||
|
FunctionPtrsProcessEvent::FunctionHooks[4] = Func;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -146,7 +179,7 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (execF == FunctionPtrsProcessEvent::Lobby_PlayerController_COC_KickedFromLobby || execF == FunctionPtrsProcessEvent::MP_PlayerController_COC_KickedFromLobby) {
|
if (execF == FunctionHooks[Lobby_PlayerController_COC_KickedFromLobby] || execF == FunctionHooks[MP_PlayerController_COC_KickedFromLobby]) {
|
||||||
Cheat::MainRun(nullptr);
|
Cheat::MainRun(nullptr);
|
||||||
|
|
||||||
if (Obj == Cheat::PlayerController) {
|
if (Obj == Cheat::PlayerController) {
|
||||||
@ -161,15 +194,15 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (execF == FunctionPtrsProcessEvent::Lobby_PlayerController_CReceiveBeginPlay) {
|
if (execF == FunctionHooks[Lobby_PlayerController_CReceiveBeginPlay]) {
|
||||||
|
|
||||||
Cheat::MainRun(nullptr);
|
Cheat::MainRun(nullptr);
|
||||||
|
|
||||||
if (Obj != Cheat::PlayerController) {
|
if (Obj != Cheat::PlayerController) {
|
||||||
SDK::ALobby_PlayerController_C* Controller = (SDK::ALobby_PlayerController_C*)Obj;
|
SDK::ALobby_PlayerController_C* Controller = (SDK::ALobby_PlayerController_C*)Obj;
|
||||||
|
|
||||||
if(Controller->PlayerState)
|
if (Controller->PlayerState)
|
||||||
Cheat::Message(std::string("Player " + Controller->PlayerState->PlayerNamePrivate.ToString() + "joined your Game!"));
|
Cheat::Message(std::string("Player " + Controller->PlayerState->PlayerNamePrivate.ToString() + "joined your Game!"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -177,19 +210,57 @@ void ProcessEventHook(SDK::UObject* Obj, SDK::UFunction* Function, void* Parms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (execF == FunctionPtrsProcessEvent::W_Kicked_C_Tick) {
|
if (execF == FunctionHooks[W_Kicked_C_Tick]) {
|
||||||
auto obj_ = (SDK::UW_Kicked_C*)Obj;
|
auto obj_ = (SDK::UW_Kicked_C*)Obj;
|
||||||
auto params_ = (SDK::Params::UW_Kicked_C_Tick_Params*)Parms;
|
auto params_ = (SDK::Params::UW_Kicked_C_Tick_Params*)Parms;
|
||||||
|
|
||||||
auto mssg = Cheat::TextLib->Conv_StringToText(SDK::FString(L"Host the Broke ass fella kicked you lmao"));
|
auto mssg = Cheat::TextLib->Conv_StringToText(SDK::FString(L"Host the Broke ass fella kicked you lmao"));
|
||||||
|
|
||||||
obj_->TextBlock_Message->SetText(mssg);
|
obj_->TextBlock_Message->SetText(mssg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (execF == FunctionHooks[BPCharacter_Demo_C_SpawnEquipItem_SERVER]) {
|
||||||
|
auto CallingPawn = (SDK::ABPCharacter_Demo_C*)Obj;
|
||||||
|
|
||||||
|
auto params_ = (SDK::Params::ABPCharacter_Demo_C_SpawnEquipItem_SERVER_Params*)Parms;
|
||||||
|
|
||||||
|
bool IsLocalHost = false;
|
||||||
|
bool IsLocalPlayer = false;
|
||||||
|
|
||||||
|
SDK::AMP_GameMode_C* GameMode = nullptr;
|
||||||
|
|
||||||
|
if (CallingPawn->Controller) {
|
||||||
|
auto world = SDK::UWorld::GetWorld();
|
||||||
|
IsLocalHost = true;
|
||||||
|
GameMode = (SDK::AMP_GameMode_C*)world->AuthorityGameMode;
|
||||||
|
|
||||||
|
if (auto LocalPlayer = world->OwningGameInstance->LocalPlayers[0]; LocalPlayer && LocalPlayer->PlayerController) {
|
||||||
|
IsLocalPlayer = (CallingPawn->Controller == LocalPlayer->PlayerController);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsLocalPlayer) {
|
||||||
|
|
||||||
|
if (auto ItemClass = params_->ItemClass; ItemClass) {
|
||||||
|
|
||||||
|
if (!ItemClass->IsA(SDK::ABP_Item_C::StaticClass())) {
|
||||||
|
if (IsLocalHost) {
|
||||||
|
Cheat::MessageW(L"Non Item was passed to SpawnEquipItem, kicking that bad Cheater!");
|
||||||
|
GameMode->KickPlayer(CallingPawn->PlayerState, CallingPawn->GetOwner(), (SDK::AMP_PlayerController_C*)CallingPawn->Controller, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (IsLocalHost) {
|
||||||
|
Cheat::MessageW(L"Nullpointer was passed to SpawnEquipItem, kicking that bad Cheater!");
|
||||||
|
GameMode->KickPlayer(CallingPawn->PlayerState, CallingPawn->GetOwner(), (SDK::AMP_PlayerController_C*)CallingPawn->Controller, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return fnProcessEventOrigin(Obj, Function, Parms);
|
return fnProcessEventOrigin(Obj, Function, Parms);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user