DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionAnimateSeats.c
См. документацию.
2{
4 {
5 m_Text = "#move_seat";
6 }
7
8 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
9 {
10 if( !target ) return false;
11 if( !IsInReach(player, target, UAMaxDistances.DEFAULT) ) return false;
12
13 Object targetObject = target.GetObject();
14 Entity targetEnt = Entity.Cast(targetObject);
15 Transport transport;
16 CarScript car;
17 int crewIdx;
18
19 //string selection = targetObject.GetActionComponentName(target.GetComponentIndex());
20 array<string> selections = new array<string>();
21 targetObject.GetActionComponentNameList(target.GetComponentIndex(), selections);
22
23
24 if ( !Class.CastTo(transport, targetObject) )
25 return false;
26
27 if ( Class.CastTo(car, targetEnt) )
28 {
29 for (int i = 0; i < selections.Count(); i++)
30 {
31 m_AnimSource = car.GetAnimSourceFromSelection( selections[i]) ;
32 if ( m_AnimSource != "" )
33 {
34 //return true; //TODO:: NEED A LINK BETWEEN SeatBack and seat with crew after that we can REMOVE the return
35
36 HumanCommandVehicle vehCmd = player.GetCommand_Vehicle();
37
38 if ( m_AnimSource == "SeatDriver" )
39 {
40 if ( transport.CrewMember( DayZPlayerConstants.VEHICLESEAT_DRIVER ) )
41 return false;
42
43 if ( !vehCmd && car.GetCarDoorsState( "NivaDriverDoors" ) == CarDoorState.DOORS_CLOSED )
44 return false;
45 }
46
47 if ( m_AnimSource == "SeatCoDriver" )
48 {
49 if ( transport.CrewMember( DayZPlayerConstants.VEHICLESEAT_CODRIVER ) )
50 return false;
51
52 if ( !vehCmd && car.GetCarDoorsState( "NivaCoDriverDoors" ) == CarDoorState.DOORS_CLOSED )
53 return false;
54 }
55
56 if ( !vehCmd && !transport.CanReachSeatFromDoors(selections[i], player.GetPosition(), 1.0) )
57 return false;
58
59 return true;
60 }
61 }
62 }
63
64 return false;
65 }
66
67 override bool CanBeUsedInVehicle()
68 {
69 return true;
70 }
71
72 override bool AddActionJuncture(ActionData action_data)
73 {
74 Transport transport = Transport.Cast(action_data.m_Target.GetObject());
75 bool accepted = false;
76 int nextSeat = -1;
77
78 array<string> selections = new array<string>();
79 transport.GetActionComponentNameList(action_data.m_Target.GetComponentIndex(), selections);
80
81 for (int i = 0; i < selections.Count(); i++)
82 {
83 m_AnimSource = transport.GetAnimSourceFromSelection( selections[i]) ;
84 if ( m_AnimSource != "" )
85 {
86 HumanCommandVehicle vehCmd = action_data.m_Player.GetCommand_Vehicle();
87
88 if (m_AnimSource == "SeatDriver")
89 {
90 nextSeat = DayZPlayerConstants.VEHICLESEAT_DRIVER;
91 }
92 else if (m_AnimSource == "SeatCoDriver")
93 {
94 nextSeat = DayZPlayerConstants.VEHICLESEAT_CODRIVER;
95 }
96 break;
97 }
98 }
99
101 if (transport)
102 {
103 il.SetVehicle(transport, action_data.m_Player, nextSeat);
104
105 //Lock target
106 if (g_Game.AddInventoryJunctureEx(action_data.m_Player, action_data.m_Player, il, true, 10000, action_data))
107 {
108 accepted = true;
109 action_data.m_ReservedInventoryLocations.Insert(il);
110 }
111 }
112 return accepted;
113 }
114};
string m_Text
Определения ActionBase.c:57
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
Определения ActionBase.c:1290
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
CarDoorState
Определения CarScript.c:2
DayZGame g_Game
Определения DayZGame.c:4074
void ActionAnimateCarSelection()
Определения ActionAnimateCarSelection.c:5
override bool CanBeUsedInVehicle()
Определения ActionAnimateSeats.c:67
override bool AddActionJuncture(ActionData action_data)
Определения ActionAnimateSeats.c:72
void ActionAnimateSeats()
Определения ActionAnimateSeats.c:3
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionAnimateSeats.c:8
PlayerBase m_Player
Определения ActionBase.c:40
ref ActionTarget m_Target
Определения ActionBase.c:39
ref array< ref InventoryLocation > m_ReservedInventoryLocations
Определения ActionBase.c:42
Определения ActionBase.c:22
override int GetCarDoorsState(string slotType)
Определения Truck_02.c:106
override string GetAnimSourceFromSelection(string selection)
Определения Truck_02.c:205
Определения Truck_02.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения Camera.c:2
Определения human.c:712
proto native void SetVehicle(notnull EntityAI parent, EntityAI e, int idx)
InventoryLocation.
Определения InventoryLocation.c:30
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
Native class for boats - handles physics simulation.
Определения Boat.c:29
const float DEFAULT
Определения ActionConstants.c:114
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
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.