DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionAttachPowerSourceToPanel.c
См. документацию.
1
3{
5 {
6 m_Text = "#attach";
7 }
8
14
15 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
16 {
17 EntityAI target_entity = EntityAI.Cast( target.GetObject() );
18 if ( player && target_entity && item )
19 {
20 if ( target_entity.IsStaticTransmitter() && target_entity.GetInventory().AttachmentCount() == 0 ) //has any power source attachment attached
21 {
22 return true;
23 }
24 }
25
26 return false;
27 }
28
29 protected void OnExecuteImpl( ActionData action_data )
30 {
31 EntityAI target_entity = EntityAI.Cast( action_data.m_Target.GetObject() );
32 EntityAI item_entity = action_data.m_MainItem;
33
34 //find inventory location for attachment
35 InventoryLocation target_location = new InventoryLocation;
36 if ( target_entity.GetInventory().FindFirstFreeLocationForNewEntity( item_entity.GetType(), FindInventoryLocationType.ATTACHMENT, target_location ) )
37 {
38 action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx( target_entity, item_entity, target_location.GetSlot() );
39 }
40 }
41
42 override void OnExecuteClient( ActionData action_data )
43 {
44 ClearInventoryReservationEx(action_data);
45 OnExecuteImpl(action_data);
46 }
47
48 override void OnExecuteServer( ActionData action_data )
49 {
50 if (GetGame().IsMultiplayer())
51 return; // multiplayer handled on client side via OnExecuteClient
52 else
53 OnExecuteImpl(action_data); // single player
54 }
55
56 override void OnEndClient( ActionData action_data )
57 {
58 // Probably not needed since attaching is done server side.
59 /*
60 EntityAI target_entity = EntityAI.Cast( action_data.m_Target.GetObject() );
61 EntityAI item_entity = EntityAI.Cast( action_data.m_MainItem );
62
63 //find inventory location for attachment
64 InventoryLocation target_location = new InventoryLocation;
65
66 if( target_entity.GetInventory().FindFirstFreeLocationForNewEntity( item_entity.GetType(), FindInventoryLocationType.ATTACHMENT, target_location ) )
67 {
68 //target_entity.PredictiveTakeEntityToTargetAttachmentEx( target_entity, item_entity, target_location.GetSlot() );
69 target_entity.LocalTakeEntityAsAttachmentEx( item_entity, target_location.GetSlot() );
70 }
71 */
72 }
73}
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
FindInventoryLocationType
flags for searching locations in inventory
Определения InventoryLocation.c:17
override void OnExecuteClient(ActionData action_data)
override void OnExecuteServer(ActionData action_data)
override void CreateConditionComponents()
Определения ActionAttachPowerSourceToPanel.c:9
void OnExecuteImpl(ActionData action_data)
override void OnEndClient(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1025
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
void ActionSingleUseBase()
Определения ActionSingleUseBase.c:31
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
Определения Building.c:6
proto native int GetSlot()
returns slot id if current type is Attachment
InventoryLocation.
Определения InventoryLocation.c:29
Определения InventoryItem.c:731
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:112
proto native CGame GetGame()