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

  • Автор темы Автор темы SlowSuicide
  • Дата начала Дата начала

SlowSuicide

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

Кому-нибудь известен рабочий способ сделать автомобильные покрышки пуленепробиваемыми? (клиентская часть JS, серверная C#). Перепробовал множество вариантов - ни один не оказался рабочим по предложенным функциям API RAGE
 
Потестил, они работают (от части), однако нашёл только броню для кузова...
 
Сервер:
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.
 
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", (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.

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

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



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

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



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