DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionGetInTransport.c
См. документацию.
2{
4 {
5 m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT;
6 m_Text = "#get_in_vehicle";
7 }
8
9
15
16 override typename GetInputType()
17 {
19 }
20
21 override bool HasProgress()
22 {
23 return false;
24 }
25
26 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
27 {
28
29 if (!target)
30 return false;
31
32 Transport transport = null;
33 if (!Class.CastTo(transport, target.GetObject()))
34 return false;
35
36 if (!transport.CanGetIn())
37 return false;
38
39 if (player.GetItemInHands() && player.GetItemInHands().IsHeavyBehaviour())
40 return false;
41
42 if (player.GetCommand_Vehicle())
43 return false;
44
45 int componentIndex = target.GetComponentIndex();
46 int crewIndex = transport.CrewPositionIndex(componentIndex);
47 if (crewIndex < 0)
48 return false;
49
50 Human crew = transport.CrewMember(crewIndex);
51 if (crew)
52 return false;
53
54 if (!transport.CrewCanGetThrough(crewIndex) || !transport.IsAreaAtDoorFreeDiag(crewIndex))
55 return false;
56
57 array<string> selections = new array<string>();
58 transport.GetActionComponentNameList(componentIndex, selections);
59 int selectionCount = selections.Count();
60 vector playerPosition = player.GetPosition();
61
62 for (int i = 0; i < selectionCount; ++i)
63 {
64 if (transport.CanReachSeatFromDoors(selections[i], playerPosition, 1.0))
65 return true;
66 }
67
68 return false;
69 }
70
71 override void Start(ActionData action_data)
72 {
73 super.Start(action_data);
74
75 Transport transport = Transport.Cast(action_data.m_Target.GetObject());
76 int componentIndex = action_data.m_Target.GetComponentIndex();
77 int crewIndex = transport.CrewPositionIndex(componentIndex);
78
79 float direction = 0;
80 int seat;
81 if (transport.HasDirectionalInOutAction())
82 {
83 vector fwd = transport.GetDirection();
84 fwd[1] = 0;
85 fwd.Normalize();
86
87 vector playerPosition = action_data.m_Player.GetPosition();
88 vector toTarget = transport.GetPosition() - playerPosition;
89 toTarget[1] = 0;
90 toTarget.Normalize();
91
92 vector right = Vector(fwd[2], 0.0, -fwd[0]);
93
94 float side = vector.Dot(toTarget, right);
95
96 if (side < 0.0)
97 direction = 1;
98
99 seat = transport.GetSeatAnimationTypeDirectional(crewIndex, direction);
100 }
101 else
102 seat = transport.GetSeatAnimationType(crewIndex);
103
104 HumanCommandVehicle vehCommand = action_data.m_Player.StartCommand_Vehicle(transport, crewIndex, seat);
105 if (vehCommand)
106 {
107 vehCommand.SetVehicleType(transport.GetAnimInstance());
108
109 GetDayZGame().GetBacklit().OnEnterCar();
110 }
111 }
112
113 override bool CanBeUsedInRestrain()
114 {
115 return true;
116 }
117
118 override void OnUpdate(ActionData action_data)
119 {
120 if (action_data.m_State == UA_START)
121 {
122 if (!action_data.m_Player.GetCommand_Vehicle() || !action_data.m_Player.GetCommand_Vehicle().IsGettingIn())
123 {
124 End(action_data);
125 }
126 }
127 }
128
129 override int GetActionCategory()
130 {
131 return AC_INTERACT;
132 }
133
134 override void OnEnd(ActionData action_data)
135 {
136 }
137
138 override bool AddActionJuncture(ActionData action_data)
139 {
140 Transport trans = Transport.Cast(action_data.m_Target.GetObject());
141 bool accepted = false;
142 int nextSeat = trans.CrewPositionIndex( action_data.m_Target.GetComponentIndex() );
143 Transport transport = Transport.Cast(action_data.m_Target.GetObject());
145 if (transport)
146 {
147 il.SetVehicle(transport, action_data.m_Player, nextSeat);
148
149 //Lock target
150 if (g_Game.AddInventoryJunctureEx(action_data.m_Player, action_data.m_Player, il, true, 10000, action_data))
151 {
152 accepted = true;
153 action_data.m_ReservedInventoryLocations.Insert(il);
154 }
155 }
156
157 return accepted;
158 }
159};
string m_Text
Определения ActionBase.c:57
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
void ActionBase()
Определения ActionBase.c:82
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
DayZGame GetDayZGame()
Определения DayZGame.c:4076
proto static native void End()
Finalizes the testing process.
PlayerBase m_Player
Определения ActionBase.c:40
ref ActionTarget m_Target
Определения ActionBase.c:39
ref array< ref InventoryLocation > m_ReservedInventoryLocations
Определения ActionBase.c:42
int m_State
Определения ActionBase.c:38
Определения ActionBase.c:22
override void Start(ActionData action_data)
Определения ActionGetInTransport.c:71
override bool HasProgress()
Определения ActionGetInTransport.c:21
override bool AddActionJuncture(ActionData action_data)
Определения ActionGetInTransport.c:138
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionGetInTransport.c:26
override void CreateConditionComponents()
Определения ActionGetInTransport.c:10
override bool CanBeUsedInRestrain()
Определения ActionGetInTransport.c:113
override GetInputType()
Определения ActionGetInTransport.c:16
override void OnUpdate(ActionData action_data)
Определения ActionGetInTransport.c:118
void ActionGetInTransport()
Определения ActionGetInTransport.c:3
override void OnEnd(ActionData action_data)
Определения ActionGetInTransport.c:134
override int GetActionCategory()
Определения ActionGetInTransport.c:129
Определения CCINone.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
proto native void SetVehicleType(int pVehicleType)
Определения human.c:712
Определения human.c:1360
proto native void SetVehicle(notnull EntityAI parent, EntityAI e, int idx)
InventoryLocation.
Определения InventoryLocation.c:30
Определения PlayerBaseClient.c:2
Native class for boats - handles physics simulation.
Определения Boat.c:29
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Определения EnConvert.c:305
proto float Normalize()
Normalizes vector. Returns length.
Определения EnConvert.c:119
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
const int UA_START
Определения 3_Game/DayZ/constants.c:501