[1.1] Пуленепробиваемые покрышки

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
Доброго времени суток!

Кому-нибудь известен рабочий способ сделать автомобильные покрышки пуленепробиваемыми? (клиентская часть JS, серверная C#). Перепробовал множество вариантов - ни один не оказался рабочим по предложенным функциям API RAGE
 

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
Потестил, они работают (от части), однако нашёл только броню для кузова...
 

Dihan48

Middle Developer
Скриптер
Сообщения
61
Код:
mp.game.invoke('0xEB9DC3C7D8596C46', vehicle.handle, false);
0xEB9DC3C7D8596C46
 
Последнее редактирование:

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
Сервер:
C#:
    [Command]
        public static void carmod(Player client, VehicleHash carhash, int modtype, int modindex)

        {
                Vehicle Car = NAPI.Vehicle.CreateVehicle(carhash, new Vector3(client.Position.X , client.Position.Y +5, client.Position.Z + 2), 0F, 0, 0);
                client.TriggerEvent("EnableVehicleMod", Car);
                NAPI.Native.SendNativeToAllPlayers(Hash.SET_VEHICLE_TYRES_CAN_BURST, Car, false);
                Car.SetMod(modindex, modtype);
                client.SendNotification($"Выдано транспортное средство: {carhash}");

        }

Клиент:

JavaScript:
mp.events.add("EnableVehicleMod", (vehicle) => {
    mp.gui.chat.push("Vehicle bulletproof work!");
    mp.game.invoke("0xEB9DC3C7D8596C46", vehicle.handle, false);

});

Я 2 раза пытался нативку вызвать, что на клиенте, что на сервере. Может я что-то не так делаю? (P.S. вызывал их и по отдельности. Машины спавнятся на серверной стороне). Версия 1.1.
 

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
JavaScript:
mp.events.add("EnableVehicleMod", (vehhash) => {
    mp.gui.chat.push("Vehicle bulletproof work!");
    let vehicle = mp.vehicles.new(mp.game.joaat(vehhash), new mp.Vector3(localplayer.position.x, localplayer.position.y+5, localplayer.position.z),
    {
        numberPlate: "ADMIN",
        color: [[255, 0, 0],[255,0,0]]
    });

    mp.game.invoke("0xEB9DC3C7D8596C46", vehicle.handle, false);

});

Тут просто попытался создать машину на клиенте и сделать покрышки непробиваемыми - не работает
 

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
Господа, если у кого-то работает данный функционал - поделитесь кодом пожалуйста, может это я криворукий и у меня ничего не работает
 

Dihan48

Middle Developer
Скриптер
Сообщения
61
JavaScript:
mp.events.add("EnableVehicleMod", (vehhash) => {
    mp.gui.chat.push("Vehicle bulletproof work!");
    let vehicle = mp.vehicles.new(mp.game.joaat(vehhash), new mp.Vector3(localplayer.position.x, localplayer.position.y+5, localplayer.position.z),
    {
        numberPlate: "ADMIN",
        color: [[255, 0, 0],[255,0,0]]
    });

    mp.game.invoke("0xEB9DC3C7D8596C46", vehicle.handle, false);

});

Тут просто попытался создать машину на клиенте и сделать покрышки непробиваемыми - не работает
Это и не будет работать, потому что машина не успевает появиться и конечно же всё игнорируется до прогрузки.
Вот так будет работать:

JavaScript:
mp.events.add("EnableVehicleMod", async (vehhash) => {
    mp.gui.chat.push("Vehicle bulletproof work!");
    let vehicle = mp.vehicles.new(mp.game.joaat(vehhash), new mp.Vector3(localplayer.position.x, localplayer.position.y+5, localplayer.position.z),
    {
        numberPlate: "ADMIN",
        color: [[255, 0, 0],[255,0,0]]
    });
    while(!vehicle.doesExist()){
        await mp.game.wait(0);
    }
    mp.game.invoke("0xEB9DC3C7D8596C46", vehicle.handle, false);
});

Сервер:
C#:
    [Command]
        public static void carmod(Player client, VehicleHash carhash, int modtype, int modindex)

        {
                Vehicle Car = NAPI.Vehicle.CreateVehicle(carhash, new Vector3(client.Position.X , client.Position.Y +5, client.Position.Z + 2), 0F, 0, 0);
                client.TriggerEvent("EnableVehicleMod", Car);
                NAPI.Native.SendNativeToAllPlayers(Hash.SET_VEHICLE_TYRES_CAN_BURST, Car, false);
                Car.SetMod(modindex, modtype);
                client.SendNotification($"Выдано транспортное средство: {carhash}");

        }

Клиент:

JavaScript:
mp.events.add("EnableVehicleMod", (vehicle) => {
    mp.gui.chat.push("Vehicle bulletproof work!");
    mp.game.invoke("0xEB9DC3C7D8596C46", vehicle.handle, false);

});

Я 2 раза пытался нативку вызвать, что на клиенте, что на сервере. Может я что-то не так делаю? (P.S. вызывал их и по отдельности. Машины спавнятся на серверной стороне). Версия 1.1.

на сервере нет ни каких нативок. по коду то же самое происходит, на клиенте тачка не успевает появиться, а евент уже выполняется
 

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
Это и не будет работать, потому что машина не успевает появиться и конечно же всё игнорируется до прогрузки.
Вот так будет работать:

JavaScript:
mp.events.add("EnableVehicleMod", async (vehhash) => {
    mp.gui.chat.push("Vehicle bulletproof work!");
    let vehicle = mp.vehicles.new(mp.game.joaat(vehhash), new mp.Vector3(localplayer.position.x, localplayer.position.y+5, localplayer.position.z),
    {
        numberPlate: "ADMIN",
        color: [[255, 0, 0],[255,0,0]]
    });
    while(!vehicle.doesExist()){
        await mp.game.wait(0);
    }
    mp.game.invoke("0xEB9DC3C7D8596C46", vehicle.handle, false);
});



на сервере нет ни каких нативок. по коду то же самое происходит, на клиенте тачка не успевает появиться, а евент уже выполняется
Спасибо, позже посмотрю
 

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
Это и не будет работать, потому что машина не успевает появиться и конечно же всё игнорируется до прогрузки.
Вот так будет работать:

JavaScript:
mp.events.add("EnableVehicleMod", async (vehhash) => {
    mp.gui.chat.push("Vehicle bulletproof work!");
    let vehicle = mp.vehicles.new(mp.game.joaat(vehhash), new mp.Vector3(localplayer.position.x, localplayer.position.y+5, localplayer.position.z),
    {
        numberPlate: "ADMIN",
        color: [[255, 0, 0],[255,0,0]]
    });
    while(!vehicle.doesExist()){
        await mp.game.wait(0);
    }
    mp.game.invoke("0xEB9DC3C7D8596C46", vehicle.handle, false);
});



на сервере нет ни каких нативок. по коду то же самое происходит, на клиенте тачка не успевает появиться, а евент уже выполняется
Спасибо огромное. Задача решена, тему можно закрывать.
 

SlowSuicide

Middle Developer
Скриптер
Сообщения
64
Важное дополнение: В ходе изучения поведения пуленепробиваемости было замечено, что триггер нужно вызывать для одного игрока, который находится рядом с ТС, если машина заспавнена и вызвать метод у игрока который далеко находится от машины - скажем так сломается клиент гта (точнее тот будет находится в бесконечном цикле функции, предложенной ранее). То есть ивент пуленепробиваемых покрышек нужно вызывать всегда, когда игрок находится в зоне видимости автомобиля с данным признаком.
 
Верх