SAMP GUI Library

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 (beta 0.1b)

    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.


    Hey, ich bins wieder mit meinen komischen Systemen^^
    Originaler Post: http://forum.sa-mp.com/showthread.php?p=3670135#post3670135


    Heute stelle ich euch mal mein Textdraw System vor, welches ich vor zwei oder drei Wochen angefangen habe, aber halt unterbrochen habe.


    Falls es euch gefällt, lasst bitte ein oder mehrere Kommentare da und falls es sehr nachgefragt ist, werde ich es auch releasen.


    Anwendung:


    Infos:
    Dieses System ist in Java fürs Shoebill Plugin geschrieben, da es in PAWN unmöglich wäre, so erweiterbar umzusetzen. Ich nutze nämlich abstrakte Klassen / Entitytypen und Interfaces, drum geht das nur in einer objekt-orientierten Sprache wie z.B. Java.

  • @IPrototypeI Danke für die Antwort und gut, dass du nachfragst!


    Wie der Name schon sagt, ist das eine GUI Library. Sie vereinfacht also den Umgang mit Textdraws und nimmt einem viel Arbeit ab.
    Es gibt z.B. extra Berechnungen und Umrechnungen, Anordnungen, Layouts, Styles, vorgefertigte Dialoge und auch die Möglichkeit, selbst einen Dialog aus vielen verfügbaren Komponenten zusammenzustellen. Außerdem behebt das System einige Fehler, die momentan bei den Textdraws vorhanden sind und erleichtert das Handling mit den Textdraws, sodass man Code-optimiert arbeiten kann. Die Textdraws speichern auch automatisch im Hintergrund, damit man diese zerstören kann (um sie zu entfernen, da es ein Limit an Textdraws gibt) und damit man diese mit Textdraw.recreate(); ganz einfach wiederherstellen kann. Somit hilft es einem mit dem Umgang der Textdraws wegen dem Limit.


    Alles in allem ist es aber nicht nur auf Dialoge begrenzt, sondern man könnte damit auch einfach ein Tacho oder sonstiges bauen.


    Zu den Komponenten kann man auch ganz einfach Attachments hinzufügen, die dann sozusagen an den Komponenten haften. So kann man beispielsweise eine Box an einen Text anhängen, welche sich mit dem Text mit vergrößert bzw. verkleinert.


    neues Update: (Ich habe gestern den List-Komponenten implementiert)

    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


    verfügbare Komponente:

    • Input
    • List
    • Bar
    • Text
    • weitere folgen...

    verfügbare Attachments:

    • Label
    • Box
    • weitere folgen...


    Codebeispiel:

  • @Alf21 Das klinkt definitiv ziemlich nützlich
    mit Pawn ist das auch möglich nur mit einigen Umwegen, da bietet Java wesentlich bequemere Wege dank der objekt orientierten Programmierung. Aber ist ein echt cooles System.


    Du hast ja bereits viele Systeme mit dem Shoebill Plugin geschrieben in Java, wie ist den die Performance von den Skripts so ?

  • @IPrototypeI: Ich freue mich über dein positives Feedback! :)
    Und da du dich deutlich besser in PAWN auskennst als ich, hast du wohl recht!


    Also ich kann das Shoebill Plugin nur empfehlen. Wenn man etwas großes starten will, würde ich auch nur noch dieses Plugin empfehlen, weg von PAWN, den 'alte' nicht-objektorientierten Sprachen (sage ich mal so im Bezug auf Java).
    Man hat einfach eine große Liste verwendbarer Libraries und Tools. Man keiner IDEs wie IntelliJ IDEA oder Eclipse nutzen - einfach perfekt, schnell und mit CodeOptimierung sowie Autocomplete. Man kann durch das Plugin auch extrem dynamisch arbeiten. Hierzu bietet Shoebill nämlich nicht nur Gamemodes an, sondern EIGENE Plugins! (So wie dieses). Das ist also sowas wie Filterscripts, nur dass diese noch miteinander kommunizieren können und man halt Zugriff auf vieles hat :) Es kommen auch immer Verbesserungen hinzu. 123marvin123 entwickelt gerade Shoebill 2.0, welches auf Kotlin basiert (man kann auch bereits jetzt schon alles in Kotlin schreiben, da es unabhängig auf Java 6 basiert)


    Die Performance ist glaube sogar besser als bei PAWN, da das Plugin alles über eine JVM (Engine) laufen lässt und direkt an den Server anknüpft. Das einzige, was ich bisher mitbekommen habe, ist, dass die Performance nur bei Nutzung von externen Plugins ein klein wenig leidet. Hierbei aber auch nur, wenn man halt eine NativeFunction aufruft, da diese erst gesucht werden muss. Hierzu weiß aber sicher @123marvin123 mehr. :)

  • Habe mal gestern wieder ein bisschen weiter am GUI entwickelt und Buttons hinzugefügt. Um diese zu testen, habe ich einen simplen ColorPicker programmiert, welcher sich erstaunlich schnell dank des GUIs entwickeln ließ (weniger als 250 Zeilen Code mit Imports und Layout).


    Habt ihr Verbesserungsvorschläge zum ColorPicker oder Anmerkungen? Immer her damit! :)

    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.


    //edit habe mit der Entwicklung dieses Plugins aufgehört, da es zu ineffektiv ist. Es verbraucht viel zu viele Ressourcen und grenzt immer an Grenzen (Textdraw Problem & Textdraw Limits). Werde es ggf. iwann fortsetzen, bis dahin mich aber selbst an einem GUI über DX Hooking probieren bzw. Limits vergrößern und Performance optimieren.