‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_vehicle.csc
Go to the documentation of this file.
1 #using scripts\shared\clientfield_shared;
2 #using scripts\shared\math_shared;
3 #using scripts\shared\system_shared;
4 #using scripts\shared\util_shared;
5 #using scripts\shared\vehicle_shared;
6 //Vehicle registration
7 #using scripts\mp\killstreaks\_ai_tank;
8 #using scripts\mp\killstreaks\_qrdrone;
9 #using scripts\mp\killstreaks\_rcbomb;
10 
11 #insert scripts\shared\shared.gsh;
12 #insert scripts\mp\killstreaks\_killstreaks.gsh;
13 #insert scripts\shared\version.gsh;
14 
15 #namespace vehicle;
16 
17 ‪REGISTER_SYSTEM( "vehicle", &‪__init__, undefined )
18 
19 function ‪__init__()
20 {
21  if( !isdefined( level._effect ) )
22  {
23  level._effect = [];
24  }
25  level.vehicles_inited = true;
26 
28 }
29 
30 function ‪vehicle_rumble(localClientNum)
31 {
32  self endon( "entityshutdown" );
33 
34  if(!isdefined(level.vehicle_rumble))
35  return;
36 
37  type = self.vehicletype;
38 
39  if( !isdefined( level.vehicle_rumble[ type ] ) )
40  return;
41 
42  rumblestruct = level.vehicle_rumble[ type ];
43  height = rumblestruct.radius * 2;
44  zoffset = -1 * rumblestruct.radius;
45 
46  if( !isdefined( self.rumbleon ) )
47  self.rumbleon = true;
48 
49  if( isdefined( rumblestruct.scale ) )
50  self.rumble_scale = rumblestruct.scale;
51  else
52  self.rumble_scale = 0.15;
53 
54  if( isdefined( rumblestruct.duration ) )
55  self.rumble_duration = rumblestruct.duration;
56  else
57  self.rumble_duration = 4.5;
58 
59  if( isdefined( rumblestruct.radius ) )
60  self.rumble_radius = rumblestruct.radius;
61  else
62  self.rumble_radius = 600;
63  if( isdefined( rumblestruct.basetime ) )
64  self.rumble_basetime = rumblestruct.basetime;
65  else
66  self.rumble_basetime = 1;
67  if( isdefined( rumblestruct.randomaditionaltime ) )
68  self.rumble_randomaditionaltime = rumblestruct.randomaditionaltime;
69  else
70  self.rumble_randomaditionaltime = 1;
71 
72  self.player_touching = 0;
73 
74  // This is threaded on each vehicle, per local client - so we only need to be concerned with checking on
75  // client that we've been threaded on.
76 
77  radius_squared = rumblestruct.radius * rumblestruct.radius;
78 
79  while( 1 )
80  {
81  if( (distancesquared(self.origin, level.localPlayers[localClientNum].origin) > radius_squared) || self getspeed() < 35 )
82  {
83  wait(0.2);
84  continue;
85  }
86 
87  if(isdefined(self.rumbleon) && !self.rumbleon)
88  {
89  wait(0.2);
90  continue;
91  }
92 
93  self PlayRumbleLoopOnEntity( localClientNum, level.vehicle_rumble[ type ].rumble );
94 
95  while((distancesquared(self.origin, level.localPlayers[localClientNum].origin) < radius_squared) && (self getspeed() > 5))
96  {
97  //self earthquake( self.rumble_scale, self.rumble_duration, self.origin, self.rumble_radius ); // scale duration source radius
98  wait( self.rumble_basetime + randomfloat( self.rumble_randomaditionaltime ) );
99  }
100 
101  self StopRumble( localClientNum, level.vehicle_rumble[ type ].rumble );
102  }
103 
104 }
105 
106 function ‪set_static_amount( staticAmount )
107 {
108  driverLocalClient = self GetLocalClientDriver();
109  if ( isdefined( driverLocalClient ) )
110  {
111  driver = GetLocalPlayer( driverLocalClient );
112  if ( isdefined( driver ) )
113  {
114  setfilterpassconstant( driver.localClientNum, 4, 0, 1, staticAmount );
115  }
116  }
117 }
118 
119 function ‪vehicle_variants( localClientNum )
120 {
121  // NOT YET SUPPORTED IN MP
122 }
123 
124 function ‪timeout_beep( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
125 {
126  self notify( "timeout_beep" );
127 
128  if ( !newVal )
129  {
130  return;
131  }
132 
133  if ( isdefined( self.killstreakBundle ) )
134  {
135  beepAlias = self.killstreakBundle.ksTimeoutBeepAlias;
136  }
137 
138  self endon( "entityshutdown" );
139  self endon( "timeout_beep" );
140 
141  interval = 1;
142 
143  if ( newVal == 2 )
144  {
145  interval = 0.133;
146  }
147 
148  while(1)
149  {
150  if ( isdefined( beepAlias ) )
151  {
152  self PlaySound( localClientNum, beepAlias );
153  }
154 
155  if ( self.timeoutLightsOff === true )
156  {
157  self ‪vehicle::lights_on( localClientNum );
158  self.timeoutLightsOff = false;
159  }
160  else
161  {
162  self ‪vehicle::lights_off( localClientNum );
163  self.timeoutLightsOff = true;
164  }
165 
166  ‪util::server_wait( localClientNum, interval );
167  interval = ‪math::clamp( ( interval / 1.17 ), 0.1, 1 );
168  }
169 }
‪lights_off
‪function lights_off(localClientNum)
Definition: vehicle_shared.csc:652
‪CF_CALLBACK_ZERO_ON_NEW_ENT
‪#define CF_CALLBACK_ZERO_ON_NEW_ENT
Definition: version.gsh:103
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪set_static_amount
‪function set_static_amount(staticAmount)
Definition: _vehicle.csc:106
‪__init__
‪function __init__()
Definition: _vehicle.csc:19
‪vehicle_variants
‪function vehicle_variants(localClientNum)
Definition: _vehicle.csc:119
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪vehicle_rumble
‪function vehicle_rumble(localClientNum)
Definition: _vehicle.csc:30
‪timeout_beep
‪function timeout_beep(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _vehicle.csc:124
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪clamp
‪function clamp(val, val_min, val_max)
Definition: math_shared.csc:16
‪server_wait
‪function server_wait(localClientNum, seconds, waitBetweenChecks, level_endon)
Definition: util_shared.csc:1125
‪lights_on
‪function lights_on(localClientNum, team)
Definition: vehicle_shared.csc:404