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


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

public class CustomVehicleCamera : Script
{
    private Camera _carCamera;
    private float _heightOffset = 0.0f; // Смещение высоты по умолчанию
    private readonly float _heightStep = 0.05f; // Шаг изменения высоты

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

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

        // Если игрок в машине и это не вид от первого лица
        if (vehicle != null && !Function.Call<bool>(Hash.IS_GAMEPLAY_CAM_LOOKING_BEHIND))
        {
            // Создаём камеру, если её ещё нет
            if (_carCamera == null || !_carCamera.Exists())
            {
                _carCamera = World.CreateCamera(vehicle.Position, vehicle.Rotation, 60f);
                _carCamera.PointAt(vehicle.Position + vehicle.ForwardVector * 10);
            }

            // Привязываем камеру к машине со смещением
            // X = 0 (по центру), Y = -5 (сзади), Z = 2 + _heightOffset (высота)
            var offset = new Vector3(0f, -5f, 2f + _heightOffset);
            _carCamera.AttachTo(vehicle, offset);

            // Делаем камеру активной для рендера
            World.RenderingCamera = _carCamera;
        }
        else
        {
            // Если игрок не в машине, удаляем камеру и возвращаем стандартный вид
            if (_carCamera != null && _carCamera.Exists())
            {
                World.RenderingCamera = null;
                _carCamera.Delete();
                _carCamera = null;
            }
        }
    }

    private void OnKeyDown(object sender, KeyEventArgs e)
    {
        // Регулировка высоты камеры
        if (e.KeyCode == Keys.NumPad8) // Поднять камеру
        {
            _heightOffset += _heightStep;
            UI.ShowSubtitle($"Высота камеры: {_heightOffset:F2}");
        }
        else if (e.KeyCode == Keys.NumPad2) // Опустить камеру
        {
            _heightOffset -= _heightStep;
            UI.ShowSubtitle($"Высота камеры: {_heightOffset:F2}");
        }
    }
}