‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_game_module.gsc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\array_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\flag_shared;
6 #using scripts\shared\util_shared;
7 
8 #insert scripts\shared\shared.gsh;
9 
10 #using scripts\shared\ai\zombie_utility;
11 
12 #using scripts\zm\_util;
13 #using scripts\zm\_zm;
14 #using scripts\zm\_zm_utility;
15 
16 #namespace zm_game_module;
17 
18 /*------------------------------------
19 Handles registration of any game modules
20 ------------------------------------*/
21 function ‪register_game_module(index,module_name,pre_init_func,post_init_func,pre_init_zombie_spawn_func,post_init_zombie_spawn_func,hub_start_func)
22 {
23  if(!isdefined(level._game_modules))
24  {
25  level._game_modules = [];
26  level._num_registered_game_modules = 0;
27  }
28 
29  for(i=0;i<level._num_registered_game_modules;i++)
30  {
31  if(!isdefined(level._game_modules[i]))
32  {
33  continue;
34  }
35  if(isdefined(level._game_modules[i].index) && level._game_modules[i].index == index)
36  {
37  assert(level._game_modules[i].index != index,"A Game module is already registered for index (" + index + ")" );
38  }
39  }
40 
41  level._game_modules[level._num_registered_game_modules] = spawnstruct();
42  level._game_modules[level._num_registered_game_modules].index = index;
43  level._game_modules[level._num_registered_game_modules].module_name = module_name;
44  level._game_modules[level._num_registered_game_modules].pre_init_func = pre_init_func;
45  level._game_modules[level._num_registered_game_modules].post_init_func = post_init_func;
46  level._game_modules[level._num_registered_game_modules].pre_init_zombie_spawn_func = pre_init_zombie_spawn_func;
47  level._game_modules[level._num_registered_game_modules].post_init_zombie_spawn_func = post_init_zombie_spawn_func;
48  level._game_modules[level._num_registered_game_modules].hub_start_func = hub_start_func;
49  level._num_registered_game_modules++;
50 }
51 
52 function ‪set_current_game_module(game_module_index)
53 {
54  if(!isdefined(game_module_index))
55  {
56  level.current_game_module = level.GAME_MODULE_CLASSIC_INDEX;
57  level.scr_zm_game_module = level.GAME_MODULE_CLASSIC_INDEX;
58  return;
59  }
60  game_module = ‪get_game_module(game_module_index);
61 
62  if(!isdefined(game_module))
63  {
64  assert(isdefined(game_module),"unknown game module (" + game_module_index + ")" );
65  return;
66  }
67 
68  level.current_game_module = game_module_index;
69 }
70 
72 {
73  return ‪get_game_module(level.current_game_module);
74 }
75 
76 function ‪get_game_module(game_module_index)
77 {
78 
79  if(!isdefined(game_module_index))
80  {
81  return undefined;
82  }
83 
84  for(i=0;i<level._game_modules.size;i++)
85  {
86  if(level._game_modules[i].index == game_module_index)
87  {
88  return level._game_modules[i];
89  }
90  }
91  return undefined;
92 }
93 
94 /*------------------------------------
95 function function that should run at the beginning of "zombie_spawn_init() " in _zm_spawner
96 ------------------------------------*/
98 {
99  current_module = ‪get_current_game_module();
100  if(!isdefined(current_module) || !isdefined(current_module.pre_init_zombie_spawn_func))
101  {
102  return;
103  }
104 
105  self [[current_module.pre_init_zombie_spawn_func]]();
106 }
107 
108 /*------------------------------------
109 function function that should run at the end of "zombie_spawn_init() " in _zm_spawner
110 ------------------------------------*/
112 {
113  current_module = ‪get_current_game_module();
114  if(!isdefined(current_module) || !isdefined(current_module.post_init_zombie_spawn_func))
115  {
116  return;
117  }
118 
119  self [[current_module.post_init_zombie_spawn_func]]();
120 }
121 
123 {
124  players = GetPlayers();
125  for(i=0;i<players.size;i++)
126  {
128  }
129 }
130 
132 {
133  players = GetPlayers();
134  foreach(player in players)
135  {
136  if(player.sessionstate == "spectator")
137  {
138  if(isdefined(player.spectate_hud))
139  {
140  player.spectate_hud ‪destroy();
141  }
142  player [[level.spawnPlayer]]();
143  }
144  player ‪util::freeze_player_controls( true );
145  }
146 }
147 
148 function ‪damage_callback_no_pvp_damage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, eapon, vPoint, vDir, sHitLoc, psOffsetTime )
149 {
150  if(isdefined(eAttacker) && isplayer( eAttacker) && eAttacker == self) //player can damage self
151  {
152  return iDamage;
153  }
154  if(isdefined(eAttacker) && !isPlayer(eAttacker))
155  {
156  return iDamage;
157  }
158  if(!isdefined(eAttacker))
159  {
160  return iDamage;
161  }
162  return 0;
163 }
164 
165 
167 {
168  players = GetPlayers();
169  foreach(player in players)
170  {
171  player [[level.spawnPlayer]]();
172  player ‪util::freeze_player_controls( true );
173  }
174 }
175 
176 function ‪zombie_goto_round( target_round )
177 {
178  level notify( "restart_round" );
179 
180  if ( target_round < 1 )
181  {
182  target_round = 1;
183  }
184 
185  level.zombie_total = 0;
187  // kill all active zombies
189  if ( isdefined( zombies ) )
190  {
191  for (i = 0; i < zombies.size; i++)
192  {
193  zombies[i] dodamage(zombies[i].health + 666, zombies[i].origin);
194  }
195  }
197  wait(1);
198 }
199 
201 {
202  self ‪zombie_utility::set_zombie_run_cycle( "super_sprint" );
203 }
204 
205 function ‪game_module_custom_intermission(intermission_struct)
206 {
207  self closeInGameMenu();
208 
209  level endon( "stop_intermission" );
210  self endon("disconnect");
211  self endon("death");
212  self notify( "_zombie_game_over" ); // ww: notify so hud elements know when to leave
213 
214  //Show total gained point for end scoreboard and lobby
215  self.score = self.score_total;
216 
217  self.sessionstate = "intermission";
218  self.spectatorclient = -1;
219  self.killcamentity = -1;
220  self.archivetime = 0;
221  self.psoffsettime = 0;
222  self.friendlydamage = undefined;
223 
224  s_point = ‪struct::get(intermission_struct,"targetname");
225 
226  if(!isdefined(level.intermission_cam_model))
227  {
228  level.intermission_cam_model = ‪spawn("script_model",s_point.origin);//(1566, 498, 47.5));
229  level.intermission_cam_model.angles = s_point.angles;
230  level.intermission_cam_model setmodel("tag_origin");
231  }
232  self.game_over_bg = NewClientHudelem( self );
233  self.game_over_bg.horzAlign = "fullscreen";
234  self.game_over_bg.vertAlign = "fullscreen";
235  self.game_over_bg SetShader( "black", 640, 480 );
236  self.game_over_bg.alpha = 1;
237 
238  self ‪spawn( level.intermission_cam_model.origin, level.intermission_cam_model.angles );
239  self CameraSetPosition( level.intermission_cam_model );
240  self CameraSetLookAt();
241  self CameraActivate( true );
242  self linkto(level.intermission_cam_model);
243  level.intermission_cam_model moveto(‪struct::get(s_point.target,"targetname").origin,12);
244  if(isdefined(level.intermission_cam_model.angles))
245  {
246  level.intermission_cam_model rotateto(‪struct::get(s_point.target,"targetname").angles,12);
247  }
248  self.game_over_bg FadeOverTime( 2 );
249  self.game_over_bg.alpha = 0;
250  wait(2);
251  self.game_over_bg thread ‪zm::fade_up_over_time(1);
252 }
253 
254 function ‪create_fireworks(launch_spots,min_wait,max_wait,randomize)
255 {
256  level endon("stop_fireworks");
257  while(1)
258  {
259  if(‪IS_TRUE(randomize))
260  {
261  launch_spots =array::randomize(launch_spots);
262  }
263  foreach(spot in launch_spots)
264  {
265  level thread ‪fireworks_launch(spot);
266  wait(randomfloatrange(min_wait,max_wait));
267  }
268  wait(randomfloatrange(min_wait,max_wait));
269  }
270 }
271 
272 function ‪fireworks_launch(launch_spot)
273 {
274  firework = ‪spawn("script_model",launch_spot.origin + (randomintrange(-60,60),randomintrange(-60,60),0));
275  firework setmodel("tag_origin");
277  PlayFXOnTag( level._effect[ "fw_trail_cheap" ], firework, "tag_origin" );
278  firework playloopsound( "zmb_souls_loop", .75 );
279 
280  dest = launch_spot;
281 
282  while(isdefined(dest) && isdefined(dest.target))
283  {
284  random_offset = (randomintrange(-60,60),randomintrange(-60,60),0);
285  new_dests = ‪struct::get_array(dest.target,"targetname");
286  new_dest = array::random(new_dests);
287  dest = new_dest;
288  dist = distance(new_dest.origin + random_offset,firework.origin);
289  time = dist/700;
290  firework MoveTo(new_dest.origin + random_offset, time);
291  firework waittill("movedone");
292  }
293  firework playsound( "zmb_souls_end");
294 
295  playfx(level._effect["fw_pre_burst"],firework.origin);
296  firework delete();
297 }
‪zombie_goto_round
‪function zombie_goto_round(target_round)
Definition: _zm_game_module.gsc:176
‪register_game_module
‪function register_game_module(index, module_name, pre_init_func, post_init_func, pre_init_zombie_spawn_func, post_init_zombie_spawn_func, hub_start_func)
Definition: _zm_game_module.gsc:21
‪get_current_game_module
‪function get_current_game_module()
Definition: _zm_game_module.gsc:71
‪get_array
‪function get_array(kvp_value, kvp_key="targetname")
Definition: struct.csc:34
‪set_current_game_module
‪function set_current_game_module(game_module_index)
Definition: _zm_game_module.gsc:52
‪freeze_player_controls
‪function freeze_player_controls(b_frozen=true)
Definition: util_shared.gsc:2474
‪spawn
‪function spawn(v_origin=(0, 0, 0), v_angles=(0, 0, 0))
Definition: struct.csc:23
‪game_module_pre_zombie_spawn_init
‪function game_module_pre_zombie_spawn_init()
Definition: _zm_game_module.gsc:97
‪IS_TRUE
‪#define IS_TRUE(__a)
Definition: shared.gsh:251
‪get_round_enemy_array
‪function get_round_enemy_array()
Definition: zombie_utility.gsc:2024
‪create_fireworks
‪function create_fireworks(launch_spots, min_wait, max_wait, randomize)
Definition: _zm_game_module.gsc:254
‪get
‪function get(kvp_value, kvp_key="targetname")
Definition: struct.csc:13
‪respawn_players
‪function respawn_players()
Definition: _zm_game_module.gsc:166
‪wait_network_frame
‪function wait_network_frame(n_count=1)
Definition: util_shared.gsc:64
‪freeze
‪function freeze()
Definition: fr.gsc:724
‪freeze_players
‪function freeze_players(freeze)
Definition: _zm_game_module.gsc:122
‪ai_calculate_health
‪function ai_calculate_health(round_number)
Definition: zombie_utility.gsc:1907
‪respawn_spectators_and_freeze_players
‪function respawn_spectators_and_freeze_players()
Definition: _zm_game_module.gsc:131
‪damage_callback_no_pvp_damage
‪function damage_callback_no_pvp_damage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, eapon, vPoint, vDir, sHitLoc, psOffsetTime)
Definition: _zm_game_module.gsc:148
‪fade_up_over_time
‪function fade_up_over_time(t)
Definition: _zm.gsc:6712
‪set_zombie_run_cycle
‪function set_zombie_run_cycle(new_move_speed)
Definition: zombie_utility.gsc:2076
‪game_module_custom_intermission
‪function game_module_custom_intermission(intermission_struct)
Definition: _zm_game_module.gsc:205
‪get_game_module
‪function get_game_module(game_module_index)
Definition: _zm_game_module.gsc:76
‪destroy
‪function destroy(watcher, owner)
Definition: _decoy.gsc:108
‪make_supersprinter
‪function make_supersprinter()
Definition: _zm_game_module.gsc:200
‪fireworks_launch
‪function fireworks_launch(launch_spot)
Definition: _zm_game_module.gsc:272
‪game_module_post_zombie_spawn_init
‪function game_module_post_zombie_spawn_init()
Definition: _zm_game_module.gsc:111