DayZ 1.27
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 OnFinishProgressServer(ActionData action_data)
66 {
67 ClearInventoryReservationEx(action_data);
68
69 ExplosivesBase explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
70 if (explosive)
71 {
72 explosive.OnPlacementComplete(action_data.m_Player, explosive.GetPosition(), action_data.m_Player.GetOrientation());
73 explosive.UnlockTriggerSlots();
74 }
75
76 if (action_data.m_MainItem.IsInherited(RemoteDetonator))
77 {
79
80 return;
81 }
82 else
83 {
84 AttachItem(action_data);
85 }
86 }
87
88 override void OnFinishProgressClient(ActionData action_data)
89 {
90 ClearInventoryReservationEx(action_data);
91
92 ExplosivesBase explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
93 if (explosive)
94 {
95 explosive.UnlockTriggerSlots();
96 }
97
98 if (!action_data.m_MainItem.IsInherited(RemoteDetonator))
99 {
100 AttachItem(action_data);
101 }
102 }
103
105 {
106 ExplosivesBase explosive;
107 if (action_data.m_Target.IsProxy())
108 {
109 explosive = ExplosivesBase.Cast(action_data.m_Target.GetParent());
110 }
111 else
112 {
113 explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
114 }
115
116 if (explosive && action_data.m_MainItem)
117 {
118 explosive.UnlockTriggerSlots();
119 RemoteDetonatorTrigger.SpawnInPlayerHands(action_data.m_Player, explosive);
120 }
121 }
122
123 protected void AttachItem(ActionData action_data)
124 {
125 EntityAI targetEAI;
126 if (action_data.m_Target.IsProxy())
127 {
128 targetEAI = EntityAI.Cast(action_data.m_Target.GetParent());
129 }
130 else
131 {
132 targetEAI = EntityAI.Cast(action_data.m_Target.GetObject());
133 }
134
135 if (targetEAI && action_data.m_MainItem)
136 {
137 int slotId = InventorySlots.GetSlotIdFromString(action_data.m_MainItem.GetExplosiveTriggerSlotName());
138 action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx(targetEAI, action_data.m_MainItem, slotId);
139 }
140 }
141}
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
class ActionTargets ActionTarget
void ClockBase()
Определения ClockBase.c:27
void ExplosivesBase()
Определения ExplosivesBase.c:42
override void CreateActionComponent()
Определения ActionAttachExplosivesTrigger.c:3
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1025
bool CanBeSetFromInventory()
Определения ActionBase.c:313
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 bool ActionConditionContinue(ActionData action_data)
Определения AnimatedActionBase.c:235
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения AnimatedActionBase.c:240
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
Определения ClaymoreMine.c:2
Определения Building.c:6
static proto native int GetSlotIdFromString(string slot_name)
converts string to slot_id
provides access to slot configuration
Определения InventorySlots.c:6
Определения InventoryItem.c:731
Определения 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