Nachricht kommt mehrmals

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, und zwar teste ich gerade einige AntICheats so, wenn ich den flyhack teste werde ich gekcikt aber es kommt mehrmals: .. wurde vom Server gekickt. Grund: ..


    Code: new lib[32], name[32];
    if(GetPlayerAnimationIndex(playerid))
    {
    GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
    if(!strcmp(lib, "SWIM", true && !IsPlayerInWater(playerid)))return SCMToAllF(Rot,"AdminCMD: %s wurde vom Server gekickt. Grund: Flyhack!",SpielerName(playerid)),Kicks(playerid);
    }

  • Ganz oben im Code:
    new pBanned[MAX_PLAYERS];


    OnPlayerConnect:
    pBanned[playerid] = 0;


    Dein Timer:
    new lib[32], name[32];
    if(GetPlayerAnimationIndex(playerid))
    {
    GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
    if(!strcmp(lib, "SWIM", true) && !IsPlayerInWater(playerid) && pBanned[playerid] != 1)return SCMToAllF(Rot,"AdminCMD: %s wurde vom Server gekickt. Grund: Flyhack!",SpielerName(playerid)),pBanned[playerid] = 1,Kicks(playerid);
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()


  • Zitat

    Ehm Jeffry und was bring das ? ;(


    Bringt, dass ab dem Zeitpunkt des Bannes keine Nachricht mehr gesendet wird, da eine Variable, die auf 1 gesetzt wurde dies unterbindet.


    Hätte dann allerdings den Nachteil, dass wenn man die Variable nicht manuell entfernt, dass dann die Nächsten auf der ID ausgeschlossen wären.
    Somit empfielt es sich eher PVar's zu verwenden, anstatt ein Array.


    Gazette:

  • Beavis: Oh fail, Danke dir. :thumbup:



    So ist es richtig:
    new lib[32], name[32];
    if(GetPlayerAnimationIndex(playerid))
    {
    GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
    if(!strcmp(lib, "SWIM", true) && !IsPlayerInWater(playerid) && pBanned[playerid] != 1)return SCMToAllF(Rot,"AdminCMD: %s wurde vom Server gekickt. Grund: Flyhack!",SpielerName(playerid)),pBanned[playerid] = 1,Kicks(playerid);
    }


    Gazette: Das bringt, dass er nicht nochmal gebannt wird. Der Code wie er zuvor war war Käse von mir, ich hab nicht gesehen, dass du hinten alles in den return geschrieben hast.


  • Ich glaube nicht das die falsch ist. Bringt auch kein unterschied


    Ist dennoch ein Syntaxfehler, weshalb das keinen Error bringt, keine Ahnung.
    Im Endeffekt sollte man sauberer arbeiten und nicht einfach darauf setzen, dass es "keinen Unterschied bringt", es ist schlicht und ergreifend falsch.
    Die Funktion strcmp() ist mit dem "true" beendet, da der letzte Parameter eingegeben wurde. Danach schließt man die Funktionsparameter mit einer geschlossenen Klammer, was bei Dir nicht geschehen ist.

  • leider passiert jetzte garnichts mehr wenn ich cheate. HIer mal den ganzen OnPlayerUpdate:
    public OnPlayerUpdate(playerid)
    {
    new lib[32], name[32];
    new SName[MAX_PLAYER_NAME]; GetPlayerName(playerid,SName,MAX_PLAYER_NAME);
    if(switched[playerid] == 2)
    {
    GetPlayerPos(playerid,NewPos[playerid][0],NewPos[playerid][1],NewPos[playerid][2]);
    new Float:d = Distance(OldPos[playerid][0],OldPos[playerid][1],OldPos[playerid][2],NewPos[playerid][0],NewPos[playerid][1],NewPos[playerid][2]);
    if(d >= 18 && posbyserver[playerid] != 1)return SCMToAllF(Rot,"Spieler '%s' wurde vom Server gekickt. Grund: Airbrake / Teleporthack!",SName),pBanned[playerid] = 1,Kicks(playerid);
    switched[playerid] = 1;
    }
    else if(switched[playerid] == 1)GetPlayerPos(playerid,OldPos[playerid][0],OldPos[playerid][1],OldPos[playerid][2]),switched[playerid] = 2;


    if(GetPlayerAnimationIndex(playerid))
    {
    GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
    if(!strcmp(lib, "SWIM", true) && !IsPlayerInWater(playerid) && pBanned[playerid] != 1)return SCMToAllF(Rot,"AdminCMD: %s wurde vom Server gekickt. Grund: Flyhack!",SpielerName(playerid)),pBanned[playerid] = 1,Kicks(playerid);
    }


    return 1;
    }


    Beim Anti - Airbreak funktioniert das...

  • Bist du sicher, dass es zuvor korrekt funktioniert hat? Du hattest ja die Klammer falsch gesetzt.


    Füg das so mal ein, und poste dann was kommt wenn du cheatest (Server Log). Achtung, das werden einige Zeilen sein.
    if(GetPlayerAnimationIndex(playerid))
    {
    GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
    printf("lib = %s , InWater = %d , pBanned = %d", lib, IsPlayerInWater(playerid), pBanned[playerid]);
    if(!strcmp(lib, "SWIM", true) && !IsPlayerInWater(playerid) && pBanned[playerid] != 1)return SCMToAllF(Rot,"AdminCMD: %s wurde vom Server gekickt. Grund: Flyhack!",SpielerName(playerid)),pBanned[playerid] = 1,Kicks(playerid);
    }

  • Hier wo "SWIM" steht das war ich wo ich geflogen bin:
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = PED , InWater = 0 , pBanned = 0
    [20:17:24] lib = SWIM , InWater = 3 , pBanned = 0


    Ist nur ein kleiner ausschnitt ;D

  • if(GetPlayerAnimationIndex(playerid))
    {
    GetAnimationName(GetPlayerAnimationIndex(playerid),lib,32,name,32);
    if(!strcmp(lib, "SWIM", true) && IsPlayerInWater(playerid)==3 && pBanned[playerid] != 1)return SCMToAllF(Rot,"AdminCMD: %s wurde vom Server gekickt. Grund: Flyhack!",SpielerName(playerid)),pBanned[playerid] = 1,Kicks(playerid);
    }