Antimoney-Cheat Problem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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