‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
_remotemissile.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\system_shared;
5 #using scripts\shared\util_shared;
6 
7 #insert scripts\shared\shared.gsh;
8 #insert scripts\shared\version.gsh;
9 
10 #using scripts\mp\_util;
11 
12 
13 #insert scripts\mp\killstreaks\_killstreaks.gsh;
14 
15 #namespace remotemissile;
16 
17 ‪REGISTER_SYSTEM( "remotemissile", &‪__init__, undefined )
18 
19 function ‪__init__()
20 {
21  ‪clientfield::register( "missile", "remote_missile_bomblet_fired", ‪VERSION_SHIP, 1, "int",&‪bomblets_deployed, !‪CF_HOST_ONLY, !‪CF_CALLBACK_ZERO_ON_NEW_ENT );
23 }
24 
25 function ‪missile_fired( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
26 {
27  if( newVal == ‪REMOTE_MISSILE_FIRED )
28  {
29  player = getlocalplayer( localClientNum );
30  owner = self GetOwner( localClientNum );
31 
32  clientObjID = ‪util::getNextObjID( localClientNum );
33 
34  objective_add( localClientNum, clientObjID, "invisible", self.origin, self.team, owner );
35  Objective_OnEntity( localClientNum, clientObjID, self, true, false, true );
36  self.hellfireObjId = clientObjID;
37  self thread ‪destruction_watcher( localClientNum, clientObjID );
38 
39 
40  objective_state( localClientNum, clientObjID, "active" );
41  if( player hasPerk( localClientNum, "specialty_showenemyequipment" ) || self.team == player.team )
42  {
43  objective_SetIcon( localClientNum, clientObjID, "remotemissile_target" );
44  objective_SetIconSize( localClientNum, clientObjID, 50 );
45  }
46 
47  self thread ‪hud_update( localClientNum );
48  }
49  else if ( newVal == ‪REMOTE_MISSILE_PLAYER_DETONATED )
50  {
51  if( isdefined( self.hellfireObjId ) )
52  {
53  self notify( "hellfire_detonated" );
54  objective_delete( localClientNum, self.hellfireObjId );
55  ‪util::releaseObjID( localClientNum, self.hellfireObjId );
56  }
57  }
58  else
59  self notify( "cleanup_objectives" );
60 
61 
62  ammo_ui_data_model = GetUIModel( GetUIModelForController( localClientNum ), "vehicle.ammo" );
63  if ( isdefined( ammo_ui_data_model ) )
64  SetUIModelValue( ammo_ui_data_model, 1 );
65 }
66 
67 function ‪bomblets_deployed( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
68 {
69  if ( bNewEnt && oldVal == newVal )
70  {
71  return;
72  }
73 
74  if( newVal == ‪REMOTE_MISSILE_BOMBLET_FIRED )
75  {
76  player = getlocalplayer( localClientNum );
77  owner = self GetOwner( localClientNum );
78 
79  clientObjID = ‪util::getNextObjID( localClientNum );
80 
81  objective_add( localClientNum, clientObjID, "invisible", self.origin, self.team, owner );
82  Objective_OnEntity( localClientNum, clientObjID, self, true, false, true );
83  self thread ‪destruction_watcher( localClientNum, clientObjID );
84 
85 
86  objective_state( localClientNum, clientObjID, "active" );
87  if( player hasPerk( localClientNum, "specialty_showenemyequipment" ) || player.team == self.team )
88  objective_SetIcon( localClientNum, clientObjID, "remotemissile_target" );
89  }
90  else
91  self notify( "cleanup_objectives" );
92 
93  ammo_ui_data_model = GetUIModel( GetUIModelForController( localClientNum ), "vehicle.ammo" );
94  if ( isdefined( ammo_ui_data_model ) )
95  SetUIModelValue( ammo_ui_data_model, 0 );
96 }
97 
98 function ‪destruction_watcher( localClientNum, clientObjID )
99 {
100  self ‪util::waittill_any( "death", "entityshutdown", "cleanup_objectives" );
101  wait( 0.1 );
102  if( isdefined( clientObjID ) )
103  {
104  objective_delete( localClientNum, clientObjID );
105  ‪util::releaseObjID( localClientNum, clientObjID );
106  }
107 }
108 
109 function ‪hud_update( localClientNum )
110 {
111  self endon( "entityshutdown" );
112  self notify( "remote_missile_singeton");
113  self endon( "remote_missile_singeton");
114  missile = self;
115 
116  altitude_ui_data_model = GetUIModel( GetUIModelForController( localClientNum ), "vehicle.altitude" );
117  speed_ui_data_model = GetUIModel( GetUIModelForController( localClientNum ), "vehicle.speed" );
118 
119  if( !isdefined( altitude_ui_data_model ) || !isdefined( speed_ui_data_model ) )
120  return;
121 
122  prev_z = missile.origin[2];
123 
124  fps = 20.0;
125  ‪delay = 1.0 / fps;
126 
127  while( 1 )
128  {
129  cur_z = missile.origin[2];
130  SetUIModelValue( altitude_ui_data_model, cur_z );
131 
132  dist = ( prev_z - cur_z ) * fps;
133  val = dist / ‪MPH_TO_INCHES_PER_SEC;
134  SetUIModelValue( speed_ui_data_model, val );
135 
136  prev_z = cur_z;
137 
138  wait ( ‪delay );
139  }
140 }
‪__init__
‪function __init__()
Definition: _remotemissile.csc:19
‪REMOTE_MISSILE_FIRED
‪#define REMOTE_MISSILE_FIRED
Definition: _killstreaks.gsh:9
‪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
‪REMOTE_MISSILE_PLAYER_DETONATED
‪#define REMOTE_MISSILE_PLAYER_DETONATED
Definition: _killstreaks.gsh:10
‪MPH_TO_INCHES_PER_SEC
‪#define MPH_TO_INCHES_PER_SEC
Definition: shared.gsh:268
‪delay
‪function delay(time_or_notify, str_endon, func, arg1, arg2, arg3, arg4, arg5, arg6)
Definition: util_shared.csc:784
‪REMOTE_MISSILE_BOMBLET_FIRED
‪#define REMOTE_MISSILE_BOMBLET_FIRED
Definition: _killstreaks.gsh:12
‪missile_fired
‪function missile_fired(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _remotemissile.csc:25
‪getNextObjID
‪function getNextObjID(localClientNum)
Definition: util_shared.csc:1549
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪waittill_any
‪function waittill_any(str_notify1, str_notify2, str_notify3, str_notify4, str_notify5)
Definition: util_shared.csc:375
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪hud_update
‪function hud_update(localClientNum)
Definition: _remotemissile.csc:109
‪destruction_watcher
‪function destruction_watcher(localClientNum, clientObjID)
Definition: _remotemissile.csc:98
‪releaseObjID
‪function releaseObjID(localClientNum, objID)
Definition: util_shared.csc:1582
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪bomblets_deployed
‪function bomblets_deployed(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _remotemissile.csc:67