‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
All Data Structures Files Functions Variables Macros
_gadget_hacker.gsc
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\flag_shared;
6 #using scripts\shared\flagsys_shared;
7 #using scripts\shared\hackable;
8 #using scripts\shared\hud_util_shared;
9 #using scripts\shared\system_shared;
10 #using scripts\shared\util_shared;
11 #using scripts\shared\visionset_mgr_shared;
12 
13 #using scripts\shared\abilities\_ability_player;
14 #using scripts\shared\abilities\_ability_power;
15 #using scripts\shared\abilities\_ability_util;
16 
17 #insert scripts\shared\shared.gsh;
18 #insert scripts\shared\version.gsh;
19 #insert scripts\shared\abilities\_ability_util.gsh;
20 
21 #namespace hacker;
22 
23 #define FLAG_OWNED "hacker_owned"
24 #define FLAG_INUSE "hacker_on"
25 
26 ‪REGISTER_SYSTEM( "gadget_hacker", &‪__init__, undefined )
27 
28 #define HACKABLE_DEFAULT_POWER_PER_FRAME (0.05 * GetDvarFloat("scr_hacker_power_per_second"))
29 
30 function ‪__init__()
31 {
37 
38  ‪clientfield::register( "toplayer", "hacker_on" , ‪VERSION_SHIP, 1, "int" );
39  ‪clientfield::register( "toplayer", "hacker_active" , ‪VERSION_SHIP, 1, "int" );
40 
42 }
43 
44 function ‪gadget_hacker_is_inuse( slot )
45 {
46  // returns true when local script gadget state is on
47  return self ‪flagsys::get( ‪FLAG_INUSE );
48 }
49 
51 {
52  // returns true when local script gadget state is flickering
53  return self GadgetFlickering( slot );
54 }
55 
56 function ‪gadget_hacker_on_flicker( slot, weapon )
57 {
58  // excuted when the gadget flickers
59  self thread ‪gadget_hacker_flicker( slot, weapon );
60 }
61 
62 function ‪gadget_hacker_on_give( slot, weapon )
63 {
64  // executed when gadget is added to the players inventory
66 
67  self ‪clientfield::set_to_player( "hacker_on", 0 );
68  self.shock_onpain=0;
69 
70  //self thread hacker_health_overlay( slot, weapon );
71  if ( IsDefined(self.hackProgressBar) )
72  {
73  self.hackProgressBar ‪hud::destroyElem();
74  self.hackProgressBar=undefined;
75  }
76  if ( IsDefined(self.hackProgressText) )
77  {
78  self.hackProgressText ‪hud::destroyElem();
79  self.hackProgressText=undefined;
80  }
81 }
82 
83 function ‪gadget_hacker_on_take( slot, weapon )
84 {
85  // executed when gadget is removed from the players inventory
87 
88  self.originalOverridePlayerDamage = undefined;
89  self.shock_onpain=1;
90 
91  self ‪clientfield::set_to_player( "hacker_on", 0 );
92 
93  self notify( "end_hacker_hud" );
94 
95  if ( IsDefined(self.hackProgressBar) )
96  {
97  self.hackProgressBar ‪hud::destroyElem();
98  self.hackProgressBar=undefined;
99  }
100  if ( IsDefined(self.hackProgressText) )
101  {
102  self.hackProgressText ‪hud::destroyElem();
103  self.hackProgressText=undefined;
104  }
105 }
106 
107 //self is the player
109 {
110  // setup up stuff on player connec
111 }
112 
113 function ‪gadget_hacker_on( slot, weapon )
114 {
115  // excecutes when the gadget is turned on
117  self.hacker_slot = slot;
118 
119  self endon( "gadget_hacker_off" );
120 
122  while( self IsSwitchingWeapons() )
123  {
125  }
126 
127  if( self ‪flagsys::get( ‪FLAG_INUSE ) )
128  {
129  //hacker section
130  self ‪clientfield::set_to_player( "hacker_on", 1 );
131 
132  self.hackProgressBar = ‪hud::createPrimaryProgressBar();
133  self.hackProgressBar ‪hud::hideElem();
134  self.hackProgressText = ‪hud::createPrimaryProgressBarText();
135  self.hackProgressText ‪hud::hideElem();
136 
137 
138  self thread ‪hack_things();
139  }
140 }
141 
142 function ‪gadget_hacker_off( slot, weapon )
143 {
144  self notify( "gadget_hacker_off" );
145  self.lockonentity=undefined;
146 
147  self.hacker_slot = undefined;
148 
149  // excecutes when the gadget is turned off
151 
152  //hacker section
153  self ‪clientfield::set_to_player( "hacker_on", 0 );
154  self ‪clientfield::set_to_player( "hacker_active", 0 );
155 
156  if ( IsDefined(self.hackProgressBar) )
157  {
158  self.hackProgressBar ‪hud::destroyElem();
159  self.hackProgressBar=undefined;
160  }
161  if ( IsDefined(self.hackProgressText) )
162  {
163  self.hackProgressText ‪hud::destroyElem();
164  self.hackProgressText=undefined;
165  }
166 }
167 
168 function ‪hack_things()
169 {
170  self endon( "gadget_hacker_off" );
171 
172  target = undefined;
173 
174  while( 1 )
175  {
176  if (!IsDefined(target))
177  {
178  self.lockonentity=undefined;
179  target = self ‪hackable::find_hackable_object();
180  }
181  if ( IsDefined(target) )
182  {
183  progress = self ‪hackable::continue_hacking_object(target);
184  if ( progress < 0 )
185  {
186  target = undefined;
187  self.hackProgressBar ‪hud::hideElem();
188  self.hackProgressBar ‪hud::updateBar( 0.0, 0.0 );
189  self.hackProgressText ‪hud::hideElem();
190  self.hackProgressText setText( "" );
191  self ‪clientfield::set_to_player( "hacker_active", 0 );
192  self.lockonentity=undefined;
193 
194  }
195  else
196  {
197  cost = target.hackable_cost_mult * ‪HACKABLE_DEFAULT_POWER_PER_FRAME;
198  if ( IsDefined(self.hacker_slot) )
199  {
200  self ‪ability_power::power_loss_event( self.hacker_slot, undefined, cost, "hacker_drain" );
201  }
202 
203  self ‪clientfield::set_to_player( "hacker_active", 1 );
204  self.hackProgressBar ‪hud::updateBar( progress, 0.0 );
205  self.hackProgressBar ‪hud::showElem();
206  if ( IsDefined( target.hackable_progress_prompt ) )
207  {
208  self.hackProgressText setText( target.hackable_progress_prompt );
209  self.hackProgressText ‪hud::showElem();
210  }
211  }
212  }
213  if ( IsEntity(target) )
214  {
215  // this will get it outlined
216  self.lockonentity=target;
217  }
219  }
220 
221 }
222 
223 
224 function ‪gadget_hacker_flicker( slot, weapon )
225 {
226  self endon( "disconnect" );
227 
228  if ( !self ‪gadget_hacker_is_inuse( slot ) )
229  {
230  return;
231  }
232 
233  eventTime = self._gadgets_player[slot].gadget_flickertime;
234 
235  self ‪set_gadget_status( "Flickering", eventTime );
236 
237  while( 1 )
238  {
239  if ( !self GadgetFlickering( slot ) )
240  {
241  self ‪set_gadget_status( "Normal" );
242  return;
243  }
244 
245  wait( 0.5 );
246  }
247 }
248 
249 function ‪set_gadget_status( status, time )
250 {
251  timeStr = "";
252 
253  if ( IsDefined( time ) )
254  {
255  timeStr = "^3" + ", time: " + time;
256  }
257 
258  if ( GetDvarInt( "scr_cpower_debug_prints" ) > 0 )
259  self IPrintlnBold( "Vision Armor: " + status + timeStr );
260 }
261 
‪gadget_hacker_on_connect
‪function gadget_hacker_on_connect()
Definition: _gadget_hacker.gsc:108
‪createPrimaryProgressBarText
‪function createPrimaryProgressBarText()
Definition: hud_util_shared.gsc:612
‪register_gadget_is_flickering_callbacks
‪function register_gadget_is_flickering_callbacks(type, flickering_func)
Definition: _ability_player.gsc:299
‪gadget_hacker_on_flicker
‪function gadget_hacker_on_flicker(slot, weapon)
Definition: _gadget_hacker.gsc:56
‪HACKABLE_DEFAULT_POWER_PER_FRAME
‪#define HACKABLE_DEFAULT_POWER_PER_FRAME
Definition: _gadget_hacker.gsc:28
‪set_gadget_status
‪function set_gadget_status(status, time)
Definition: _gadget_hacker.gsc:249
‪FLAG_OWNED
‪#define FLAG_OWNED
Definition: _gadget_hacker.gsc:23
‪register_gadget_possession_callbacks
‪function register_gadget_possession_callbacks(type, on_give, on_take)
Definition: _ability_player.gsc:221
‪set_to_player
‪function set_to_player(str_field_name, n_value)
Definition: clientfield_shared.gsc:58
‪clear
‪function clear(str_flag)
Definition: flag_shared.csc:130
‪register_gadget_is_inuse_callbacks
‪function register_gadget_is_inuse_callbacks(type, inuse_func)
Definition: _ability_player.gsc:289
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪destroyElem
‪function destroyElem()
Definition: hud_util_shared.gsc:755
‪gadget_hacker_on_take
‪function gadget_hacker_on_take(slot, weapon)
Definition: _gadget_hacker.gsc:83
‪continue_hacking_object
‪function continue_hacking_object(obj)
Definition: hackable.gsc:153
‪get
‪function get(kvp_value, kvp_key="targetname")
Definition: struct.csc:13
‪power_loss_event
‪function power_loss_event(slot, eAttacker, val, source)
Definition: _ability_power.gsc:199
‪register_gadget_flicker_callbacks
‪function register_gadget_flicker_callbacks(type, on_flicker)
Definition: _ability_player.gsc:253
‪gadget_hacker_is_inuse
‪function gadget_hacker_is_inuse(slot)
Definition: _gadget_hacker.gsc:44
‪hideElem
‪function hideElem()
Definition: hud_util_shared.gsc:673
‪createPrimaryProgressBar
‪function createPrimaryProgressBar()
Definition: hud_util_shared.gsc:602
‪updateBar
‪function updateBar(barFrac, rateOfChange)
Definition: hud_util_shared.gsc:294
‪gadget_hacker_off
‪function gadget_hacker_off(slot, weapon)
Definition: _gadget_hacker.gsc:142
‪register_gadget_activation_callbacks
‪function register_gadget_activation_callbacks(type, turn_on, turn_off)
Definition: _ability_player.gsc:237
‪GADGET_TYPE_HACKER
‪#define GADGET_TYPE_HACKER
Definition: _ability_util.gsh:15
‪showElem
‪function showElem()
Definition: hud_util_shared.gsc:695
‪gadget_hacker_flicker
‪function gadget_hacker_flicker(slot, weapon)
Definition: _gadget_hacker.gsc:224
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪hack_things
‪function hack_things()
Definition: _gadget_hacker.gsc:168
‪gadget_hacker_on_give
‪function gadget_hacker_on_give(slot, weapon)
Definition: _gadget_hacker.gsc:62
‪FLAG_INUSE
‪#define FLAG_INUSE
Definition: _gadget_hacker.gsc:24
‪gadget_hacker_is_flickering
‪function gadget_hacker_is_flickering(slot)
Definition: _gadget_hacker.gsc:50
‪set
‪function set(str_field_name, n_value)
Definition: clientfield_shared.gsc:34
‪__init__
‪function __init__()
Definition: _gadget_hacker.gsc:30
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪gadget_hacker_on
‪function gadget_hacker_on(slot, weapon)
Definition: _gadget_hacker.gsc:113
‪on_connect
‪function on_connect()
Definition: _arena.gsc:20
‪find_hackable_object
‪function find_hackable_object()
Definition: hackable.gsc:63
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265