Problem mit Anti Money Cheat

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
  • 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 ?

    **************************************************
    -Homers Light Roleplay (Unique script)
    -Server IP: 46.4.62.81:8996
    -Server Forum: http://www.hl-rp.forumprofi.de
    **************************************************

  • nein ist auch schon bei sehr kleinen beträgen passiert. insgesamt 3 mal (20000, 2000, 18).


    Das habe ich mir auch schon überlegt. Momentan überprüfe ich bei OnPlayerUpdate ob GetPlayerMoney höher wie die
    scriptvariable des Geldes ist. Evtl sollte ich nen Timer einsetzen und das ganze nur jede sekunden z.B überprüfen lassen.. hilft ja vielleicht.


    Das blöde ist dass es nicht immer sondern eher selten passiert wodurch ich nicht gleich weiß obs behoben ist oder nicht..


    EDIT:


    Habs jetzt mal mit nem Timer probiert der nur alle 5 Sekunden überprüft, geht trotzdem nicht ... als ich nem spieler 10000 dollar gab wurde ER 5 sek später
    gekickt..

    **************************************************
    -Homers Light Roleplay (Unique script)
    -Server IP: 46.4.62.81:8996
    -Server Forum: http://www.hl-rp.forumprofi.de
    **************************************************

    Einmal editiert, zuletzt von MacGyver_HL ()

  • Ähm,wenn man einen Money Cheat für das GTA SA:MP hat & dies auch benutzt,ist das Geld was man Cheatet SINNLOS!
    Man sieht zwar im HUD das dass Geld da ist (z.B.: Vorher: 1000$ danach 10 000$) aber man kann es nicht einlösen! Man kann es nicht in die Bank einzahlen oder sich ein Auto kaufen. Diese Geld Cheats zeigen NUR das Geld an - MEHR ABER AUCH NICHT.
    Also sind solche Anti Money Cheats total Sinnlos...


    Gruß

  • @Steam:
    jap beim Connecten und Disconnected wird die Variable auf 0 gesetzt.
    Und es kann sowohl bei mehrmaligen, aber auch schon bei einmaligem bezahlen passieren. Ist aber jetzt auch schon vorgekommen,
    dass derjenige der das Geld bekommen hat gekickt wurde.


    Phoenix:
    Gehen würde das wenn man beim Kauf prüft ob die Variable genug Geld hat und nicht mit GetPlayerMoney, das stimmt. Wäre ne Alternative
    falls der Bug nicht verschwindet. Müsste dann eben nur vieles vom Script bearbeiten.

    **************************************************
    -Homers Light Roleplay (Unique script)
    -Server IP: 46.4.62.81:8996
    -Server Forum: http://www.hl-rp.forumprofi.de
    **************************************************