24.01.2014, 10:46
Ну давай учится.
И запомни на будущее, всегда сперва начинай с проверок которые делаются быстрей, например сравнение двух переменных, внутренние функции, а уж потом самописные. Это к о проверке игроков!
И ни когда не используй однобуквенные переменные!
pawn Code:
GetClosestPlay(objectid) {
new Float:min_dis = 99999.99,
Float:player_dis,
player = INVALID_PLAYER_ID;
new Float:object_x, Float:object_y, Float:object_z, Float:temp_z;
GetObjectPos(objectid, object_x, object_y, object_z);
MapAndreas_FindZ_For2DCoord(object_x, object_y, temp_z);
if (object_z > temp_z + 2.0 || object_z < temp_z) {
SetObjectPos(objectid, object_x, object_y, (object_z = temp_z + 2.0)));
}
foreach (new playerid : Player)
{
if (GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) continue;
if (GetPlayerInterior(playerid) || Isahitman(playerid)) continue; // Обрати внимание какой вид имеют стандартные функции!
if (!ISAZOMBIESPAWN(playerid) && !zombiespawn2(playerid)) continue; // А где сами функции и почему имена у них разные? И предыдущий комментарий сюда применим.
player_dis = GetPlayerDistanceFromPoint(playerid, object_x, object_y, object_z);
if (player_dis < min_dis) {
min_dis = player_dis;
player = playerid;
}
}
return player;
}
И ни когда не используй однобуквенные переменные!

