111 lines
10 KiB
Plaintext
111 lines
10 KiB
Plaintext
#using scripts\codescripts\struct;
|
|
|
|
#using scripts\shared\animation_shared;
|
|
#using scripts\shared\array_shared;
|
|
#using scripts\shared\clientfield_shared;
|
|
#using scripts\shared\flag_shared;
|
|
#using scripts\shared\flagsys_shared;
|
|
#using scripts\shared\system_shared;
|
|
#using scripts\shared\trigger_shared;
|
|
#using scripts\shared\util_shared;
|
|
|
|
|
|
|
|
|
|
#using_animtree( "generic" );
|
|
|
|
#namespace vehicle;
|
|
|
|
function autoexec __init__sytem__() { system::register("vehicleriders",&__init__,undefined,undefined); }
|
|
|
|
function __init__()
|
|
{
|
|
a_registered_fields = [];
|
|
foreach ( bundle in struct::get_script_bundles( "vehicleriders" ) )
|
|
{
|
|
foreach ( object in bundle.objects )
|
|
{
|
|
if ( IsString( object.VehicleEnterAnim ) )
|
|
{
|
|
array::add( a_registered_fields, object.position + "_enter", false );
|
|
}
|
|
|
|
if ( IsString( object.VehicleExitAnim ) )
|
|
{
|
|
array::add( a_registered_fields, object.position + "_exit", false );
|
|
}
|
|
|
|
if ( IsString( object.VehicleRiderDeathAnim ) )
|
|
{
|
|
array::add( a_registered_fields, object.position + "_death", false );
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ( str_clientfield in a_registered_fields )
|
|
{
|
|
clientfield::register( "vehicle", str_clientfield, 1, 1, "counter", &play_vehicle_anim, !true, !true );
|
|
}
|
|
}
|
|
|
|
function play_vehicle_anim( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump ) // self = vehicle
|
|
{
|
|
s_bundle = struct::get_script_bundle( "vehicleriders", self.vehicleridersbundle );
|
|
|
|
str_pos = "";
|
|
str_action = "";
|
|
|
|
if ( StrEndsWith( fieldName, "_enter" ) )
|
|
{
|
|
str_pos = GetSubStr( fieldName, 0, fieldName.size - 6 );
|
|
str_action = "enter";
|
|
}
|
|
else if ( StrEndsWith( fieldName, "_exit" ) )
|
|
{
|
|
str_pos = GetSubStr( fieldName, 0, fieldName.size - 5 );
|
|
str_action = "exit";
|
|
}
|
|
else if ( StrEndsWith( fieldName, "_death" ) )
|
|
{
|
|
str_pos = GetSubStr( fieldName, 0, fieldName.size - 6 );
|
|
str_action = "death";
|
|
}
|
|
|
|
str_vh_anim = undefined;
|
|
foreach ( s_rider in s_bundle.objects )
|
|
{
|
|
if ( s_rider.position == str_pos )
|
|
{
|
|
switch ( str_action )
|
|
{
|
|
case "enter":
|
|
|
|
str_vh_anim = s_rider.VehicleEnterAnim;
|
|
break;
|
|
|
|
case "exit":
|
|
|
|
str_vh_anim = s_rider.VehicleExitAnim;
|
|
break;
|
|
|
|
case "death":
|
|
|
|
str_vh_anim = s_rider.VehicleRiderDeathAnim;
|
|
break;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( isdefined( str_vh_anim ) )
|
|
{
|
|
self SetAnimRestart( str_vh_anim );
|
|
}
|
|
}
|
|
|
|
function set_vehicleriders_bundle( str_bundlename )
|
|
{
|
|
self.vehicleriders = struct::get_script_bundle( "vehicleriders", str_bundlename );
|
|
}
|