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


using System;
using System.Windows.Forms;
using GTA;
using GTA.Math;
using GTA.Native;

public class SedanCabinCamera : Script
{
    private Camera _carCamera;
    private float _heightOffset = 1.2f; // Базовая высота (уровень салона)

    public SedanCabinCamera()
    {
        KeyDown += OnKeyDown;
        Tick += OnTick;
    }

    private void OnTick(object sender, EventArgs e)
    {
        var vehicle = Game.Player.Character.CurrentVehicle;

        // Если мы не в машине - удаляем камеру и выходим
        if (vehicle == null) { RemoveCamera(); return; }

        // Проверяем, что это именно наша машина
        bool isTarget = (vehicle.Model.Hash == Game.GenerateHash("jzx100") || 
                         vehicle.Model.Hash == Game.GenerateHash("mk2100"));
        
        if (!isTarget) { RemoveCamera(); return; }

        // Если включили первое лицо (V), тоже убираем камеру
        if (Function.Call<int>(Hash.GET_FOLLOW_VEHICLE_CAM_VIEW_MODE) == 4) 
        { 
            RemoveCamera(); 
            return; 
        }

        // Создаем камеру, если её нет
        if (_carCamera == null || !_carCamera.Exists())
        {
            _carCamera = World.CreateCamera(vehicle.Position, vehicle.Rotation, 60f);
        }

        // Прикрепляем камеру к машине (X=0, Y=-3.5, Z=наша высота)
        _carCamera.AttachTo(vehicle, new Vector3(0f, -3.5f, _heightOffset));
        _carCamera.Rotation = vehicle.Rotation; // Смотрит вперед
        
        World.RenderingCamera = _carCamera;
    }

    private void OnKeyDown(object sender, KeyEventArgs e)
    {
        var vehicle = Game.Player.Character.CurrentVehicle;
        if (vehicle == null) return;
        
        bool isTarget = (vehicle.Model.Hash == Game.GenerateHash("jzx100") || 
                         vehicle.Model.Hash == Game.GenerateHash("mk2100"));
        if (!isTarget) return;

        // ИЗМЕНЕНО ТУТ: Numpad 9 - поднять камеру
        if (e.KeyCode == Keys.NumPad9)
        {
            _heightOffset += 0.05f;
            UI.Notify($"~g~Высота: {_heightOffset:F2}"); 
        }
        // ИЗМЕНЕНО ТУТ: Numpad 3 - опустить камеру
        else if (e.KeyCode == Keys.NumPad3)
        {
            _heightOffset -= 0.05f;
            UI.Notify($"~y~Высота: {_heightOffset:F2}"); 
        }
    }

    private void RemoveCamera()
    {
        if (_carCamera != null && _carCamera.Exists())
        {
            World.RenderingCamera = null;
            _carCamera.Delete();
            _carCamera = null;
        }
    }
}