Anti Speedhack/Airbreak

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
  • Guten Tag, ich habe versucht mal ein eigenes anti Airbreake/speedhack system zu scripten.


    Dazu frage ich innerhalb 2 sekunden 2 mal die posi ab und errechne die distanz zwischen den posis. wenn die distanz höher als 50m ist, bekommen die Admins ne warnung.
    Sobald er mit einem Fahrzeug oder zu fuß über 550m ist ( Höchste punkt den man erreichen kann ~530 ) bekommen die Admins ebenfalls ne warnung. Wenn man in einem Flugobjekt sitzt und über 1000m kommt ( Höchstens ~960 zu schaffen) bekommen die Admins auch eine warnung.


    Das einzige was nicht klappt, ist das mit der Distanz. sobald ich in ein autosteige, kommen jede sekund warnungen rein, obwohl ich mich kein mm bewege.


    Hier ma scriptausschnitt:


    public check()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    //airbreake:
    new Float:px[3], Float:py[3], Float:pz[3];
    if(gestorben[i] == 0 && gespawnt[i] == 0 && teleport[i] == 0 && mapport[i] == 0 && geslappt[i] == 0)
    {
    if(GetPlayerInterior(i) == 0 && GetPlayerVirtualWorld(i) == 0)
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if(Airbreakecheck[i] == 0)
    {
    GetPlayerPos(i,px[0],py[0],pz[0]);
    Airbreakecheck[i]++;
    }
    else if(Airbreakecheck[i] == 1)
    {
    GetPlayerPos(i,px[1],py[1],pz[1]);
    if(distanz(i,px[0],py[0],pz[0],px[1],py[1],pz[1]) >= 50)
    {
    //cheater[i]++;
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) steht unter Verdacht eines Airbreak/Speedhack-Hacks!",name,i);
    Bangrund[i] = "Speedhack";
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    Airbreakcheck[i] = 0;
    }
    GetPlayerPos(i,px[2],py[2],pz[2]);
    if(pz[2] >= 1000)
    {
    //cheater[i]++;
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) steht unter Verdacht eines Airbreak/Speedhack-Hacks!",name,i);
    Bangrund[i] = "Speedhack";
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    else if(pz[2] >= 550)
    {
    if(!IstImFlugobjekt(i))
    {
    //cheater[i]++;
    new str[125];
    format(str,sizeof(str),"[System] %s(%d) steht unter Verdacht eines Airbreak/Speedhack-Hacks!",name,i);
    Bangrund[i] = "Speedhack";
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 2)
    {
    SendClientMessage(j,0xFFFF00FF,str);
    }
    }
    }
    }
    }
    }
    }
    if(cheater[i] >= 5)
    {
    new bstr[125];
    format(bstr,sizeof(bstr),"%s wurde vom System gebannt, Grund: %s.",name,Bangrund[i]);
    SendClientMessageToAll(0xFF6347FF,bstr);
    Spieler[i][ban] = 1;
    Spieler[i][bangrund] = Bangrund[i];
    Kick(i);
    }
    }
    }
    }
    return 1;
    }


    Ob er in einem Flugzeug sitzt:
    public IstImFlugobjekt(playerid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);
    if(model == 417 || model == 425 || model == 447 || model == 460 || model == 469 || model == 476 || model == 487 || model == 488 || model == 497 || model == 511 || model == 512 || model == 513 || model == 519 || model == 520 || model == 548 || model == 553 || model == 563 || model == 577 || model == 592 || model == 593) return 1;
    return 0;
    }


    die distanz errechnen aus den 2 posis:
    stock distanz(playerid,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
    {
    new Float:dis;
    if (!IsPlayerConnected(playerid)) return -1;
    dis = floatsqroot(floatpower(floatabs(floatsub(x1,x2)),2)+floatpower(floatabs(floatsub(y1,y2)),2)+floatpower(floatabs(floatsub(z1,z2)),2));
    return floatround(dis);
    }


    Ich hoffe ihr könnt mir da weiterhelfen.


    MfG
    Simon

  • Code sind sieht gut aus!
    Werde es nachher mit mein Scripter testen.


    PS: Erster Post ^^


    Gruß


    EDIT: Rechtschreibfehler verbessert

    =================================

    * Spiel: GTA San Andreas
    * Mod: Multiplayer
    * Version: 0.3c
    * Name: United States - RealLife
    * Script: Selfmade
    * Forum: US-RL.de
    * TeamSpeak: 81.89.107.237:9987

    * Server IP: 81.89.107.237:7777
    =================================



    German Roleplay by [GRP]Team.rar

    German Nova-eSports RealLife v2.rar


    Download: Click Here


    Verwarnungen: 1/3
    Grund: Spam

  • Also ich denke mal, das alles soweit richtig ist, nur die Distanz falsch errechnet wird.


    ob er sich innerhalb 1-2 sekunden nun 30,40 oder 50m bewegen darf, muss man dann austesten. ein infernus ist schneller als ein roller und man muss dann halt schauen, ab wann es speedhack ist..