Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
actioncreateindooroven.c
Go to the documentation of this file.
1
class
ActionCreateIndoorOven
:
ActionSingleUseBase
2
{
3
void
ActionCreateIndoorOven
()
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
( OvenIndoor.OVENPOINT_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 = OvenIndoor.GetFirePointIndex( action_selection );
31
if
( OvenIndoor.CanPlaceFireplaceInSelectedSpot( building, fire_point_index, fire_point_pos_world, fire_point_rot_world ) )
32
{
33
float
rot_deg = 0.0;
34
if
( building.HasSelection( OvenIndoor.OVENPOINT_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
Object
obj =
g_Game
.CreateObjectEx(
"OvenIndoor"
, action_data.m_Player.GetLastFirePoint(),
ECE_PLACE_ON_SURFACE
);
66
67
int
m_FirePointIndex
= action_data.m_Player.GetLastFirePointIndex();
68
float
m_FireplaceRot
= action_data.m_Player.GetLastFirePointRot();
69
vector
smoke_point_pos = action_data.m_Target.GetObject().GetSelectionPositionMS( OvenIndoor.OVENPOINT_SMOKE_POSITION +
m_FirePointIndex
.ToString() );
70
vector
smoke_point_pos_world = action_data.m_Target.GetObject().ModelToWorld( smoke_point_pos );
71
vector
m_SmokePosition
= smoke_point_pos_world;
72
73
OvenIndoor fp_indoor = OvenIndoor.Cast( obj );
74
if
( fp_indoor )
75
{
76
fp_indoor.SetFirePointIndex(
m_FirePointIndex
);
77
fp_indoor.SetSmokePointPosition(
m_SmokePosition
);
78
79
vector
fprot =
vector
.
Zero
;
80
fprot[0] =
m_FireplaceRot
;
81
fp_indoor.SetOrientation( fprot );
82
83
fp_indoor.Synchronize();
84
85
//move item to target fireplace
86
if
(!
g_Game
.IsMultiplayer())
87
{
88
ClearInventoryReservationEx
(action_data);
89
action_data.m_Player.LocalTakeEntityToTargetAttachment(fp_indoor, action_data.m_MainItem);
90
}
91
else
92
action_data.m_Player.ServerTakeEntityToTargetAttachment(fp_indoor, action_data.m_MainItem);
93
}
94
}
95
96
override
bool
IsLockTargetOnUse
()
97
{
98
return
false
;
99
}
100
}
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
ActionCreateIndoorOven::OnExecuteServer
override void OnExecuteServer(ActionData action_data)
Definition
actioncreateindooroven.c:63
ActionCreateIndoorOven::CreateConditionComponents
override void CreateConditionComponents()
Definition
actioncreateindooroven.c:11
ActionCreateIndoorOven::ActionCondition
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition
actioncreateindooroven.c:17
ActionCreateIndoorOven::IsLockTargetOnUse
override bool IsLockTargetOnUse()
Definition
actioncreateindooroven.c:96
ActionCreateIndoorOven::ActionCreateIndoorOven
void ActionCreateIndoorOven()
Definition
actioncreateindooroven.c:3
ActionSingleUseBase::ActionSingleUseBase
void ActionSingleUseBase()
Definition
actionsingleusebase.c:31
AnimatedActionBase::m_CommandUID
int m_CommandUID
Definition
animatedactionbase.c:143
BuildingWithFireplace
Definition
buildingwithfireplace.c:2
CCINonRuined
Definition
ccinonruined.c:2
CCTCursor
Definition
cctcursor.c:2
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
actioncreateindooroven.c
Generated by
1.17.0