From b6703b3381bcc9241dfdc4c88892e2395f9c58d5 Mon Sep 17 00:00:00 2001 From: SabreDartStudios <108193207+SabreDartStudios@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:32:21 -0500 Subject: [PATCH] Updated plugin to work with UE 5.5. Added logging of port in instance laucher. Modified to run Postgre on port 15432 to stop conflicts with PostgreSQL already installed. --- .gitignore | 1 + plugins/OWSPluginUE5/OWSPlugin.uplugin | 4 +- .../Private/OWSAdvancedProjectile.cpp | 4 +- .../Private/OWSCharacterWithAbilities.cpp | 4 +- .../Source/OWSPlugin/Private/OWSGameMode.cpp | 43 ++++++++----------- .../Source/OWSPlugin/Private/OWSHUD.cpp | 2 - .../OWSPlugin/Public/OWSPlayerController.h | 3 -- src/.docker/databases.yml | 2 +- src/.env | 2 +- .../Services/ServerLauncherMQListener.cs | 2 +- 10 files changed, 29 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index 4eaa3a332e..fea13ea9a3 100644 --- a/.gitignore +++ b/.gitignore @@ -372,3 +372,4 @@ plugins/OWSPlugin/Saved/ plugins/OWSPluginUE5/Binaries/ plugins/OWSPluginUE5/Intermediate/ plugins/OWSPluginUE5/Saved/ +/plugins/OWSPluginUE5/Source/OWSPlugin/Public/OWSPlayerController.h.bak diff --git a/plugins/OWSPluginUE5/OWSPlugin.uplugin b/plugins/OWSPluginUE5/OWSPlugin.uplugin index 1982572c4a..39adfc3d2a 100644 --- a/plugins/OWSPluginUE5/OWSPlugin.uplugin +++ b/plugins/OWSPluginUE5/OWSPlugin.uplugin @@ -1,7 +1,7 @@ { "FileVersion": 3, "Version": 5, - "VersionName": "5.4", + "VersionName": "5.5", "FriendlyName": "OWSPlugin", "Description": "Open World Server", "Category": "Other", @@ -10,7 +10,7 @@ "DocsURL": "https://www.openworldserver.com", "MarketplaceURL": "", "SupportURL": "", - "EngineVersion": "5.4.0", + "EngineVersion": "5.5.0", "CanContainContent": true, "IsBetaVersion": false, "Installed": true, diff --git a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSAdvancedProjectile.cpp b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSAdvancedProjectile.cpp index ee579e1a6a..19139319c6 100644 --- a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSAdvancedProjectile.cpp +++ b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSAdvancedProjectile.cpp @@ -75,7 +75,7 @@ AOWSAdvancedProjectile::AOWSAdvancedProjectile(const class FObjectInitializer& O bHasSpawnedFully = false; NetPriority = 2.f; - MinNetUpdateFrequency = 100.0f; + SetMinNetUpdateFrequency(100.0f); } void AOWSAdvancedProjectile::PreInitializeComponents() @@ -129,7 +129,7 @@ void AOWSAdvancedProjectile::OnRep_Instigator() //InstigatorTeamNum = GetTeamNum(); // this checks Instigator first InstigatorController = GetInstigator()->Controller; - if (Cast(GetInstigator())) + if (Cast(GetInstigator())) { ((AOWSCharacterWithAbilities*)(GetInstigator()))->LastFiredProjectile = this; } diff --git a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSCharacterWithAbilities.cpp b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSCharacterWithAbilities.cpp index 8fe714645c..ee396f8bd1 100644 --- a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSCharacterWithAbilities.cpp +++ b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSCharacterWithAbilities.cpp @@ -26,8 +26,8 @@ AOWSCharacterWithAbilities::AOWSCharacterWithAbilities(const class FObjectInitia AbilitySystem->SetIsReplicated(true); AbilitySystem->SetReplicationMode(EGameplayEffectReplicationMode::Mixed); - SpellAbilityHandles.SetNum(22, false); - WeaponAbilityHandles.SetNum(22, false); + SpellAbilityHandles.SetNum(22, EAllowShrinking::No); + WeaponAbilityHandles.SetNum(22, EAllowShrinking::No); OWSAttributes = CreateDefaultSubobject(TEXT("AttributeSet")); } diff --git a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSGameMode.cpp b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSGameMode.cpp index 26141555e7..f89c0df2b0 100644 --- a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSGameMode.cpp +++ b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSGameMode.cpp @@ -469,35 +469,30 @@ void AOWSGameMode::SaveAllPlayerLocations() { if (NextSaveGroupIndex == PlayerIndex % SplitSaveIntoHowManyGroups) { - AOWSPlayerController* PlayerControllerToSave = Cast(Iterator->Get()); - - if (PlayerControllerToSave) + if (APlayerController* PlayerControllerToSave = Cast(Iterator->Get())) { APawn* MyPawn = Iterator->Get()->GetPawn(); if (MyPawn) { - PlayerControllerToSave->LastCharacterLocation = MyPawn->GetActorLocation(); - PlayerControllerToSave->LastCharacterRotation = MyPawn->GetActorRotation(); + FVector PawnLocation = MyPawn->GetActorLocation(); + FRotator PawnRotation = MyPawn->GetActorRotation(); + + DataToSave.Append(PlayerControllerToSave->PlayerState->GetPlayerName()); + DataToSave.Append(":"); + DataToSave.Append(FString::SanitizeFloat(PawnLocation.X)); + DataToSave.Append(":"); + DataToSave.Append(FString::SanitizeFloat(PawnLocation.Y)); + DataToSave.Append(":"); + DataToSave.Append(FString::SanitizeFloat(PawnLocation.Z)); + DataToSave.Append(":"); + DataToSave.Append(FString::SanitizeFloat(PawnRotation.Roll)); + DataToSave.Append(":"); + DataToSave.Append(FString::SanitizeFloat(PawnRotation.Pitch)); + DataToSave.Append(":"); + DataToSave.Append(FString::SanitizeFloat(PawnRotation.Yaw)); + DataToSave.Append("|"); } - - FVector PawnLocation = PlayerControllerToSave->LastCharacterLocation; - FRotator PawnRotation = PlayerControllerToSave->LastCharacterRotation; - - DataToSave.Append(PlayerControllerToSave->PlayerState->GetPlayerName()); - DataToSave.Append(":"); - DataToSave.Append(FString::SanitizeFloat(PawnLocation.X)); - DataToSave.Append(":"); - DataToSave.Append(FString::SanitizeFloat(PawnLocation.Y)); - DataToSave.Append(":"); - DataToSave.Append(FString::SanitizeFloat(PawnLocation.Z)); - DataToSave.Append(":"); - DataToSave.Append(FString::SanitizeFloat(PawnRotation.Roll)); - DataToSave.Append(":"); - DataToSave.Append(FString::SanitizeFloat(PawnRotation.Pitch)); - DataToSave.Append(":"); - DataToSave.Append(FString::SanitizeFloat(PawnRotation.Yaw)); - DataToSave.Append("|"); } } @@ -714,7 +709,7 @@ void AOWSGameMode::UpdateNumberOfPlayers() if (ZoneInstanceID < 1) { - UE_LOG(OWS, Error, TEXT("UpdateNumberOfPlayers: ZoneInstanceId is empty!")); + UE_LOG(OWS, Warning, TEXT("UpdateNumberOfPlayers: ZoneInstanceId is empty! Ignore this warning if running from the Editor!")); return; } diff --git a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSHUD.cpp b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSHUD.cpp index d8fe46bd53..828bac6ed3 100644 --- a/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSHUD.cpp +++ b/plugins/OWSPluginUE5/Source/OWSPlugin/Private/OWSHUD.cpp @@ -968,7 +968,6 @@ void AOWSHUD::RenderInteractiveInventoryGrid(UOWSInventory* Inventory, UTexture* //UInventory* const Inventory = (UInventory*)InventoryObject; - FColor FontColor; FVector2D* FontScale = new FVector2D(1.0f, 1.0f); for (int32 curRow = 0; curRow < NumberOfRows; curRow++) @@ -1067,7 +1066,6 @@ void AOWSHUD::RenderInteractiveInventoryGrid(UOWSInventory* Inventory, UTexture* void AOWSHUD::RenderInteractiveInventoryGridUsingLockedSlotGroups(UOWSInventory* Inventory, UTexture* EmptySlotTexture, UTexture* LockedRowTexture, int32 X, int32 Y, int32 XSpacing, int32 YSpacing, int32 iconWidth, int32 iconHeight, int32 NumberOfRows, int32 NumberOfCols, int32 SlotGroupRows, int32 SlotGroupCols, int32 SlotGroupXSpacing, int32 SlotGroupYSpacing) { - FColor FontColor; FVector2D* FontScale = new FVector2D(1.0f, 1.0f); int32 SlotGroupWidth = NumberOfCols * (iconWidth + XSpacing) - XSpacing; int32 SlotGroupHeight = NumberOfRows * (iconHeight + YSpacing) - YSpacing; diff --git a/plugins/OWSPluginUE5/Source/OWSPlugin/Public/OWSPlayerController.h b/plugins/OWSPluginUE5/Source/OWSPlugin/Public/OWSPlayerController.h index 10aecfa762..ae4da7be82 100644 --- a/plugins/OWSPluginUE5/Source/OWSPlugin/Public/OWSPlayerController.h +++ b/plugins/OWSPluginUE5/Source/OWSPlugin/Public/OWSPlayerController.h @@ -54,9 +54,6 @@ class OWSPLUGIN_API AOWSPlayerController : public APlayerController float ServerTravelRY; float ServerTravelRZ; - FVector LastCharacterLocation; - FRotator LastCharacterRotation; - UPROPERTY() TMap LocalMeshItemsMap; diff --git a/src/.docker/databases.yml b/src/.docker/databases.yml index 02893a923d..bbe1657df7 100644 --- a/src/.docker/databases.yml +++ b/src/.docker/databases.yml @@ -25,7 +25,7 @@ services: environment: - POSTGRES_PASSWORD=${DATABASE_PASSWORD} ports: - - "5432:5432" + - "15432:5432" volumes: - database:/var/lib/postgresql/data container_name: PostgreSQL diff --git a/src/.env b/src/.env index 907a55cd0a..ccb48f3193 100644 --- a/src/.env +++ b/src/.env @@ -37,7 +37,7 @@ DATABASE_PASSWORD='yourStrong(!)Password' # MSSQL # DATABASE_CONNECTION_STRING="Server=host.docker.internal;Database=OpenWorldServer;User Id=SA;Password=${DATABASE_PASSWORD};ConnectRetryCount=0" # Postgres -DATABASE_CONNECTION_STRING="Host=host.docker.internal;Port=5432;Database=openworldserver;Username=postgres;Password=${DATABASE_PASSWORD};" +DATABASE_CONNECTION_STRING="Host=host.docker.internal;Port=15432;Database=openworldserver;Username=postgres;Password=${DATABASE_PASSWORD};" # Mysql # DATABASE_CONNECTION_STRING="server=host.docker.internal;user=root;database=openworldserver;port=3306;password=${DATABASE_PASSWORD};Allow User Variables=True;SslMode=None" diff --git a/src/OWSInstanceLauncher/Services/ServerLauncherMQListener.cs b/src/OWSInstanceLauncher/Services/ServerLauncherMQListener.cs index 04eb67fa33..42dff2ce19 100644 --- a/src/OWSInstanceLauncher/Services/ServerLauncherMQListener.cs +++ b/src/OWSInstanceLauncher/Services/ServerLauncherMQListener.cs @@ -282,7 +282,7 @@ private void HandleServerSpinUpMessage(Guid customerGUID, int worldServerID, int ProcessName = proc.ProcessName }); - Log.Information($"{customerGUID} : {worldServerID} : {mapName} : {port} has started."); + Log.Information($"{customerGUID} : {worldServerID} : {mapName} : {port} has started. ProcessId: {proc.Id}, ProcessName: {proc.ProcessName}"); //The server has finished spinning up. Set the status to 2. //_ = UpdateZoneServerStatusReady(zoneInstanceID);