DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionAttachExplosivesTrigger.c
См. документацию.
2{
3 override void CreateActionComponent()
4 {
6 }
7}
8
10{
12 {
13 m_CallbackClass = ActionAttachExplosivesTriggerCB;
14 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
15 m_FullBody = true;
16 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
17
18 m_Text = "#STR_ArmExplosive";
19 }
20
22 {
23 m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
24 m_ConditionItem = new CCINonRuined();
25 }
26
27 override bool ActionConditionContinue(ActionData action_data)
28 {
29 return true;
30 }
31
32 override bool CanBeSetFromInventory()
33 {
34 return true;
35 }
36
37 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
38 {
39 if (target.GetParent())
40 {
41 return false;
42 }
43
44 if (ClaymoreMine.Cast(target.GetObject()))
45 {
46 return false;
47 }
48
49 ExplosivesBase explosive = ExplosivesBase.Cast(target.GetObject());
50 if (explosive)
51 {
52 ClockBase timedTrigger;
53 if (ClockBase.CastTo(timedTrigger, item))
54 {
55 return timedTrigger.IsAlarmOn() && explosive.IsTimerDetonable() && explosive.CanBeArmed();
56 }
57
58 return explosive.CanBeArmed();
59 }
60
61
62 return false;
63 }
64
65 override void OnStartServer(ActionData action_data)
66 {
67 super.OnStartServer(action_data);
68
69 ExplosivesBase item = ExplosivesBase.Cast(action_data.m_Target.GetObject());
70 if (item.GetArmSoundset() != string.Empty)
71 item.StartItemSoundServer(SoundConstants.ITEM_EXPLOSIVE_ARM);
72 }
73
74 override void OnEndServer(ActionData action_data)
75 {
76 super.OnEndServer(action_data);
77
78 ExplosivesBase item = ExplosivesBase.Cast(action_data.m_Target.GetObject());
79 if (item.GetArmSoundset() != string.Empty)
80 item.StopItemSoundServer(SoundConstants.ITEM_EXPLOSIVE_ARM);
81 }
82
83 override void OnFinishProgressServer(ActionData action_data)
84 {
85 ClearInventoryReservationEx(action_data);
86
87 ExplosivesBase explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
88 if (explosive)
89 {
90 explosive.OnPlacementComplete(action_data.m_Player, explosive.GetPosition(), action_data.m_Player.GetOrientation());
91 explosive.UnlockTriggerSlots();
92 }
93
94 if (action_data.m_MainItem.IsInherited(RemoteDetonator))
95 {
97
98 return;
99 }
100 else
101 {
102 AttachItem(action_data);
103 }
104 }
105
106 override void OnFinishProgressClient(ActionData action_data)
107 {
108 ClearInventoryReservationEx(action_data);
109
110 ExplosivesBase explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
111 if (explosive)
112 {
113 explosive.UnlockTriggerSlots();
114 }
115
116 if (!action_data.m_MainItem.IsInherited(RemoteDetonator))
117 {
118 AttachItem(action_data);
119 }
120 }
121
123 {
124 ExplosivesBase explosive;
125 if (action_data.m_Target.IsProxy())
126 {
127 explosive = ExplosivesBase.Cast(action_data.m_Target.GetParent());
128 }
129 else
130 {
131 explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
132 }
133
134 if (explosive && action_data.m_MainItem)
135 {
136 explosive.UnlockTriggerSlots();
137 RemoteDetonatorTrigger.SpawnInPlayerHands(action_data.m_Player, explosive);
138 }
139 }
140
141 protected void AttachItem(ActionData action_data)
142 {
143 EntityAI targetEAI;
144 if (action_data.m_Target.IsProxy())
145 {
146 targetEAI = EntityAI.Cast(action_data.m_Target.GetParent());
147 }
148 else
149 {
150 targetEAI = EntityAI.Cast(action_data.m_Target.GetObject());
151 }
152
153 if (targetEAI && action_data.m_MainItem)
154 {
155 int slotId = InventorySlots.GetSlotIdFromString(action_data.m_MainItem.GetExplosiveTriggerSlotName());
156 action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx(targetEAI, action_data.m_MainItem, slotId);
157 }
158 }
159}
ActionAttachExplosivesTriggerCB ActionContinuousBaseCB ActionAttachExplosivesTrigger()
Определения ActionAttachExplosivesTrigger.c:11
void CreateRemoteDetonatorReceiverAsAttachment(ActionData action_data)
void AttachItem(ActionData action_data)
int m_CommandUID
Определения ActionBase.c:31
ActionBase ActionData
Определения ActionBase.c:30
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:121
void ClockBase()
Определения ClockBase.c:27
void ExplosivesBase()
Определения ExplosivesBase.c:42
override void CreateActionComponent()
Определения ActionAttachExplosivesTrigger.c:3
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1061
bool CanBeSetFromInventory()
Определения ActionBase.c:319
void CreateConditionComponents()
Определения ActionBase.c:230
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void OnFinishProgressClient(ActionData action_data)
Определения ActionContinuousBase.c:287
void OnFinishProgressServer(ActionData action_data)
Определения ActionContinuousBase.c:283
override void OnStartServer(ActionData action_data)
Определения AnimatedActionBase.c:489
override bool ActionConditionContinue(ActionData action_data)
Определения AnimatedActionBase.c:235
override void OnEndServer(ActionData action_data)
Определения AnimatedActionBase.c:497
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения AnimatedActionBase.c:240
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
Определения ClaymoreMine.c:2
static proto native int GetSlotIdFromString(string slot_name)
converts string to slot_id
provides access to slot configuration
Определения InventorySlots.c:6
Определения PlayerBaseClient.c:2
static RemoteDetonatorTrigger SpawnInPlayerHands(notnull EntityAI pEntity, EntityAI deviceToPair=null)
Определения RemoteDetonator.c:155
const float DEFAULT
Определения ActionConstants.c:112
const float EXPLOSIVE_ARM
Определения ActionConstants.c:104
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602