diff --git a/Project Reboot 3.0/BuildingSMActor.h b/Project Reboot 3.0/BuildingSMActor.h index bcff2be..dfb2a74 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 + ForceNetUpdate(); GetEditingPlayer() = NewEditingPlayer; } } diff --git a/Project Reboot 3.0/FortPlayerController.cpp b/Project Reboot 3.0/FortPlayerController.cpp index e7d65ed..d5e5d1e 100644 --- a/Project Reboot 3.0/FortPlayerController.cpp +++ b/Project Reboot 3.0/FortPlayerController.cpp @@ -1694,8 +1694,6 @@ void AFortPlayerController::ServerBeginEditingBuildingActorHook(AFortPlayerContr if (!PlayerState) return; - BuildingActorToEdit->SetEditingPlayer(PlayerState); - auto WorldInventory = PlayerController->GetWorldInventory(); if (!WorldInventory) @@ -1716,7 +1714,9 @@ void AFortPlayerController::ServerBeginEditingBuildingActorHook(AFortPlayerContr return; EditTool->GetEditActor() = BuildingActorToEdit; - EditTool->OnRep_EditActor(); + // EditTool->OnRep_EditActor(); + + BuildingActorToEdit->SetEditingPlayer(PlayerState); } void AFortPlayerController::ServerEditBuildingActorHook(UObject* Context, FFrame& Stack, void* Ret) @@ -1749,7 +1749,7 @@ void AFortPlayerController::ServerEditBuildingActorHook(UObject* Context, FFrame // if (!PlayerState || PlayerState->GetTeamIndex() != BuildingActorToEdit->GetTeamIndex()) //return ServerEditBuildingActorOriginal(Context, Frame, Ret); - BuildingActorToEdit->SetEditingPlayer(nullptr); + // BuildingActorToEdit->SetEditingPlayer(nullptr); static ABuildingSMActor* (*BuildingSMActorReplaceBuildingActor)(ABuildingSMActor*, __int64, UClass*, int, int, uint8_t, AFortPlayerController*) = decltype(BuildingSMActorReplaceBuildingActor)(Addresses::ReplaceBuildingActor); @@ -1788,16 +1788,12 @@ void AFortPlayerController::ServerEndEditingBuildingActorHook(AFortPlayerControl if (!EditToolInstance) return; - Pawn->EquipWeaponDefinition(EditToolDef, EditToolInstance->GetItemEntry()->GetItemGuid()); + // Pawn->EquipWeaponDefinition(EditToolDef, EditToolInstance->GetItemEntry()->GetItemGuid()); auto EditTool = Cast(Pawn->GetCurrentWeapon()); - BuildingActorToStopEditing->GetEditingPlayer() = nullptr; - // BuildingActorToStopEditing->OnRep_EditingPlayer(); - if (EditTool) { EditTool->GetEditActor() = nullptr; - EditTool->OnRep_EditActor(); } } \ No newline at end of file diff --git a/Project Reboot 3.0/Object.h b/Project Reboot 3.0/Object.h index 162f8cc..058e4b1 100644 --- a/Project Reboot 3.0/Object.h +++ b/Project Reboot 3.0/Object.h @@ -154,4 +154,34 @@ FORCEINLINE bool IsValidChecked(const UObject* Test) // return false; return true; // FInternalUObjectBaseUtilityIsValidFlagsChecker::CheckObjectValidBasedOnItsFlags(Test); -} \ No newline at end of file +} + +class Test +{ + // IMPLICITLY: Test() { VFT = TestVFT } + // IMPLICITLY: void** VFT // 0x0 + virtual void func() {} + virtual void people() {} +}; + +/* + +TestVFT: + +Test::func +Test::people + +HelloVFT: + +Hello::func +Test::people +Hello::func2 + +*/ + +class Hello : Test +{ + // IMPLICITLY: Hello() { VFT = HelloVFT } + void func() override { /**/ } + virtual void func2() {} +};