NearestPlayer(playerid)
{
new nearest = 0; // ez a változó fogja tárolni a legközelebbi játékos id-jét
while(!IsPlayerConnected(nearest)) nearest++; // amíg a \'nearest\' játékos nincs a szerveren növelünk egyet az értékén, hátha az már fent van.
if(nearest >= MAX_PLAYERS) return INVALID_PLAYER_ID; // ha túllépjük a legtöbb lehetséges játékost érvénytelen playeridvel térünk vissza és nem fut tovább az alprogram
new Float:p[3];
GetPlayerPos(playerid, p[0],p[1],p[2]); // a playerid pozíciójától fogjuk nézni a többiek távolságát
for(new i = nearest; i<MAX_PLAYERS; i++) // a legkisebb id-jû csatlakozott játékostól kezdõdik a ciklus
{
if(!IsPlayerConnected(i)) continue; // ha nincs fent a játékos nem érdekel minket, ugrunk a következõre
if(i == playerid) continue; // ha megegyezik a playerid-vel szintén tovább ugrunk
if(GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(i)) continue; // mint ahogy akkor is ha nincsenek egy VW-ben
if(GetPlayerInterior(playerid) != GetPlayerInterior(i)) continue; // ... vagy interiorban
if(GetPlayerDistanceFromPoint(i, p[0],p[1],p[2]) < GetPlayerDistanceFromPoint(nearest, p[0],p[1],p[2])) nearest = i; // ha a az éppen vizsgált (i) játékos távolsága \'playerid\'-tõl kisebb mint az eddig legközelebbinek hitt játékosé akkor az \'i\' lesz az új \'nearest\'
}
return nearest; // a végigfutás eredményeképpen ha minden jól ment a \'nearest\' értéke a \'playerid\'-hez legközelebbi játékos id-je
}
Lehetséges, hogy elnéztem valamit, vagy rosszul gondoltam végig. Ha letesztelted kérlek jelezz vissza.