Script Tow Truck States 1.0.0

Serg_Brain

Мастер
Пользователь
Регистрация
15 Янв 2012
Сообщения
3,975
Лучшие ответы
7
Репутация
595
Награды
5
Tow Truck States
Tow Truck States 1.0.0 || Эвакуатор штата



Чтобы вызвать данную функцию используйте:

OnPlayerTowTruckStateChange

возвращает значения:

attach - когда какое-либо транспортное средство было прикреплено к эвакуатору;
detach - когда прикрепленное транспортное средство было отсоединено от эвакуатора;
deadOrDestroy - когда прикрепленный автомобиль был уничтожен;
exit - когда игрок покидает эвакуатор, когда к нему привязано;

Чтобы использовать его:

- Создайте каталог towtruck в client_packages.
- Создайте в нём файл index.js и вставьте в него следующий код.
- После вызовите его в вашем скрипте client_packages / index.js с помощью require ('towtruck');.

Код данного скрипта:

PHP:
const Natives = {
    SET_TOW_TRUCK_CRANE_HEIGHT        : '0xFE54B92A344583CA', // SET_TOW_TRUCK_CRANE_HEIGHT(Vehicle towTruck, float height)
    ATTACH_VEHICLE_TO_TOW_TRUCK       : '0x29A16F8D621C4508', // ATTACH_VEHICLE_TO_TOW_TRUCK(Vehicle towTruck, Vehicle vehicle, BOOL rear, float hookOffsetX, float hookOffsetY, float hookOffsetZ)
    DETACH_VEHICLE_FROM_TOW_TRUCK     : '0xC2DB6B6708350ED8', // DETACH_VEHICLE_FROM_TOW_TRUCK(Vehicle towTruck, Vehicle vehicle)
    DETACH_VEHICLE_FROM_ANY_TOW_TRUCK : '0xD0E9CE05A1E68CD8', // DETACH_VEHICLE_FROM_ANY_TOW_TRUCK(Vehicle vehicle)
    IS_VEHICLE_ATTACHED_TO_TOW_TRUCK  : '0x146DF9EC4C4B9FD4', // IS_VEHICLE_ATTACHED_TO_TOW_TRUCK(Vehicle towTruck, Vehicle vehicle)
    GET_ENTITY_ATTACHED_TO_TOW_TRUCK  : '0xEFEA18DCF10F8F75', // GET_ENTITY_ATTACHED_TO_TOW_TRUCK(Vehicle towTruck)
};

const localPlayer = mp.players.local;
let lastCheck = Date.now() / 1000;
let lastAttachVehicle = undefined;
let lastVehiclePlayer = undefined;

const OnPlayerTowTruckStateChange = (...args) =>
{
    switch(args[0])
    {
        case 'attach':
        {
            const vehicle = args[1];
            mp.gui.chat.push(`Attach vehicle. Vehicle have got ${vehicle.getHealth()} HP.`);
            break;
        }
        case 'detach':
        {
            const vehicle = args[1];
            const result = args[2];
            mp.gui.chat.push(`Deatch vehicle. Vehicle have got ${vehicle.getHealth()} HP. Result: ${result}.`);
            break;
        }
        case 'deadOrDestroy':
        {
            const result = args[1] || args[2];
            mp.gui.chat.push(`Attached vehicle just doesn't exists or has been destroyed... Result: ${result}`);
            break;
        }
        case 'exit':
        {
            const _lastVehiclePlayer = args[1];
            const _lastAttachVehicle = args[2];

            if(_lastAttachVehicle.doesExist() && !_lastAttachVehicle.isDead())
                mp.game.invoke(Natives.DETACH_VEHICLE_FROM_TOW_TRUCK, _lastVehiclePlayer.handle, _lastAttachVehicle.handle);

            mp.gui.chat.push(`Exit towtruck. lastVehiclePlayer: ${_lastVehiclePlayer}, lastAttachVehicle: ${_lastAttachVehicle}`);
            break;
        }
    }
}

const getEntityAttachedVehicle = () =>
{
    let findVeh = 0;
    mp.vehicles.forEachInStreamRange((vehicle) =>
    {
        const v = mp.game.invoke(Natives.IS_VEHICLE_ATTACHED_TO_TOW_TRUCK, localPlayer.vehicle.handle, vehicle.handle);
        if(v) findVeh = vehicle;
    });
    return findVeh;
}

mp.events.add(
{
    'render' : () =>
    {
        if(Date.now() / 1000 > lastCheck + 5)
        {
            if(localPlayer.vehicle)
            {
                if(localPlayer.vehicle.model === parseInt(0xB12314E0) || localPlayer.vehicle.model === parseInt(0xE5A2D6C6)) // you are in towtruck or towtruck2
                {
                    lastVehiclePlayer = localPlayer.vehicle;
                    if(!lastAttachVehicle)
                    {
                        const getEntityAttached = mp.game.invoke(Natives.GET_ENTITY_ATTACHED_TO_TOW_TRUCK, localPlayer.vehicle.handle);
                        if(getEntityAttached)
                        {
                            // GET_ENTITY_ATTACHED_TO_TOW_TRUCK return entity type... not entity object, so we must find it by yourselves....
                            lastAttachVehicle = getEntityAttachedVehicle();
                            OnPlayerTowTruckStateChange('attach', lastAttachVehicle);
                        }
                    }
                    else if(lastAttachVehicle && !lastAttachVehicle.doesExist() || lastAttachVehicle && lastAttachVehicle.isDead())
                    {
                        OnPlayerTowTruckStateChange('deadOrDestroy', lastAttachVehicle.doesExist(), lastAttachVehicle.isDead());
                        lastAttachVehicle = 0;
                    }
                    else
                    {
                        const isVehicleAttached = mp.game.invoke(Natives.IS_VEHICLE_ATTACHED_TO_TOW_TRUCK, localPlayer.vehicle.handle, lastAttachVehicle.handle);
                        if(!isVehicleAttached)
                        {
                            OnPlayerTowTruckStateChange('detach', lastAttachVehicle, isVehicleAttached);
                            lastAttachVehicle = undefined;
                        }
                    }
                }
            }
            else if(!localPlayer.vehicle && lastVehiclePlayer && lastAttachVehicle) // when player exited tow truck while have got attached vehicle
            {
                OnPlayerTowTruckStateChange('exit', lastVehiclePlayer, lastAttachVehicle);

                lastAttachVehicle = undefined;
                lastVehiclePlayer = undefined;
            }

            lastCheck = Date.now() / 1000;
        }
    }
});


// other useful functions
const setTowTruckCraneHeight = (towTruck, height) => mp.game.invoke(Natives.SET_TOW_TRUCK_CRANE_HEIGHT, towTruck.handle, height);
const attachVehicleToTowTruck = (towTruck, vehicle, rear, hookOffsetX, hookOffsetY, hookOffsetZ) => mp.game.invoke(Natives.ATTACH_VEHICLE_TO_TOW_TRUCK, towTruck.handle, vehicle.handle, rear, hookOffsetX, hookOffsetY, hookOffsetZ);

Также можете просто скачать:



Официальный источник: wiki.rage.mp
Автор скрипта: Tampa
Автор темы: Serg_Brain



 
Последнее редактирование:
Сверху Снизу