completly remove force preload
This commit is contained in:
parent
8cb2005ec1
commit
fdc97e4fdc
@ -9,9 +9,8 @@ const Helper = class'Helper';
|
|||||||
|
|
||||||
var private config int Version;
|
var private config int Version;
|
||||||
var private config E_LogLevel LogLevel;
|
var private config E_LogLevel LogLevel;
|
||||||
var private config bool bPreloadContent;
|
|
||||||
var private config bool bForcePreloadContent;
|
|
||||||
var private config bool UnlockDLC;
|
var private config bool UnlockDLC;
|
||||||
|
var private config bool bPreloadContent;
|
||||||
|
|
||||||
var private KFGameInfo KFGI;
|
var private KFGameInfo KFGI;
|
||||||
var private KFGameReplicationInfo KFGRI;
|
var private KFGameReplicationInfo KFGRI;
|
||||||
@ -67,7 +66,6 @@ private function PreInit()
|
|||||||
{
|
{
|
||||||
LogLevel = LL_Info;
|
LogLevel = LL_Info;
|
||||||
bPreloadContent = true;
|
bPreloadContent = true;
|
||||||
bForcePreloadContent = false;
|
|
||||||
UnlockDLC = false;
|
UnlockDLC = false;
|
||||||
SaveConfig();
|
SaveConfig();
|
||||||
}
|
}
|
||||||
@ -233,8 +231,7 @@ public function bool CreateRepLink(Controller C)
|
|||||||
RemoveItems,
|
RemoveItems,
|
||||||
AddItems,
|
AddItems,
|
||||||
CfgRemoveItems.default.bAll,
|
CfgRemoveItems.default.bAll,
|
||||||
bPreloadContent,
|
bPreloadContent);
|
||||||
bForcePreloadContent);
|
|
||||||
|
|
||||||
RepInfos.AddItem(RepLink);
|
RepInfos.AddItem(RepLink);
|
||||||
|
|
||||||
|
@ -10,11 +10,9 @@ var private Array<class<KFWeaponDefinition> > RemoveItems;
|
|||||||
var private Array<class<KFWeaponDefinition> > AddItems;
|
var private Array<class<KFWeaponDefinition> > AddItems;
|
||||||
var private bool ReplaceMode;
|
var private bool ReplaceMode;
|
||||||
var private bool PreloadContent;
|
var private bool PreloadContent;
|
||||||
var private bool ForcePreloadContent;
|
|
||||||
|
|
||||||
var private int Recieved;
|
var private int Recieved;
|
||||||
var private int SyncSize;
|
var private int SyncSize;
|
||||||
var private int Preloaded;
|
|
||||||
|
|
||||||
var private KFPlayerController KFPC;
|
var private KFPlayerController KFPC;
|
||||||
var private KFPawn KFP;
|
var private KFPawn KFP;
|
||||||
@ -29,7 +27,7 @@ var private float PreloadWeaponTime;
|
|||||||
replication
|
replication
|
||||||
{
|
{
|
||||||
if (bNetInitial && Role == ROLE_Authority)
|
if (bNetInitial && Role == ROLE_Authority)
|
||||||
LogLevel, ReplaceMode, PreloadContent, ForcePreloadContent, SyncSize;
|
LogLevel, ReplaceMode, PreloadContent, SyncSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public simulated function bool SafeDestroy()
|
public simulated function bool SafeDestroy()
|
||||||
@ -45,8 +43,7 @@ public function PrepareSync(
|
|||||||
Array<class<KFWeaponDefinition> > _RemoveItems,
|
Array<class<KFWeaponDefinition> > _RemoveItems,
|
||||||
Array<class<KFWeaponDefinition> > _AddItems,
|
Array<class<KFWeaponDefinition> > _AddItems,
|
||||||
bool _ReplaceMode,
|
bool _ReplaceMode,
|
||||||
bool _PreloadContent,
|
bool _PreloadContent)
|
||||||
bool _ForcePreloadContent)
|
|
||||||
{
|
{
|
||||||
`Log_Trace(`Location);
|
`Log_Trace(`Location);
|
||||||
|
|
||||||
@ -56,7 +53,6 @@ public function PrepareSync(
|
|||||||
AddItems = _AddItems;
|
AddItems = _AddItems;
|
||||||
ReplaceMode = _ReplaceMode;
|
ReplaceMode = _ReplaceMode;
|
||||||
PreloadContent = _PreloadContent;
|
PreloadContent = _PreloadContent;
|
||||||
ForcePreloadContent = _ForcePreloadContent;
|
|
||||||
SyncSize = RemoveItems.Length + AddItems.Length;
|
SyncSize = RemoveItems.Length + AddItems.Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,46 +72,6 @@ private simulated function KFPlayerController GetKFPC()
|
|||||||
return KFPC;
|
return KFPC;
|
||||||
}
|
}
|
||||||
|
|
||||||
private simulated function KFPawn GetKFP()
|
|
||||||
{
|
|
||||||
local Pawn P;
|
|
||||||
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
if (KFP != None) return KFP;
|
|
||||||
|
|
||||||
if (GetKFPC() != None)
|
|
||||||
{
|
|
||||||
P = GetKFPC().Pawn;
|
|
||||||
if (P != None)
|
|
||||||
{
|
|
||||||
KFP = KFPawn(P);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return KFP;
|
|
||||||
}
|
|
||||||
|
|
||||||
private simulated function KFInventoryManager GetKFIM()
|
|
||||||
{
|
|
||||||
local InventoryManager IM;
|
|
||||||
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
if (KFIM != None) return KFIM;
|
|
||||||
|
|
||||||
if (GetKFP() != None)
|
|
||||||
{
|
|
||||||
IM = GetKFP().InvManager;
|
|
||||||
if (IM != None)
|
|
||||||
{
|
|
||||||
KFIM = KFInventoryManager(IM);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return KFIM;
|
|
||||||
}
|
|
||||||
|
|
||||||
private simulated function SetPartyInGameWidget()
|
private simulated function SetPartyInGameWidget()
|
||||||
{
|
{
|
||||||
`Log_Trace(`Location);
|
`Log_Trace(`Location);
|
||||||
@ -223,8 +179,10 @@ private simulated reliable client function ClientSyncFinished()
|
|||||||
|
|
||||||
`Log_Trace(`Location);
|
`Log_Trace(`Location);
|
||||||
|
|
||||||
ClearTimer(nameof(KeepPreloadNotification));
|
if (WorldInfo.GRI == None)
|
||||||
ClearTimer(nameof(WaitForPreloadWeapon));
|
{
|
||||||
|
SetTimer(1.0f, false, nameof(ClientSyncFinished));
|
||||||
|
}
|
||||||
|
|
||||||
KFGRI = KFGameReplicationInfo(WorldInfo.GRI);
|
KFGRI = KFGameReplicationInfo(WorldInfo.GRI);
|
||||||
if (KFGRI == None)
|
if (KFGRI == None)
|
||||||
@ -251,13 +209,11 @@ public reliable server function ServerSync()
|
|||||||
|
|
||||||
if (SyncSize <= Recieved || WorldInfo.NetMode == NM_StandAlone)
|
if (SyncSize <= Recieved || WorldInfo.NetMode == NM_StandAlone)
|
||||||
{
|
{
|
||||||
if (ForcePreloadContent)
|
ClientSyncFinished();
|
||||||
|
|
||||||
|
if (!CTI.DestroyRepLink(Controller(Owner)))
|
||||||
{
|
{
|
||||||
ServerPreloadWeaponWorkaround();
|
SafeDestroy();
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ServerSyncFinished();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -273,145 +229,6 @@ public reliable server function ServerSync()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function ServerSyncFinished()
|
|
||||||
{
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
ClientSyncFinished();
|
|
||||||
|
|
||||||
if (!CTI.DestroyRepLink(Controller(Owner)))
|
|
||||||
{
|
|
||||||
SafeDestroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private reliable server function ServerPreloadWeaponWorkaround()
|
|
||||||
{
|
|
||||||
local class<Weapon> WC;
|
|
||||||
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
RemovePreloadWeapon();
|
|
||||||
|
|
||||||
if (AddItems.Length <= Preloaded)
|
|
||||||
{
|
|
||||||
ServerSyncFinished();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
WC = class<Weapon> (DynamicLoadObject(AddItems[Preloaded++].default.WeaponClassPath, class'Class'));
|
|
||||||
if (WC != None)
|
|
||||||
{
|
|
||||||
PreloadWeaponTime = WorldInfo.TimeSeconds - 1.0f;
|
|
||||||
PreloadWeaponClass = WC;
|
|
||||||
ClientPreloadWeapon(WC);
|
|
||||||
if (!AddPreloadWeapon(WC))
|
|
||||||
{
|
|
||||||
ServerPreloadWeaponWorkaround();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private reliable server function bool AddPreloadWeapon(class<Weapon> WC)
|
|
||||||
{
|
|
||||||
local Weapon W;
|
|
||||||
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
if (GetKFIM() == None || WC == None) return false;
|
|
||||||
|
|
||||||
KFIM.bInfiniteWeight = true;
|
|
||||||
W = Weapon(KFP.FindInventoryType(WC));
|
|
||||||
if (W == None)
|
|
||||||
{
|
|
||||||
W = Weapon(KFP.CreateInventory(WC));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (W != None)
|
|
||||||
{
|
|
||||||
KFIM.SetCurrentWeapon(W);
|
|
||||||
}
|
|
||||||
KFIM.bInfiniteWeight = false;
|
|
||||||
|
|
||||||
if (W == None) `Log_Warn("Can't preload" @ WC @ "for some reason (skip)");
|
|
||||||
|
|
||||||
return (W != None);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function RemovePreloadWeapon()
|
|
||||||
{
|
|
||||||
local DroppedPickup DP;
|
|
||||||
local Weapon W;
|
|
||||||
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
if (GetKFIM() == None || PreloadWeaponClass == None) return;
|
|
||||||
|
|
||||||
foreach KFIM.InventoryActors(class'Weapon', W)
|
|
||||||
{
|
|
||||||
if (W != None && W.class == PreloadWeaponClass)
|
|
||||||
{
|
|
||||||
if (W.CanThrow())
|
|
||||||
{
|
|
||||||
KFP.TossInventory(W);
|
|
||||||
W.Destroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach WorldInfo.DynamicActors(class'DroppedPickup', DP)
|
|
||||||
{
|
|
||||||
if (DP.Instigator == KFP && DP.CreationTime > PreloadWeaponTime)
|
|
||||||
{
|
|
||||||
DP.Destroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private reliable client function ClientPreloadWeapon(class<Weapon> WC)
|
|
||||||
{
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
Preloaded++;
|
|
||||||
PreloadWeaponClass = WC;
|
|
||||||
|
|
||||||
if (!IsTimerActive(nameof(KeepPreloadNotification)))
|
|
||||||
{
|
|
||||||
SetTimer(0.1f, true, nameof(KeepPreloadNotification));
|
|
||||||
}
|
|
||||||
|
|
||||||
SetTimer(0.5f, false, nameof(WaitForPreloadWeapon));
|
|
||||||
}
|
|
||||||
|
|
||||||
private simulated function KeepPreloadNotification()
|
|
||||||
{
|
|
||||||
HideReadyButton();
|
|
||||||
UpdateNotification(
|
|
||||||
"Preload weapon models, please wait...",
|
|
||||||
Repl(String(PreloadWeaponClass), "KFWeap_", ""),
|
|
||||||
Preloaded @ "/" @ AddItems.Length,
|
|
||||||
(float(Preloaded) / float(AddItems.Length)) * 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
private simulated function WaitForPreloadWeapon()
|
|
||||||
{
|
|
||||||
`Log_Trace(`Location);
|
|
||||||
|
|
||||||
KeepPreloadNotification();
|
|
||||||
|
|
||||||
if (GetKFIM() != None
|
|
||||||
&& KFIM.Instigator.Weapon != None
|
|
||||||
&& KFIM.Instigator.Weapon.Class == PreloadWeaponClass)
|
|
||||||
{
|
|
||||||
ServerPreloadWeaponWorkaround();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetTimer(0.5f, false, nameof(WaitForPreloadWeapon));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
bAlwaysRelevant = false
|
bAlwaysRelevant = false
|
||||||
@ -420,5 +237,4 @@ defaultproperties
|
|||||||
|
|
||||||
PendingSync = false
|
PendingSync = false
|
||||||
Recieved = 0
|
Recieved = 0
|
||||||
Preloaded = 0
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
- remove and/or add items;
|
- remove and/or add items;
|
||||||
- unlock DLC weapons;
|
- unlock DLC weapons;
|
||||||
- correct items sorting (by price);
|
- correct items sorting (by price);
|
||||||
- can preload weapon models (no lags during trader time);
|
|
||||||
- don't have to worry about adding new guns after each Tripware update.
|
- don't have to worry about adding new guns after each Tripware update.
|
||||||
|
|
||||||
[h1]Whitelisted?[/h1]
|
[h1]Whitelisted?[/h1]
|
||||||
@ -30,8 +29,6 @@ Config will be created at the first start.
|
|||||||
|
|
||||||
Set [b]UnlockDLC=True[/b] to allow all players to buy DLC weapons.
|
Set [b]UnlockDLC=True[/b] to allow all players to buy DLC weapons.
|
||||||
|
|
||||||
Set [b]bForcePreloadContent=True[/b] to preload weapon models and have no lags during trader time.
|
|
||||||
|
|
||||||
Use [b][CTI.RemoveItems][/b] to remove items from the trader inventory.
|
Use [b][CTI.RemoveItems][/b] to remove items from the trader inventory.
|
||||||
For example: [b]Item=KFGame.KFWeapDef_Mac10[/b] will remove MAC10 from sale.
|
For example: [b]Item=KFGame.KFWeapDef_Mac10[/b] will remove MAC10 from sale.
|
||||||
Set [b]bAll=True[/b] if you want to remove all items (can be useful if you want to set the entire sale list in the [b][CTI.AddItems][/b] section yourself).
|
Set [b]bAll=True[/b] if you want to remove all items (can be useful if you want to set the entire sale list in the [b][CTI.AddItems][/b] section yourself).
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 385 KiB |
@ -14,7 +14,6 @@ Add/Remove Items in the Trader's Inventory
|
|||||||
- remove and/or add items;
|
- remove and/or add items;
|
||||||
- unlock DLC weapons;
|
- unlock DLC weapons;
|
||||||
- correct items sorting (by price);
|
- correct items sorting (by price);
|
||||||
- can preload weapon models (no lags during trader time);
|
|
||||||
- don't have to worry about adding new guns after each Tripware update.
|
- don't have to worry about adding new guns after each Tripware update.
|
||||||
|
|
||||||
# Usage & Setup
|
# Usage & Setup
|
||||||
|
Loading…
Reference in New Issue
Block a user