From 45d327fc81532493481a11657c2ab2db6e371f2e Mon Sep 17 00:00:00 2001 From: GenZmeY Date: Sun, 14 May 2023 02:20:31 +0300 Subject: [PATCH] add waiting GRI limit --- CTI/Classes/CTI_LocalMessage.uc | 30 +++++------- CTI/Classes/CTI_RepInfo.uc | 82 ++++++++++++++++++++++---------- Localization/INT/CTI.int | Bin 364 -> 426 bytes Localization/RUS/CTI.rus | Bin 360 -> 438 bytes 4 files changed, 68 insertions(+), 44 deletions(-) diff --git a/CTI/Classes/CTI_LocalMessage.uc b/CTI/Classes/CTI_LocalMessage.uc index 2b9ad86..d01eb08 100644 --- a/CTI/Classes/CTI_LocalMessage.uc +++ b/CTI/Classes/CTI_LocalMessage.uc @@ -4,17 +4,14 @@ class CTI_LocalMessage extends Object var const String SyncItemsDefault; var private localized String SyncItems; -var const String SyncFinishedDefault; -var private localized String SyncFinished; - var const String WaitingGRIDefault; var private localized String WaitingGRI; var const String IncompatibleGRIDefault; var private localized String IncompatibleGRI; -var const String DisconnectDefault; -var private localized String Disconnect; +var const String IncompatibleGRIWarningDefault; +var private localized String IncompatibleGRIWarning; var const String SecondsShortDefault; var private localized String SecondsShort; @@ -22,10 +19,9 @@ var private localized String SecondsShort; enum E_CTI_LocalMessageType { CTI_SyncItems, - CTI_SyncFinished, CTI_WaitingGRI, CTI_IncompatibleGRI, - CTI_Disconnect, + CTI_IncompatibleGRIWarning, CTI_SecondsShort }; @@ -43,17 +39,14 @@ public static function String GetLocalizedString( case CTI_SyncItems: return (default.SyncItems != "" ? default.SyncItems : default.SyncItemsDefault); - case CTI_SyncFinished: - return (default.SyncFinished != "" ? default.SyncFinished : default.SyncFinishedDefault); - case CTI_WaitingGRI: return (default.WaitingGRI != "" ? default.WaitingGRI : default.WaitingGRIDefault); case CTI_IncompatibleGRI: - return (default.IncompatibleGRI != "" ? default.IncompatibleGRI : default.IncompatibleGRIDefault); + return (default.IncompatibleGRI != "" ? default.IncompatibleGRI : default.IncompatibleGRIDefault) @ String1; - case CTI_Disconnect: - return (default.Disconnect != "" ? default.Disconnect : default.DisconnectDefault); + case CTI_IncompatibleGRIWarning: + return (default.IncompatibleGRIWarning != "" ? default.IncompatibleGRIWarning : default.IncompatibleGRIWarningDefault); case CTI_SecondsShort: return (default.SecondsShort != "" ? default.SecondsShort : default.SecondsShortDefault); @@ -64,10 +57,9 @@ public static function String GetLocalizedString( defaultproperties { - SyncItemsDefault = "Sync items:" - SyncFinishedDefault = "Sync finished." - WaitingGRIDefault = "Waiting GRI..." - IncompatibleGRIDefault = "Incompatible GRI:" - DisconnectDefault = "Disconnect..." - SecondsShortDefault = "s" + SyncItemsDefault = "Sync items:" + WaitingGRIDefault = "Waiting GRI..." + IncompatibleGRIDefault = "Incompatible GRI:" + IncompatibleGRIWarningDefault = "You can enter the game, but the trader may not work correctly."; + SecondsShortDefault = "s" } \ No newline at end of file diff --git a/CTI/Classes/CTI_RepInfo.uc b/CTI/Classes/CTI_RepInfo.uc index 40fb5eb..9ac3958 100644 --- a/CTI/Classes/CTI_RepInfo.uc +++ b/CTI/Classes/CTI_RepInfo.uc @@ -27,6 +27,7 @@ var private String NotificationRightText; var private int NotificationPercent; var private int WaitingGRI; +var private int WaitingGRILimit; replication { @@ -78,6 +79,39 @@ private simulated function KFPlayerController GetKFPC() return KFPC; } +public reliable client function WriteToChatLocalized( + E_CTI_LocalMessageType LMT, + optional String HexColor, + optional String String1, + optional String String2, + optional String String3) +{ + `Log_Trace(); + + WriteToChat(LocalMessage.static.GetLocalizedString(LogLevel, LMT, String1, String2, String3), HexColor); +} + +public reliable client function WriteToChat(String Message, optional String HexColor) +{ + local KFGFxHudWrapper HUD; + + `Log_Trace(); + + if (GetKFPC() == None) return; + + if (KFPC.MyGFxManager.PartyWidget != None && KFPC.MyGFxManager.PartyWidget.PartyChatWidget != None) + { + KFPC.MyGFxManager.PartyWidget.PartyChatWidget.SetVisible(true); + KFPC.MyGFxManager.PartyWidget.PartyChatWidget.AddChatMessage(Message, HexColor); + } + + HUD = KFGFxHudWrapper(KFPC.myHUD); + if (HUD != None && HUD.HUDMovie != None && HUD.HUDMovie.HudChatBox != None) + { + HUD.HUDMovie.HudChatBox.AddChatMessage(Message, HexColor); + } +} + private simulated function SetPartyInGameWidget() { `Log_Trace(); @@ -200,47 +234,44 @@ private simulated reliable client function ClientSyncFinished() `Log_Trace(); - NotificationLeftText = ""; - NotificationRightText = ""; - NotificationPercent = 0; - - if (WorldInfo.GRI == None) + if (WorldInfo.GRI == None && WaitingGRI++ < WaitingGRILimit) { - `Log_Debug("ClientSyncFinished: Waiting GRI"); + `Log_Debug("ClientSyncFinished: Waiting GRI" @ WaitingGRI); NotificationHeaderText = LocalMessage.static.GetLocalizedString(LogLevel, CTI_WaitingGRI); - NotificationLeftText = String(++WaitingGRI) $ LocalMessage.static.GetLocalizedString(LogLevel, CTI_SecondsShort); + NotificationLeftText = String(WaitingGRI) $ LocalMessage.static.GetLocalizedString(LogLevel, CTI_SecondsShort); NotificationRightText = ""; + NotificationPercent = 0; SetTimer(1.0f, false, nameof(ClientSyncFinished)); return; } - KFGRI = KFGameReplicationInfo(WorldInfo.GRI); - if (KFGRI == None) - { - `Log_Fatal("Incompatible Replication info:" @ String(WorldInfo.GRI)); - ClearTimer(nameof(KeepNotification)); - UpdateNotification( - LocalMessage.static.GetLocalizedString(LogLevel, CTI_IncompatibleGRI) @ String(WorldInfo.GRI), - LocalMessage.static.GetLocalizedString(LogLevel, CTI_Disconnect), "", 0); - Cleanup(); - ConsoleCommand("Disconnect"); - SafeDestroy(); - return; - } - - NotificationHeaderText = LocalMessage.static.GetLocalizedString(LogLevel, CTI_SyncFinished); + NotificationHeaderText = ""; NotificationLeftText = ""; NotificationRightText = ""; NotificationPercent = 0; - Trader.static.ModifyTrader(KFGRI, RemoveItems, AddItems, ReplaceMode, RemoveHRG, RemoveDLC, LogLevel); - `Log_Debug("ClientSyncFinished: Trader.static.ModifyTrader"); + KFGRI = KFGameReplicationInfo(WorldInfo.GRI); + if (KFGRI != None) + { + `Log_Debug("ClientSyncFinished: Trader.static.ModifyTrader"); + Trader.static.ModifyTrader(KFGRI, RemoveItems, AddItems, ReplaceMode, RemoveHRG, RemoveDLC, LogLevel); + } + else + { + `Log_Error("Incompatible Replication info:" @ String(WorldInfo.GRI)); + WriteToChatLocalized( + CTI_IncompatibleGRI, + class'KFLocalMessage'.default.InteractionColor, + WorldInfo.GRI == None ? "None" : String(WorldInfo.GRI.class)); + WriteToChatLocalized( + CTI_IncompatibleGRIWarning, + class'KFLocalMessage'.default.InteractionColor); + } ClearTimer(nameof(KeepNotification)); ShowReadyButton(); Cleanup(); - SafeDestroy(); } @@ -295,4 +326,5 @@ defaultproperties NotificationPercent = 0 WaitingGRI = 0 + WaitingGRILimit = 15 } diff --git a/Localization/INT/CTI.int b/Localization/INT/CTI.int index 5875dd11a42d181023c5bd3cb3d15e77cbac7066..1d0b6ecf8f57ed1cd6c69b7fc385ceb079af63d4 100644 GIT binary patch delta 163 zcmaFEw2FB`#Kb8L6W>YHyE6nacrt`DBr+5+_M_ ahHM4}A)o~yW)Vnb_qb2~Or6HUE delta 117 zcmZ3*{Dx^lgn2MSB|{!VGJ_jKCXmi#C}zlDNM%T2uw_tUfXOK^q@l^`O$=_;cL6I; aX2=I>%mZplW+(w`!zQlBpf|aZQ4;{~<`}yG diff --git a/Localization/RUS/CTI.rus b/Localization/RUS/CTI.rus index f8b03d1c9e02c5b80bed55a21930e0f05af46a4c..929583c7f72bbf9be1d68ca0c6ee9cbcac020bec 100644 GIT binary patch delta 160 zcmaFCw2gT}+{B)iiO1yX!x<78iWu@3GJ!aq!InXZL5RhhMS;PF#g4^{#gxSfh!q%& zfILee+XBp1V6b2@W^rI~X3=3#V6X+sDKIzzNe7^)9g7iAhZ~9s3JeY`1}ug^IVT|P d#Nq>#wFRoOVzJ`~YH|QGomfByO?F_^000%e7<2#t delta 104 zcmdnS{DNshoMtdXB|{!VGJ_jKCXmi#C}zlDNM%T2uw_tU5N5GsaROo^Al920*=gVc tR*=k)4^)~5RF=$80#+yoRA$9u&Em)6&SJ`9%VGf}^%(RRCigLF003|g6N>-<