07.07.2014, 01:51
Doesn't work! It arrest the wanted player even if you are so far away from him. Here is the full code:
pawn Код:
stock Float:GetDistanceBetweenPoints(Float:rx1,Float:ry1,Float:rz1,Float:rx2,Float:ry2,Float:rz2)
{
return floatadd(floatadd(floatsqroot(floatpower(floatsub(rx1, rx2), 2)), floatsqroot(floatpower(floatsub(ry1, ry2), 2))), floatsqroot(floatpower(floatsub(rz1, rz2), 2)));
}
stock GetClosestPlayer(playerid, Float:limit)
{
new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:Dist, id = INVALID_PLAYER_ID;
GetPlayerPos(playerid,x1,y1,z1);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(i == playerid) continue;
GetPlayerPos(i, x2, y2, z2);
Dist = GetDistanceBetweenPoints(x1, y1, z1, x2, y2, z2);
if(Dist < limit || id == INVALID_PLAYER_ID)
{
limit = Dist;
id = i;
}
}
return id;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if ((newkeys & KEY_LOOK_BEHIND) && !(oldkeys & KEY_LOOK_BEHIND))
{
if(IsCop[playerid] == true)
{
new targetid = GetClosestPlayer(playerid,5.0);
if(IsKidnapped[playerid] == true && Spawned[playerid] == false) return 1;
if(targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Error:] {FFFFFF}There are no players close enough to arrest.");
if(GetPlayerWantedLevel(targetid) == 0) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Error:] {FFFFFF}There are no players close enough to arrest.");
if(IsSpawned[targetid] == false || IsFreezed[targetid] == true) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[Error:] {FFFFFF}There are no players close enough to arrest.");
if(GetPlayerWantedLevel(targetid) >= 4)
{
//rest of code
return 1;
}
}
}
return 1;
}