Tach Leute,
hab ein Problem beim Anticheat für Money.
Es funktioniert soweit aber manchmal kommt es vor, dass wenn ein Spieler einem anderen Geld gibt, oder etwas kauft, dass der anticheat dann beim Spieler greift der Gelb abgibt. Es passiert auch nicht immer sondern manchmal was eine Suche nach dem Problem ziemlich erschwert.
für den anticheat benutze ich eine Variable für das Geld:
playermoney[playerid]
anstelle von GivePlayerMoney habe ich eine andere funktion :
stock ac_GivePlayerMoney(playerid, money)
{
playermoney[playerid] += money;
GivePlayerMoney(playerid, money);
}
pay command:
if(!strcmp(cmd, "/pay", true, 4))
{
new tmp[256], str[256], giveplayerid, giveplayername[128], sendplayername[128];
new Float:x, Float:y, Float:z;
new Value[256];
new a;
tmp = strtok(cmdtext, idx);
giveplayerid = strval(tmp);
Value = strrest(cmdtext, idx);
a = strval(Value);
if(strlen(tmp) == 0)
{
SendClientMessage(playerid, GELB, "USAGE: /pay ID AMOUNT");
return 1;
}
if(a > GetPlayerMoney(playerid))
{
SendClientMessage(playerid, ROT, "You dont have enough money");
return 1;
}
GetPlayerName(playerid, sendplayername, sizeof(sendplayername));
GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
GetPlayerPos(giveplayerid, x, y, z);
if(IsPlayerInRangeOfPoint(playerid, 5, x, y, z))
{
ac_GivePlayerMoney(playerid, - a);
ac_GivePlayerMoney(giveplayerid, a);
for(new i=0;i<MAX_PLAYERS;i++)
{
format(str, sizeof(str),"%s took out some money and has given it to %s", sendplayername, giveplayername);
if(IsPlayerInRangeOfPoint(i, 10, x, y, z))
{
SendClientMessage(i, GELB, str);
}
}
}
else return SendClientMessage(playerid, ROT, "Player is not connected or not in near");
return 1;
}
hat jemand Rat ?