28.06.2011, 19:01
Нужно решить проблемку! Как можно высадить игрока из машины, который зашёл в АФК. Причём вылезти он должен когда находится в АФК! Смену позиции не предлагать-не высаживает.
/*
Высадить водителя из указанного транспортного средства:
Вернет false - если в указанном транспорте нет водителя
Вернет true - если все прошло успешно
*/
bool:RemoveDriverFromVehicle(carid)
{
new mp = GetMaxPlayers(), driver=-1;
for(new playerid; playerid < mp; playerid++)
{
if(!IsPlayerConnected(playerid)) continue;
if(GetPlayerVehicleID(playerid) != carid) continue;
if(GetPlayerVehicleSeat(playerid) != 0) continue;
driver = playerid;
break;
}
if(driver == -1) return false; // В транспорте нет водителя
new Float:x,Float:y,Float:z,Float:a;
GetVehiclePos(carid,x,y,z);
GetVehicleZAngle(carid,a);
new passenger[3] = {-1,-1,-1}; // Хватит для любого транспорта, кроме автобусов
for(new playerid; playerid < mp; playerid++)
{
if(!IsPlayerConnected(playerid)) continue;
if(GetPlayerVehicleID(playerid) != carid) continue;
if(playerid == driver) continue;
passenger[GetPlayerVehicleSeat(playerid)-1] = playerid;
}
SetVehicleToRespawn(carid);
SetVehiclePos(carid,x,y,z);
SetVehicleZAngle(carid,a);
for(new i; i < sizeof(passenger); i++)
{
if(passenger[i] != -1)
PutPlayerInVehicle(passenger[i],carid,i+1);
}
return true;
}