Загрузка данных


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;
        }
    }
}