Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
actioncreateindoorfireplace.c
Go to the documentation of this file.
1
class
ActionCreateIndoorFireplace
:
ActionSingleUseBase
2
{
3
void
ActionCreateIndoorFireplace
()
4
{
5
m_CommandUID
=
DayZPlayerConstants
.CMD_ACTIONMOD_OPENDOORFW;
6
m_StanceMask
=
DayZPlayerConstants
.STANCEMASK_CROUCH |
DayZPlayerConstants
.STANCEMASK_ERECT;
7
m_SpecialtyWeight
= UASoftSkillsWeight.PRECISE_LOW;
8
m_Text
=
"#place_object"
;
9
}
10
11
override
void
CreateConditionComponents
()
12
{
13
m_ConditionItem
=
new
CCINonRuined
;
14
m_ConditionTarget
=
new
CCTCursor
;
15
}
16
17
override
bool
ActionCondition
(
PlayerBase
player,
ActionTarget
target,
ItemBase
item )
18
{
19
if
( !target )
return
false
;
20
21
Object
target_object = target.GetObject();
22
string
action_selection = target_object.GetActionComponentName( target.GetComponentIndex() );
23
BuildingWithFireplace
building =
BuildingWithFireplace
.Cast( target_object );
24
25
if
( target_object && building && action_selection.
Contains
(
FireplaceIndoor
.
FIREPOINT_ACTION_SELECTION
) )
26
{
27
if
( !
IsInReach
(player, target,
UAMaxDistances
.
DEFAULT
) )
return
false
;
28
29
vector
fire_point_pos_world, fire_point_rot_world;
30
int
fire_point_index =
FireplaceIndoor
.
GetFirePointIndex
( action_selection );
31
if
(
FireplaceIndoor
.
CanPlaceFireplaceInSelectedSpot
( building, fire_point_index, fire_point_pos_world, fire_point_rot_world ) )
32
{
33
float
rot_deg = 0.0;
34
if
( building.HasSelection(
FireplaceIndoor
.
FIREPOINT_PLACE_ROT
+ fire_point_index.ToString() ) )
35
{
36
vector
diff = fire_point_rot_world - fire_point_pos_world;
37
diff[1] = 0.0;
38
diff.
Normalize
();
39
float
dotp =
vector
.
Dot
(
"0 0 1"
, diff );
40
rot_deg =
Math
.
Acos
( dotp ) *
Math
.
RAD2DEG
;
41
if
( ( diff[0] < 0 ) && ( diff[2] < 0 ) )
42
rot_deg = 360.0 - rot_deg;
43
else
if
( ( diff[0] < 0 ) && ( diff[2] > 0 ) )
44
rot_deg = 360.0 - rot_deg;
45
46
//Debug.DrawArrow( fire_point_pos_world, fire_point_pos_world + diff );
47
}
48
49
float
fire_point_dist =
vector
.
Distance
( fire_point_pos_world, player.GetPosition() );
50
if
( fire_point_dist <= 2 )
51
{
52
player.SetLastFirePoint( fire_point_pos_world );
53
player.SetLastFirePointIndex( fire_point_index );
54
player.SetLastFirePointRot( rot_deg );
55
return
true
;
56
}
57
}
58
}
59
60
return
false
;
61
}
62
63
override
void
OnExecuteServer
(
ActionData
action_data)
64
{
65
BuildingWithFireplace
building =
BuildingWithFireplace
.Cast(action_data.m_Target.GetObject());
66
int
index = action_data.m_Player.GetLastFirePointIndex();
67
//action_data
68
Object
obj =
g_Game
.CreateObjectEx(building.
GetFireplaceType
(index), action_data.m_Player.GetLastFirePoint(),
ECE_PLACE_ON_SURFACE
);
69
70
int
m_FirePointIndex
= action_data.m_Player.GetLastFirePointIndex();
71
float
m_FireplaceRot
= action_data.m_Player.GetLastFirePointRot();
72
vector
smoke_point_pos = action_data.m_Target.GetObject().GetSelectionPositionMS(
FireplaceIndoor
.
FIREPOINT_SMOKE_POSITION
+
m_FirePointIndex
.ToString());
73
vector
smoke_point_pos_world = action_data.m_Target.GetObject().ModelToWorld(smoke_point_pos);
74
vector
m_SmokePosition
= smoke_point_pos_world;
75
76
FireplaceIndoor
fp_indoor =
FireplaceIndoor
.Cast(obj);
77
if
( fp_indoor )
78
{
79
fp_indoor.
SetFirePointIndex
(
m_FirePointIndex
);
80
fp_indoor.
SetSmokePointPosition
(
m_SmokePosition
);
81
82
vector
fprot =
vector
.
Zero
;
83
fprot[0] =
m_FireplaceRot
;
84
fp_indoor.SetOrientation(fprot);
85
86
fp_indoor.Synchronize();
87
88
//move item to target fireplace
89
if
(!
g_Game
.IsMultiplayer())
90
{
91
ClearInventoryReservationEx
(action_data);
92
action_data.m_Player.LocalTakeEntityToTargetAttachment(fp_indoor, action_data.m_MainItem);
93
}
94
else
95
action_data.m_Player.ServerTakeEntityToTargetAttachment(fp_indoor, action_data.m_MainItem);
96
}
97
}
98
99
override
void
OnExecuteClient
(
ActionData
action_data)
100
{
101
ClearInventoryReservationEx
(action_data);
102
}
103
104
override
bool
IsLockTargetOnUse
()
105
{
106
return
false
;
107
}
108
}
ActionData
ActionBase ActionData
Definition
actionbase.c:30
m_FirePointIndex
ActionPlaceFireplaceIndoor m_FirePointIndex
m_SmokePosition
vector m_SmokePosition
Definition
actionplacefireplaceindoor.c:86
m_FireplaceRot
float m_FireplaceRot
Definition
actionplacefireplaceindoor.c:85
ActionTarget
class ActionTargets ActionTarget
ECE_PLACE_ON_SURFACE
const int ECE_PLACE_ON_SURFACE
Definition
centraleconomy.c:37
ActionBase::m_Text
string m_Text
Definition
actionbase.c:64
ActionBase::IsInReach
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
Definition
actionbase.c:1181
ActionBase::m_ConditionItem
ref CCIBase m_ConditionItem
Definition
actionbase.c:70
ActionBase::m_SpecialtyWeight
float m_SpecialtyWeight
Definition
actionbase.c:83
ActionBase::m_ConditionTarget
ref CCTBase m_ConditionTarget
Definition
actionbase.c:71
ActionBase::ClearInventoryReservationEx
void ClearInventoryReservationEx(ActionData action_data)
Definition
actionbase.c:1040
ActionBase::m_StanceMask
int m_StanceMask
Definition
actionbase.c:68
ActionCreateIndoorFireplace::ActionCreateIndoorFireplace
void ActionCreateIndoorFireplace()
Definition
actioncreateindoorfireplace.c:3
ActionCreateIndoorFireplace::OnExecuteServer
override void OnExecuteServer(ActionData action_data)
Definition
actioncreateindoorfireplace.c:63
ActionCreateIndoorFireplace::CreateConditionComponents
override void CreateConditionComponents()
Definition
actioncreateindoorfireplace.c:11
ActionCreateIndoorFireplace::OnExecuteClient
override void OnExecuteClient(ActionData action_data)
Definition
actioncreateindoorfireplace.c:99
ActionCreateIndoorFireplace::ActionCondition
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition
actioncreateindoorfireplace.c:17
ActionCreateIndoorFireplace::IsLockTargetOnUse
override bool IsLockTargetOnUse()
Definition
actioncreateindoorfireplace.c:104
ActionSingleUseBase::ActionSingleUseBase
void ActionSingleUseBase()
Definition
actionsingleusebase.c:31
AnimatedActionBase::m_CommandUID
int m_CommandUID
Definition
animatedactionbase.c:143
BuildingWithFireplace
Definition
buildingwithfireplace.c:2
BuildingWithFireplace::GetFireplaceType
string GetFireplaceType(int firePointIndex)
Definition
buildingwithfireplace.c:7
CCINonRuined
Definition
ccinonruined.c:2
CCTCursor
Definition
cctcursor.c:2
FireplaceIndoor
Definition
fireplaceindoor.c:2
FireplaceIndoor::SetSmokePointPosition
void SetSmokePointPosition(vector smoke_point_pos)
Definition
fireplaceindoor.c:130
FireplaceIndoor::GetFirePointIndex
static int GetFirePointIndex(string action_selection)
Definition
fireplaceindoor.c:93
FireplaceIndoor::FIREPOINT_ACTION_SELECTION
static const string FIREPOINT_ACTION_SELECTION
Definition
fireplaceindoor.c:8
FireplaceIndoor::SetFirePointIndex
void SetFirePointIndex(int fire_point_index)
Definition
fireplaceindoor.c:99
FireplaceIndoor::FIREPOINT_SMOKE_POSITION
static const string FIREPOINT_SMOKE_POSITION
Definition
fireplaceindoor.c:11
FireplaceIndoor::CanPlaceFireplaceInSelectedSpot
static bool CanPlaceFireplaceInSelectedSpot(Object building, int fire_point_index, out vector fire_point_pos_world, out vector fire_point_rot_world)
Definition
fireplaceindoor.c:104
FireplaceIndoor::FIREPOINT_PLACE_ROT
static const string FIREPOINT_PLACE_ROT
Definition
fireplaceindoor.c:10
ItemBase
Definition
inventoryitem.c:742
Math
Definition
enmath.c:7
Object
Definition
objecttyped.c:2
PlayerBase
Definition
playerbaseclient.c:2
UAMaxDistances
Definition
actionconstants.c:110
UAMaxDistances::DEFAULT
const float DEFAULT
Definition
actionconstants.c:112
vector
Definition
enconvert.c:119
vector::Distance
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
vector::Normalize
proto float Normalize()
Normalizes vector.
vector::Zero
static const vector Zero
Definition
enconvert.c:123
vector::Dot
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Definition
enconvert.c:284
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
DayZPlayerConstants
DayZPlayerConstants
defined in C++
Definition
dayzplayer.c:602
Math::Acos
static proto float Acos(float c)
Returns angle in radians from cosinus.
Math::RAD2DEG
static const float RAD2DEG
Definition
enmath.c:16
string::Contains
bool Contains(string sample)
Returns true if sample is substring of string.
Definition
enstring.c:286
Games
Dayz
scripts
4_world
classes
useractionscomponent
actions
singleuse
actioncreateindoorfireplace.c
Generated by
1.17.0