‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_gadget_turret_deploy.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\duplicaterender_mgr;
6 #using scripts\shared\system_shared;
7 #using scripts\shared\util_shared;
8 
9 #using scripts\shared\abilities\_ability_player;
10 #using scripts\shared\abilities\_ability_power;
11 #using scripts\shared\abilities\_ability_util;
12 
13 #insert scripts\shared\shared.gsh;
14 #insert scripts\shared\version.gsh;
15 #insert scripts\shared\duplicaterender.gsh;
16 
17 ‪REGISTER_SYSTEM( "gadget_deploy_turret", &‪__init__, undefined )
18 
19 #define TURRET_OUTLINE_MATERIAL "mc/hud_keyline_green"
20 #define TURRET_OUTLINE_MATERIAL_WARN "mc/hud_keyline_red"
21 
22 function ‪__init__()
23 {
25 
28 
33 }
34 
35 function ‪on_player_connect( localClientNum )
36 {
37 /*
38 // rely on the retrievable filter
39  duplicate_render::set_dr_filter_offscreen( "gdtur", 25,
40  "gdtur_on", "gdtur_enemy,gdtur_hack",
41  DR_TYPE_OFFSCREEN, TURRET_OUTLINE_MATERIAL, DR_CULL_ALWAYS );
42  duplicate_render::set_dr_filter_offscreen( "gdtur_hax", 24,
43  "gdtur_on", undefined,
44  DR_TYPE_OFFSCREEN, TURRET_OUTLINE_MATERIAL_WARN, DR_CULL_ALWAYS );
45 */
46 }
47 
48 function ‪field_toggle_retrievable_handler( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
49 {
50  if ( IsDefined(self.owner) && self.owner == getlocalplayer( local_client_num ) )
51  {
52  self ‪duplicate_render::set_item_retrievable( local_client_num, newVal );
53  }
54 }
55 
56 function ‪field_toggle_unplaceable_handler( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
57 {
58  // We need a way to tell that the turret is being carried by a local player
59  //if ( IsDefined(self.owner) && self.owner == getlocalplayer( local_client_num ) )
60  {
61  self ‪duplicate_render::set_item_unplaceable( local_client_num, newVal );
62  }
63 }
64 
65 
66 
67 
68 function ‪field_toggle_keyline_handler( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
69 {
70  player = getnonpredictedlocalplayer( localClientNum );
71  player2 = getlocalplayer( localClientNum );
72 
73  if ( isdefined( player ) )
74  {
75  if ( player GetInKillcam( localClientNum ) )
76  {
77  return;
78  }
79  else if ( player ‪util::is_player_view_linked_to_entity( localClientNum ) )
80  {
81  return;
82  }
83  else if ( player != player2 )
84  {
85  return;
86  }
87 
88  }
89 
90  if(newVal)
91  {
92  self thread ‪watch_turret_keyline(localClientNum);
93  }
94  else
95  {
96  self notify("end_turret_keyline");
97  self ‪duplicate_render::change_dr_flags( localClientNum, undefined, "gdtur_on" );
98  }
99 }
100 
101 function ‪watch_turret_keyline(localClientNum)
102 {
103  self endon("end_turret_keyline");
104  player = GetLocalPlayer( localClientNum );
105  if( isdefined(self.owner) && self.owner == player )
106  {
107  self.original_team = self.team;
108  self.last_team = self.team;
109  while( IsDefined(self) )
110  {
111  player = GetLocalPlayer( localClientNum );
112  if( isdefined(self.owner) && self.owner == player )
113  self ‪duplicate_render::change_dr_flags( localClientNum, "gdtur_on", undefined );
114  else
115  self ‪duplicate_render::change_dr_flags( localClientNum, undefined, "gdtur_on" );
116  if (IsDefined(player))
117  {
118  if( isdefined(self.team) && self.team == player.team )
119  self ‪duplicate_render::change_dr_flags( localClientNum, undefined, "gdtur_enemy" );
120  else
121  {
122  self ‪duplicate_render::change_dr_flags( localClientNum, "gdtur_enemy", undefined );
123  if ( self.last_team != self.team )
124  {
125  if( self.team != self.original_team )
126  {
127  self.owner thread ‪turret_hacked_fully();
128  }
129  self.last_team = self.team;
130  }
131  }
132  }
133  wait 0.05;
134  }
135  }
136  else
137  {
138  self ‪duplicate_render::change_dr_flags( localClientNum, undefined, "gdtur_on" );
139  }
140 }
141 
142 function ‪field_damage_state_handler( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
143 {
144  player = getnonpredictedlocalplayer( localClientNum );
145  player2 = getlocalplayer( localClientNum );
146 
147  if ( isdefined( player ) )
148  {
149  if ( player GetInKillcam( localClientNum ) )
150  {
151  return;
152  }
153  else if ( player ‪util::is_player_view_linked_to_entity( localClientNum ) )
154  {
155  return;
156  }
157  else if ( player != player2 )
158  {
159  return;
160  }
161 
162  }
163 
164  if ( !‪IS_EQUAL( self.dt_damage_state, newVal ) )
165  {
166  if ( IsDefined( self.dt_damage_state_fx ) )
167  {
168  StopFX( localClientNum, self.dt_damage_state_fx );
169  self.dt_damage_state_fx=undefined;
170  }
171  if ( IsDefined(level.deploy_turret_damage_fx[newVal] ) )
172  {
173  self.dt_damage_state_fx = PlayFxOnTag( localClientNum, level.deploy_turret_damage_fx[newVal], self, "tag_fx" );
174  }
175  //PlayFXOnTag( level._effect[ "turbine_on" ] , self.buildableTurbine, "tag_animate");
176  self.dt_damage_state = newVal;
177  }
178 }
179 
180 
181 #precache( "client_fx", "destruct/fx_dest_turret_1" );
182 #precache( "client_fx", "destruct/fx_dest_turret_2" );
183 
184 #define TURRET_DAMAGE_STATES 2
185 #define TURRET_DAMAGE_AMT_1 0.5
186 #define TURRET_DAMAGE_FX_1 "destruct/fx_dest_turret_1"
187 #define TURRET_DAMAGE_AMT_2 0.25
188 #define TURRET_DAMAGE_FX_2 "destruct/fx_dest_turret_2"
189 
191 {
192  level.deploy_turret_damage_states = ‪TURRET_DAMAGE_STATES + 2;
193  level.deploy_turret_damage_amt = [];
194  level.deploy_turret_damage_fx = [];
195  level.deploy_turret_damage_amt[0] = 1.0;
196  level.deploy_turret_damage_fx[0] = undefined;
197  level.deploy_turret_damage_amt[1] = ‪TURRET_DAMAGE_AMT_1;
198  level.deploy_turret_damage_fx[1] = ‪TURRET_DAMAGE_FX_1;
199  level.deploy_turret_damage_amt[2] = ‪TURRET_DAMAGE_AMT_2;
200  level.deploy_turret_damage_fx[2] = ‪TURRET_DAMAGE_FX_2;
201  level.deploy_turret_damage_amt[3] = 0.0;
202  level.deploy_turret_damage_fx[3] = undefined;
203 
204 }
205 
206 function ‪field_toggle_hack_handler( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
207 {
208  if(newVal)
209  {
210  self ‪duplicate_render::change_dr_flags( localClientNum, "gdtur_hack", undefined );
211  }
212  else
213  {
214  self ‪duplicate_render::change_dr_flags( localClientNum, undefined, "gdtur_hack" );
215  }
216 
217  player = getnonpredictedlocalplayer( localClientNum );
218  player2 = getlocalplayer( localClientNum );
219 
220  if ( !‪IS_EQUAL(player,player2) )
221  {
222  return;
223  }
224 
225  player = GetLocalPlayer( localClientNum );
226  if( isdefined(self.owner) && self.owner == player )
227  {
228  if ( newVal )
229  {
230  if( self.team == self.original_team )
231  {
232  IPrintLnBold("TURRET HACK IN PROGRESS");
233  self thread ‪play_beeps(localClientNum);
234  }
235  // otherwise hacking own turret
236  }
237  else
238  {
239  self notify("stop_beeping");
240  }
241  }
242 
243 }
244 
245 function ‪play_beeps(localClientNum)
246 {
247  self endon("stop_beeping");
248  while( IsDefined(self) && IsDefined(self.owner))
249  {
250  self.owner PlaySound( localClientNum, "wpn_semtex_alert" );
251  wait 1;
252  }
253 }
254 
256 {
257  IPrintLnBold("TURRET HAS BEEN HACKED");
258 }
259 
260 
‪field_toggle_retrievable_handler
‪function field_toggle_retrievable_handler(local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _gadget_turret_deploy.csc:48
‪TURRET_DAMAGE_AMT_1
‪#define TURRET_DAMAGE_AMT_1
Definition: _gadget_turret_deploy.csc:185
‪field_toggle_keyline_handler
‪function field_toggle_keyline_handler(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _gadget_turret_deploy.csc:68
‪turret_hacked_fully
‪function turret_hacked_fully()
Definition: _gadget_turret_deploy.csc:255
‪set_item_retrievable
‪function set_item_retrievable(localClientNum, on_off)
Definition: duplicaterender_mgr.csc:424
‪is_player_view_linked_to_entity
‪function is_player_view_linked_to_entity(localClientNum)
Definition: util_shared.csc:1244
‪on_player_connect
‪function on_player_connect(localClientNum)
Definition: _gadget_turret_deploy.csc:35
‪field_toggle_hack_handler
‪function field_toggle_hack_handler(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _gadget_turret_deploy.csc:206
‪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
‪watch_turret_keyline
‪function watch_turret_keyline(localClientNum)
Definition: _gadget_turret_deploy.csc:101
‪__init__
‪function __init__()
Definition: _gadget_turret_deploy.csc:22
‪TURRET_DAMAGE_FX_1
‪#define TURRET_DAMAGE_FX_1
Definition: _gadget_turret_deploy.csc:186
‪on_localclient_connect
‪function on_localclient_connect(localClientNum)
Definition: ctf.csc:20
‪TURRET_DAMAGE_STATES
‪#define TURRET_DAMAGE_STATES
Definition: _gadget_turret_deploy.csc:184
‪set_item_unplaceable
‪function set_item_unplaceable(localClientNum, on_off)
Definition: duplicaterender_mgr.csc:429
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪field_toggle_unplaceable_handler
‪function field_toggle_unplaceable_handler(local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _gadget_turret_deploy.csc:56
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪IS_EQUAL
‪#define IS_EQUAL(__a, __b)
Definition: shared.gsh:250
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪field_damage_state_handler
‪function field_damage_state_handler(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _gadget_turret_deploy.csc:142
‪setup_turret_damage_states
‪function setup_turret_damage_states()
Definition: _gadget_turret_deploy.csc:190
‪play_beeps
‪function play_beeps(localClientNum)
Definition: _gadget_turret_deploy.csc:245
‪TURRET_DAMAGE_FX_2
‪#define TURRET_DAMAGE_FX_2
Definition: _gadget_turret_deploy.csc:188
‪change_dr_flags
‪function change_dr_flags(localClientNum, toset, toclear)
Definition: duplicaterender_mgr.csc:289
‪TURRET_DAMAGE_AMT_2
‪#define TURRET_DAMAGE_AMT_2
Definition: _gadget_turret_deploy.csc:187