[SHOEBILL] Textdrawsystem

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
  • Textdraw-System (0.1e)


    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    https://youtu.be/9fnw4BdCeoM
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    https://www.youtube.com/watch?v=EiAyf3hbyhU


    Meine Präsentation des System ist schon etwas länger her (SAMP GUI Library).


    Ich habe mich dazu entschieden, dieses System zu veröffentlichen, da es immer wieder Personen gibt, die ein eigenes GUI nutzen wollen, aber dazu keine Erweiterungen wie Clientside Plugins bzw. diese nicht selbst schreiben wollen.
    Zudem ist es für mich nicht mehr sinnvoll, da es Textdraw Limits gibt und ich ein GUI System erschaffen will, das eine gute Performance und neue Grafiken hat. Dazu eigne ich mir Modifizieren und C++ an, damit ich selbst dieses System als GUI als clientside & serverside Plugin nutzen kann.
    Dieses Plugin läuft serverside und ist für Shoebill in Java geschrieben.


    In der Readme auf GitHUB ist ein Beispielcode. Wie ihr in den Videos seht, ist vieles möglich und man kann es auch einfach erweitern (da das Grundgerüst komplett fertig gebaut ist).
    Es gibt Components ("Komponenten") und Attachments. Die Komponente kann man einfach zu jeder Seite hinzufügen. Die Attachments kann man an die Komponenten anheften. Das ist Beispielsweise praktisch, wenn man eine Bar ("Balken") hat und dort einen Text als Attachment anheftet.
    So kann man einfach viele Seiten dynamisch erstellen, dynamisch Komponenten und Attachments hinzufügen oder entfernen, Daten über Text/String Identifizierung setzen und entgegennehmen.


    Weitere Infos kommen morgen, wollte das erstmal hinter mich bringen mit dem Release, bevor ich das vergesse ^^


    [tabmenu]


    [tab='Informationen']

    • Programmiersprache: Java (für das Shoebill Plugin)
    • Programmierdauer: Einige Wochen, je nachdem, wie man Lust und Zeit hatte
    • Bugs vorhanden: Ja, kenne bisher nur 2, aber bin mir nicht sicher, ob die jemand finden wird ^^
    • Probleme: Man sollte das Plugin bis jetzt nur mit anderen Shoebill Plugins oder Gamemodes nutzen, da bis Shoebill 2.0 draußen ist, es keine Detection gibt, wann von PAWN aus TextDraws erstellen wurden -> Man kann Probleme mit den Limits bekommen und das Plugin kann abschmieren
    • Bedienung: Sehr einfach, jedenfalls kann man sich mit IntelliJ IDEA sehr schön daran ausprobieren





    Fragen / Probleme? Immer her damit ^^
    [tab='Aufbau (Struktur + Technisch)'][subtab='Struktur']
    Um das System dynamisch gestalten zu können, habe ich es vom kleinsten Baustein bis zum größten Baustein aufgebaut.
    Doch was heißt das genau:
    Das kleinste Element sind die Attachments.
    Diese kann man den Components hinzufügen, welche man wiederum einem Container oder Page hinzufügen kann. Und diese wird dann einem Panel hinzugefügt. Alle Elemente sind modifizierbar, so z.B. auch das Design sehr einfach durch hinzufügen und standardisieren.
    [subtab='Technisch']
    Beim Programmieren geht man jedoch entgegengesetzt vor:
    Zuerst erstellt man oder lädt die Referenz zum Panel. Jeder Spieler besitzt nur ein Standardpanel. Weiter wurde (noch?) nicht programmiert. Das Panel ist die Verwaltungsebene. Es speichert alle anderen Referenzen wie Seiten, Container, Überschrift usw...
    Danach erstellt man eine Seite oder einen Dialog, welcher zum Panel hinzugefügt werden muss.
    Danach kann man auf die Komponenten eingehen. Durch events kann man alles dynamisch und zeitlich unabhängig abspielen lassen. An die Komponente kann man schließlich noch Attachments anfügen und am Ende, falls man einen Dialog erstellt hat, sollte man diesen noch anzeigen.
    [subtab='Besonderheiten']
    Wie man auch am Beispiel des ColorPickers sieht, kann man das System auch ohne Dialoge und Seiten benutzen. Dazu muss man einfach einen Container erstellen und ihn dem Panel hinzufügen, damit der Container verwaltet werden kann.
    [tab='Beispielcode Colorpicker']Beispielcode wie man den beim Colorpicker den rechten Rand mit den Farbboxen einfach erstellen konnte + handling dieser:

    [tab='Beispielcode Dialog+MsgBox']
    Beispielcode für einen Dialog:


    Example how to create a panel with a list, a panelDialog and a MessageBox:

    [/tabmenu]


    Download:
    [hide]https://github.com/Alf21/textdraw-system[/hide]


    Bitte lasst doch ein Kommentar da! :)

  • Danke euch allen! :)


    Ich denke, dass es einige abschreckt, dass es auf Java statt auf PAWN programmiert ist. Aber es ist im normalen Gebrauch eher besser mit der Performance. Zudem habt ihr so ein System und ein Beispiel, wie man dynamisch GUIs programmiert. Erweiterunfen und Ideen wie 'Switcher' habe ich bereits eingefügt. Falls ich Zeit habe, werde ich alles noch ergänzen. Aber momentan gibt es wegen fehlenden Anfragen und fehlender Interesse keine Motivation, dies zu implementieren.


    Falls ihr einen Guide oder hilfe braucht, kann ich das gerne anfertigen. Ansonsten läuft es problemlos und sehr gut von der Performance her. Einfache Bedienung. Falls es jedoch Probleme gibt, werde ich oder @123marvin123 (der fortführende Entwickler des Plugins sicher helfen.


    Ich bin auch für PNs offen oder Posts an die Pinwand ;)


    @iPower: Indem ich in Java Klassen erstellt habe, welche man simple erweitern kann und modifizieren kann. Falls du dich in Java mit ArrayLists auskennst, diese nehmen dynamisch Objekte eine bestimmten Klasse als Element entgegen. Das ist auch mit den ComponentData möglich, um die Daten eines Komponenten zu bekommen. Wenn ihr Wünsche habt, könnt ihr diese hier auch gerne einfügen. Aber für mich macht Java einfach am meisten Sinn, da es objektorientiert und eher die Zukunft ist :)

  • Find das aufjedenfall nützlich für Anfänger!

    Ich bezweifel das es für Anfänger ist.



    Ansonsten ganze schöne Sachen, vor allem das man es ohne Dialogen nutzen kann wie bei dem Colorpicker

  • Hatte gestern freie Zeit gefunden und mich dazu entschlossen, ein kleines Update (TextdrawSystem:0.4-SNAPSHOT) rauszuhauen.
    Hinzugefügt wurde u.a. ein neuer Component "ClickableTextdraw", um eine Alternative zu den Buttons zu haben, falls man eben nur einen Textdraw ohne Text haben will (mit onClickHandler, ohne Effekte).
    Außerdem kam ein neues Design ("light") dazu, um auch für das bekannte Design ("normal") eine Abwechslung zu bringen:
    GTA_ San Andreas 23.08.2017 19_45_00.png
    Wünsche, Anregungen, Kritik o.ä. ist gern gesehen ;)