Example code below (Working on 1.29 with Wardog's mod):
modded class CarScript
{
bool TRQ_HasOpenHoodOrTrunk()
{
GameInventory inventory = GetInventory()
int attachmentCount = inventory.AttachmentCount()
bool blocked = false
for (int i = 0
{
EntityAI attachment = inventory.GetAttachmentFromIndex(i)
if (!attachment)
continue
InventoryLocation location = new InventoryLocation()
if (!attachment.GetInventory().GetCurrentInventoryLocation(location))
continue
string slotName = InventorySlots.GetSlotName(location.GetSlot())
string lowerSlotName = slotName
lowerSlotName.ToLower()
if (!lowerSlotName.Contains("hood") && !lowerSlotName.Contains("trunk"))
continue
int doorState = GetCarDoorsState(slotName)
if (doorState == CarDoorState.DOORS_OPEN)
blocked = true
}
return blocked
}
}
modded class DayZPlayerImplement
{
override int CameraHandler(int pCameraMode)
{
HumanCommandVehicle vehicleCommand = GetCommand_Vehicle()
if (vehicleCommand)
{
CarScript car
if (Class.CastTo(car, vehicleCommand.GetTransport()))
{
bool blocked = car.TRQ_HasOpenHoodOrTrunk()
if (!blocked)
return super.CameraHandler(pCameraMode)
m_Camera3rdPerson = false
ChangeVehicleView(false)
return DayZPlayerCameras.DAYZCAMERA_1ST_VEHICLE
}
}
return super.CameraHandler(pCameraMode)
}
override void HandleView()
{
super.HandleView()
HumanInputController hic = GetInputController()
HumanCommandVehicle vehicleCommand = GetCommand_Vehicle()
if (!hic.CameraViewChanged() || !vehicleCommand)
return
CarScript car
if (Class.CastTo(car, vehicleCommand.GetTransport()))
{
bool blocked = car.TRQ_HasOpenHoodOrTrunk()
if (!blocked)
return
m_Camera3rdPerson = false
ChangeVehicleView(false)
}
}
}