t6-fastfile-mods/zm_ai_pack/scripts/zm/clientfield_alt_sys.gsc
JezuzLizard 8858b712e7 Fix clientfield alt system.
Improve _random mixed variant.
2024-03-04 23:36:57 -08:00

115 lines
2.6 KiB
Plaintext

main()
{
level thread on_player_connecting();
}
init()
{
keys = getarraykeys( level.clientfield_alts );
for ( i = 0; i < keys.size; i++ )
{
if ( keys[ i ] == "toplayer" )
{
continue;
}
fields = level.clientfield_alts[ keys[ i ] ];
for ( j = 0; j < fields.size; j++ )
{
initialize_clientfield_alt_storage_for_level( fields[ j ] );
level thread send_clientdvar_messages_allplayers( fields[ j ] );
}
}
}
on_player_connecting()
{
for (;;)
{
level waittill( "connecting", player );
fields = level.clientfield_alts[ "toplayer" ];
for ( i = 0; i < fields.size; i++ )
{
player initialize_clientfield_alt_storage_for_player( fields[ i ] );
player send_clientdvar_messages_toplayer( fields[ i ] );
}
}
}
set_clientfield_alt_toplayer( field_name, ent, value )
{
entnum = ent getEntityNumber();
self.clientfield_alt_storage[ field_name ] += entnum + " " + value + "|";
}
send_clientdvar_messages_toplayer( field_name )
{
self endon( "disconnect" );
for (;;)
{
wait 0.05;
if ( self.clientfield_alt_storage[ field_name ] == "" )
{
continue;
}
self setclientdvar( field_name, self.clientfield_alt_storage[ field_name ] );
self.clientfield_alt_storage[ field_name ] = "";
}
}
set_clientfield_alt_allplayers( field_name, ent, value )
{
entnum = ent getEntityNumber();
level.clientfield_alt_storage[ field_name ] += entnum + " " + value + "|";
}
send_clientdvar_messages_allplayers( field_name )
{
for (;;)
{
wait 0.05;
if ( level.clientfield_alt_storage[ field_name ] == "" )
{
continue;
}
for ( i = 0; i < level.players.size; i++ )
{
level.players[ i ] setclientdvar( field_name, level.clientfield_alt_storage[ field_name ] );
}
level.clientfield_alt_storage[ field_name ] = "";
}
}
initialize_clientfield_alt_storage_for_player( field_name )
{
if ( !isdefined( self.clientfield_alt_storage ) )
{
self.clientfield_alt_storage = [];
}
self.clientfield_alt_storage[ field_name ] = "";
}
initialize_clientfield_alt_storage_for_level( field_name )
{
if ( !isdefined( level.clientfield_alt_storage ) )
{
level.clientfield_alt_storage = [];
}
level.clientfield_alt_storage[ field_name ] = "";
}
register_clientfield_alt( field_type, field_name )
{
if ( !isDefined( level.clientfield_alts ) )
{
level.clientfield_alts = [];
}
if ( !isDefined( level.clientfield_alts[ field_type ] ) )
{
level.clientfield_alts[ field_type ] = [];
}
level.clientfield_alts[ field_type ][ level.clientfield_alts[ field_type ].size ] = field_name;
}