From c356f505d222e1ef51ed4e834c14c2c0292e28ea Mon Sep 17 00:00:00 2001 From: "Bababooie (Kyle)" Date: Mon, 4 Aug 2025 00:27:04 +1000 Subject: [PATCH 1/2] - fixed incorrect timestamp on servers in SendChatMessage --- .../SML/Private/Player/SMLRemoteCallObject.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Mods/SML/Source/SML/Private/Player/SMLRemoteCallObject.cpp b/Mods/SML/Source/SML/Private/Player/SMLRemoteCallObject.cpp index 569652f9ef..af74261b4d 100644 --- a/Mods/SML/Source/SML/Private/Player/SMLRemoteCallObject.cpp +++ b/Mods/SML/Source/SML/Private/Player/SMLRemoteCallObject.cpp @@ -2,6 +2,7 @@ #include "Command/ChatCommandLibrary.h" #include "FGChatManager.h" #include "FGPlayerController.h" +#include "FGGameState.h" #include "SatisfactoryModLoader.h" #include "Net/UnrealNetwork.h" @@ -28,10 +29,10 @@ void USMLRemoteCallObject::SendChatMessage_Implementation(const FString& Message AFGChatManager* ChatManager = AFGChatManager::Get(GetWorld()); if (ChatManager) { FChatMessageStruct MessageStruct; - MessageStruct.MessageString = Message; + MessageStruct.MessageText = FText::FromString(Message); MessageStruct.MessageType = EFGChatMessageType::CMT_SystemMessage; - MessageStruct.ServerTimeStamp = GetWorld()->TimeSeconds; - MessageStruct.CachedColor = Color; + MessageStruct.ServerTimeStamp = GetGameState()->GetServerWorldTimeSeconds(); + MessageStruct.MessageSenderColor = Color; ChatManager->AddChatMessageToReceived(MessageStruct); } else { UE_LOG(LogSatisfactoryModLoader, Error, TEXT("A mod tried to send a chat message before the game's ChatManager was ready! It has been prevented to avoid a crash. The mod developer must fix this by waiting for the chat manager to be valid. The message would have been: %s"), *Message); @@ -51,15 +52,15 @@ void USMLRemoteCallObject::RegisterChatCommandPatch() { AFGPlayerController::PlayerControllerBegunPlay.AddLambda( []( AFGPlayerController* PlayerController ) { - PlayerController->ChatMessageEntered.AddLambda( [=]( const FChatMessageStruct& ChatMessage, bool& bCancelChatMessage ) + PlayerController->ChatMessageEntered.AddLambda( [=]( const FString& ChatMessage, bool& shouldSendMessage ) { - if (ChatMessage.MessageString.StartsWith(TEXT("/"))) + if (ChatMessage.StartsWith(TEXT("/"))) { - const FString CommandLine = ChatMessage.MessageString.TrimStartAndEnd().RightChop(1); + const FString CommandLine = ChatMessage.TrimStartAndEnd().RightChop(1); if ( USMLRemoteCallObject* RemoteCallObject = PlayerController->GetRemoteCallObjectOfClass() ) { RemoteCallObject->HandleChatCommand(CommandLine); - bCancelChatMessage = true; + shouldSendMessage = false; } } } ); From ddd47fede85596d34e8f017174cca0a7bbba1427 Mon Sep 17 00:00:00 2001 From: "Bababooie (Kyle)" Date: Tue, 23 Jun 2026 22:50:31 +1000 Subject: [PATCH 2/2] - made Mod Session Sesttings categories scrollable --- .../UI/Menu/Widget_SessionSettings.uasset | Bin 607161 -> 611045 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Mods/SML/Content/Interface/UI/Menu/Widget_SessionSettings.uasset b/Mods/SML/Content/Interface/UI/Menu/Widget_SessionSettings.uasset index 641ff700bd56999992079ef8ff467f4e981d6972..fe65930aa68248fff24bfa86cc762d356d6447d4 100644 GIT binary patch delta 24572 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 jajtloWY?