Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
actionattachtoconstruction.c
Go to the documentation of this file.
1
class
ActionAttachToConstruction
:
ActionSingleUseBase
2
{
3
void
ActionAttachToConstruction
()
4
{
5
m_Text
=
"#attach"
;
6
}
7
8
override
void
CreateConditionComponents
()
9
{
10
m_ConditionItem
=
new
CCINonRuined
;
11
m_ConditionTarget
=
new
CCTCursor
;
12
}
13
14
override
ActionData
CreateActionData
()
15
{
16
AttachActionData
action_data =
new
AttachActionData
;
17
return
action_data;
18
}
19
20
override
bool
ActionCondition
(
PlayerBase
player,
ActionTarget
target,
ItemBase
item )
21
{
22
EntityAI
target_entity =
EntityAI
.Cast( target.GetObject() );
23
24
if
( target_entity && target_entity.CanUseConstruction() )
25
{
26
string
selection = target_entity.GetActionComponentName( target.GetComponentIndex() );
27
ConstructionActionData
construction_action_data = player.GetConstructionActionData();
28
int
slot_id = construction_action_data.
GetAttachmentSlotFromSelection
( player, target_entity, item, selection );
29
BaseBuildingBase
base_building;
30
31
if
( slot_id != -1 )
32
{
33
base_building =
BaseBuildingBase
.Cast( target_entity );
34
if
( base_building.
CheckSlotVerticalDistance
( slot_id, player ) && base_building.
IsPlayerInside
(player,
""
) )
35
{
36
construction_action_data.
SetSlotId
( slot_id );
37
38
return
true
;
39
}
40
}
41
else
if
( item.IsKindOf(
"CombinationLock"
) )
42
{
43
base_building =
BaseBuildingBase
.Cast( target_entity );
44
45
//simpler hack
46
/*construction_action_data.SetSlotId( InventorySlots.GetSlotIdFromString("Att_CombinationLock") );
47
return true;*/
48
49
InventoryLocation
loc =
new
InventoryLocation
;
50
bool
found = base_building.GetInventory().FindFreeLocationFor(item,
FindInventoryLocationType
.ATTACHMENT,loc);
51
52
if
(found)
53
{
54
//Print("slot name: " + InventorySlots.GetSlotName(loc.GetSlot()) );
55
construction_action_data.
SetSlotId
( loc.
GetSlot
() );
56
57
return
true
;
58
}
59
}
60
}
61
62
return
false
;
63
}
64
65
override
void
OnStartClient
(
ActionData
action_data )
66
{
67
//set action initiator
68
ConstructionActionData
construction_action_data = action_data.m_Player.GetConstructionActionData();
69
construction_action_data.
SetActionInitiator
( action_data.m_Player );
70
}
71
72
protected
void
OnExecuteImpl
(
ActionData
action_data )
73
{
74
EntityAI
target_entity =
EntityAI
.Cast( action_data.m_Target.GetObject() );
75
ItemBase
item =
ItemBase
.Cast( action_data.m_MainItem );
76
77
ConstructionActionData
construction_action_data = action_data.m_Player.GetConstructionActionData();
78
int
slot_id = construction_action_data.
GetSlotId
();
79
80
if
( slot_id != -1 )
81
{
82
ItemBase
attachment =
ItemBase
.Cast( target_entity.GetInventory().FindAttachment( slot_id ) );
83
84
if
( attachment )
85
{
86
//combine
87
attachment.CombineItemsClient( item );
88
}
89
else
// if( target_entity.GetInventory().CanAddAttachmentEx( item, slot_id ) )
90
{
91
ItemBase
item_base =
ItemBase
.Cast( item );
92
float
stackable = item_base.GetTargetQuantityMax( slot_id );
93
94
if
( stackable == 0 || stackable >= item_base.GetQuantity() )
95
{
96
action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx(target_entity, item, slot_id);
97
}
98
else
if
( stackable != 0 && stackable < item_base.GetQuantity() )
99
{
100
item_base.SplitIntoStackMaxClient( target_entity, slot_id );
101
}
102
}
103
}
104
}
105
106
override
void
OnExecuteClient
(
ActionData
action_data )
107
{
108
ClearInventoryReservationEx
(action_data);
109
OnExecuteImpl
(action_data);
110
}
111
112
override
void
OnExecuteServer
(
ActionData
action_data )
113
{
114
if
( !
g_Game
.IsMultiplayer() )
115
{
116
ClearInventoryReservationEx
(action_data);
117
118
OnExecuteImpl
(action_data);
// single player
119
}
120
}
121
}
ActionData
ActionBase ActionData
Definition
actionbase.c:30
ActionTarget
class ActionTargets ActionTarget
ActionAttachToConstruction::OnExecuteServer
override void OnExecuteServer(ActionData action_data)
Definition
actionattachtoconstruction.c:112
ActionAttachToConstruction::OnStartClient
override void OnStartClient(ActionData action_data)
Definition
actionattachtoconstruction.c:65
ActionAttachToConstruction::OnExecuteImpl
void OnExecuteImpl(ActionData action_data)
Definition
actionattachtoconstruction.c:72
ActionAttachToConstruction::CreateActionData
override ActionData CreateActionData()
Definition
actionattachtoconstruction.c:14
ActionAttachToConstruction::CreateConditionComponents
override void CreateConditionComponents()
Definition
actionattachtoconstruction.c:8
ActionAttachToConstruction::OnExecuteClient
override void OnExecuteClient(ActionData action_data)
Definition
actionattachtoconstruction.c:106
ActionAttachToConstruction::ActionCondition
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition
actionattachtoconstruction.c:20
ActionAttachToConstruction::ActionAttachToConstruction
void ActionAttachToConstruction()
Definition
actionattachtoconstruction.c:3
ActionBase::m_Text
string m_Text
Definition
actionbase.c:64
ActionBase::m_ConditionItem
ref CCIBase m_ConditionItem
Definition
actionbase.c:70
ActionBase::m_ConditionTarget
ref CCTBase m_ConditionTarget
Definition
actionbase.c:71
ActionBase::ClearInventoryReservationEx
void ClearInventoryReservationEx(ActionData action_data)
Definition
actionbase.c:1040
ActionSingleUseBase::ActionSingleUseBase
void ActionSingleUseBase()
Definition
actionsingleusebase.c:31
AttachActionData
Definition
actionattach.c:2
BaseBuildingBase
Definition
fence.c:2
BaseBuildingBase::IsPlayerInside
override bool IsPlayerInside(PlayerBase player, string selection)
Definition
fence.c:615
BaseBuildingBase::CheckSlotVerticalDistance
override bool CheckSlotVerticalDistance(int slot_id, PlayerBase player)
Definition
watchtower.c:295
CCINonRuined
Definition
ccinonruined.c:2
CCTCursor
Definition
cctcursor.c:2
ConstructionActionData
Definition
constructionactiondata.c:2
ConstructionActionData::GetSlotId
int GetSlotId()
Definition
constructionactiondata.c:103
ConstructionActionData::SetSlotId
void SetSlotId(int slot_id)
Definition
constructionactiondata.c:98
ConstructionActionData::GetAttachmentSlotFromSelection
int GetAttachmentSlotFromSelection(PlayerBase player, EntityAI target, ItemBase item_to_attach, string selection)
Definition
constructionactiondata.c:250
ConstructionActionData::SetActionInitiator
void SetActionInitiator(PlayerBase action_initiator)
Definition
constructionactiondata.c:108
EntityAI
Definition
inventoryitem.c:2
InventoryLocation
InventoryLocation.
Definition
inventorylocation.c:30
InventoryLocation::GetSlot
proto native int GetSlot()
returns slot id if current type is Attachment
ItemBase
Definition
inventoryitem.c:742
PlayerBase
Definition
playerbaseclient.c:2
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
FindInventoryLocationType
FindInventoryLocationType
flags for searching locations in inventory
Definition
inventorylocation.c:18
Games
Dayz
scripts
4_world
classes
useractionscomponent
actions
singleuse
actionattachtoconstruction.c
Generated by
1.17.0