‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_zm_craft_shield.gsc
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\flag_shared;
7 #using scripts\shared\flagsys_shared;
8 #using scripts\shared\system_shared;
9 #using scripts\shared\util_shared;
10 #using scripts\shared\visionset_mgr_shared;
11 
12 #insert scripts\shared\shared.gsh;
13 #insert scripts\shared\version.gsh;
14 
15 #using scripts\zm\_zm_devgui;
16 #using scripts\zm\_zm_equipment;
17 #using scripts\zm\_zm_unitrigger;
18 #using scripts\zm\_zm_utility;
19 #using scripts\zm\_zm_weap_riotshield;
20 #using scripts\zm\craftables\_zm_craftables;
21 #using scripts\zm\_zm_powerup_shield_charge;
22 
23 #using scripts\shared\ai\zombie_utility;
24 
25 #insert scripts\zm\craftables\_zm_craftables.gsh;
26 #insert scripts\zm\_zm_utility.gsh;
27 
28 #precache( "string", "ZOMBIE_CRAFT_RIOT" );
29 #precache( "string", "ZOMBIE_GRAB_RIOTSHIELD" );
30 #precache( "triggerstring", "ZOMBIE_CRAFT_RIOT" );
31 #precache( "triggerstring", "ZOMBIE_GRAB_RIOTSHIELD" );
32 #precache( "triggerstring", "ZOMBIE_BOUGHT_RIOT" );
33 #precache( "string", "ZOMBIE_EQUIP_RIOTSHIELD_HOWTO" );
34 
35 
36 #define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOLLY "piece_riotshield_dolly"
37 #define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOOR "piece_riotshield_door"
38 #define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_CLAMP "piece_riotshield_clamp"
39 #define ZMUI_SHIELD_PART_PICKUP "ZMUI_SHIELD_PART_PICKUP"
40 #define ZMUI_SHIELD_CRAFTED "ZMUI_SHIELD_CRAFTED"
41 
42 #define ZM_CRAFTABLES_NOT_ENOUGH_PIECES_UI_DURATION 3.5
43 #define ZM_CRAFTABLES_FULLY_CRAFTED_UI_DURATION 3.5
44 
45 #define GROUND_LEVEL 0
46 #define RIOTSHIELD_OFFSET 26
47 
48 #namespace zm_craft_shield;
49 
50 ‪REGISTER_SYSTEM_EX( "zm_craft_shield", &‪__init__, &‪__main__, undefined )
51 
52 // RIOT SHIELD
53 
54 //-----------------------------------------------------------------------------------
55 // setup
56 //-----------------------------------------------------------------------------------
57 function ‪__init__()
58 {
59 }
60 
61 function ‪init( shield_equipment, shield_weapon, shield_model, str_to_craft = &"ZOMBIE_CRAFT_RIOT", str_taken = &"ZOMBIE_BOUGHT_RIOT", str_grab = &"ZOMBIE_GRAB_RIOTSHIELD" )
62 {
63  level.craftable_shield_equipment = shield_equipment;
64  level.craftable_shield_weapon = shield_weapon;
65  level.craftable_shield_model = shield_model;
66 
67  level.craftable_shield_grab = str_grab;
68 
69  level.riotshield_supports_deploy = false;
70 
71  riotShield_dolly = ‪zm_craftables::generate_zombie_craftable_piece( level.craftable_shield_equipment, "dolly", 32, 64, ‪GROUND_LEVEL, undefined, &‪on_pickup_common, &‪on_drop_common, undefined, undefined, undefined, undefined, ‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOLLY, ‪CRAFTABLE_IS_SHARED, "build_zs" );
72  riotShield_door = ‪zm_craftables::generate_zombie_craftable_piece( level.craftable_shield_equipment, "door", 48, 15, 25, undefined, &‪on_pickup_common, &‪on_drop_common, undefined, undefined, undefined, undefined, ‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOOR, ‪CRAFTABLE_IS_SHARED, "build_zs" );
73  riotShield_clamp = ‪zm_craftables::generate_zombie_craftable_piece( level.craftable_shield_equipment, "clamp", 48, 15, 25, undefined, &‪on_pickup_common, &‪on_drop_common, undefined, undefined, undefined, undefined, ‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_CLAMP, ‪CRAFTABLE_IS_SHARED, "build_zs" );
74 
75  RegisterClientField( "world", ‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOLLY, ‪VERSION_SHIP, 1, "int", undefined, false );
76  RegisterClientField( "world", ‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOOR, ‪VERSION_SHIP, 1, "int", undefined, false );
77  RegisterClientField( "world", ‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_CLAMP, ‪VERSION_SHIP, 1, "int", undefined, false );
78 
81 
82  riotShield = SpawnStruct();
83  riotShield.name = level.craftable_shield_equipment;
84  riotShield.weaponname = level.craftable_shield_weapon;
85  riotShield ‪zm_craftables::add_craftable_piece( riotShield_dolly );
86  riotShield ‪zm_craftables::add_craftable_piece( riotShield_door );
87  riotShield ‪zm_craftables::add_craftable_piece( riotShield_clamp );
88  riotShield.onBuyWeapon = &‪on_buy_weapon_riotshield;
89  riotShield.triggerThink = &‪riotshield_craftable;
90 
92 
93  ‪zm_craftables::add_zombie_craftable( level.craftable_shield_equipment, str_to_craft, "ERROR", str_taken, &‪on_fully_crafted, ‪CRAFTABLE_NEED_ALL_PIECES );
94  ‪zm_craftables::add_zombie_craftable_vox_category( level.craftable_shield_equipment, "build_zs" );
95  ‪zm_craftables::make_zombie_craftable_open( level.craftable_shield_equipment, level.craftable_shield_model, (0, -90, 0), (0, 0, ‪RIOTSHIELD_OFFSET) );
96 }
97 
98 function ‪__main__()
99 {
100 }
101 
103 {
104  ‪zm_craftables::craftable_trigger_think( "riotshield_zm_craftable_trigger", level.craftable_shield_equipment, level.craftable_shield_weapon, level.craftable_shield_grab, ‪DELETE_TRIGGER, ‪PERSISTENT );
105 }
106 
107 // thread this to show a UI infotext string for a defined duration
108 // self = player to show the infotext string
109 // str_infotext = the infotext string
110 // n_duration = how long to set the infotext
111 function ‪show_infotext_for_duration( str_infotext, n_duration )
112 {
113  self ‪clientfield::set_to_player( str_infotext, 1 );
114  wait n_duration;
115  self ‪clientfield::set_to_player( str_infotext, 0 );
116 }
117 
118 // self is a WorldPiece
119 function ‪on_pickup_common( player )
120 {
121  // CallBack When Player Picks Up Craftable Piece
122  //----------------------------------------------
123 
124  player playsound( "zmb_craftable_pickup" );
125 
126  if( isdefined( level.craft_shield_piece_pickup_vo_override ) )
127  {
128  player thread [[level.craft_shield_piece_pickup_vo_override]]();
129  }
130 
131  foreach( e_player in level.players )
132  {
133  e_player thread ‪zm_craftables::player_show_craftable_parts_ui( "zmInventory.player_crafted_shield", "zmInventory.widget_shield_parts", false ); // show ui for parts
135  }
136 
137  self ‪pickup_from_mover();
138  self.piece_owner = player;
139 }
140 
141 // self is a WorldPiece
142 function ‪on_drop_common( player )
143 {
144  // CallBack When Player Drops Craftable Piece
145  //-------------------------------------------
146 
147  self ‪drop_on_mover( player );
148  self.piece_owner = undefined;
149 }
150 
152 {
153  //Setup for override
154  if( isdefined( level.craft_shield_pickup_override ) )
155  {
156  [[level.craft_shield_pickup_override]]();
157  }
158 }
159 
161 {
162  players = level.players;
163  foreach( e_player in players )
164  {
165  if( ‪zm_utility::is_player_valid( e_player ) )
166  {
167  e_player thread ‪zm_craftables::player_show_craftable_parts_ui( "zmInventory.player_crafted_shield", "zmInventory.widget_shield_parts", true );
169  }
170  }
171 
172  return true;
173 }
174 
175 function ‪drop_on_mover( player )
176 {
177  //Setup for override
178  if( isdefined( level.craft_shield_drop_override ) )
179  {
180  [[level.craft_shield_drop_override]]();
181  }
182 }
183 
184 function ‪on_buy_weapon_riotshield( player )
185 {
186  if ( isdefined(player.player_shield_reset_health))
187  {
188  player [[player.player_shield_reset_health]]();
189  }
190  if ( isdefined(player.player_shield_reset_location))
191  {
192  player [[player.player_shield_reset_location]]();
193  }
194 
195  // Notifies pods to start dropping shield recharge
196  player playsound( "zmb_craftable_buy_shield" );
197  level notify( "shield_built", player );
198 }
199 
‪on_fully_crafted
‪function on_fully_crafted()
Definition: _zm_craft_shield.gsc:160
‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOOR
‪#define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOOR
Definition: _zm_craft_shield.gsc:37
‪generate_zombie_craftable_piece
‪function generate_zombie_craftable_piece(craftablename, pieceName, radius, height, drop_offset, hud_icon, onPickup, onDrop, onCrafted, use_spawn_num, tag_name, can_reuse, client_field_value, is_shared=FALSE, vox_id, b_one_time_vo=false, hint_string, slot=0)
Definition: _zm_craftables.gsc:416
‪show_infotext_for_duration
‪function show_infotext_for_duration(str_infotext, n_duration)
Definition: _zm_craft_shield.gsc:111
‪set_to_player
‪function set_to_player(str_field_name, n_value)
Definition: clientfield_shared.gsc:58
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪GROUND_LEVEL
‪#define GROUND_LEVEL
Definition: _zm_craft_shield.gsc:45
‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_CLAMP
‪#define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_CLAMP
Definition: _zm_craft_shield.gsc:38
‪add_zombie_craftable
‪function add_zombie_craftable(craftable_name)
Definition: _zm_craftables.csc:45
‪player_show_craftable_parts_ui
‪function player_show_craftable_parts_ui(str_crafted_clientuimodel, str_widget_clientuimodel, b_is_crafted)
Definition: _zm_craftables.gsc:4428
‪PERSISTENT
‪#define PERSISTENT
Definition: _zm_buildables.gsh:17
‪include_zombie_craftable
‪function include_zombie_craftable(craftable_name)
Definition: _zm_craftables.csc:77
‪riotshield_craftable
‪function riotshield_craftable()
Definition: _zm_craft_shield.gsc:102
‪is_player_valid
‪function is_player_valid(player, checkIgnoreMeFlag, ignore_laststand_players)
Definition: skeleton.gsc:256
‪on_pickup_common
‪function on_pickup_common(player)
Definition: _zm_craft_shield.gsc:119
‪add_zombie_craftable_vox_category
‪function add_zombie_craftable_vox_category(craftable_name, vox_id)
Definition: _zm_craftables.gsc:368
‪add_craftable_piece
‪function add_craftable_piece(pieceStub, tag_name, can_reuse)
Definition: _zm_craftables.gsc:522
‪REGISTER_SYSTEM_EX
‪#define REGISTER_SYSTEM_EX(__sys, __func_init_preload, __func_init_postload, __reqs)
Definition: shared.gsh:209
‪drop_on_mover
‪function drop_on_mover(player)
Definition: _zm_craft_shield.gsc:175
‪ZMUI_SHIELD_PART_PICKUP
‪#define ZMUI_SHIELD_PART_PICKUP
Definition: _zm_craft_shield.gsc:39
‪ZM_CRAFTABLES_FULLY_CRAFTED_UI_DURATION
‪#define ZM_CRAFTABLES_FULLY_CRAFTED_UI_DURATION
Definition: _zm_craft_shield.gsc:43
‪on_buy_weapon_riotshield
‪function on_buy_weapon_riotshield(player)
Definition: _zm_craft_shield.gsc:184
‪__init__
‪function __init__()
Definition: _zm_craft_shield.gsc:57
‪CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOLLY
‪#define CLIENTFIELD_CRAFTABLE_PIECE_RIOTSHIELD_DOLLY
Definition: _zm_craft_shield.gsc:36
‪ZMUI_SHIELD_CRAFTED
‪#define ZMUI_SHIELD_CRAFTED
Definition: _zm_craft_shield.gsc:40
‪DELETE_TRIGGER
‪#define DELETE_TRIGGER
Definition: _zm_buildables.gsh:9
‪ZM_CRAFTABLES_NOT_ENOUGH_PIECES_UI_DURATION
‪#define ZM_CRAFTABLES_NOT_ENOUGH_PIECES_UI_DURATION
Definition: _zm_craft_shield.gsc:42
‪CRAFTABLE_NEED_ALL_PIECES
‪#define CRAFTABLE_NEED_ALL_PIECES
Definition: _zm_craftables.gsh:18
‪CRAFTABLE_IS_SHARED
‪#define CRAFTABLE_IS_SHARED
Definition: _zm_craftables.gsh:17
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪on_drop_common
‪function on_drop_common(player)
Definition: _zm_craft_shield.gsc:142
‪init
‪function init(shield_equipment, shield_weapon, shield_model, str_to_craft=&"ZOMBIE_CRAFT_RIOT", str_taken=&"ZOMBIE_BOUGHT_RIOT", str_grab=&"ZOMBIE_GRAB_RIOTSHIELD")
Definition: _zm_craft_shield.gsc:61
‪craftable_trigger_think
‪function craftable_trigger_think(trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent)
Definition: _zm_craftables.gsc:3596
‪make_zombie_craftable_open
‪function make_zombie_craftable_open(str_craftable, str_model, v_angle_offset, v_origin_offset)
Definition: _zm_craftables.gsc:271
‪pickup_from_mover
‪function pickup_from_mover()
Definition: _zm_craft_shield.gsc:151
‪__main__
‪function __main__()
Definition: _zm_craft_shield.gsc:98
‪RIOTSHIELD_OFFSET
‪#define RIOTSHIELD_OFFSET
Definition: _zm_craft_shield.gsc:46