• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Царапины тачки RAGEMP

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Здраствуйте,

Кто то знает натив или функцию косаема царапин на машине ? речь идёт про черных царапин которые появляются на машине при врезание.
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
1,763
1,305
5
Привет! В RAGEMP нет натива или функции, специально предназначенной для работы с царапинами на машинах. Однако вы можете попробовать создать собственную логику для отображения и управления царапинами при врезании через скриптинг.
 

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Мне надо взять информацию о царапинах машины для синхронизации
 

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Это так не работает...
Ну а как это работает

PS : Дружище ты видешь вопрос и пишешь ну вот это не так не обосновая ничего; можно было нормально написать вот это не так потому что 'Объяснение'....
 
Последнее редактирование:

NULMEKS

Начинающий специалист
12 Янв 2024
253
121
55
27
Ну а как это работает
Возьми для примера мод RedAge, там есть некоторые элементы. И посмотри, как там сделано и ты увидишь что это не так работает.... Ну или как минимум ещё хотя бы открыть WiKi и посмотреть. И понять что ты одной строкой не отделаешься.
 
  • Haha
Реакции: Inoi

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Возьми для примера мод RedAge, там есть некоторые элементы. И посмотри, как там сделано и ты увидишь что это не так работает.... Ну или как минимум ещё хотя бы открыть WiKi и посмотреть. И понять что ты одной строкой не отделаешься.
Ты мой вопрос читал ? я сказал одной строкой хочу это делать ? Я спросил все функции/нативы которые взаоимодействуют с царапинами тачек. Считаются они декалами или нет ? если да то как взять их позиции X Y Z

декали.png
 

NULMEKS

Начинающий специалист
12 Янв 2024
253
121
55
27
Ты мой вопрос читал ? я сказал одной строкой хочу это делать ? Я спросил все функции/нативы которые взаоимодействуют с царапинами тачек. Считаются они декалами или нет ? если да то как взять их позиции X Y Z

Посмотреть вложение 15679
Вот тебе пример.
Клиент js.
JavaScript:
mp.events.add('vehicleDamageSync', () => {
    const vehicle = mp.players.local.vehicle;

    if (vehicle) {
        const damageData = {
            bodyHealth: vehicle.getBodyHealth(),
            engineHealth: vehicle.getEngineHealth(),
            doorsDamaged: [
                vehicle.isDoorDamaged(0),
                vehicle.isDoorDamaged(1),
                vehicle.isDoorDamaged(2),
                vehicle.isDoorDamaged(3)
            ],
            windowsDamaged: !vehicle.areAllWindowsIntact(),
            tiresBurst: [
                vehicle.isTyreBurst(0, false),
                vehicle.isTyreBurst(1, false),
                vehicle.isTyreBurst(2, false),
                vehicle.isTyreBurst(3, false)
            ]
        };

        mp.events.callRemote('syncVehicleDamage', JSON.stringify(damageData));
    }
});

mp.events.add('updateVehicleDamage', (vehicle, damageDataJson) => {
    const damageData = JSON.parse(damageDataJson);

    vehicle.setBodyHealth(damageData.bodyHealth);
    vehicle.setEngineHealth(damageData.engineHealth);

    // Восстановление состояния дверей
    damageData.doorsDamaged.forEach((isDamaged, index) => {
        if (isDamaged) {
            vehicle.setDoorBroken(index, true);
        }
    });

    // Восстановление окон
    if (!damageData.windowsDamaged) {
        for (let i = 0; i < 4; i++) {
            vehicle.fixWindow(i);
        }
    }

    // Восстановление состояния покрышек
    damageData.tiresBurst.forEach((isBurst, index) => {
        if (isBurst) {
            vehicle.setTyreBurst(index, true, 1000); // burst the tire
        }
    });
});

Северная сторона #C
C#:
using GTANetworkAPI;

public class VehicleDamageSync : Script
{
    public VehicleDamageSync()
    {
        NAPI.ClientEvent.Register<Client, string>("syncVehicleDamage", OnSyncVehicleDamage);
    }

    private void OnSyncVehicleDamage(Client player, string damageDataJson)
    {
        var vehicle = player.Vehicle;
        if (vehicle != null)
        {
            // Сохранение данных повреждений в мета данных транспортного средства
            vehicle.SetSharedData("damageData", damageDataJson);

            // Рассылка другим игрокам, кроме того, кто отправил данные
            foreach (var target in NAPI.Pools.GetAllPlayers())
            {
                if (target != player && target.IsInVehicle && target.Vehicle == vehicle)
                {
                    target.TriggerEvent("updateVehicleDamage", vehicle, damageDataJson);
                }
            }
        }
    }
}

Если есть с кем то проверить то поиграйся, но кажется что rage навряд ли все мелочи все равно будет передавать...
 
  • Like
Реакции: Robert_Easter

Robert_Easter

Активный участник
17 Июл 2024
103
13
28
Вот тебе пример.
Клиент js.
JavaScript:
mp.events.add('vehicleDamageSync', () => {
    const vehicle = mp.players.local.vehicle;

    if (vehicle) {
        const damageData = {
            bodyHealth: vehicle.getBodyHealth(),
            engineHealth: vehicle.getEngineHealth(),
            doorsDamaged: [
                vehicle.isDoorDamaged(0),
                vehicle.isDoorDamaged(1),
                vehicle.isDoorDamaged(2),
                vehicle.isDoorDamaged(3)
            ],
            windowsDamaged: !vehicle.areAllWindowsIntact(),
            tiresBurst: [
                vehicle.isTyreBurst(0, false),
                vehicle.isTyreBurst(1, false),
                vehicle.isTyreBurst(2, false),
                vehicle.isTyreBurst(3, false)
            ]
        };

        mp.events.callRemote('syncVehicleDamage', JSON.stringify(damageData));
    }
});

mp.events.add('updateVehicleDamage', (vehicle, damageDataJson) => {
    const damageData = JSON.parse(damageDataJson);

    vehicle.setBodyHealth(damageData.bodyHealth);
    vehicle.setEngineHealth(damageData.engineHealth);

    // Восстановление состояния дверей
    damageData.doorsDamaged.forEach((isDamaged, index) => {
        if (isDamaged) {
            vehicle.setDoorBroken(index, true);
        }
    });

    // Восстановление окон
    if (!damageData.windowsDamaged) {
        for (let i = 0; i < 4; i++) {
            vehicle.fixWindow(i);
        }
    }

    // Восстановление состояния покрышек
    damageData.tiresBurst.forEach((isBurst, index) => {
        if (isBurst) {
            vehicle.setTyreBurst(index, true, 1000); // burst the tire
        }
    });
});

Северная сторона #C
C#:
using GTANetworkAPI;

public class VehicleDamageSync : Script
{
    public VehicleDamageSync()
    {
        NAPI.ClientEvent.Register<Client, string>("syncVehicleDamage", OnSyncVehicleDamage);
    }

    private void OnSyncVehicleDamage(Client player, string damageDataJson)
    {
        var vehicle = player.Vehicle;
        if (vehicle != null)
        {
            // Сохранение данных повреждений в мета данных транспортного средства
            vehicle.SetSharedData("damageData", damageDataJson);

            // Рассылка другим игрокам, кроме того, кто отправил данные
            foreach (var target in NAPI.Pools.GetAllPlayers())
            {
                if (target != player && target.IsInVehicle && target.Vehicle == vehicle)
                {
                    target.TriggerEvent("updateVehicleDamage", vehicle, damageDataJson);
                }
            }
        }
    }
}

Если есть с кем то проверить то поиграйся, но кажется что rage навряд ли все мелочи все равно будет передавать...
Спасибо за ответ. Я читал очень быстро код и понял что всё это у меня есть. Тут разговор идёт про Царапин машины а не окон или покрышек. Vehicle Engine Health и Body Health вообще трогать не нужно; они автосинхронизированы на сервере; это просто хп тачки это не визуалзно. Еще раз спс за ответ