PDA

Просмотр полной версии : [Function] IsSeatOccupied



Salvacore
16.08.2014, 19:25
Введение:
Функция для проверки занято ли сиденье.


IsSeatOccupied(vehicleid, seatid)
{
if (!GetVehicleModel(vehicleid))
return 0;

foreach(Player,i)//for(new p = GetMaxPlayers(), i; i != p; --i)
{
if (IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == seatid)
return 1;
}
return 0;
}

Автор: Emmet_
Автор статьи: Salvador
Специально для: Pro-Pawn.Ru (http://pro-pawn.ru)

Копирование данной статьи без разрешения автора запрещено!

MR_BEN
16.08.2014, 19:56
не все foreach пользуются



IsSeatOccupied(vehicleid, seatid)
{

if (!GetVehicleModel(vehicleid))
return 0;

for(new p = GetMaxPlayers(), i; i != p; --i)
{
if (IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == seatid)
return 1;
}
return 0;
}

Daniel_Cortez
16.08.2014, 21:13
не все foreach пользуются



IsSeatOccupied(vehicleid, seatid)
{
new
i = GetMaxPlayers();
if (!GetVehicleModel(vehicleid))
return 0;

do
{
i--;
if (IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == seatid)
return 1;
}
while(i);
return 0;
}


Если машины не существует, вызов GetMaxPlayers пройдёт впустую. В остальном, пожалуй, поддержу инициативу.

MR_BEN
16.08.2014, 21:22
Если машины не существует, вызов GetMaxPlayers пройдёт впустую. В остальном, пожалуй, поддержу инициативу.

Обновил пост выше. Думаю, так будет лучше.

DeimoS
16.08.2014, 21:52
Тогда уж так

IsSeatOccupied(vehicleid, seatid)
{
if(!GetVehicleModel(vehicleid)) return 0;
for(new p = GetMaxPlayers(); p != -1; --p)
{
if(IsPlayerInVehicle(p, vehicleid) && GetPlayerVehicleSeat(p) == seatid) return 1;
}
return 0;
}

И да, SA-MP не взорвётся, если вызов функций будет для несуществующего игрока? Я бы перестраховался, ибо SA-MP же...

Daniel_Cortez
17.08.2014, 00:12
SA-MP не взорвётся, если вызов функций будет для несуществующего игрока?
Ну на GetVehicleModel по ID несуществующего транспорта (см. код выше) не взрывается же.

DeimoS
17.08.2014, 11:07
Ну на GetVehicleModel по ID несуществующего транспорта (см. код выше) не взрывается же.

Ну просто раньше то ли SendClientMessage Для несуществующего игрока вызывала краш сервера, то ли что-то ещё. Не помню точно. Сейчас, возможно, так же дела обстоят