Modcheck System?

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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 Community,


    Ich arbeite an einem Script. Nun sehe ich auf vielen servern ein Modcheck System. (/modcheck ID) oder so.
    Man ist dort und kann nicht ESC und hat Blackscreen. Der Admin testet dabei ob er Healhack/Pika/lag.cs hat.
    Es gibt einen UNfreeze und Freeze Modcheck. Bei Freeze Modcheck darf man kein HP verliehren sonst healhack.


    Nun meine Frage?


    Wie fange ich so ein System an zu Scripten. Brauche dieses System auf mienem DM server.


    MFG
    Wave.


    /e Rechtschreibung

    Geetz,
    -Roman


    Einmal editiert, zuletzt von Jasper. ()

  • new Text:blackTD;
    #define DIALOG_MODCHECK 6
    blackTD = TextDrawCreate(-20.000000,2.000000,"|");
    TextDrawUseBox(blackTD,1);
    TextDrawBoxColor(blackTD,0x000000ff);
    TextDrawTextSize(blackTD,660.000000,22.000000);
    TextDrawAlignment(blackTD,0);
    TextDrawBackgroundColor(blackTD,0x000000ff);
    TextDrawFont(blackTD,3);
    TextDrawLetterSize(blackTD,1.000000,52.200000);
    TextDrawColor(blackTD,0x000000ff);
    TextDrawSetOutline(blackTD,1);
    TextDrawSetProportional(blackTD,1);
    TextDrawSetShadow(blackTD,1);


    ocmd:modcheck(playerid,params[])
    {
    new string[128];
    new para;
    new pID;
    if(!IsPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,COLOR_GREY,"Du bist kein Admin Rang 4!");
    if(sscanf(params,"ui",pID,para))return SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /modcheck [Name/ID] [1 =(freeze) 2 =(unfreezed) 3 =(Aus)]");
    if(para < 1 || para > 3)return SendClientMessage(playerid,COLOR_WHITE,"** Fehler: Verwende als Parameter 1-3 ( 3 = Aus ) **");
    if(pID == playerid)return SendClientMessage(playerid,COLOR_WHITE,"Du kannst dich nicht selbst überprüfen!");
    if(para == 1) // modcheck 1 ( freeze )
    {
    format(string,sizeof(string),"[Modcheck]: %s überprüft %s auf Illegale Modifikationen. ( Type 1 (Freeze) )",PlayerName(playerid),PlayerName(pID));
    SendAdminMessage(string);
    SetPlayerInterior(pID,0);
    TextDrawShowForPlayer(pID,Text:blackTD);
    ShowPlayerDialog(pID,DIALOG_MODCHECK,DIALOG_STYLE_MSGBOX,"Modcheck","{FF0000}Du wirst nun auf Illegale Modifikationen überprüft!","OK","");
    SetPVarInt(pID,"modcheck",1);
    SetPlayerPos(pID,-672.1529,962.2229,12.1328); // cheater wird geportet
    SetPlayerVirtualWorld(pID,33); // virtuelle welt
    SetPlayerPos(playerid,-675.8786,961.8928,12.1328); // sollte klar sein ^^
    SetPlayerVirtualWorld(playerid,33); // ebenfalls
    GivePlayerWeapon(playerid,24,9999);
    GivePlayerWeapon(playerid,25,9999);
    GivePlayerWeapon(playerid,38,9999);
    SendClientMessage(pID,COLOR_RED,"[Modcheck] Du wirst nun auf Illegale Modifikationen überprüft!");
    SendClientMessage(pID,COLOR_RED,"[Modcheck] Solltest du diesen Modcheck umgehen indem du dich Ausloggst");
    SendClientMessage(pID,COLOR_RED,"[Modcheck] Oder auf eine andere Art den Modcheck umgehst");
    SendClientMessage(pID,COLOR_RED,"[Modcheck] Droht die Permanente Sperre!!");
    TogglePlayerControllable(pID,0);
    SetPlayerHealth(playerid,100.0);
    SetPlayerHealth(pID,100.0);
    SendAdminMessage(string);
    }
    if(para == 2)
    {
    format(string,sizeof(string),"[Modcheck]: %s überprüft %s auf Illegale Modifikationen. ( Type 2 (Unfreeze) )",PlayerName(playerid),PlayerName(pID));
    SendAdminMessage(string);
    TextDrawShowForPlayer(pID,Text:blackTD);
    ShowPlayerDialog(pID,DIALOG_MODCHECK,DIALOG_STYLE_MSGBOX,"Modcheck","{FF0000}Du wirst nun auf Illegale Modifikationen überprüft!","OK","");
    SetPVarInt(pID,"modcheck",1);
    SetPlayerPos(pID,-672.1529,962.2229,12.1328); // cheater wird geportet
    SetPlayerVirtualWorld(pID,33); // virtuelle welt
    SetPlayerPos(playerid,-675.8786,961.8928,12.1328); // sollte klar sein ^^
    SetPlayerVirtualWorld(playerid,33); // ebenfalls
    GivePlayerWeapon(playerid,24,9999);
    GivePlayerWeapon(playerid,25,9999);
    GivePlayerWeapon(playerid,38,9999);
    TogglePlayerControllable(pID,1);
    SendAdminMessage(string);
    SetPlayerHealth(playerid,100.0);
    SetPlayerHealth(pID,100.0);
    }
    if(para == 3)
    {
    format(string,sizeof(string),"[Modcheck]: %s hat die Überprüfung von %s beendet.",PlayerName(playerid),PlayerName(pID));
    SendAdminMessage(string);
    TextDrawHideForPlayer(pID,Text:blackTD);
    ShowPlayerDialog(pID,DIALOG_BEENDET,DIALOG_STYLE_MSGBOX,"Modcheck","Modcheck Beendet!","OK","");
    DeletePVar(playerid,"modcheck");
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerVirtualWorld(pID,0);
    SetPlayerHealth(playerid,100.0);
    SetPlayerHealth(pID,100.0);
    SendAdminMessage(string);
    SpawnPlayer(pID);
    SpawnPlayer(playerid);
    }
    return 1;
    }


    stock SendAdminMessage(const message[])
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"admin") >= 1)
    {
    SendClientMessage(i,AMSG,message);
    }
    else
    {
    return 1;
    }
    }
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(GetPVarInt(playerid,"modcheck") == 1)
    {
    SetPlayerPos(playerid,-672.1529,962.2229,12.1328);
    SpawnPlayer(playerid);
    }
    return 1;
    }
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_MODCHECK)
    {
    if(response==0)
    {
    ShowPlayerDialog(playerid,DIALOG_MODCHECK,DIALOG_STYLE_MSGBOX,"Modcheck","{FF0000}Du wirst nun auf Illegale Modifikationen überprüft!","OK","");
    }
    if(response==1)
    {
    ShowPlayerDialog(playerid,DIALOG_MODCHECK,DIALOG_STYLE_MSGBOX,"Modcheck","{FF0000}Du wirst nun auf Illegale Modifikationen überprüft!","OK","");
    }
    }
    return 1;
    }
    Have fun, kannste ja noch anpassen.
    Wenn er bei Modcheck 1 HP verliert, hat er Hacks an.
    Wenn er bei Modcheck 2 keine HP verliert, hat er Hacks an.
    Du kannst noch bei Ondialogresponse das Dialog wieder anzeigen lassen, damit der Spieler die ganze Zeit auf ein OK Button drücken muss(so hab ichs bei mir)

    Einmal editiert, zuletzt von roOlling ()


  • duu scriptest echt geile sachen ich bewundere dich :D
    das werde ich auch benutzen gute arbeit :D

    Moinsen,

    Ich Schreibe aktuell Nebenbei in ein SA:MP Script einfach wegen der Guten alten Zeiten :thumbup:

    Script Fortschritt: ||||||||||||

  • Ohne wie ein Klugscheißer da zustehen...
    Nein,
    dieser Code ist verdammt "basic" angelegt, und ist nicht die ganze Arbeit von DracoBlue.
    Er macht verdammt gute Sachen, die gerade Mal im Anfangsstadium von sa-mp entwickelt wurden.


    Zurück zum Thema Mods.
    Habe mir auch Gedanken dazu gemacht, dazu bin ich gekommen:
    ein Array mit allen erlaubten ID der componenten als Index.
    Ist ein Wert, der nicht dazu gehört, steht Verdacht an fehlerhaften Mods oder Mods die dir Vorteile verschaffen.

  • Schau doch mal in meine Signatur, da ist auch noch eins, allerdings erkennen Heal-Hacks wie die von S0beit, soweit ich weiß, diese Explosion und daher ist mein Modcheck zu 50% nicht wirksam D:

  • Genau, kann man aber leider durch Einfg einfach umgehen.
    Du kannst dir ja dennoch einen /explosion Befehl einfügen.


    ocmd:explosion(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,COLOR_GREY,"Du bist kein Admin Rang 1!");
    new pid;
    new Float:x,Float:y,Float:z;
    if(sscanf(params,"u",pid))return SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /explosion [ID]");
    GetPlayerPos(pid,x,y,z);
    CreateExplosion(x, y, z, 12, 10.0);
    SendClientMessage(pid,COLOR_YELLOW,"Du wurdest auf Healhack kontrolliert!");
    return 1;
    }


    Ich weiß nicht ob er gerade richtig ist, ist hier im Editor geschrieben :)


    Gruß,

  • Ja, das geht auch, aber wie schon gesagt, können das die "moderneren" Heal-Hacks / Godmodes umgehen. :/

  • Hallo,


    könnte mir jemand vielleicht daraus ein Filterscipt machen das läuft?
    Wenn ich es zusammenstelle bekomme ich ein paar errors :P
    Wäre echt Dankbar wenn mir das jemand per PN senden würde also die pwn ohne fehler.
    (Mit dem Explode Command) Hoffe es findet sich jemand :)


    MFG,

    Geetz,
    -Roman


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen