Brauche Hilfe beim Anti Moneyhack.

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
  • Hallo Leute,


    ich habe 2 Probleme mit meinem Anti Moneyhack.
    1. Nachdem ein Spieler gestorben ist sollen ihm 1.000€ abgezogen werden, allerdings werden immer nur 100€ abgezogen.
    2. Dazu mach ich mal ein Beispiel!
    Wenn ein Spieler 10.000€ hat und nachdem er gestorben ist ihm 1.000€ abgezogen wurden kann er sich komischer Weiße Geld hacken bis er insgesammt wieder die 10.000€ voll hat und wird erst dann vom Antihack erkannt.
    Die abgezogenen 1000€ werden sozusagen nicht beim amount abgezogen, sodass der Antihack einen Hacker nicht erkennen könnte.



    public OnGameModeInit()
    {
    SetTimer("CheckMoney",3000,true);
    return 1;
    }
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    SpielerInfo[playerid][pTode] += 1;
    SpielerInfo[killerid][pKills] += 1;
    TakeMoney(playerid, 1000); // <---- Hier wird nach dem Tod 1000€ abgezogen!
    PayMoney(killerid, 2000);
    return 1;
    }
    forward CheckMoney();
    public CheckMoney() // <---- Das Public um den Hacker zu melden und kicken!
    {
    new i = 0;
    for(;i<GetMaxPlayers();i++)
    {
    if(GetPlayerMoney(i) > SpielerInfo[i][pGeld])
    {
    new string[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(i,name,sizeof(name));
    format(string, sizeof string,"[Anti Moneyhack] %s wurde bei den Versuch sich %d Euro zu hacken gekickt!",name,GetPlayerMoney(i)-SpielerInfo[i][pGeld]);
    SendClientMessageToAll(ROT,string);
    Kick(i);
    }
    }
    return true;
    }
    stock PayMoney(playerid,amount) // <---- Der Stock um wenn ein Spieler Geld bekommt die Summe zum amount dazu zurechnen.
    {
    SpielerInfo[playerid][pGeld] += amount;
    GivePlayerMoney(playerid,amount);
    return true;
    }
    stock SetMoney(playerid,amount) // <---- Der Stock um den Spielern beim Login ihr Geld aus der Datenbank zu geben (Siehe LoadPlayer!).
    {
    SpielerInfo[playerid][pGeld] = amount;
    GivePlayerMoney(playerid,amount);
    return true;
    }
    stock TakeMoney(playerid,amount) // <---- Der Stock um wenn ein Spieler Geld abgezogen bekommt die Summe vom amount abzuziehen [HIER SCHEINT ETWAS NICHT ZU STIMMEN!}.
    {
    SpielerInfo[playerid][pGeld] -= amount;
    GivePlayerMoney(playerid,-amount);
    return true;
    }
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    SetMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));
    }
    return 1;
    }



    Ich hoffe jemand kann mir bei meinem Problem helfen,
    falls etwas zu den Scriptzeilen unklar ist bitte einfach Fragen!




    Mit freundlichen Grüßen und frohe Weihnachten
    AlphaGen

    DIVIDE ET IMPERA

    2 Mal editiert, zuletzt von [GSD]AlphaGen ()