BL_Admin [Filterscript]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • BL_Admin [Filterscript]

    Hallo.
    Ich möchte euch mein neues Filterscript vorstellen. Es handelt sich hierbei um ein Adminsystem.
    Folgende Funktionen enthält es:
    •Kicken
    •Bannen
    •Katapultieren (Auch bekannt als Slap)
    •Warnen
    •Töten
    •Heilen (+HP)
    •Verletzen (-HP)
    •Flüstern
    •Explodieren

    Jedoch nicht in Form von Befehlen, sondern man benötigt die TAB-Leiste. Man klickt auf einen Spieler & wenn man Admin ist, kann man das ganze in Form eines Dialoges verwalten.
    Wenn man sich selber anklickt kann man folgendes machen:
    •Den Server neustarten
    •Eine Servernachricht versenden



    Zusätzlich gibt es dafür einen Befehl mit dem man Admin wird & einen /makeadmin [ID] Befehl für schon bestehende Admins.

    Pastebin: pastebin.com/XFMjn3Fk (V2)

    Vorschläge für ein V3 sind erwünscht.

    [expander]Ich weiß es ist nicht so schwer sowas zu scripten, jedoch denke ich, dass ich damit einpaar Leuten helfen kann.[/expander]

    Mit freundlichen Grüßen,
    Blood

    Edit: Vorherige Version war verbuggt, ist nun entbuggt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Blood ()

  • Ich würde den makeadmin-Befehl einfach für RCON-Admins (IsPlayerAdmin) zulassen, dann brauch man keinen "geheimen Befehl", um sich vorher selbst Admin zu machen.

    Was du vielleicht sonst noch machen könntest, falls du noch Ideen brauchst :):
    • Waffen vergeben
    • Score vergeben
    • Regeln erstellen, ändern, löschen und anzeigen lassen natürlich
    • Fahrzeuge spawnen und wieder zerstören

    Noch ein Hinweis:
    Im Script solltest du darauf achten, wo es Sinn macht else if oder auch eine switch-Kontrollstruktur zu verwenden.

    Mit freundlichen Grüßen,
    Piranha.
  • Blood schrieb:

    TutNichts schrieb:

    Ich würde dir empfehlen mit switch & case zu arbeiten: forum.sa-mp.de/gta-multiplayer…4-switch-case/#post419256

    Desweiteren würde ich den "ocmd:tioqzsggdnas" wegnehmen und das mit PVar's und einem #define aus dem Gamemode regeln. :)
    Habe ich versucht jedoch konnte ich dort nicht so arbeiten:
    case 0:
    SendClientMessage(...);
    ShowPlayerDialog(..);


    Wie genau meinst du das?


    Das mit dem case machst klappt eigentlich so:
    [pwn]switch(Bedigung) { case 0: { /* ... */ } }[/pwn]

    Zu dem "tioqzsggdnas": Schau mal was @Piranha: geschrieben hat. ;)
  • Piranha schrieb:

    Ich würde den makeadmin-Befehl einfach für RCON-Admins (IsPlayerAdmin) zulassen, dann brauch man keinen "geheimen Befehl", um sich vorher selbst Admin zu machen.

    Was du vielleicht sonst noch machen könntest, falls du noch Ideen brauchst :):
    • Waffen vergeben
    • Score vergeben
    • Regeln erstellen, ändern, löschen und anzeigen lassen natürlich
    • Fahrzeuge spawnen und wieder zerstören

    Noch ein Hinweis:
    Im Script solltest du darauf achten, wo es Sinn macht else if oder auch eine switch-Kontrollstruktur zu verwenden.

    Mit freundlichen Grüßen,
    Piranha.
    Waffen vergeben, wird reinkommen :D
    Score ebenfalls.
    Das mit den Regeln werde ich auch versuchen
    Das mit dem Auto ebenfalls :D

    Aber eine Frage.

    [pwn]case 4:
    SetPlayerHealth(player, 0);
    format(string,sizeof(string),"Du hast %s administrativ getötet.",cname); //error zeile
    format(string2,sizeof(string2),"Admin %s hat dich getötet.",pname);
    SendClientMessage(player,Weiss,string2);
    SendClientMessage(playerid,Weiss,string);[/pwn]
    Ich bekomme folgenden Error:
    [pwn]C:\Users\pc\Desktop\Server\filterscripts\Adminsystem.pwn(105) : error 002: only a single statement (or expression) can follow each "case"
    C:\Users\pc\Desktop\Server\filterscripts\Adminsystem.pwn(105) : warning 215: expression has no effect[/pwn]
  • Wenn auf einen Fall ("case") mehrere Anweisungen folgen sollen, wie in deinem Beispiel, müssen diese Anweisungen auch mit geschweiften Klammern (Mengenklammern) umschlossen werden.
    [pwn]case 4:
    { // <--
    SetPlayerHealth(player, 0);
    format(string,sizeof(string),"Du hast %s administrativ getötet.",cname); //error zeile
    format(string2,sizeof(string2),"Admin %s hat dich getötet.",pname);
    SendClientMessage(player,Weiss,string2);
    SendClientMessage(playerid,Weiss,string);
    }[/pwn]
    Soll nur eine Anweisung ausgeführt werden, kann man die Klammern weglassen.
    Ist also genauso wie bei einer if-Abfrage.
  • Einmal eine kleine Übersicht über Lösungsansätze:
    • File-Funktionen von SAMP
      Die Regeln alle in einer Datei speichern und für jede Regel einfach eine Zeile verwenden.
      Dann einen Dialog für die Admins erstellen, wo man auswählen kann, ob man etwas ändern, hinzufügen oder löschen möchte.

      Beim Hinzufügen den Text dann einfach an die Textdatei anhängen in eine neue Zeile, indem man die Datei mit fopen im "io_append"-Modus öffnet und dann fwrite verwendet.
      Um die Regeln anzuzeigen, die ganze Datei einfach Zeile für Zeile mit fread auslesen.
      Zum Löschen würde ich die Regeln in einem Listendialog anzeigen lassen und dann auswählen lassen. Anschließend die ausgewählte Zeile löschen, indem man soviele Zeilen liest, wie der Wert in "listitem" groß ist.
      Das Löschen einer Zeile scheint allerdings etwas tricky zu sein, weil es keine Funktion hierfür gibt. Daher muss man den Inhalt einer Datei in eine neue Datei kopieren und den Teil, den man löschen möchte, lässt man einfach aus (siehe dini oder andere Speichersysteme).
      Das Ändern einer Regel ist dem Prozess vom Löschen ja ähnlich.

    • Includes wie dini
      Ähnlich wie bei den File-Funktionen von SAMP (jedoch etwas einfacher).
      Eine Datei zum Speichern verwenden und in der Datei die Anzahl der Regeln festhalten, um alle Regeln auszulesen.
      Zum Auslesen, Speichern, etc. dann die dini-Funktionen verwenden, die einem etwas Arbeit ersparen.

      Die Datei mit den Regeln sieht dann z.B. so aus:
      [pwn]ruleCount=3
      rule0='Nur'
      rule1='Ein'
      rule2='Beispiel'[/pwn]

    • Datenbank
      Mit SQL-Kenntnissen sollte das keine große Herausforderung sein.

    Die letzten beiden Lösungen sollten die einfachsten sein.
    Die erste kann aber möglicherweise als gute Pawn-Übung dienen. :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Piranha ()