DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionAttachWithSwich.c
См. документацию.
2{
4 {
5 }
6
7 override void CreateConditionComponents()
8 {
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 (!g_Game.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 (!g_Game.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 (g_Game.IsMultiplayer())
83 {
84 ClearActionJuncture(action_data);
85 return;
86 }
87
88 ClearInventoryReservationEx(action_data);
89 AttachActionData action_data_a = AttachActionData.Cast(action_data);
90 EntityAI target_EAI;
91
92 if ( action_data.m_Target.IsProxy() )
93 {
94 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetParent() );
95 }
96 else
97 {
98 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetObject() );
99 }
100
101 if (target_EAI && action_data_a.m_MainItem)
102 {
104 il.SetAttachment( target_EAI, action_data.m_MainItem, action_data_a.m_AttSlot );
105 action_data.m_Player.PredictiveForceSwapEntities( target_EAI, action_data.m_MainItem, il );
106 }
107 }
108
109 override void OnExecuteClient( ActionData action_data )
110 {
111 ClearInventoryReservationEx(action_data);
112 AttachActionData action_data_a = AttachActionData.Cast(action_data);
113
114 EntityAI target_EAI;
115
116 if ( action_data.m_Target.IsProxy() )
117 {
118 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetParent() );
119 }
120 else
121 {
122 target_EAI = EntityAI.Cast( action_data_a.m_Target.GetObject() );
123 }
124
125 if (target_EAI && action_data_a.m_MainItem)
126 {
128 il.SetAttachment( target_EAI, action_data.m_MainItem, action_data_a.m_AttSlot );
129 action_data.m_Player.PredictiveForceSwapEntities( target_EAI, action_data.m_MainItem, il );
130 }
131 }
132}
AttachActionData ActionData ActionAttach()
Определения ActionAttach.c:9
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1120
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1207
int m_StanceMask
Определения ActionBase.c:61
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
DayZGame g_Game
Определения DayZGame.c:4074
FindInventoryLocationType
flags for searching locations in inventory
Определения InventoryLocation.c:18
void ActionAttachWithSwitch()
Определения ActionAttachWithSwich.c:3
override void OnExecuteClient(ActionData action_data)
Определения ActionAttachWithSwich.c:109
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
PlayerBase m_Player
Определения ActionBase.c:40
ref ActionTarget m_Target
Определения ActionBase.c:39
ItemBase m_MainItem
Определения ActionBase.c:35
Определения ActionBase.c:22
int m_AttSlot
Определения ActionAttach.c:3
Определения ActionAttach.c:2
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
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:30
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:114
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602