I'm stuck on actually getting it to use a distance of how far you should be from a player. I don't known Pawn too well, but by reading it I don't know what's wrong. At the moment you can rob someone from the other side of the map like normal.
Код:
stock GetClosePlayer(playerid)
{
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
foreach(Player,i)
{
if(IsPlayerInRangeOfPoint(i, 5, X,Y,Z) && pData[i][Jailed] == false && i != playerid)
{
return i;
}
}
return -1;
}
CMD:rob(playerid,params[])
{
if(iTeam[playerid] != T_CIVIL) return Error(playerid,"You Have To Be Civilian To Rob Players");
if(pData[playerid][RobTim] != 0) return Error(playerid,"Please Wait Before Robbing a Player Again");
new d;
if(sscanf(params,"u",d)) d = GetClosePlayer(playerid);
if(d == -1) return Error(playerid,"No Player Close Enough To Rob");
if(pData[d][Jailed] == true) {Form(playerid,red,"** %s(%d) Is Jailed ! You Can't Rob Him",GetName(d),d); return 1;}
if(pData[d][InGang] == true && pData[playerid][Gang_ID] == pData[d][Gang_ID]) return Error(playerid,"You Can't Rob Your Gang Members");
new Fail = random(3);
if(Fail == 2)
{
if(GetCash(d) < 5000)
{
TextToPlayer(playerid,"~y~Rob Attempt Failed");
Form(playerid,green,"* %s(%d) Is Not Carrying Any Money",GetName(d),d);
Form(d,blue,"* %s(%d) Has Attempted To Rob You",GetName(playerid),playerid);
pData[playerid][RobTim] = 30;
}else{
GiveCash(playerid,GetCash(d)/4);
GiveCash(d,-GetCash(d)/4);
new str[256];
format(str,sizeof(str),"~w~Robbed ~g~%d$~w~ From %s",GetCash(d)/4,GetName(d));
TextToPlayer(playerid,str);
format(str,sizeof(str),"~r~%s Has Robbed You~n~~g~%d$~r~ Lost",GetName(playerid),4,GetName(d));
pData[playerid][RobTim] = 30;
}
}else{
TextToPlayer(playerid,"~y~Rob Attempt Failed");
Form(playerid,Dred,"* %s(%d) Has Noticed You Trying To Rob Him",GetName(d),d);
Form(d,blue,"* %s(%d) Has Attempted To Rob You",GetName(playerid),playerid);
pData[playerid][RobTim] = 30;
}
return 1;
}