using System;
using GTA;
using GTA.Native;
public class LowerNativeVehicleCamera : Script
{
private readonly float camHeight = 0.90f; // Твоя идеальная высота
private bool wasInTargetCar = false;
public LowerNativeVehicleCamera()
{
Tick += OnTick;
UI.Notify("~g~Скрипт опускания камеры (v2) загружен!");
}
private void OnTick(object sender, EventArgs e)
{
var vehicle = Game.Player.Character.CurrentVehicle;
// Если мы не в машине - выходим
if (vehicle == null)
{
wasInTargetCar = false;
return;
}
// Проверяем, что это твои машины (jzx100 или mk2100)
bool isTarget = (vehicle.Model.Hash == Game.GenerateHash("jzx100") ||
vehicle.Model.Hash == Game.GenerateHash("mk2100"));
if (isTarget)
{
wasInTargetCar = true;
// Применяем смещение ТОЛЬКО для третьего лица (не в первом лице и не в прицеле)
int viewMode = Function.Call<int>(Hash.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE);
// 4 - это вид от первого лица. Если мы не в нем, опускаем камеру.
if (viewMode != 4)
{
// 1 = стандартный вид сзади. 0.0f, 0.0f - это без сдвигов вбок.
// camHeight - это наша высота.
Function.Call(Hash.SET_FOLLOW_VEHICLE_CAM_OFFSET, 1, 0.0f, 0.0f, camHeight);
}
}
else if (wasInTargetCar)
{
// Если мы пересели в другую машину, сбрасываем камеру в стандарт (0,0,0)
Function.Call(Hash.SET_FOLLOW_VEHICLE_CAM_OFFSET, 1, 0.0f, 0.0f, 0.0f);
wasInTargetCar = false;
}
}
}