Kick/Ban Fix

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 zusammen


    Viele sollten es kennen
    Seit 0.3x wird kein Grund angezeigt wenn man einen Kickt oder Bant.


    Mit der Include ist der Fehler behoben und der Grund wird wieder mit ausgegeben.
    Es ist zwar nichts großes aber ich poste es hier rein, da hier mehr User reinschauen.


    Die anwendung ist ganz einfach ihr schreibt oben das rein:


    #include <banfix>
    Dann braucht ihr nurnoch das Script zu Compilen und wenn ihr jetzt einen kickt, dann wird der Grund angezeigt.
    Die alten Funktionen werden durch die Include überschrieben
    Kick(playerid)
    Ban(playerid)
    BanEx(playerid,Grund[])
    Das sind die Funktionen der Include, die gefixxt worden sind.
    (im sinne von Texten oder Dialogen das die kommen)


    Hier noch der Quellcode:

    Quellcode
    #if defined _banfix_included
    #endinput
    #endif
    #define _banfix_included

    Quellcode
    native B_Kick(playerid) = Kick;
    native B_Ban(playerid) = Ban;
    native B_BanEx(playerid,const reason[]) = BanEx;

    Quellcode
    forward kickplayer(playerid);
    forward banplayer(playerid);
    forward banexplayer(playerid,const reason[]);

    Quellcode
    stock _Kick(playerid)
    {
    SetTimerEx("kickplayer",100,0,"d",playerid);
    return 1;
    }

    Quellcode
    stock _Ban(playerid)
    {
    SetTimerEx("banplayer",100,0,"d",playerid);
    return 1;
    }

    Quellcode
    stock _BanEx(playerid,const reason[])
    {
    SetTimerEx("banexplayer",100,0,"ds",playerid,reason);
    return 1;
    }

    Quellcode
    public kickplayer(playerid)
    return B_Kick(playerid);

    Quellcode
    public banplayer(playerid)
    return B_Ban(playerid);

    public banexplayer(playerid,const reason[])
    return B_BanEx(playerid,reason);

    #if defined _ALS_Kick
    #undef Kick
    #else
    #define _ALS_Kick
    #endif
    #define Kick _Kick

    Quellcode
    #if defined _ALS_Ban
    #undef Ban
    #else
    #define _ALS_Ban
    #endif
    #define Ban _Ban

    Quellcode
    #if defined _ALS_BanEx
    #undef BanEx
    #else
    #define _ALS_BanEx
    #endif
    #define BanEx _BanEx

    Der Download ist im Anhang
    Einfach die Datei in den Pawno/Include Ordner kopieren, includieren im Script und compilen
    Schon ist alles fertig ;)


    Viel Spaß damit

  • Da einige noch immer fragen stellen wegen ner Message vor den Kick, push ich das mal hier auf :D


    Darf ich ja is ja schon länger als 2 Tage her


    An die anderen aber ein dank für das Feedback obwohl es nix großes ist

    All in all it's just another brick in the wall

  • Solltest mal die Fehler beheben, da das aktuell so nicht funktionieren wird.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Also ich musste noch etwas ausbessern, damit es bei mir funktioniert hat,
    da der Timer zwar gestartet wurde, jedoch nicht gekickt/gebannt wurde.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Naja wo höchstens nen Fehler aufkommen kann is bei BanEX, da SetTimerEx gerne mal die strings nicht oder fehlerhaft übergibt


    Bei mir lief es von anfang an ohne Probleme und das tut es jetzt auch noch ich weiß nicht was du alles in dein Script stehen hast das er die nicht anerkannt hat

    All in all it's just another brick in the wall

  • Ja, das Include ist echt gut.


    Aber was auch für ein Blödsinn mit dem Timer man jetzt machen muss, ich verstehe denn Sinn einfach nicht..


    Ich sage nur, die Version 0.3x wurde von den SA-MP Leuten echt FAIL Programmiert.

  • Aber was auch für ein Blödsinn mit dem Timer man jetzt machen muss, ich verstehe denn Sinn einfach nicht..


    Das sollte irgendwas mit sicherheit werden wenn es mich nicht irrt das keine Message mehr kommt


    Naja ich hoff ma das es in 0.4 gefixxt wird

    All in all it's just another brick in the wall

  • Laut einem Programmierer von SA:MP haben die das absichtlich geändert.


    Richtig, die zuvor geschickten Pakete werden ignoriert, deswegen muss der Timer her, damit die noch verarbeitet werden können :thumbup:


    Somit ist das kein "bug", aber schwachsinnig ;D

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Dieses Include Funktioniert bei mir nicht ...


  • Hast du irgendwas in dein Script das kick auf einer anderen Funktion legt?
    Denn bei mir klappt alles 1A und ich hab die selbe wie hier


    Eigentlich nicht, ich habe es einfach so gemacht und das geht.


    forward OnKicked(playerid);
    public OnKicked(playerid)
    {
    Kick(playerid);
    }
    stock KickEx(playerid)
    {
    SetTimerEx("OnKicked", 20, false, "i", playerid);
    return 1;
    }