Befehl /toggleanticheat funktioniert nicht

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,
    ich habe einen Befehl erstellt um das AntiCheat des Servers zu de/aktivieren. Wenn ich den Befehl ausführe passiert GARNIX, keine Nachricht im Chat, nichts im Server Log und auch keine Errors oder Warnings in PAWN.


    /toggleanticheat Befehl:

    CMD:toggleanticheat(playerid,params[])
    {
    if(Player[playerid][Level] < 4 && !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid,"Du musst ein Serverleiter sein um diesen Command zu benutzen.");
    new iString[64];



    if(AntiCheatActive == true)
    {
    AntiCheatActive = false;
    SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|");
    SendClientMessageToAll(COLOR_RED,"");
    format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat deaktiviert.", GetName(playerid));
    SendClientMessageToAll(COLOR_RED, iString);
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|");
    printf("[warning] %s deaktiviert das Anticheat.",GetName(playerid));
    }



    else if(AntiCheatActive == false)
    {
    AntiCheatActive = true;
    SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|");
    SendClientMessageToAll(COLOR_GREEN,"");
    format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat aktivert.", GetName(playerid));
    SendClientMessageToAll(COLOR_GREEN, iString);
    SendClientMessageToAll(COLOR_GREEN,"");
    SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|");
    printf("[warning] %s aktiviert das Anticheat.",GetName(playerid));
    }
    return 1;
    }


    Wo ist der Fehler?

  • ehm hey
    ist AntiCheatActive mit ein new definiert also so?
    new AntiCheatActive;
    wenn ja gibts bei mir warnings ich muss mit true zu 1 und fals als 0 angeben also so dann

    if(AntiCheatActive == 1)
    {
    AntiCheatActive = 0;
    SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|");
    SendClientMessageToAll(COLOR_RED,"");
    format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat deaktiviert.", GetName(playerid));
    SendClientMessageToAll(COLOR_RED, iString);
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|");
    printf("[warning] %s deaktiviert das Anticheat.",GetName(playerid));
    }
    else if(AntiCheatActive == 0)
    {
    AntiCheatActive = 1;
    SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|");
    SendClientMessageToAll(COLOR_GREEN,"");
    format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat aktivert.", GetName(playerid));
    SendClientMessageToAll(COLOR_GREEN, iString);
    SendClientMessageToAll(COLOR_GREEN,"");
    SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|");
    printf("[warning] %s aktiviert das Anticheat.",GetName(playerid));
    }
    return 1;
    }


    //Edit nutzt warscheinlich new bool:AntiCheatActive somit war es glaube unötig ^^ aber falls nicht ;D

  • ehm hey
    ist AntiCheatActive mit ein new definiert also so?
    new AntiCheatActive;
    wenn ja gibts bei mir warnings ich muss mit true zu 1 und fals als 0 angeben also so dann
    if(AntiCheatActive == 1) { AntiCheatActive = 0; SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|"); SendClientMessageToAll(COLOR_RED,""); format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat deaktiviert.", GetName(playerid)); SendClientMessageToAll(COLOR_RED, iString); SendClientMessageToAll(COLOR_RED,""); SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|"); printf("[warning] %s deaktiviert das Anticheat.",GetName(playerid)); } else if(AntiCheatActive == 0) { AntiCheatActive = 1; SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|"); SendClientMessageToAll(COLOR_GREEN,""); format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat aktivert.", GetName(playerid)); SendClientMessageToAll(COLOR_GREEN, iString); SendClientMessageToAll(COLOR_GREEN,""); SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|"); printf("[warning] %s aktiviert das Anticheat.",GetName(playerid)); } return 1;}

    Ich habe AntiCheatActive definiert, aber mit einem bool also ist true und false richtig. new bool:AntiCheatActive;

  • Auch eine SendClientMessage wird mir nicht ausgegeben...


    EDIT:
    Ich weiß nicht obs damit zu tun hat aber ich habe einen Timer der jede Sekunden "OnScriptUpdate" aufruft und bei OnScriptUpdate steht:

    forward OnScriptUpdate();
    public OnScriptUpdate()
    {
    if(AntiCheatActive == true)
    {
    ACChecks();
    }
    ......
    ......

  • Probier es mal so und ggf. mal printen lassen, wo der Wert von AntiCheatActive ist.
    new bool:AntiCheatActive = true;


    im Befehl beispielweise;
    printf("Status %d", AntiCheatActive);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • CMD:toggleanticheat(playerid,params[])
    {
    if(Player[playerid][Level] < 4) return SendErrorMessage(playerid,"Du musst ein Serverleiter sein um diesen Command zu benutzen.");
    new iString[64];
    printf("AntiCheat Status: %s", AntiCheatActive);



    if(AntiCheatActive == true)
    {
    AntiCheatActive = false;
    printf("AntiCheat Status: %s", AntiCheatActive);
    SendClientMessage(playerid, COLOR_GREEN, "Du hast das AntiCheat erfolgreich deaktiviert.");
    SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|");
    SendClientMessageToAll(COLOR_RED,"");
    format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat deaktiviert.", GetName(playerid));
    SendClientMessageToAll(COLOR_RED, iString);
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"|____________{ANTI CHEAT NACHRICHT}____________|");
    printf("[warning] %s deaktiviert das Anticheat.",GetName(playerid));
    }



    else if(AntiCheatActive == false)
    {
    AntiCheatActive = true;
    printf("AntiCheat Status: %s", AntiCheatActive);
    SendClientMessage(playerid, COLOR_GREEN, "Du hast AntiCheat erfolgreich aktiviert.");
    SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|");
    SendClientMessageToAll(COLOR_GREEN,"");
    format(iString, sizeof(iString), "{101080}%s hat das komplette AntiCheat aktivert.", GetName(playerid));
    SendClientMessageToAll(COLOR_GREEN, iString);
    SendClientMessageToAll(COLOR_GREEN,"");
    SendClientMessageToAll(COLOR_GREEN,"|____________{ANTI CHEAT NACHRICHT}____________|");
    printf("[warning] %s aktiviert das Anticheat.",GetName(playerid));
    }

    else
    {
    SendClientMessage(playerid, COLOR_RED, "Es ist ein Fehler aufgetreten.");
    }

    return 1;
    }


  • ACChecks()
    {
    new iString[160];
    foreach(new i : Player)
    {
    if(IsPlayerConnected(i) && Player[i][Spawned] == true)
    {
    /*
    //animation



    new animlib[32];
    new animname[32];
    GetAnimationName(GetPlayerAnimationIndex(i),animlib,32,animname,32);
    format(iString, sizeof(iString), "Animation: %s %s --- %d", animlib, animname, GetPlayerAnimationIndex(i));
    SendACWarning(i, iString);
    */



    //jetpack
    if(Player[i][SafeJetpack] == false && GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK)
    {
    SendACWarning(i, "Jetpack");
    }




    //weaponhacks
    new weaponid = GetPlayerWeapon(i);
    if(Player[i][SafeGun] == false && weaponid != 0 && weaponid != DEAGLE && weaponid != SHOTGUN && weaponid != SPAS && weaponid != MP5 && weaponid != AK47 && weaponid != M4 && weaponid != RIFLE && weaponid != SNIPER && weaponid != GRENADE)
    {
    format(iString, sizeof(iString), "Waffen Hack: %s", WeaponNames[weaponid]);
    SendACWarning(i, iString);
    }




    //ammohack
    new Weapon[13], Ammo[13];
    for(new k = 0; k < 13; k++) GetPlayerWeaponData(i, k, Weapon[k], Ammo[k]);

    if(Player[i][VIP] == 1 && Player[i][SafeGun] == false)
    {
    if(Ammo[2] > 200 || Ammo[3] > 200 || Ammo[4] > 200 || Ammo[5] > 400 || Ammo[6] > 200 || Ammo[8] > 2)
    {
    SendACWarning(i, "Ammo Hack");
    }
    }
    else if(Player[i][VIP] == 0 && Player[i][SafeGun] == false)
    {
    if(Ammo[2] > 100 || Ammo[3] > 100 || Ammo[4] > 100 || Ammo[5] > 200 || Ammo[6] > 100 || Ammo[8] > 1)
    {
    SendACWarning(i, "Munitions Hack");
    }
    }




    //armorhack
    new Float:AP;
    GetPlayerArmour(i, AP);
    if(AP > 25)
    {
    SendACWarning(i, "Rüstungs Hack");
    }




    //airbreak
    if(GetPlayerAnimationIndex(i) == 958 || GetPlayerAnimationIndex(i) == 959 || GetPlayerAnimationIndex(i) == 961 || GetPlayerAnimationIndex(i) == 962)
    {
    SendACWarning(i, "Airbreak");
    }




    //speedhack
    new Float:V[3], Float:SumV;
    GetPlayerVelocity(i, V[0], V[1], V[2]);
    if(V[0] > 0 && V[1] > 0) SumV = V[0] + V[1];
    if(V[0] < 0 && V[1] < 0) SumV = V[0] + V[1];
    if(V[0] > 0 && V[1] < 0) SumV = V[0] - V[1];
    if(V[0] < 0 && V[1] > 0) SumV = V[1] - V[0];
    if(SumV > 0.44 || SumV < -0.44)
    {
    format(iString, sizeof(iString), "Speedhack/Macros/Slidebug -- Geschwindigkeit: %.5f", SumV);
    SendACWarning(i, iString);
    }
    }
    }
    }

  • Auch nichts auffälliges.
    Probier mal im Befehl oben die params zu entnehmen, da du diese eh nicht benötigst.


    Folgendes ganz oben im Befehl einbauen;
    #pragma unused params