24.12.2012, 00:52
I'm making quite a few mistakes today, here you go:
pawn Код:
#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
CMD:ar(playerid, params[])
{
if(GetTeam{playerid} == CLASS_CIV || GetTeam{playerid} == CLASS_MEDIC) return SendClientMessage(playerid, RED, "Only law enforcement can arrest players.");
else if(HasBeenTied{playerid} == true) return SendClientMessage(playerid, RED, "You cant arrest players while your tied up.");
else if(IsPlayerConnected(strval(params)) && strlen(params) != 0) Arrest(playerid, strval(params));
else if(strlen(params) == 0 || !IsPlayerConnected(strval(params)) Arrest(playerid);
new astring[100];
format(astring, sizeof(astring),"%s [%d] typed: /ar", GetName(playerid), playerid);
SendAdminMessage(GREY, astring);
return 1;
}
stock Arrest(playerid, i = -1)
{
new Float:x, Float:y, Float:z, Float:hp;
if(i != -1)
{
GetPlayerPos(i, x, y, z);
GetPlayerHealth(i, hp);
if(hp > 0.0 && IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z) && GetPlayerInterior(playerid) == GetPlayerInterior(i) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i) && GetPlayerWantedLevel(i) >= 4 && !IsPlayerInAnyVehicle(i) && !IsOnduty{i} && !IsAtEvent{i} && HasBeenArrested{i} == false) return SendClientMessage(playerid, RED, "Player cannot be arrested");
}
else if(i == -1)
{
foreach(Player, id)
{
GetPlayerPos(i, x, y, z);
GetPlayerHealth(i, hp);
if(hp > 0.0 && IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z) && GetPlayerInterior(playerid) == GetPlayerInterior(id) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(id) && GetPlayerWantedLevel(id) >= 4 && !IsPlayerInAnyVehicle(id) && !IsOnduty{id} && !IsAtEvent{id} && HasBeenArrested{id} == false) continue;
i = id;
break;
}
if(i == -1) return SendClientMessage(playerid, RED, "No wanted players in range.");
}
PlayerInfo[i][pArrests] ++;
TogglePlayerControllable(i, false);
GameTextForPlayer(i, "~r~Arrested!", 3000, 5);
GameTextForPlayer(playerid,"~w~Suspect ~g~Arrested.",5000,5);
SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
new pay = random(10000) + 5000;
GivePlayerCash(playerid, pay);
PlayerInfo[playerid][pTakedowns] ++;
ApplyAnimation(playerid, "ped", "ARRESTgun", 4.1, 0, 1, 1, 1, 1);
SetPlayerScore(i, GetPlayerScore(i) - 1);
SetPlayerSpecialAction(i, SPECIAL_ACTION_HANDSUP);
SetTimerEx("SendPlayerToJail", 3000, false, "d", i);
HasBeenArrested{i} = true;
if(GetTeam{playerid} == CLASS_COPS)
{
format(fstr, sizeof(fstr), "Officer %s [%d] has just arrested you.", GetName(playerid), playerid);
SendClientMessage(i, RED, fstr);
format(fstr2, sizeof(fstr2), "Suspect %s [%d] has been arrested by Officer %s [%d]", GetName(i), i, GetName(playerid), playerid);
SendClientMessageToAll(LIGHTGREEN, fstr2);
}
else if(GetTeam{playerid} == CLASS_CIA)
{
SendClientMessage(i, RED, "You have been arrested by a Undercover CIA Agent.");
format(fstr, sizeof(fstr), "Suspect %s [%d] has been arrested by a Undercover CIA Agent.", GetName(i), i);
SendClientMessageToAll(LIGHTGREEN, fstr);
}
else if(GetTeam{playerid} == CLASS_FBI)
{
SendClientMessage(i, RED, "You have been arrested by a Undercover FBI Agent.");
format(fstr, sizeof(fstr), "Suspect %s [%d] has been arrested by a Undercover FBI Agent.", GetName(i), i);
SendClientMessageToAll(LIGHTGREEN, fstr);
}
else if(GetTeam{playerid} == CLASS_ARMY)
{
SendClientMessage(i, RED, "You have been arrested by a Las Vegas Army Soldier.");
format(fstr, sizeof(fstr), "Suspect %s [%d] has been arrested by a Las Vegas Army Soldier.", GetName(i), i);
SendClientMessageToAll(LIGHTGREEN, fstr);
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(GetTeam{playerid} != CLASS_CIV && GetTeam{playerid} != CLASS_MEDIC && PRESSED(KEY_SUBMISSION)) Arrest(playerid);
return 1;
}