Anti Eject Hack + frage zu Waffenchecken

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,


    wie kann ich überprüfen, ob ein nicht-Fraktionsmitglied mit einem Fraktionsfahrzeug fährt, was nicht ihm gehört?
    Fraktionsfahrzeuge werden so definiert, wenn das helfen sollte. :)
    if(!IsPlayerInFrac(playerid,28))
    {
    for(new wheel = 0; wheel < sizeof(WheelmanVehs); wheel ++)
    {
    if(newcar == WheelmanVehs[wheel])
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied der Wheelman Agency!");
    RemovePlayerFromVehicle(playerid);
    }
    }
    }


    Unter Anti-Eject-Hack verstehe ich, das wenn ein nicht-Fraktionsmitglied (z.B. Zivilist) in ein fremdes Fraktionsfahrzeug einsteigt. Da das System erst ab 20+ km/h erkennt, das jemand in einem fremden Fahrzeug sitzt, könnte das oft zu einem Problem werden, da die User unter 20km/h mit dem Fraktionsfahrzeug fahren können, was wir irgendwie vermeiden wollen.


    Zu meiner zweiten Frage:


    Gibt es irgend eine Definition die prüft ob der jenige Waffen hat? (z.B. unter Level 6)


    Danke schonmal. :thumbup:


    //edit: link entfernt

  • Anti Eject Hack, sehr Simple:

    Spieler steigt ein => Variable=true + SetTimerEx
    SetTimerEx Interval = 1Sekunde / Repeat = false
    public Timername => If IsPlayerInAnyVehicle =>
    AntiEjectWarnings[playerid]++;
    RemovePlayerFromVehicle! + SetTimerEx
    else AntiEjectWarnings[playerid]=0!
    if AntiEjectWarnings >= 3 => Kick!


    Könnte es dir auch eben fertig machen, doch denke das schaffst du alleine.



    Achja, zu xXFireXx, das benutzen nur Anfänger! Wenn man es ordentliche Prüfen möchte, benutzt man GetPlayerWeaponData, damit kann man auch Waffen+Munition auslesen die der Spieler nicht gerade in der Hand hat, benutzt eig. jedes Anti Cheat genau so!

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Das ist schön, aber ganz ehrlich dann poste soetwas nicht! Sowas gibt ihn nur für 0815 Systeme hilfe und das sollte hier vermieden werden... Ich habe auch nicht nachgedacht, na und? Man muss für so eine Frage nicht nachdenken wenn man Ahnung hat.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Was sollen immer diese unnötigen Diskussionen? Kehrt doch mal lieber zum Thema zurück und wenn ihr die vom Vorposter genannte Funktion nicht optimal findet, dann verbessert ihn halt. ^^


    b2T:


    Also ich habe es bisher immer so gemacht:
    Ich habe bei OnPlayerStateChange geprüft ob jemand in ein Fraktionsfahrzeug einsteigt und ihn einfach rausgeschmissen, wenn er nicht in der jeweiligen Fraktion ist.
    Also ungefähr so sollte es aussehen (es geht noch einfacher, aber egal ...):



    // Oben
    new Polizei[5];


    // OnGameModeInit
    Polizei[0] = AddStaticVehicleEx ...
    Polizei[1] = AddStaticVehicleEx ...


    // Callback
    public Polizeiwagen(vid)
    {
    for(new i = 0; i < sizeof(Polizei); i++)
    {
    if(vid == Polizei[i])
    {
    return 1;
    }
    }
    return 0;
    }


    // OnPlayerStateChange


    if(newstate == PLAYER_STATE_DRIVER)
    {
    new getid = GetPlayerVehicleID(playerid);
    if(Polizeiwagen(getid))
    {
    if(Abfrage ob Spieler in Fraktion ist)
    {
    SendClientMessage(playerid,FARBE,"* Dies ist ein Fraktionsfahrzeug.");
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,FARBE, "* Du bist kein Polizist!");
    }
    }
    }


    Natürlich kann man auch eine for-Schleife benutzen, was durchaus einfacher wäre, aber so funktioniert es auch perfekt.


    // Edit: Und denk dran: Da die Fahrzeuge bei 0 beginnen, wird es keine 5 geben, aber der Wert muss immer 1 höher sein. ^^

  • @ZKX:


    Leider habe ich kleine Probleme mit "SetTimerEx" allgemein, bei mir will das nie so klappen wie ich es gerne hätte.^^ SetTimer macht bei mir hingegen nie proleme. Ich währe über weitere hilfe zum AntiEjectHack sehr dankbar. <3




    Das Waffen besitzen unter Level 6 hab ich mit GetPlayerWeaponData umgesetzt, vielen Dank nochmal!


    //edit:


    Ich erhallte die kicknachricht 10x, ausserdem habe ich zu diesem Zeitpunkt auch keine einzige Waffe gehabt.
    Woran liegt das, dass ich ohne Grund beim Connecten gekickt werde?
    Der Code liegt im public "OtherTimer()"

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(PlayerDatei[i][ppLevel] <= 3)
    {
    for (new i2 = 0; i2 < 13; i2++)
    {
    GetPlayerWeaponData(i, i2, weapons[i2][0], weapons[i2][1]);
    format(string, sizeof(string), "[SERVERGUARD] %s wurde gekickt, Grund: Weaponhack", cheater);
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    Kick(i);
    }
    }
    }

    Einmal editiert, zuletzt von tMike ()