‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_powerups.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\util_shared;
5 
6 #insert scripts\shared\shared.gsh;
7 #insert scripts\shared\version.gsh;
8 
9 #insert scripts\zm\_zm_powerups.gsh;
10 
11 // Client side powerups functionality
12 
13 #precache( "client_fx", "zombie/fx_powerup_on_green_zmb" );
14 #precache( "client_fx", "zombie/fx_powerup_on_red_zmb" );
15 #precache( "client_fx", "zombie/fx_powerup_on_solo_zmb" );
16 #precache( "client_fx", "zombie/fx_powerup_on_caution_zmb" );
17 
18 #namespace zm_powerups;
19 
20 function ‪init()
21 {
22  //Powerups:
23 
24  //Random Drops
26 
27  level thread ‪set_clientfield_code_callbacks();
28 
29  level._effect["powerup_on"] = "zombie/fx_powerup_on_green_zmb";
30  if (‪IS_TRUE(level.using_zombie_powerups))
31  {
32  level._effect["powerup_on_red"] = "zombie/fx_powerup_on_red_zmb";
33  }
34  level._effect["powerup_on_solo"] = "zombie/fx_powerup_on_solo_zmb";
35  level._effect["powerup_on_caution"] = "zombie/fx_powerup_on_caution_zmb";
36 
38 }
39 
40 function ‪add_zombie_powerup( powerup_name, client_field_name, clientfield_version = ‪VERSION_SHIP )
41 {
42  if( isdefined( level.zombie_include_powerups ) && !isdefined( level.zombie_include_powerups[powerup_name] ) )
43  {
44  return;
45  }
46 
47  struct = SpawnStruct();
48 
49  if( !isdefined( level.zombie_powerups ) )
50  {
51  level.zombie_powerups = [];
52  }
53 
54  struct.powerup_name = powerup_name;
55 
56  level.zombie_powerups[powerup_name] = struct;
57 
58  if( isdefined( client_field_name ) )
59  {
60  ‪clientfield::register( "toplayer", client_field_name, clientfield_version, 2, "int", &‪powerup_state_callback, !‪CF_HOST_ONLY, ‪CF_CALLBACK_ZERO_ON_NEW_ENT );
61  struct.client_field_name = client_field_name;
62  }
63 }
64 
66 {
67  wait(0.1); // This won't run - until after all the client field registration has finished.
68 
69  powerup_keys = GetArrayKeys( level.zombie_powerups );
70  powerup_clientfield_name = undefined;
71  for ( powerup_key_index = 0; powerup_key_index < powerup_keys.size; powerup_key_index++ )
72  {
73  powerup_clientfield_name = level.zombie_powerups[powerup_keys[powerup_key_index]].client_field_name;
74  if ( isdefined( powerup_clientfield_name ) )
75  {
76  SetupClientFieldCodeCallbacks( "toplayer", 1, powerup_clientfield_name );
77  }
78  }
79 }
80 
81 function ‪include_zombie_powerup( powerup_name )
82 {
83  if( !isdefined( level.zombie_include_powerups ) )
84  {
85  level.zombie_include_powerups = [];
86  }
87 
88  level.zombie_include_powerups[powerup_name] = true;
89 }
90 
91 function ‪powerup_state_callback( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
92 {
93  self notify( "powerup", fieldName, newVal );
94 }
95 
96 function ‪powerup_fx_callback( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
97 {
98  switch ( newVal )
99  {
101  fx = level._effect["powerup_on"];
102  break;
104  fx = level._effect["powerup_on_solo"];
105  break;
107  fx = level._effect["powerup_on_red"];
108  break;
110  fx = level._effect["powerup_on_caution"];
111  break;
112  default:
113  // do nothing
114  return;
115  }
116 
117  if (!isdefined(fx))
118  return;
119  self ‪util::waittill_dobj( localClientNum );
120  if ( !isdefined(self) )
121  return;
122  if( isdefined( self.fx ) )
123  {
124  StopFX( localClientNum, self.fx );
125  }
126  self.fx = PlayFXOnTag( localClientNum, fx, self, "tag_origin" );
127 }
‪CLIENTFIELD_POWERUP_FX_ONLY_AFFECTS_GRABBER_ON
‪#define CLIENTFIELD_POWERUP_FX_ONLY_AFFECTS_GRABBER_ON
Definition: _zm_powerups.gsh:27
‪init
‪function init()
Definition: _zm_powerups.csc:20
‪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
‪CLIENTFIELD_POWERUP_FX_ON
‪#define CLIENTFIELD_POWERUP_FX_ON
Definition: _zm_powerups.gsh:26
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪CLIENTFIELD_POWERUP_FX_ANY_TEAM_ON
‪#define CLIENTFIELD_POWERUP_FX_ANY_TEAM_ON
Definition: _zm_powerups.gsh:29
‪CLIENTFIELD_POWERUP_FX_ZOMBIE_GRABBABLE_ON
‪#define CLIENTFIELD_POWERUP_FX_ZOMBIE_GRABBABLE_ON
Definition: _zm_powerups.gsh:28
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪include_zombie_powerup
‪function include_zombie_powerup(powerup_name)
Definition: _zm_powerups.csc:81
‪powerup_state_callback
‪function powerup_state_callback(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _zm_powerups.csc:91
‪powerup_fx_callback
‪function powerup_fx_callback(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _zm_powerups.csc:96
‪waittill_dobj
‪function waittill_dobj(localClientNum)
Definition: util_shared.csc:1117
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪CLIENTFIELD_POWERUP_FX_NAME
‪#define CLIENTFIELD_POWERUP_FX_NAME
Definition: _zm_powerups.gsh:23
‪add_zombie_powerup
‪function add_zombie_powerup(powerup_name, client_field_name, clientfield_version=VERSION_SHIP)
Definition: _zm_powerups.csc:40
‪CLIENTFIELD_POWERUP_INSTANT_KILL_UG
‪#define CLIENTFIELD_POWERUP_INSTANT_KILL_UG
Definition: _zm_powerups.gsh:19
‪set_clientfield_code_callbacks
‪function set_clientfield_code_callbacks()
Definition: _zm_powerups.csc:65