dynamicReport v1.12

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,
    heute stelle ich euch mein erstes veröffentlichtes Filterscript vor. Es ist ein Reportsystem, mit dem man Spieler aufgrund verschiedener Gründe mit einer Kurzbeschreibung den Admins melden kann.
    Diese Beschwerde wird als Datei (oder in einer MySQL) gespeichert und falls gewünscht einem Admin gesendet.


    Englische Version



    Das Script ist sozusagen dynamisch/flexibel aufgebaut, was heißt, dass ihr selbst ohne Scriptkenntnisse ganz einfach Einstellungen treffen könnt.
    Daher rührt auch der Name des Scripts (und meiner zukünftigen): dynamic Report


    Außerdem sind 3 Speicherungsmethoden zulässig.

    • MySQL (Plugin von Strickenkid, ist im Download inbegriffen)
    • Dini (Include von DracoBlue, ist im Download inbegriffen)
    • fwrite-Funktionen (benötigt keine Includes, SA:MP native Funktionen)

    Wie verwendet man das Reportsystem?

    • /report oder /melden - Danach den Dialogen folgen
    • TAB-Menü, Spieler anklicken - Danach den Dialogen folgen (kann falls nicht gewollt deaktiviert werden)
    • /showtickets, /tickets, /checkreports - Als RCON-Admin (oder im Gamemode per pVar gespeichert, s. Changelog) um alle erstellten Tickets einzusehen (erst ab v1.12 am 24.02.)

    Was muss vor dem Nutzen des Scripts erledigt werden?

    • Im Script muss eingestellt werden, welche Dateispeicherungsmethode verwendet wird. Dazu bitte den Anweisungen im Script folgen und die entsprechenden Zeilen ausklammern.
    • Soll dini/fwrite zum Speichern verwendet werden, so muss der Pfad im Scriptfiles-Ordner angegeben und der entsprechende Ordner manuell erstellt werden.
    • Wird MySQL verwendet, so muss man die Nutzerdaten angeben. Dazu ebenfalls den Anweisungen folgen.

    • Code
      CREATE  TABLE  `reports` (  `id` INT NOT  NULL  AUTO_INCREMENT ,  `reporter` VARCHAR( 24  )  NOT  NULL ,  `reported` VARCHAR( 24  )  NOT  NULL ,  `reason` VARCHAR( 24  )  NOT  NULL ,  `description` VARCHAR( 68  )  NOT  NULL ,  `read` INT( 2  ) ,    `time` VARCHAR( 24  )  NOT  NULL ,  PRIMARY  KEY (  `id`  )   )

    Warum Padarom's Script?
    Weil ich bereits seit knapp 3 1/2 Jahren im deutschen SA:MP Forum registriert bin, seitdem knapp 900 Beiträge sammeln konnte und mir daher einen recht ansehlichen Ruf erarbeitet habe, ohne wirklich negativ aufzufallen.
    Außerdem habe ich das teils erfolgreiche Projekt "Cleared to Land" geleitet und dafür gescriptet (das Script gibt es in meiner Signatur zu finden). Ebenfalls geleitet und gescriptet habe ich (für) das Projekt "xReallifex" (später Dynamic Reallife, wird ggf. bald fortgesetzt).
    Wie ihr also sehen könnt, habe ich einiges an Erfahrung gesammelt. Diese Erfahrung, gemischt mit dem Inhalt meines Filterscripts ergibt nur eins: Download- und Nutzpflicht!


    Irren ist menschlich...
    Deshalb wusste ich auch nicht bei jeder Scriptpassage genau, welchen Code ich benötige. Da ich die File-Funktionen bisher noch nie in der Praxis verwendet habe, wusste ich auch erstaunlich wenig über diese bescheid - Zumal die Dokumentation in der englischen Wiki dafür recht dürftig ausfällt. Aus diesem Grund habe ich das ein oder andere Mal nach Hilfe gefragt, und bedanke mich hierbei bei ein paar Leuten, die mir mehr oder weniger geholfen haben.
    Goldkiller, BloodyEric, Y_Less (Hilfe im englischen Forum)

    Changelog


    Download
    Pastebin
    Mediafire
    Virustotal Scan
    Lizenz:


    Screenshots




    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    23 Mal editiert, zuletzt von Padarom () aus folgendem Grund: Update auf dynamicReport v1.12 - Inkl. Changelog

  • "\nIch möchte nur die Admins nerven"


    Sinn .. ?


    Schaut gut aus, gefällt mir 10/10

  • Danke für die guten Bewertungen :)


    @Bear: Sollte nur ein kleiner Schmankerl sein ;)
    Meisternuke: Die Admins geben einen CMD ein, worauf sich eine Liste öffnet (10 Einträge, danach Seite 2 mit ebenfalls 10 Einträgen). Jenachdem welchen Eintrag man anklickt kommt man zu einer Beschreibung der Beschwerde (ähnlich dem Bestätigen-Dialog für's Absenden). Dort kann man die Beschwerde dann auch bei Bedarf löschen.
    Vielleicht werde ich daraus dann auch noch ein Ticketsystem machen, mit dem die Admins dann direkt den jeweiligen Nutzer, der die Beschwerde abgesendet hat, sprechen können.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Nicht schlecht. Kann man die Tickets auch annehmen und das man sofort in einem Supporter-Chat ist?


    Sonst 10 / 10 Punkte.

  • Soweit ganz gut 8/10. warum nur 8?
    1. Fehlt (noch) wie du schon geschirben hast: Ingameliste zum Einsehen aller Reports
    2. Warum lässt du die MYSQL-Tabelle nicht automatisch erstellen?


    Bekommst auch noch ne PM von mir.
    edit: Pm geht erst nach dreundes annahme also warte ich mal.

  • Wird so sein, wie ich es auch bei Cleared to Land gemacht hab.
    Ein Admin sieht, dass ein Ticket geschrieben wurde und klickt dann in der Ticketbeschreibung auf 'nen Button.
    Dann wird dem Schreiber des Tickets (wenn er online ist) eine Nachricht gesendet, dass er bitte mit einem CMD dieses Ticket annehmen soll.
    Danach kann man einfach ohne CMD miteinander schreiben, bis einer von beiden einen CMD zum Schließen eingibt.


    Kleine Zwischenfrage an die Scripter:
    Überschneidet sich OnPlayerText im FS mit dem des GM's? Also wenn ich im FS return 0; schreibe, aber im GM return 1; steht, wird die Nachricht ja trotzdem gesendet?

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Also, Es ist mit Filterscripten so:
    Die Publics werden zuerst in den Filterscripten ausfgeführt in der reihenfolge in der sie geladen worden sind.
    Dannach kommt das Gm.
    Sollte ein Filterscript nun ein return 1; bei OnPlayerText haben, so wird OnPlayerText bei allen nachfolgenden Filterscripts und dem gm nicht mehr ausgeführt.

  • Okay danke, dann klappt das ja wie geplant (wird man aber auch noch de/aktivieren können, falls sich da was wichtiges mit dem GM überschneiden würde).
    Hab deine Anfrage angenommen, kannst PN schreiben ;)

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • So, mir ist aufgefallen dass du zum einstellen der Speicherart 3 defines benutzt...
    Warum nicht nur 1 define?
    Bei dir ist es nun möglich ausversehen mehrere Speicherarten auszuwählen...


    Auch benötige ich wenn ich fwrite auswähle trotzdem die Dini und Mysql Include... Warum? ist doch in dem fall unnötig.


    edit: ach und benutz bei Filterscripten wenn möglich immer nur eine dialogid :) auch bei mehreren Dialogen :)

  • Soo, deine Tipps/Vorschläge/Bugs sind behoben.
    Update v1.03 ist draußen, Changelog im Hauptpost.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Update auf v1.12 - Pastebin und mediafire wurden aktualisiert.
    Ich hab mein bestes getan alles zu testen, sollten aber dennoch Bugs auftreten (insbesondere im MySQL-Part, das konnte ich noch nicht testen), bitte ich euch diese zu melden.
    Hier nochmal das Changelog:

    Code
    dynamicReport v1.12 - 24.02.2012-19:45
    + Falls gewünscht, kann nun auch zwischen Gamemode und Filterscript kommuniziert werden, und das Adminlevel aus einer frei definierbaren PVar gelesen werden.
      Damit kann eine Nachricht auch an Nicht-RCON-Admins gesendet werden.
    + Command /showtickets, /tickets, /checkreports hinzugefügt, mit dem alle Tickets ingame eingesehen werden können (und auch ingame löschbar sind).
    + Adminchat zwischen Beschwerdeschreiber und Admin eingefügt.
    + Bei der Ticketanzeige wird nun ebenfalls farbig hinterlegt, ob das Ticket bereits von einem Admin eingesehen wurde (dafür die neue MySQL-Anweisung beachten, Feld "read" hinzugefügt.)
    # fwrite-Funktionen werden dynamischer erstellt. Keine Abhängigkeit von der Datei num.txt mehr.



    edit: Ein Bug ist mir schon bekannt - Wenn in die Beschreibung der Beschwerde ein sehr langer Text eingegeben wird, wird der Beschwerde-Grund nicht angezeigt. Aktuell verschmerzbar, da dies nicht oft vorkommen sollte.


    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger