‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_killstreak_detect.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\array_shared;
4 #using scripts\shared\callbacks_shared;
5 #using scripts\shared\clientfield_shared;
6 #using scripts\shared\duplicaterender_mgr;
7 #using scripts\shared\filter_shared;
8 #using scripts\shared\util_shared;
9 
10 
11 #insert scripts\shared\duplicaterender.gsh;
12 #insert scripts\mp\_hacker_tool.gsh;
13 #insert scripts\shared\shared.gsh;
14 #insert scripts\shared\version.gsh;
15 #insert scripts\shared\weapons\_weaponobjects.gsh;
16 
17 #using scripts\shared\system_shared;
18 
19 #namespace killstreak_detect;
20 
21 ‪REGISTER_SYSTEM( "killstreak_detect", &‪__init__, undefined )
22 
23 
24 function ‪__init__()
25 {
27 
33 
35 
36  ‪DEFAULT(level.enemyvehicles,[]);
37  ‪DEFAULT(level.enemymissiles,[]);
38 
39  level.emp_killstreaks = [];
40 }
41 
42 function ‪vehicle_transition( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
43 {
44  player = GetLocalPlayer( local_client_num );
45  friend = self ‪util::friend_not_foe( local_client_num, true );
46 
47  if( friend && isdefined( player ) && player ‪duplicate_render::show_friendly_outlines( local_client_num ) )
48  {
49  showOutlines = !(self IsLocalClientDriver( local_client_num ) );
50  self ‪duplicate_render::set_item_friendly_vehicle( local_client_num, showOutlines );
51  }
52 }
53 
54 function ‪should_set_compass_icon( local_client_num )
55 {
56  local_player = GetLocalPlayer( local_client_num );
57 
58  return ( isdefined( local_player ) && isdefined( self.team ) && ( local_player.team === self.team || local_player HasPerk( local_client_num, "specialty_showenemyvehicles" ) ) );
59 }
60 
61 function ‪enemyScriptMoverVehicle_changed( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
62 {
63  if ( isdefined( level.scriptMoverCompassIcons ) && isdefined( self.model ) )
64  {
65  if ( isdefined( level.scriptMoverCompassIcons[self.model] ) )
66  {
67  if ( self ‪should_set_compass_icon( local_client_num ) )
68  {
69  self setCompassIcon( level.scriptMoverCompassIcons[self.model] );
70  }
71  }
72  }
73 
74  ‪enemyvehicle_changed( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump );
75 }
76 
77 function ‪enemyMissileVehicle_changed( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
78 {
79  if ( isdefined( level.missileCompassIcons ) && isdefined( self.weapon ) )
80  {
81  if ( isdefined( level.missileCompassIcons[self.weapon] ) )
82  {
83  if ( self ‪should_set_compass_icon( local_client_num ) )
84  {
85  self setCompassIcon( level.missileCompassIcons[self.weapon] );
86  }
87  }
88  }
89 
90  ‪enemymissile_changed( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump );
91 }
92 
93 function ‪enemymissile_changed( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
94 {
95  self ‪updateTeamMissiles( local_client_num, newVal );
96  self util::add_remove_list( level.enemymissiles, newVal );
97  self ‪updateEnemyMissiles( local_client_num, newVal );
98 }
99 
100 function ‪enemyvehicle_changed( local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
101 {
102  self ‪updateTeamVehicles( local_client_num, newVal );
103  self util::add_remove_list( level.enemyvehicles, newVal );
104 
105  self ‪updateEnemyVehicles( local_client_num, newVal );
106 
107  if ( isdefined( self.model ) && self.model == "wpn_t7_turret_emp_core" && self.type === "vehicle" )
108  {
109  ‪ARRAY_ADD( level.emp_killstreaks, self );
110  }
111 }
112 
113 function ‪updateTeamVehicles( local_client_num, newVal )
114 {
115  self ‪checkTeamVehicles( local_client_num );
116 }
117 
118 function ‪updateTeamMissiles( local_client_num, newVal )
119 {
120  self ‪checkTeamMissiles( local_client_num );
121 }
122 
123 function ‪updateEnemyVehicles( local_client_num, newVal )
124 {
125  if ( !( isdefined( self ) ) )
126  {
127  return;
128  }
129  watcher = GetLocalPlayer( local_client_num );
130  friend = self ‪util::friend_not_foe( local_client_num, true );
131 
132  self ‪duplicate_render::set_dr_flag( "enemyvehicle_fb", !friend );
133 
134  self ‪duplicate_render::set_item_enemy_vehicle( local_client_num, false );
135  self ‪duplicate_render::set_item_friendly_vehicle( local_client_num, false );
136  self.isEnemyVehicle = false;
137  if ( !friend && IsDefined( watcher ) && watcher HasPerk( local_client_num, "specialty_showenemyvehicles" ) )
138  {
139  if ( !isdefined( self.isbreachingfirewall ) || self.isbreachingfirewall == false )
140  {
141  self ‪duplicate_render::set_item_enemy_vehicle( local_client_num, newVal );
142  }
143  self.isEnemyVehicle = true;
144  self ‪duplicate_render::set_item_friendly_vehicle( local_client_num, false );
145  }
146  else if( ( friend === true ) && isDefined( watcher ) && watcher ‪duplicate_render::show_friendly_outlines(local_client_num) )
147  {
148  driver = ( self.type === "vehicle" ) && self IsLocalClientDriver( local_client_num );
149  showOutlines = ( driver === false ) && ( newVal === ‪ENEMY_VEHICLE_ACTIVE || newVal === ENEMY_VEHICLE_HACKED );
150  self ‪duplicate_render::set_item_friendly_vehicle( local_client_num, showOutlines );
151  }
152  else
153  {
154  self ‪duplicate_render::set_item_friendly_vehicle( local_client_num, false );
155  }
156 
157  if ( newVal == ENEMY_VEHICLE_HACKED )
158  {
159  self.killstreakIsHacked = true;
160  }
161 
162  self ‪duplicate_render::update_dr_filters( local_client_num );
163 }
164 
165 function ‪updateEnemyMissiles( local_client_num, newVal )
166 {
167  if ( !( isdefined( self ) ) )
168  {
169  return;
170  }
171  watcher = GetLocalPlayer( local_client_num );
172  friend = self ‪util::friend_not_foe( local_client_num, true );
173 
174  self ‪duplicate_render::set_dr_flag( "enemyvehicle_fb", !friend );
175 
176  self ‪duplicate_render::set_item_enemy_explosive( local_client_num, false );
177  self ‪duplicate_render::set_item_friendly_explosive( local_client_num, false );
178  self.isEnemyVehicle = false;
179  if ( !friend && IsDefined( watcher ) && watcher HasPerk( local_client_num, "specialty_showenemyvehicles" ) )
180  {
181  if ( !isdefined( self.isbreachingfirewall ) || self.isbreachingfirewall == false )
182  {
183  self ‪duplicate_render::set_item_enemy_explosive( local_client_num, newVal );
184  }
185  self.isEnemyVehicle = true;
186  self ‪duplicate_render::set_item_friendly_explosive( local_client_num, false );
187  }
188  else if( ( friend === true ) && isDefined( watcher ) && watcher ‪duplicate_render::show_friendly_outlines(local_client_num) )
189  {
190  showOutlines = ( newVal === ‪ENEMY_VEHICLE_ACTIVE || newVal === ENEMY_VEHICLE_HACKED );
191  self ‪duplicate_render::set_item_friendly_explosive( local_client_num, showOutlines );
192  }
193  else
194  {
195  self ‪duplicate_render::set_item_friendly_explosive( local_client_num, false );
196  }
197 
198  if ( newVal == ENEMY_VEHICLE_HACKED )
199  {
200  self.killstreakIsHacked = true;
201  }
202 
203  self ‪duplicate_render::update_dr_filters( local_client_num );
204 }
205 
207 {
208  if( self != GetLocalPlayer( local_client_num ) )
209  return;
210 
211  self notify( "watch_killstreak_detect_perks_changed" );
212  self endon( "watch_killstreak_detect_perks_changed" );
213  self endon( "death" );
214  self endon( "disconnect" );
215  self endon( "entityshutdown" );
216 
217  while(IsDefined(self))
218  {
220  util::clean_deleted(level.enemyvehicles);
221  util::clean_deleted(level.enemymissiles);
222  array::thread_all( level.enemyvehicles, &‪updateEnemyVehicles, local_client_num, 1 );
223  array::thread_all( level.enemymissiles, &‪updateEnemyMissiles, local_client_num, 1 );
224  self waittill("perks_changed");
225  }
226 }
227 
228 
229 function ‪checkTeamVehicles( localClientNum )
230 {
231  if ( !isdefined ( self.owner ) || !isdefined ( self.owner.team ) )
232  {
233  return;
234  }
235 
236  if ( !isdefined( self.vehicleOldTeam ) )
237  {
238  self.vehicleOldTeam = self.team;
239  }
240 
241  if ( !isdefined( self.vehicleOldOwnerTeam ) )
242  {
243  self.vehicleOldOwnerTeam = self.owner.team;
244  }
245 
246  watcher = GetLocalPlayer( localClientNum );
247 
248  if ( !isdefined( self.vehicleOldWatcherTeam ) )
249  {
250  self.vehicleOldWatcherTeam = watcher.team;
251  }
252 
253  if ( self.vehicleOldTeam != self.team || self.vehicleOldOwnerTeam != self.owner.team || self.vehicleOldWatcherTeam != watcher.team)
254  {
255  self.vehicleOldTeam = self.team;
256  self.vehicleOldOwnerTeam = self.owner.team;
257  self.vehicleOldWatcherTeam = watcher.team;
258 
259  self notify( "team_changed" );
260  }
261 }
262 
263 function ‪checkTeamMissiles( localClientNum )
264 {
265  if ( !isdefined ( self.owner ) || !isdefined ( self.owner.team ) )
266  {
267  return;
268  }
269 
270  if ( !isdefined( self.missileOldTeam ) )
271  {
272  self.missileOldTeam = self.team;
273  }
274 
275  if ( !isdefined( self.missileOldOwnerTeam ) )
276  {
277  self.missileOldOwnerTeam = self.owner.team;
278  }
279 
280  watcher = GetLocalPlayer( localClientNum );
281 
282  if ( !isdefined( self.missileOldWatcherTeam ) )
283  {
284  self.missileOldWatcherTeam = watcher.team;
285  }
286 
287  if ( self.missileOldTeam != self.team || self.missileOldOwnerTeam != self.owner.team || self.missileOldWatcherTeam != watcher.team)
288  {
289  self.missileOldTeam = self.team;
290  self.missileOldOwnerTeam = self.owner.team;
291  self.missileOldWatcherTeam = watcher.team;
292 
293  self notify( "team_changed" );
294  }
295 }
‪updateTeamVehicles
‪function updateTeamVehicles(local_client_num, newVal)
Definition: _killstreak_detect.csc:113
‪on_localplayer_spawned
‪function on_localplayer_spawned(local_client_num)
Definition: _perks.csc:109
‪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
‪friend_not_foe
‪function friend_not_foe(localClientIndex, predicted)
Definition: util_shared.csc:1164
‪update_dr_filters
‪function update_dr_filters(localClientNum)
Definition: duplicaterender_mgr.csc:329
‪checkTeamVehicles
‪function checkTeamVehicles(localClientNum)
Definition: _killstreak_detect.csc:229
‪updateTeamMissiles
‪function updateTeamMissiles(local_client_num, newVal)
Definition: _killstreak_detect.csc:118
‪ENEMY_VEHICLE_ACTIVE
‪#define ENEMY_VEHICLE_ACTIVE
Definition: _hacker_tool.gsh:2
‪enemymissile_changed
‪function enemymissile_changed(local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _killstreak_detect.csc:93
‪vehicle_transition
‪function vehicle_transition(local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _killstreak_detect.csc:42
‪DEFAULT
‪#define DEFAULT(__var, __default)
Definition: shared.gsh:270
‪checkTeamMissiles
‪function checkTeamMissiles(localClientNum)
Definition: _killstreak_detect.csc:263
‪set_item_enemy_vehicle
‪function set_item_enemy_vehicle(localClientNum, on_off)
Definition: duplicaterender_mgr.csc:454
‪watch_killstreak_detect_perks_changed
‪function watch_killstreak_detect_perks_changed(local_client_num)
Definition: _killstreak_detect.csc:206
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪ARRAY_ADD
‪#define ARRAY_ADD(__array, __item)
Definition: shared.gsh:304
‪should_set_compass_icon
‪function should_set_compass_icon(local_client_num)
Definition: _killstreak_detect.csc:54
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪set_item_friendly_explosive
‪function set_item_friendly_explosive(localClientNum, on_off)
Definition: duplicaterender_mgr.csc:449
‪enemyScriptMoverVehicle_changed
‪function enemyScriptMoverVehicle_changed(local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _killstreak_detect.csc:61
‪updateEnemyVehicles
‪function updateEnemyVehicles(local_client_num, newVal)
Definition: _killstreak_detect.csc:123
‪enemyvehicle_changed
‪function enemyvehicle_changed(local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _killstreak_detect.csc:100
‪set_item_enemy_explosive
‪function set_item_enemy_explosive(localClientNum, on_off)
Definition: duplicaterender_mgr.csc:444
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪set_item_friendly_vehicle
‪function set_item_friendly_vehicle(localClientNum, on_off)
Definition: duplicaterender_mgr.csc:459
‪updateEnemyMissiles
‪function updateEnemyMissiles(local_client_num, newVal)
Definition: _killstreak_detect.csc:165
‪enemyMissileVehicle_changed
‪function enemyMissileVehicle_changed(local_client_num, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _killstreak_detect.csc:77
‪__init__
‪function __init__()
Definition: _killstreak_detect.csc:24
‪set_dr_flag
‪function set_dr_flag(toset, setto=true)
Definition: duplicaterender_mgr.csc:251
‪WAIT_CLIENT_FRAME
‪#define WAIT_CLIENT_FRAME
Definition: shared.gsh:266
‪show_friendly_outlines
‪function show_friendly_outlines(local_client_num)
Definition: duplicaterender_mgr.csc:508