Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_VehicleDebug.c
Go to the documentation of this file.
1[EntityEditorProps(category: "GameCode/Vehicles", description: "Debug tool that places a player character in a specified vehicle on game start in WE.", color: "0 255 255 255")]
2class SCR_VehicleDebugClass : GenericEntityClass
3{
4}
5
6class SCR_VehicleDebug : GenericEntity
7{
8 [Attribute(desc: "Name of vehicle entity a player starts in")]
9 string m_VehicleName;
10 [Attribute("0", UIWidgets.ComboBox, "Compartment type to be used (if available)", "", ParamEnumArray.FromEnum(ECompartmentType))]
11 ECompartmentType m_CompartmentType;
12 [Attribute("0", UIWidgets.CheckBox, "Engine will be started (if possible)")]
13 bool m_StartEngine;
14 [Attribute("", UIWidgets.ResourceNamePicker, "Overrides surface material of wheel/track casts", params: "gamemat")]
15 ResourceName m_SurfaceMaterialOverride;
16
17 void SCR_VehicleDebug(IEntitySource src, IEntity parent)
18 {
19 GetGame().GetCallqueue().CallLater(DelayedInit, 1);
20 }
21
23 {
25 if (!gameMode)
26 return;
27
28 gameMode.GetOnPlayerSpawned().Insert(OnPlayerSpawned);
29 }
30
31 void OnPlayerSpawned(int playerId, IEntity playerEntity)
32 {
33 IEntity vehicleEntity = GetGame().GetWorld().FindEntityByName(m_VehicleName);
34 if (!vehicleEntity)
35 return;
36
37 if (!m_SurfaceMaterialOverride.IsEmpty())
38 {
40 sim.SetSurfaceOverride(m_SurfaceMaterialOverride);
41 }
42
43 GetInVehicle(playerEntity, vehicleEntity);
44 }
45
46 void GetInVehicle(IEntity player, IEntity vehicle)
47 {
48 if (!vehicle)
49 return;
50
51 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(vehicle.FindComponent(SCR_BaseCompartmentManagerComponent));
52 if (!compartmentManager)
53 return;
54
55 array<BaseCompartmentSlot> slots = {};
56 compartmentManager.GetFreeCompartmentsOfType(slots, m_CompartmentType);
57 if (slots.IsEmpty())
58 return;
59
60 BaseCompartmentSlot slot = slots[0];
61 CompartmentAccessComponent compartmentAccess = CompartmentAccessComponent.Cast(player.FindComponent(CompartmentAccessComponent));
62 if (!compartmentAccess)
63 return;
64
65 compartmentAccess.GetInVehicle(vehicle, slot, true, -1, ECloseDoorAfterActions.INVALID, true);
66
67 if (!m_StartEngine)
68 return;
69
71 if (!controller)
72 return;
73
74 controller.ForceStartEngine();
75 }
76}
ECompartmentType
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_BaseGameMode GetGameMode()
override void DelayedInit(IEntity owner)
override void DelayedInit()
enum SCR_ECompassType EntityEditorProps(category:"GameScripted/Gadgets", description:"Compass", color:"0 0 255 255")
Prefab data class for compass component.
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
proto external Managed FindComponent(typename typeName)
proto external BaseWorld GetWorld()
ScriptInvokerBase< SCR_BaseGameMode_PlayerIdAndEntity > GetOnPlayerSpawned()
proto external bool GetInVehicle(IEntity vehicle, BaseCompartmentSlot compartment, bool forceTeleport, int doorInfoIndex, ECloseDoorAfterActions closeDoor, bool performWhenPaused)
If force teleport, doorInfoIndex is ignored. closeDoor is still respected.
SCR_FieldOfViewSettings Attribute
void OnPlayerSpawned(int playerId, IEntity controlledEntity)
ECloseDoorAfterActions