1 Commits

Author SHA1 Message Date
d55cc77e05 add advice in case of problems with GRI replication 2024-01-01 00:09:09 +03:00
7 changed files with 98 additions and 65 deletions

View File

@ -1 +1,60 @@
class LTIMut extends Mut; // backward compatibility
class LTIMut extends KFMutator;
var private LTI LTI;
public simulated function bool SafeDestroy()
{
return (bPendingDelete || bDeleteMe || Destroy());
}
public event PreBeginPlay()
{
Super.PreBeginPlay();
if (WorldInfo.NetMode == NM_Client) return;
foreach WorldInfo.DynamicActors(class'LTI', LTI)
{
break;
}
if (LTI == None)
{
LTI = WorldInfo.Spawn(class'LTI');
}
if (LTI == None)
{
`Log_Base("FATAL: Can't Spawn 'LTI'");
SafeDestroy();
}
}
public function AddMutator(Mutator Mut)
{
if (Mut == Self) return;
if (Mut.Class == Class)
LTIMut(Mut).SafeDestroy();
else
Super.AddMutator(Mut);
}
public function NotifyLogin(Controller C)
{
LTI.NotifyLogin(C);
Super.NotifyLogin(C);
}
public function NotifyLogout(Controller C)
{
LTI.NotifyLogout(C);
Super.NotifyLogout(C);
}
DefaultProperties
{
GroupNames.Add("TraderItems")
}

View File

@ -13,6 +13,12 @@ var private localized String IncompatibleGRI;
var const String IncompatibleGRIWarningDefault;
var private localized String IncompatibleGRIWarning;
var const String NoneGRIDefault;
var private localized String NoneGRI;
var const String NoneGRIWarningDefault;
var private localized String NoneGRIWarning;
var const String SecondsShortDefault;
var private localized String SecondsShort;
@ -25,6 +31,8 @@ enum E_LTI_LocalMessageType
LTI_WaitingGRI,
LTI_IncompatibleGRI,
LTI_IncompatibleGRIWarning,
LTI_NoneGRI,
LTI_NoneGRIWarning,
LTI_SecondsShort,
LTI_PleaseWait
};
@ -52,6 +60,12 @@ public static function String GetLocalizedString(
case LTI_IncompatibleGRIWarning:
return (default.IncompatibleGRIWarning != "" ? default.IncompatibleGRIWarning : default.IncompatibleGRIWarningDefault);
case LTI_NoneGRI:
return (default.NoneGRI != "" ? default.NoneGRI : default.NoneGRIDefault);
case LTI_NoneGRIWarning:
return (default.NoneGRIWarning != "" ? default.NoneGRIWarning : default.NoneGRIWarningDefault);
case LTI_SecondsShort:
return (default.SecondsShort != "" ? default.SecondsShort : default.SecondsShortDefault);
@ -68,6 +82,8 @@ defaultproperties
WaitingGRIDefault = "Waiting GRI..."
IncompatibleGRIDefault = "Incompatible GRI:"
IncompatibleGRIWarningDefault = "You can enter the game, but the trader may not work correctly.";
NoneGRIDefault = "GRI is not initialized!"
NoneGRIWarningDefault = "It is recommended to reconnect. If you enter the game right now, the trader may not work correctly.";
SecondsShortDefault = "s"
PleaseWaitDefault = "Please wait"
}

View File

@ -150,8 +150,15 @@ private simulated function Finished()
}
else
{
`Log_Error("Incompatible Replication info:" @ String(GRI));
NotifyIncompatibleGRI();
`Log_Error("Incompatible Game Replication info:" @ String(GRI));
if (GRI == None)
{
NotifyNoneGRI();
}
else
{
NotifyIncompatibleGRI();
}
}
ShowReadyButton();
@ -308,6 +315,7 @@ private simulated function KeepNotification()
private simulated function ClientCleanup()
{
`Log_Debug("Cleanup");
ServerCleanup();
SafeDestroy();
}
@ -363,6 +371,16 @@ private simulated function NotifyIncompatibleGRI()
class'KFLocalMessage'.default.InteractionColor);
}
private simulated function NotifyNoneGRI()
{
WriteToChatLocalized(
LTI_NoneGRI,
class'KFLocalMessage'.default.InteractionColor);
WriteToChatLocalized(
LTI_NoneGRIWarning,
class'KFLocalMessage'.default.InteractionColor);
}
defaultproperties
{
bAlwaysRelevant = false

View File

@ -1,60 +0,0 @@
class Mut extends KFMutator;
var private LTI LTI;
public simulated function bool SafeDestroy()
{
return (bPendingDelete || bDeleteMe || Destroy());
}
public event PreBeginPlay()
{
Super.PreBeginPlay();
if (WorldInfo.NetMode == NM_Client) return;
foreach WorldInfo.DynamicActors(class'LTI', LTI)
{
break;
}
if (LTI == None)
{
LTI = WorldInfo.Spawn(class'LTI');
}
if (LTI == None)
{
`Log_Base("FATAL: Can't Spawn 'LTI'");
SafeDestroy();
}
}
public function AddMutator(Mutator M)
{
if (M == Self) return;
if (M.Class == Class)
Mut(M).SafeDestroy();
else
Super.AddMutator(M);
}
public function NotifyLogin(Controller C)
{
LTI.NotifyLogin(C);
Super.NotifyLogin(C);
}
public function NotifyLogout(Controller C)
{
LTI.NotifyLogout(C);
Super.NotifyLogout(C);
}
DefaultProperties
{
GroupNames.Add("TraderItems")
}

Binary file not shown.

Binary file not shown.

View File

@ -21,7 +21,7 @@ https://forums.tripwireinteractive.com/index.php?threads/whitelisting-mods-and-m
[*]Subscribe to this mutator;
[*]Start KF2;
[*]Open console (~) and input:
[b]open KF-BioticsLab?Mutator=LTI.Mut[/b]
[b]open KF-BioticsLab?Mutator=LTI.LTIMut[/b]
(replace the map and add the parameters you need)
[*]<Enter>.
[/olist]
@ -35,7 +35,7 @@ https://forums.tripwireinteractive.com/index.php?threads/whitelisting-mods-and-m
[*]Add the following string to the [b][OnlineSubsystemSteamworks.KFWorkshopSteamworks][/b] section (create one if it doesn't exist):
[b]ServerSubscribedWorkshopItems=2864857909[/b]
[*]Start the server and wait until the mutator is downloading;
[*]Add mutator to server start parameters: [b]?Mutator=LTI.Mut[/b] and restart the server.
[*]Add mutator to server start parameters: [b]?Mutator=LTI.LTIMut[/b] and restart the server.
[/olist]
[h1]Important setup information[/h1]