Halli Hallo Community,
ich habe ein kleines Problem mit meinem Antimoneycheat, es zieht manchmal aus Lust und Laune Geld ab...
Hier sind die classes:
forward ACB_GivePlayerMoney(playerid, amount);
forward ACB_MoneyCheck();
forward ACB_ResetPlayerMoney(playerid);
forward ACB_GetPlayerMoney(playerid);
forward ACB_SetPlayerMoney(playerid, amount);
public ACB_GivePlayerMoney(playerid, amount)
{
cPlayerMoneyCheck[playerid] = 0;
GivePlayerMoney(playerid, amount);
PlayerInfo[playerid][pBargeld] += amount;
return 1;
}
public ACB_ResetPlayerMoney(playerid)
{
cPlayerMoneyCheck[playerid] = 0;
ResetPlayerMoney(playerid);
PlayerInfo[playerid][pBargeld] = 0;
return 1;
}
public ACB_MoneyCheck()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(cPlayerMoneyCheck[i] == 1 && gPlayerLogged[i] == 1)
{
if(GetPlayerMoney(i) > PlayerInfo[i][pBargeld])
{
new nachricht[128];
new cheater[128];
GetPlayerName(i, cheater, 128);
new cheatmoney = GetPlayerMoney(i) - PlayerInfo[i][pBargeld];
GivePlayerMoney(i, -GetPlayerMoney(i));
GivePlayerMoney(i, PlayerInfo[i][pBargeld]);
PlayerInfo[i][pCash] = PlayerInfo[i][pBargeld];
if(cheatmoney > 199 && IsPlayerConnected(i))
{
format(nachricht, 256, "AdmWarning: %s hat $%d gecheatet!", cheater,cheatmoney);
SendAdminMessage(COLOR_YELLOW, nachricht);
format(nachricht, 256, "[Geld]: %s hat $%d aus dem Nichts erschaffen.", cheater,cheatmoney);
AntiCheatLog(nachricht);
}
}
if(GetPlayerMoney(i) < PlayerInfo[i][pBargeld])
{
PlayerInfo[i][pBargeld] = GetPlayerMoney(i);
}
}
if(cPlayerMoneyCheck[i] == 0)
{
cPlayerMoneyCheck[i] = 1;
}
}
return 1;
}
und unter ongamemodeinit halt noch SetTimer("ACB_MoneyCheck",100,true);
Wo könnte das Problem liegen, das vorallem nach dem einloggen oft ein Bug kommt [PERSON] hat [SUMME] gecheatet... meistens ist es die summe die man normalerweise bar auf der hand hat... es gibt kein GivePlayerMoney mehr sondern nur noch ACB_GivePlayerMoney das gilt natürlich auch für die anderen Funktionen...
Wäre nett wenn ich Hilfe bekommen...
MFG,
Lexico