DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionPlugIn.c
См. документацию.
2{
4 {
5 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_INTERACTONCE;
6 m_Text = "#plug_in";
7 }
8
14
15 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
16 {
17 if (player.IsPlacingLocal())
18 return false;
19
20 ItemBase targetIB = ItemBase.Cast(target.GetObject());
21
22 //Prevent plugging to items in inventory
23 if (targetIB && targetIB.GetHierarchyRoot() == targetIB && item)
24 {
25 if (item.HasEnergyManager() && !item.GetCompEM().IsPlugged() && targetIB.HasEnergyManager() && targetIB.GetCompEM().CanReceivePlugFrom(item))
26 {
27 return true;
28 }
29
30 ItemBase attachedDevice = GetAttachedDevice(targetIB);
31 //Will only ever affect batteries
32 if (attachedDevice)
33 {
34 return attachedDevice.GetCompEM().HasFreeSocket();
35 }
36 }
37
38 return false;
39 }
40
41 override void OnExecuteServer(ActionData action_data)
42 {
43 ItemBase targetIB = ItemBase.Cast(action_data.m_Target.GetObject());
44
45 if (targetIB.HasEnergyManager())
46 {
47 ItemBase attachedDevice = GetAttachedDevice(targetIB);
48 if (attachedDevice)
49 targetIB = attachedDevice;
50
51 action_data.m_MainItem.GetCompEM().PlugThisInto(targetIB);
52
53 if (!g_Game.IsDedicatedServer())
54 {
55 if (!action_data.m_Player.IsPlacingLocal())
56 {
57 action_data.m_Player.PlacingStartLocal(action_data.m_MainItem);
58 Process(action_data);
59 }
60 }
61 else
62 {
63 if (!action_data.m_Player.IsPlacingServer())
64 {
65 action_data.m_Player.PlacingStartServer(action_data.m_MainItem);
66 Process(action_data);
67 }
68 }
69 }
70 }
71
72 void Process(ActionData action_data)
73 {
74 ItemBase targetIB = ItemBase.Cast(action_data.m_Target.GetObject());
75
76 targetIB.GetInventory().TakeEntityAsAttachment(InventoryMode.LOCAL, action_data.m_MainItem);
77 }
78
79 override void OnExecuteClient(ActionData action_data)
80 {
81 if (!action_data.m_Player.IsPlacingLocal())
82 action_data.m_Player.PlacingStartLocal(action_data.m_MainItem);
83 else
84 Process(action_data);
85 }
86
88 {
89 if (parent.IsInherited(CarBattery) || parent.IsInherited(TruckBattery))
90 {
91 ItemBase parentAttachment = ItemBase.Cast(parent.GetAttachmentByType(MetalWire));
92 if (!parentAttachment)
93 parentAttachment = ItemBase.Cast(parent.GetAttachmentByType(BarbedWire));
94
95 return parentAttachment;
96 }
97
98 return null;
99 }
100};
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
Определения Inventory.c:22
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
DayZGame g_Game
Определения DayZGame.c:3868
void Process()
Определения EffectManager.c:743
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ItemBase GetAttachedDevice(ItemBase parent)
Определения ActionPlugIn.c:87
override void OnExecuteServer(ActionData action_data)
Определения ActionPlugIn.c:41
override void OnExecuteClient(ActionData action_data)
Определения ActionPlugIn.c:79
override void CreateConditionComponents()
Определения ActionPlugIn.c:9
void ActionPlugIn()
Определения ActionPlugIn.c:3
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionPlugIn.c:15
void Process(ActionData action_data)
Определения ActionPlugIn.c:72
void ActionSingleUseBase()
Определения ActionSingleUseBase.c:31
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
Определения CarBattery.c:1
Определения InventoryItem.c:731
Определения PlayerBaseClient.c:2
Определения TruckBattery.c:1
const float DEFAULT
Определения ActionConstants.c:112
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602