DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionAttachWithSwich.c
См. документацию.
2{
4 {
5 }
6
7 override void CreateConditionComponents()
8 {
9 m_ConditionItem = new CCINonRuined;
10 m_ConditionTarget = new CCTNonRuined( UAMaxDistances.DEFAULT );
11 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_ATTACHITEM;
12 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
13 }
14
15 override typename GetInputType()
16 {
18 }
19
21 {
22 return true;
23 }
24
26 {
27 AttachActionData action_data = new AttachActionData;
28 return action_data;
29 }
30
31 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
32 {
34 if (!GetGame().IsDedicatedServer())
35 {
36 EntityAI target_entity;
37
38 if ( target.IsProxy() )
39 {
40 target_entity = EntityAI.Cast( target.GetParent() );
41 }
42 else
43 {
44 target_entity = EntityAI.Cast( target.GetObject() );
45 }
46
47 if (!target_entity.GetInventory().FindFreeLocationFor( item, FindInventoryLocationType.ATTACHMENT, il ))
48 return false;
49 }
50
51 if ( super.SetupAction( player, target, item, action_data, extra_data))
52 {
53 if (!GetGame().IsDedicatedServer())
54 {
55 AttachActionData action_data_a = AttachActionData.Cast(action_data);
56 action_data_a.m_AttSlot = il.GetSlot();
57 }
58 return true;
59 }
60 return false;
61 }
62
63
64 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
65 {
66 EntityAI target_entity = EntityAI.Cast( target.GetObject() );
67 if( !item.CanSwitchDuringAttach(target_entity) )
68 return false;
69
70 if ( target_entity && item )
71 {
72 if ( target_entity.GetInventory() && target_entity.GetInventory().CanAddAttachment( item ) )
73 {
74 return true;
75 }
76 }
77 return false;
78 }
79
80 override void OnExecuteServer( ActionData action_data )
81 {
82 if (GetGame().IsMultiplayer())
83 return;
84
85 ClearInventoryReservationEx(action_data);
86 AttachActionData action_data_a = AttachActionData.Cast(action_data);
87 EntityAI target_EAI;
88
89 if ( action_data.m_Target.IsProxy() )
90 {
91 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetParent() );
92 }
93 else
94 {
95 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetObject() );
96 }
97
98 if (target_EAI && action_data_a.m_MainItem)
99 {
101 il.SetAttachment( target_EAI, action_data.m_MainItem, action_data_a.m_AttSlot );
102 action_data.m_Player.PredictiveForceSwapEntities( target_EAI, action_data.m_MainItem, il );
103 }
104 }
105
106 override void OnExecuteClient( ActionData action_data )
107 {
108 ClearInventoryReservationEx(action_data);
109 AttachActionData action_data_a = AttachActionData.Cast(action_data);
110
111 EntityAI target_EAI;
112
113 if ( action_data.m_Target.IsProxy() )
114 {
115 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetParent() );
116 }
117 else
118 {
119 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetObject() );
120 }
121
122 if (target_EAI && action_data_a.m_MainItem)
123 {
125 il.SetAttachment( target_EAI, action_data.m_MainItem, action_data_a.m_AttSlot );
126 action_data.m_Player.PredictiveForceSwapEntities( target_EAI, action_data.m_MainItem, il );
127 }
128 }
129}
AttachActionData ActionData ActionAttach()
Определения ActionAttach.c:9
int m_CommandUID
Определения ActionBase.c:31
int m_StanceMask
Определения ActionBase.c:33
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
FindInventoryLocationType
flags for searching locations in inventory
Определения InventoryLocation.c:17
void ActionAttachWithSwitch()
Определения ActionAttachWithSwich.c:3
override void OnExecuteClient(ActionData action_data)
Определения ActionAttachWithSwich.c:106
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionAttachWithSwich.c:64
override bool CanBePerformedFromInventory()
Определения ActionAttachWithSwich.c:20
override void CreateConditionComponents()
Определения ActionAttachWithSwich.c:7
override GetInputType()
Определения ActionAttachWithSwich.c:15
override void OnExecuteServer(ActionData action_data)
Определения ActionAttachWithSwich.c:80
override ActionData CreateActionData()
Определения ActionAttachWithSwich.c:25
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionAttachWithSwich.c:31
int m_AttSlot
Определения ActionAttach.c:3
Определения ActionAttach.c:2
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
Определения Building.c:6
proto native void SetAttachment(notnull EntityAI parent, EntityAI e, int slotId)
sets current inventory location type to Attachment with slot id set to <slotId>
InventoryLocation.
Определения InventoryLocation.c:29
Определения InventoryItem.c:731
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:112
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()