‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_quadtank.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\filter_shared;
6 #using scripts\shared\system_shared;
7 #using scripts\shared\util_shared;
8 #using scripts\shared\vehicle_shared;
9 
10 #insert scripts\shared\shared.gsh;
11 #insert scripts\shared\version.gsh;
12 
13 #namespace quadtank;
14 
15 ‪REGISTER_SYSTEM( "quadtank", &‪__init__, undefined )
16 
17 function ‪__init__()
18 {
22 }
23 
24 function ‪_setup_( localClientNum )
25 {
26  player = GetLocalPlayer( localClientNum );
27  if( isdefined( player ) )
28  {
30  }
31  //set code field to get notifies to play impact effects
32  self.notifyOnBulletImpact = true;
33  self thread ‪wait_for_bullet_impact( localClientNum );
34 
35  //trophy state
36  self.trophy_on = false;
37 
38  self thread ‪player_enter( localClientNum );
39  self thread ‪player_exit( localClientNum );
40 }
41 
42 function ‪player_enter( localClientNum )
43 {
44  self endon( "death" );
45  self endon( "entityshutdown" );
46 
47  while( 1 )
48  {
49  self waittill( "enter_vehicle", player );
50 
51  if( self IsLocalClientDriver( localClientNum ) )
52  {
53  self SetHighDetail( true );
54  }
55 
56  wait ‪CLIENT_FRAME;
57  }
58 }
59 
60 function ‪player_exit( localClientNum )
61 {
62  self endon( "death" );
63  self endon( "entityshutdown" );
64 
65  while( 1 )
66  {
67  self waittill( "exit_vehicle", player );
68  if( isdefined( player ) && player islocalplayer() )
69  {
70  self SetHighDetail( false );
71  }
72  wait ‪CLIENT_FRAME;
73  }
74 }
75 
76 
77 function ‪update_trophy_system_state( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
78 {
79 }
80 
81 function ‪player_shock_fx_handler( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
82 {
83  if ( isdefined( self ) )
84  {
85  self thread ‪player_shock_fx_fade_off( localClientNum, 1.0, 1.0 );
86  }
87 }
88 
89 function ‪player_shock_fx_fade_off( localClientNum, amount, fadeoutTime )
90 {
91  // not ending on death or shutdown, cause we have to clean ourselves up
92  self endon( "disconnect" );
93  self notify( "player_shock_fx_fade_off_end" ); // kill previous threads
94  self endon( "player_shock_fx_fade_off_end" );
95 
96  if ( !isAlive( self ) )
97  {
98  return;
99  }
100 
101  ‪startTime = GetTime();
102 
105 
106  while ( GetTime() <= ‪startTime + fadeoutTime * 1000 && isAlive( self ) )
107  {
108  ratio = ( GetTime() - ‪startTime ) / ( fadeoutTime * 1000 );
109  currentValue = LerpFloat( amount, 0, ratio );
110  setfilterpassconstant( localClientNum, ‪FILTER_INDEX_PLAYER_SHOCK, 0, 0, currentValue ); // use code function instead of script wrapper cause player can be undefined
111 
112  wait ‪CLIENT_FRAME;
113  }
114 
115  setfilterpassenabled( localClientNum, ‪FILTER_INDEX_PLAYER_SHOCK, 0, false );
116 }
117 
118 function ‪wait_for_bullet_impact( localClientNum )
119 {
120  self endon( "entityshutdown" );
121 
122  if( isdefined( self.scriptbundlesettings ) )
123  {
124  settings = ‪struct::get_script_bundle( "vehiclecustomsettings", self.scriptbundlesettings );
125  }
126  else
127  {
128  return;
129  }
130 
131  while( 1 )
132  {
133  self waittill( "damage", attacker, impactPos, effectDir, partname );
134  if( partName == "tag_target_lower" || partName == "tag_target_upper" || partName == "tag_defense_active" || partName == "tag_body_animate" )
135  {
136  if( self.trophy_on )
137  {
138  if( IsDefined( attacker ) && attacker IsPlayer() && attacker.team != self.team )
139  {
140  ‪PlayFx( localClientNum, settings.weakspotfx, impactPos, effectDir );
141  self playsound( 0, "veh_quadtank_panel_hit" );
142  }
143  }
144  }
145  }
146 }
‪startTime
‪class AnimationAdjustmentInfoZ startTime
‪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
‪update_trophy_system_state
‪function update_trophy_system_state(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _quadtank.csc:77
‪player_shock_fx_handler
‪function player_shock_fx_handler(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _quadtank.csc:81
‪enable_filter_ev_interference
‪function enable_filter_ev_interference(player, filterid)
Definition: filter_shared.csc:645
‪_setup_
‪function _setup_(localClientNum)
Definition: _quadtank.csc:24
‪player_enter
‪function player_enter(localClientNum)
Definition: _quadtank.csc:42
‪player_exit
‪function player_exit(localClientNum)
Definition: _quadtank.csc:60
‪CLIENT_FRAME
‪#define CLIENT_FRAME
Definition: shared.gsh:263
‪set_filter_ev_interference_amount
‪function set_filter_ev_interference_amount(player, filterid, amount)
Definition: filter_shared.csc:652
‪FILTER_INDEX_PLAYER_SHOCK
‪#define FILTER_INDEX_PLAYER_SHOCK
Definition: shared.gsh:487
‪__init__
‪function __init__()
Definition: _quadtank.csc:17
‪wait_for_bullet_impact
‪function wait_for_bullet_impact(localClientNum)
Definition: _quadtank.csc:118
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪add_vehicletype_callback
‪function add_vehicletype_callback(vehicletype, callback)
Definition: vehicle_shared.csc:77
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪get_script_bundle
‪function get_script_bundle(str_type, str_name)
Definition: struct.csc:45
‪player_shock_fx_fade_off
‪function player_shock_fx_fade_off(localClientNum, amount, fadeoutTime)
Definition: _quadtank.csc:89
‪init_filter_ev_interference
‪function init_filter_ev_interference(player)
Definition: filter_shared.csc:639
‪PlayFx
‪function PlayFx(name)
Definition: _counteruav.gsc:390