iw6-scripts/maps/oilrocks_proximity_spawned_vehicles.gsc
2024-02-13 13:20:49 +01:00

77 lines
1.8 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
main()
{
var_0 = spawnstruct();
var_0.distance_to_spawn = squared( 12000 );
var_0.spawners = [];
var_1 = getentarray( "proximity_spawned", "script_noteworthy" );
foreach ( var_3 in var_1 )
{
if ( isspawner( var_3 ) )
var_0.spawners[var_0.spawners.size] = var_3;
}
level.proximity_spawn = var_0;
var_0 thread monitor_spawners();
}
monitor_spawners()
{
self notify( "monitor_spawners" );
self endon( "monitor_spawners" );
wait 0.05;
for (;;)
{
if ( !self.spawners.size )
{
wait 0.05;
continue;
}
foreach ( var_3, var_1 in self.spawners )
{
if ( isdefined( var_1 ) )
{
var_2 = self.distance_to_spawn;
if ( isdefined( var_1.radius ) )
var_2 = squared( var_1.radius );
if ( distancesquared( var_1.origin, level.player.origin ) < var_2 )
{
thread spawn_and_restart_monitoring( var_1 );
return;
}
}
if ( var_3 % 4 == 0 )
wait 0.05;
}
}
}
spawn_and_restart_monitoring( var_0 )
{
if ( !isdefined( var_0.spawned_count ) && !isdefined( var_0.vehicle_spawned_thisframe ) )
{
var_1 = var_0 maps\_utility::spawn_vehicle();
if ( !issubstr( var_1.classname, "zpu" ) )
var_1 thread maps\_vehicle::gopath();
}
self.spawners = common_scripts\utility::array_remove( self.spawners, var_0 );
var_0 common_scripts\utility::delaycall( 0.05, ::delete );
thread monitor_spawners();
}
end()
{
if ( isdefined( level.proximity_spawn ) )
level.proximity_spawn notify( "monitor_spawners" );
}