21.04.2015, 06:52
Try this:
pawn Код:
COMMAND:cuff(playerid, params[])
{
if(!playerData[playerid][playerLoggedIn]) return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You must be logged in to use commands.");
{
switch(playerData[playerid][playerClass])
{
case CLASS_POLICE, CLASS_ARMY, CLASS_CIA, CLASS_FBI, CLASS_SECRETSERVICE:
{
if(playerData[playerid][playerJailTime])
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You cannot cuff people when you are jailed.");
new targetid;
if(sscanf(params, "u", targetid))
{
targetid = GetClosestSuspect(playerid, 6);
if(targetid == INVALID_PLAYER_ID || !IsPlayerConnected(targetid))
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You are not close enough to a suspect.");
}
else if(targetid == INVALID_PLAYER_ID || !IsPlayerConnected(targetid))
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}That player is not connected.");
if(!playerData[targetid][playerLoggedIn])
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You cannot cuff players who are not logged in.");
if(playerData[targetid][playerClass] != CLASS_CIVILIAN && playerData[targetid][playerClass] != CLASS_MEDIC)
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You cannot cuff law enforcement players.");
if(playerData[targetid][playerWantedLevel] < 6)
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}This player does not have a high enough wanted level.");
if(playerData[targetid][playerJailTime])
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You cannot cuff people when they're jailed.");
if(!isPlayerInRangeOfPlayer(playerid, targetid, 4.0))
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You are not close enough to that player.");
if(playerData[targetid][playerAdminDuty])
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}That player is currently performing admin duties and cannot be cuffed!");
if(IsPlayerInAnyVehicle(targetid))
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}The player you're trying to cuff is in a vehicle.");
if(IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You cannot cuff people while you are in a vehicle.");
if(playerData[targetid][playerIsCuffed])
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}That player is already cuffed.");
if(!playerData[playerid][playerCanCuff])
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}Please wait before cuffing a player again.");
if(playerData[playerid][playerIsTied])
return SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}You cannot do this whilst tied.");
ClearAnimations(targetid);
new Name[MAX_PLAYER_NAME], pCuff[80];
GetPlayerName(playerid, Name, sizeof(Name));
format(pCuff, sizeof(pCuff), "{FFDC2E}[CUFFED] {FFFFFF}You have been cuffed by %s(%i)", Name, playerid);
SendClientMessage(targetid, COLOR_WHITE, pCuff);
GetPlayerName(targetid, Name, sizeof(Name));
format(pCuff, sizeof(pCuff), "{FFDC2E}[CUFFED] {FFFFFF}You have placed cuffs on %s(%i)", Name, targetid);
SendClientMessage(playerid, COLOR_WHITE, pCuff);
SetPlayerSpecialAction(targetid, SPECIAL_ACTION_CUFFED);
playerData[targetid][uncuffTimer] = SetTimerEx("uncuff", 60000, false, "i", targetid);
playerData[playerid][recuffTimer] = SetTimerEx("recuff", 5000, false, "i", playerid);
playerData[playerid][playerCanCuff] = false;
playerData[targetid][playerIsCuffed] = true;
if(playerData[targetid][playerIsTied])
{
playerData[targetid][playerIsTied] = false;
KillTimer(playerData[targetid][untieTimer]);
}
}
default: SendClientMessage(playerid, COLOR_WHITE, "{B7B7B7}[SERVER] {FFFFFF}This command can only be used by the LEO classes.");
}
}
return 1;
}
GetClosestSuspect(playerid, minimum_wantedlevel)
{
new Float:dist = 1000.0, targetid = INVALID_PLAYER_ID, Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:tmpdis;
GetPlayerPos(playerid, x1, y1, z1);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(i == playerid) continue;
if(playerData[i][playerClass] != CLASS_CIVILIAN && playerData[i][playerClass] != CLASS_MEDIC) continue;
if(playerData[i][playerWantedLevel] < minimum_wantedlevel) continue;
GetPlayerPos(i, x2, y2, z2);
tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2, x1)), 2) + floatpower(floatabs(floatsub(y2, y1)), 2) + floatpower(floatabs(floatsub(z2, z1)), 2));
if(tmpdis < dist)
{
dist = tmpdis;
targetid = i;
}
}
return targetid;
}