Итак, как известно, в новой версии SA-MP 0.3 имеется встроенный стример для транспорта, в связи с этим, функция для закрытия/открытия тачек должна быть перевызвана в новом паблике OnVehicleStreamIn - этот паблик срабатывает в тот момент, когда игрок находится в зоне видимости какого-либо транспорта, зона видимости указывается в server.cfg параметр stream_distance. Теперь начнём.
Создаём новый паблик (копи-паст) в Ваш мод.
public OnVehicleStreamIn(vehicleid, forplayerid)
{
SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, gCarLock[vehicleid]);//Команда для открытия/закрытия транспорта.
return 1;
}
Результат: При появлении игрока в зоне видимости какого-либо транспорта, он будет создавать его закрытым либо открытым, в зависимости от параметра gCarLock для этой тачки.
Теперь, для того чтобы транспорт закрывался для тех игроков, которые находится рядом (у которых данный паблик уже вызывался для этой тачки), нужно сделать дополнительный цикл.
Пример команды:
Code
if(strcmp(cmd, "/lock", true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_WHITE, "Вы должны быть в транспорте.");
new newcar = GetPlayerVehicleID(playerid);
if(gCarLock[newcar])
{
for(new i=0; i
{
if(IsPlayerConnected(i) && IsVehicleStreamedIn(newcar, i))
{
SetVehicleParamsForPlayer(newcar, i, 0, 0);
}
}
gCarLock[newcar] = 0;
SendClientMessage(playerid, COLOR_WHITE, "Транспорт разблокирован.");
return 1;
}
else
{
for(new i=0; i
{
if(IsPlayerConnected(i) && IsVehicleStreamedIn(newcar, i))
{
SetVehicleParamsForPlayer(newcar, i, 0, 1);
}
}
gCarLock[newcar] = 1;
SendClientMessage(playerid, COLOR_WHITE, "Транспорт заблокирован.");
}
return 1;
}
P.S Это образная команда, в стандартном ГФ идёт уже готовый паблик UnLockCar и LockCar. Думаю теперь всё понятно. Удачи.