Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Взаимодействие с транспортом

faraday.

Эксперт
Регистрация
15 Окт 2015
Сообщения
1,667
Лучшие ответы
77
Репутация
1,008
Награды
1
Стандартная функция: GetPlayerCameraTargetVehicle(playerid); - Возвращает серверный iD транспорта (ближайший) на который смотрит игрок.

Необходимо в OnPlayerConnect подключить наведение камеры.

C++:
EnablePlayerCameraTarget(playerid, 1);
Ко всем new добавим

C++:
new vehicle_target[2];
new player_target_vehicle[MAX_PLAYERS];
В OnPlayerConnect зададим для переменной player_target_vehicle[playerid] невалидное значение 60635 и запустим таймер:
C++:
player_target_vehicle[playerid] = INVALID_VEHICLE_ID;
SetTimerEx("PlayerTimerTargetVehicle", 1_000, true, "i", playerid);

В OnGameModeInit создадим 2 транспорта:
C++:
vehicle_target[0] = CreateVehicle(415, 0.0, 7.0, 3.6, 180.0, 2, 2, 100);
vehicle_target[1] = CreateVehicle(522, 0.0, 13.0, 3.6, 180.0, 2, 2, 100);
Сам каллбэк таймера где весь функционал:

C++:
forward PlayerTimerTargetVehicle(playerid);
public PlayerTimerTargetVehicle(playerid)
{
    new
         vehicleid = GetPlayerCameraTargetVehicle(playerid),
         str[36];

    if(player_target_vehicle[playerid] != INVALID_VEHICLE_ID && vehicleid != player_target_vehicle[playerid])
    {
        SetVehicleParamsEx (player_target_vehicle[playerid],  0 ,  0 ,  0 , 0 ,  0 ,  0 , 0 ) ;//Удаляем маркер
        player_target_vehicle[playerid] = INVALID_VEHICLE_ID; //Выдаем INVALID_VEHICLE_ID

         return 1;
    }
    
    if(vehicleid == vehicle_target[0] || vehicleid == vehicle_target[1]) {
        if(player_target_vehicle[playerid] != INVALID_VEHICLE_ID)
           return 1;

        player_target_vehicle[playerid] = vehicleid; //Записываем в переменную ID тс на который смотрим
        SetVehicleParamsForPlayer(player_target_vehicle[playerid], playerid, 1, 0);//задаем маркер над тс на который смотрим

        format(str, sizeof str, "~g~~h~Vehicle ID: %d", GetVehicleModel(vehicleid));
        GameTextForPlayer(playerid, str, 1000, 3);//Показываем ID тс на который смотрим
    }
    return 1;
}
Готово.

Теперь вы сможете взаимодействовать с автомобилем на который смотрите, можно сделать авторынок/ закрывать открывать двери / вызывать меню автомобиля

Так же для визуализации в мануал добавил функцию
SetVehicleParamsForPlayer(vehicleid, playerid, 1, 0); // '1' - маркер '0' - состояние дверей


Автор: unreal.
 
Сверху Снизу