From 1169eb80cc3d419cf79d6d0314136a37326c9ca0 Mon Sep 17 00:00:00 2001 From: Gray <84999745+Milxnor@users.noreply.github.com> Date: Sat, 9 Mar 2024 22:03:15 -0500 Subject: [PATCH] edit thing --- Project Reboot 3.0/BuildingSMActor.h | 2 +- Project Reboot 3.0/BuildingWeapons.h | 9 +++++++++ Project Reboot 3.0/FortPlayerController.cpp | 17 ++++++----------- Project Reboot 3.0/addresses.cpp | 7 ++++++- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Project Reboot 3.0/BuildingSMActor.h b/Project Reboot 3.0/BuildingSMActor.h index bcff2be..7b52424 100644 --- a/Project Reboot 3.0/BuildingSMActor.h +++ b/Project Reboot 3.0/BuildingSMActor.h @@ -55,7 +55,7 @@ public: ) { SetNetDormancy((ENetDormancy)(2 - (NewEditingPlayer != 0))); - // they do something here + this->ForceNetUpdate(); GetEditingPlayer() = NewEditingPlayer; } } diff --git a/Project Reboot 3.0/BuildingWeapons.h b/Project Reboot 3.0/BuildingWeapons.h index c8d5473..56b89fe 100644 --- a/Project Reboot 3.0/BuildingWeapons.h +++ b/Project Reboot 3.0/BuildingWeapons.h @@ -22,5 +22,14 @@ public: void OnRep_EditActor(); + void SetEditActor(ABuildingSMActor* EditActor) + { + // if (HasAuthority()) + { + GetEditActor() = EditActor; + OnRep_EditActor(); + } + } + static UClass* StaticClass(); }; \ No newline at end of file diff --git a/Project Reboot 3.0/FortPlayerController.cpp b/Project Reboot 3.0/FortPlayerController.cpp index 0eef95f..065ebeb 100644 --- a/Project Reboot 3.0/FortPlayerController.cpp +++ b/Project Reboot 3.0/FortPlayerController.cpp @@ -1694,8 +1694,7 @@ void AFortPlayerController::ServerBeginEditingBuildingActorHook(AFortPlayerContr if (!EditTool) return; - EditTool->GetEditActor() = BuildingActorToEdit; - EditTool->OnRep_EditActor(); + EditTool->SetEditActor(BuildingActorToEdit); } void AFortPlayerController::ServerEditBuildingActorHook(UObject* Context, FFrame& Stack, void* Ret) @@ -1762,21 +1761,17 @@ void AFortPlayerController::ServerEndEditingBuildingActorHook(AFortPlayerControl if (!WorldInventory) return; + BuildingActorToStopEditing->SetEditingPlayer(nullptr); + auto EditToolInstance = WorldInventory->FindItemInstance(EditToolDef); if (!EditToolInstance) return; - Pawn->EquipWeaponDefinition(EditToolDef, EditToolInstance->GetItemEntry()->GetItemGuid()); + // Pawn->EquipWeaponDefinition(EditToolDef, EditToolInstance->GetItemEntry()->GetItemGuid()); // ERM - auto EditTool = Cast(Pawn->GetCurrentWeapon()); - - BuildingActorToStopEditing->GetEditingPlayer() = nullptr; - // BuildingActorToStopEditing->OnRep_EditingPlayer(); - - if (EditTool) + if (auto EditTool = Cast(Pawn->GetCurrentWeapon())) { - EditTool->GetEditActor() = nullptr; - EditTool->OnRep_EditActor(); + EditTool->SetEditActor(nullptr); } } diff --git a/Project Reboot 3.0/addresses.cpp b/Project Reboot 3.0/addresses.cpp index eb97228..b39f93b 100644 --- a/Project Reboot 3.0/addresses.cpp +++ b/Project Reboot 3.0/addresses.cpp @@ -583,8 +583,13 @@ std::vector Addresses::GetFunctionsToNull() toNull.push_back(Memcury::Scanner::FindStringRef(L"Widget Class %s - Running Initialize On Archetype, %s.").ScanFor({ 0x40, 0x55 }, false).Get()); // Widget class } - if (Engine_Version == 422) + if (Engine_Version == 422 + || Engine_Version == 423 + || Engine_Version == 424 // guessed + ) { + // This sig is valid on 7.40, 8.51, 11.31 (3 refs), but on 12.41 it has 1 ref which isn't widget class + // Also this isn't the actual function but something the widget class thing calls toNull.push_back(Memcury::Scanner::FindPattern("48 89 5C 24 ? 57 48 83 EC 30 48 8B 41 28 48 8B DA 48 8B F9 48 85 C0 74 34 48 8B 4B 08 48 8D").Get()); // widget class }