Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BIO_TraderReplicationInfo extends ReplicationInfo
- config( Biohazard );
- struct StructItem
- {
- var string DefPath;
- var int TraderId;
- };
- var array<StructItem> ClientItems;
- var private int CurrentIndex;
- static final function SaveSettings()
- {
- StaticSaveConfig();
- }
- final function StartSyncItems()
- {
- SetTimer( 0.05f, true, nameof( SyncItems ) );
- }
- private final function SyncItems()
- {
- local StructItem Item;
- if ( CurrentIndex < ClientItems.Length )
- {
- Item = ClientItems[CurrentIndex];
- ClientSyncItem( Item.DefPath, Item.TraderId );
- ++CurrentIndex;
- }
- else
- {
- ClearTimer(nameof( SyncItems ));
- ClientSyncFinished();
- CleanupRepLink( false );
- }
- }
- private final function CleanupRepLink( bool bClient )
- {
- CurrentIndex = 0;
- ClientItems.Length = 0;
- Destroy();
- }
- private reliable client final function ClientSyncItem( string DefPath, int TraderId )
- {
- local StructItem Item;
- Item.DefPath = DefPath;
- Item.TraderId = TraderId;
- ClientItems.AddItem( Item );
- }
- private reliable client final function ClientSyncFinished()
- {
- Timer();
- }
- simulated event Timer()
- {
- while( !AddClientItems() );
- CleanupRepLink( true );
- }
- private simulated final function bool AddClientItems()
- {
- local KFGameReplicationInfo KFGRI;
- local KFGFxObject_TraderItems TraderItems;
- local StructItem ClientItem;
- local STraderItem Item;
- local int i, Number;
- if ( WorldInfo == None )
- {
- return False;
- }
- KFGRI = KFGameReplicationInfo( WorldInfo.GRI );
- if ( KFGRI == None )
- {
- return False;
- }
- TraderItems = new class'KFGFxObject_TraderItems';
- Number = 0;
- foreach ClientItems( ClientItem, i )
- {
- Item.WeaponDef = class<KFWeaponDefinition>(DynamicLoadObject( ClientItem.DefPath, class'Class' ) );
- if ( Item.WeaponDef == None )
- {
- return true;
- }
- Item.ItemID = ClientItem.TraderId ;
- TraderItems.SaleItems.AddItem( Item );
- Number++;
- }
- if ( Number > 0 )
- TraderItems.SetItemsInfo( TraderItems.SaleItems );
- KFGRI.TraderItems = TraderItems;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement