faraday.
Эксперт
Стандартная функция:
Необходимо в OnPlayerConnect подключить наведение камеры.
Ко всем new добавим
В OnPlayerConnect зададим для переменной player_target_vehicle[playerid] невалидное значение 60635 и запустим таймер:
В OnGameModeInit создадим 2 транспорта:
Сам каллбэк таймера где весь функционал:
Готово.
Теперь вы сможете взаимодействовать с автомобилем на который смотрите, можно сделать авторынок/ закрывать открывать двери / вызывать меню автомобиля
Так же для визуализации в мануал добавил функцию
Автор: unreal.
GetPlayerCameraTargetVehicle(playerid);
- Возвращает серверный iD транспорта (ближайший) на который смотрит игрок. Необходимо в OnPlayerConnect подключить наведение камеры.
C++:
EnablePlayerCameraTarget(playerid, 1);
C++:
new vehicle_target[2];
new player_target_vehicle[MAX_PLAYERS];
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.