Beste Möglichkeit gegen fake kills?

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
  • Abend, ich bin auf der suche nach dem effektivsten Anti fake kill Script, leider gibt es da so viele...
    Was würde am besten funktionieren? Ich habe das hier gefunden und schien mir so als würde es das beste sein:


    new Float:pHealthFake[MAX_PLAYERS];


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid != INVALID_PLAYER_ID)
    {
    if(Spieler[killerid][AdminLevel] == 0)
    {
    if(GetPlayerWeapon(killerid)!=reason)
    {
    GetPlayerHealth(playerid,pHealthFake[playerid]);
    if(pHealthFake[playerid]>0)
    {
    Kick(playerid);
    }
    }
    }
    }
    return 1;
    }


    Würde sowas gehen?


    (PWN Code ging nicht)


  • new Float:pHealthFake[MAX_PLAYERS];



    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid != INVALID_PLAYER_ID)
    {
    if(Spieler[killerid][AdminLevel] == 0)
    {
    if(GetPlayerWeapon(killerid)!=reason)
    {
    GetPlayerHealth(playerid,pHealthFake[playerid]);
    if(pHealthFake[playerid]>0)
    {
    Kick(playerid);
    }
    }
    }
    }
    return 1;
    }


    Bittesehr :)


    //EDIT
    Und ja so müsste es eigentlich gehen.


  • Was für ein Blödsinn :wacko:


    Der Callback OnPlayerDeath wird nur dann aufgerufen, wenn ein Spieler ein Leben von 0 hat, also ist GetPlayerHealth(playerid,pHealthFake[playerid]);
    if(pHealthFake[playerid]>0)
    totaler Quatsch ^^


    Probiere es doch einfach mal so:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid == playerid) Kick(playerid); //Das ist ein nicht richtiger Kill, er würde hier auch gekickt werden, wenn er von einer Klippe springt oder sich im Wasser ertränkt...
    return 1;
    }

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S



  • Ich habs nicht gescriptet nur ins pwn format gelegt, schau mich nicht an :D


  • Kaliber , die abfrage ist nicht wirklich sehr effektive da mann fakekill auch so gesehen von anderen ausführen lassen kann.
    Damit ist gemeint ich kann mich 1000 mal von spieler 1 töten lassen.
    Daher sollte man die Zeit mit ein berechnen die würde ich hier mit GetTickCount auslesen in eine extra variabel speichern für den spieler und diese dann mit dem zweiten
    auf ruf von OnPlayerDeath subtrahieren und den wert mit einem bestimmten wert vergleichen beispiel 1000 oder 500 also 1 sekunde oder 0.5 sekunden.

  • Kaliber das wäre aber auch nicht gerade die perfekte Lösung wenn er bei ertrinken gekickt wird


    Bei deinem Code passiert das selbe :D


    IPrototypeI
    Nunja, das ist aber auch nur teilweise gut, denn wenn einer mit N00bbeit z.B. F3 1x Drückt stirbt er auch und das könntest du mit einem Timer nicht bemerken ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Fakekill heißt, dass zwar angezeigt wird, dass jemand gekillt wird, aber er in Wirklichkeit keinen Schaden bekommt.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Fakekill heißt, dass zwar angezeigt wird, dass jemand gekillt wird, aber er in Wirklichkeit keinen Schaden bekommt.

    Leider erhöht sich aber der Score/Sein Geld ungemein, und der andere hat dann bei Death XXXX drinstehen :D
    Würde das effektiver sein einen Timer zu erstellen der Prüft wie oft er hintereinander killt? Oder könnte das auch umgangen werden?

  • Dein Ansatz ist schon richtig.
    Bei Fakekills wird OnPlayerDeath aufgerufen, wenn du dort einfach prüfst ob das Leben größer als 0 ist, handelt es sich um einen Fakekill.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Dein Ansatz ist schon richtig.
    Bei Fakekills wird OnPlayerDeath aufgerufen, wenn du dort einfach prüfst ob das Leben größer als 0 ist, handelt es sich um einen Fakekill.

    Ich möchte dich einmal korrigieren, weißt du wie die Fakekill's bei den Programmen arbeiten ?
    Der Spieler muss nicht unbedingt Tot sein wenn er gefaktkillt hat, der Weapon & Range check ist immernoch zuverlässiger als ein Health check : )
    Es ist möglich mit dieser Art aber nicht ganz zuverlässig

  • Wie bitte?
    Wenn ein Spieler lebt obwohl er angeblich stirbt (OnPlayerDeath wird gecallt) ist es ein Fakekill, ich habe keine Ahnung was du daran korrigieren willst.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • So, das ist das letzte was ich hier schreibe, den rest können wir über die Private Nachrichten funktion klären, worauf ich da oben hinweiße, ach warte ich mach es jetzt das es jeder Versteht:


    BöserMann -> Fakekiller
    Spieler1 -> Normaler Spieler
    Spieler2 -> Normaler Spieler


    BöserMann sendet den Server ein packet wie ich oben ja schon beschrieben habe das er von spieler xyz mit der waffe xyz getötet wurde ...


    In der kill list sieht es so aus:


    Spieler1 tötet Bösermann mit WEAPON_m4
    Spieler2 tötet Bösermann mit WEAPON_m4


    So, aber "Bösermann" kann hintergehen das sein Health noch 100 ist und das ganz einfach, er tötet sich selbst bzw lässt sich vom Server töten indem er das Packet durch lässt...


    Verständich genug ?

  • Leider sind wir ja noch nicht zu einer richtigen Lösung gekommen. Habe jetzt nochmal was gefunden wo Prüft wie schnell er hintereinander kill, würde das gehen?


    new antifakekill[MAX_PLAYERS];


    public OnPlayerText(playerid, text[])
    {
    if(strfind(text,"!kill",true) == 0) return Kick(playerid);
    if(strfind(text,"Pixel",true) == 0) return Kick(playerid);



    return 1;
    }



    public OnPlayerDeath(playerid, killerid, reason)
    {
    antifakekill[playerid] ++;
    SetTimerEx("antifakekill2", 1000,false,"i",playerid);
    return 1;
    }



    forward antifakekill2(playerid);
    public antifakekill2(playerid)
    {
    antifakekill[playerid] --;
    if(antifakekill[playerid] > 5)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Du wurdest vom Server gekickt.");
    Kick(playerid);
    }
    return 1;
    }

  • möglich ist viel , jedoch die beste variante ist die welche MU gepostet hatte da du hier 2 wichtige Faktoren berücksichtigst, jedoch ist die variante auch nicht perfekt es kann gut sein das ein spieler
    in der nähe ist der die selbe waffe hat, welche angegeben wird, jedoch das der zufall noch eintritt ist bei einem dm - server eher unwahrscheinlicher