Projekt Shoebill 1.2 - Schreibe Gamemodes in Java

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

    • Alf21 schrieb:

      Probiers mal mit JRE 8 ^^

      Das Problem lag an Maven.
      Marvin hat mir geholfen, funktioniert nun prima.

      Für die Problemlösung
      • Eclipse Luna herunterladen
      • Neues Maven Projekt erstellen
      • die pom.yml konfigurieren
      • Die gamemode.yml in src/main einfügen
      • Das test Verzeichnis kann gelöscht werden, da es nicht gebraucht wird
      PayPal: herprince@outlook.de
      Twitter
      DeviantArt

      Programmierung Service
      JAVA (bspw. Android Applikationen, Modifikationen bzw. Plugins für Minecraft),
      C# (Konsolen- oder Windows Form Anwendungen),
      PHP (Objektorientiert, Routing, MVC Pattern etc.),
      HTML5 (dazu gehören auch Spiele ectera)

      [ BIETE ] • Webdesigning • WBB4 • WordPress • Anpassungen für vorhandene Designs •
    • Achso dachte hast schon alles richtig installiert ^^
      Aber ich empfehle dir trotzdem JRE 8, keine Ahnung ob man das in Shoebill für irgendetwas braucht, aber generell hat es ja seine Gründe, dass es eine neue Java Version gab... Ich musste mein Projekt glaube sogar auf JRE8 machen, da es einen Konflikt beim Compilen gab 8|


    • Wir sind froh euch mitteilen zu können, dass Shoebill ab sofort das neue 0.3.7 Update unterschtützt. Wenn du updaten möchtest, benutze bitte den beigelegten Updater im Hautverzeichnis deines Servers. Einfach die update-shoebill.bat/sh Datei verwenden, und Shoebill wird die nötigen Dateien automatisch runterladen, und ersetzen. Geht sicher, dass ihr beim starten des Server die neuen Dependencies runterladet (sollte eigentlich automatisch passieren).
      Für eine Liste von neuen Features könnt ihr hier schauen -> wiki.sa-mp.com/wiki/Category:Added_in_0.3.7. Ihr könnt euch auch die GitHub Commits anschauen:

      shoebill-runtime: github.com/Shoebill/shoebill-r…518faa723fe587ba81004ae0e
      shoebill-api: github.com/Shoebill/shoebill-a…643d0291c597785066a162a9f
      shoebill-launcher: github.com/Shoebill/shoebill-l…e80c0272813ef2cda47d1095a
      ShoebillPlugin: github.com/Shoebill/ShoebillPl…4ae6bd521225aabb422a6d9f4

      Wenn du nicht die beigelegten Updater verwenden möchtest, kannst du dir auch jede Datei manuell herunterladen:

      shoebill-runtime (0.3.7): ci.gtaun.net/job/shoebill-runt…-runtime-1.1-SNAPSHOT.jar
      shoebill-launcher (0.3.7): ci.gtaun.net/job/shoebill-laun…launcher-1.1-SNAPSHOT.jar
      shoebill-api (0.3.7): ci.gtaun.net/job/shoebill-api/…bill-api-1.1-SNAPSHOT.jar
      ShoebillPlugin (0.3.7):
      - Windows: catboy5.bplaced.net/updater/binaries/Shoebill.dll
      - Linux: catboy5.bplaced.net/updater/binaries/Shoebill

      Wenn du die Entwicklung mit den neuen 0.3.7 Features starten möchtest, musst du einfach dein Maven Projekt neu importieren oder die Dependencies manuell ersetzen.

      (Bugs können auftauchen)

      //Edit: Ich habe grad ein kleines Update für den addsiren Parameter in der CreateVehicle & AddStaticVehicleEx Funktion gepusht. Der Parameter kann jetzt via Vehicle.create(...); verwendet werden. Außerdem kann mit vehicle.hasSiren() überprüft werden, ob das Fahrzeug eine Sirene hat.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 123marvin123 () aus folgendem Grund: Kleines Update

    • @MiX(eP):

      Du brauchst:
      - JRE 8 (wenn du es nur laufen lassen willst), oder JDK 8 (wenn du auch Gamemodes entwicklen willst) beide MÜSSEN 32-Bit sein
      - (Maven, nicht zwingend, aber würde ich empfehlen)
      - eine IDE (am besten IntelliJ IDEA CE, oder Eclipse)
      - einen 0.3.7 SAMP Server mit dem Startpaket aus dem 1. Post (am besten einfach das Full-Package runterladen, da ist der Server dabei)

      Ich denke mit den Videos ist das alles eigentlich gut erklärt, dort steht alles, von Anfang bis Ende (JDK Installation, Server einrichten etc.).
      Hier sind alle Videos:

      youtube.com/watch?v=FLlFeNXPPN8 - Server aufsetzen (war noch mit 0.3z, ist aber genauso mit 0.3.7)
      youtube.com/watch?v=g2SOqax3Euw - Gamemode mit IntelliJ IDEA erstellen (von Anfang bis Ende, mit Maven Installation etc.)
    • @Alf21: Danke für dein positives Feedback.



      - Shoebill-Funktionen von Pawn aus aufrufen



      Um dieses Update zu nutzen, muss der beigelegte shoebill-updater verwendet werden. Einfach die update-shoebill.bat/.sh Datei starten, und Shoebill wird alle Dateien runterladen.


      Es freut mich euch mitteilen zu können, dass Shoebill ab sofort die Möglichkeit bietet, von Pawn aus Shoebill Funktionen aufrufen zu können. Aktuell werden Integers, Strings und Floats als Datentypen akzeptiert. Es können
      auch Variablen per Referenz übergeben werden, die dann im Java Teil geändert werden können. Hier ein kleines Beispiel:

      Als erstes muss eine neue native Funktion in dem Pawn-Skript deklariert werden:

      PAWN-Quellcode

      1. native CallShoebillFunction(name[], {Float,_}:...);
      (am besten direkt in eine Include-Datei oder einfach oben im Skript)

      Nun muss eine Funktion registriert werden, dies geschieht von Java aus. Jede AMX-Datei hat seinen eigenen Funktions-Pool, wenn man will das die Funktion überall verfügbar ist, ist es zu empfehlen die Funktion in dem AmxLoadEvent zu registrieren.
      In diesem Beispiel möchte ich das meine Funktion von überall aus verfügbar ist, deswegen werde ich sie im AmxLoadEvent deklarieren:

      Quellcode

      1. eventManager.registerHandler(AmxLoadEvent.class, e -> {
      2. e.getAmxInstance().registerFunction("GetPlayerFactionName", objects -> {
      3. Player player = Player.get((Integer) objects[0]);
      4. //Do something to get player's faction etc.
      5. objects[1] = "Los Santos PoPo";
      6. //Return value for pawn (not always needed)
      7. return 1;
      8. }, Integer.class, String.class);
      9. });


      Die .registerFunction-Methode ist verfügbar in AmxInstance-Objekten.
      Erst wird der Name angegeben, gefolgt von der Java-Funktion die aufgerufen wird. Anschließend dann die Parameter-Typen, in dem Falle Integer (für die PlayerId) und den String (als Referenz, dort wird der Name reingeschrieben).
      Funktionen die registriert werden, sollten auch wieder gelöscht werden. Dies geschieht mit der .unregisterFunction-Methode:

      Quellcode

      1. eventManager.registerHandler(AmxUnloadEvent.class, e -> {
      2. e.getAmxInstance().unregisterFunction("GetPlayerFactionName");
      3. });


      von Pawn aus kann die Funktion nun problemlos aufgerufen werden, zum Beispiel unter OnPlayerSpawn:

      PAWN-Quellcode

      1. public OnPlayerConnect(playerid)
      2. {
      3. new factionName[] = "Unknown";
      4. CallShoebillFunction("GetPlayerFactionName", playerid, factionName);
      5. printf("Factionname: %s", factionName);
      6. return 1;
      7. }


      Ergebnis: "Factionname: Los Santos PoPo"

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von 123marvin123 () aus folgendem Grund: Rechtschreibung


    • 123marvin123 schrieb:

      von Pawn aus Shoebill Funktionen aufrufen zu können. Aktuell werden Integers, Strings und Floats als Datentypen akzeptiert.

      heißt das, man kann keine Arrays übergeben ?

      Oder kann man sich das so PAWN mäßig hintricksen ?
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski
    • BlackAce schrieb:

      123marvin123 schrieb:

      von Pawn aus Shoebill Funktionen aufrufen zu können. Aktuell werden Integers, Strings und Floats als Datentypen akzeptiert.

      heißt das, man kann keine Arrays übergeben ?

      Oder kann man sich das so PAWN mäßig hintricksen ?


      Aktuell nicht, aber das Feature wird bestimmt später mal folgen wenn ich mir weitere Gedanken gemacht habe wie man das am besten umsetzen könnte.
    • mir ist noch ein kleiner "schönheitsfehler" in der update-shoebill.bat aufgefallen

      am Anfang müsste "@echo off" stehen.
      Ansonsten wird man im Falle einer Fehlermeldung mit dem Code konfrontiert.
      Was doch etwas verwirrend, auf den ersten Blick ist :D

      Gut möglich, das der in der .sh auch steckt
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski
    • Alles klar, werd ich mir später mal anschauen. Ich bin grad schon mit den Arrays dran, vielleicht schaff ich das heute noch :)

      @BlackAce: Ich hab grad ein Update gepusht, jetzt kann man auch Int und Float Arrays übergeben. String Array kommen vielleicht später mal :) (Update über shoebill-updater)

      //Edit:



      Wir sind froh euch mitteilen zu können, dass Shoebill ab sofort das neue 0.3.7 R2 Server Update unterstützt. Um das neue Update verwenden zu können, muss der beigelegte Shoebill-Updater verwendet werden.
      Einfach die update-shoebill.bat/.sh Datei starten (alternativ -> java -jar shoebill-updater.jar) und alle alten Daten werden aktualisiert. Außerdem müssen die ausführbaren Dateien vom SA-MP Server auf die neue Version geupdated werden. Einfach das 0.3.7 R2 Paket für euer Betriebssystem wählen, und samp-server.exe, announce.exe und samp-npc.exe ersetzen. Beim nächsten Serverstart werden ebenfalls die benötigten Artefakte runtergeladen.
      Welche Änderungen es in der 0.3.7 R2 Version gibt, könnt ihr hier nachlesen: forum.sa-mp.com/showthread.php?t=581259

      Commits:
      API: github.com/Shoebill/shoebill-a…5808b6592d0a2777c36bc9dd9
      Runtime: github.com/Shoebill/shoebill-r…dd3d529c49319a5acbfcad5b7
      Launcher: github.com/Shoebill/shoebill-l…47602e8e2c1f2e2635413b7e2
      Plugin: github.com/Shoebill/ShoebillPl…4993f98ac6110fa6032410f61

      Manueller Download:
      API: ci.gtaun.net/job/shoebill-api/…bill-api-1.1-SNAPSHOT.jar
      Runtime: ci.gtaun.net/job/shoebill-runt…-runtime-1.1-SNAPSHOT.jar
      Launcher: ci.gtaun.net/job/shoebill-laun…launcher-1.1-SNAPSHOT.jar
      Plugin:
      - Windows: catboy5.bplaced.net/updater/binaries/Shoebill.dll
      - Linux: catboy5.bplaced.net/updater/binaries/Shoebill

      Verwendung:

      PHP-Quellcode

      1. Server server = Server.get();
      2. server.setStringVar("varname", "value");
      3. server.setIntVar("intvarname", 15);
      4. server.setFloatVar("floatvarname", 13.56f);
      5. String value = server.getStringVar("varname"); //"value"
      6. int intval = server.getIntVar("intvarname"); //15
      7. float floatval = server.getFloatVar("floatvarname"); //13.56
      8. server.deleteVar("varname"); //delete string
      9. server.hashPassword("my-secreet-password", "my-salt"); //hash passwords with SHA256_PassHash() Method
      Alles anzeigen



      //Edit: 16.08.15:


      Wir bieten nun auch einen offiziellen Wrapper für OS X an, damit lässt sich Shoebill und der SAMP Server ganz einfach und bequem unter einem Mac ausführen.
      Der Wrapper enthält bereits das JDK 1.8 und alle anderen benötigten Runtimes. Zusätzlich wurde noch ein Video aufgenommen, um den Einstieg so leicht wie möglich zu machen:




      youtube.com/watch?v=7tzyuoLRnOY

      Download für den Wrapper (einfach per Doppelklick starten und der Server läuft): mega.nz/#!2hgA2BTK!Xwmv2CKnZo6…uUqCKyVg_ct_A1dYjpOALOULw

      Besucht auch unsere neue Github.IO Seite, um immer auf dem neusten Stand zu bleiben: klick



      //Edit: 26.08.15:


      Wir haben grade unsere Vorstellung überarbeitet mit neuen Grafiken und neuen Texten: klick
      Wir würden uns über Feedback sehr freuen.

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von 123marvin123 () aus folgendem Grund: Überarbeitung von Vorstellung

    • Danke @Mert_Coleman.


      Die erste Snapshot-Version von Shoebill 1.2 ist nun zum Download verfügbar. Haltet euch vor Augen, dass diese Version noch nicht Stabil läuft. Der Server könnte sich unerwartet verhalten. Die größte Änderung in dieser Version ist, dass Shoebill seine internen Komponenten geändert hat. Es benutzt nun Sampgdk anstatt einem eigenem Hooking-System. Diese Änderung wird bessere Kompatibilität mit anderen Plugins und Gamemodes bieten.

      Fertig:

      • Internes Hooking-System mit Sampgdk ersetzen
      • Support für die neuen Dialoge aus SAMP 0.3.7


      Geplant:

      • Kaputte Funktionen reparieren, welche durch die Änderung aufgetreten sind
      • ?


      Die Shoebill-Api hat sich ein wenig geändert, in der Weise wie sie das Amx Interface behandelt. Es ist nötig seine Version der Shoebill-Api auf 1.2-SNAPSHOT zu ändern. In der resources.yml Datei ist es nötig die Version der Runtime auf 1.2-SNAPSHOT zu ändern. Außerdem ist es nötig den Launcher und das Plugin zu updaten, am besten mithilfe des Shoebill Updater (einfach die update-shoebill.bat/.sh Datei starten) oder manuell die Dateien runter zu laden:








      (Das Plugin in den "plugins" Ordner verschieben und den Launcher nach shoebill/bootstrap verschieben)
      Stellt sicher, dass ihr den offlineModus einmal deaktiviert (in der resources.yml) damit Shoebill die neusten Artefakte aus unserer Quelle runter laden kann (repo.gtaun.net)

      (Updates können in kurzen oder langen Zeitperioden auftauchen, bitte darauf achten, dass Ihr auf dem aktuellstem Stand seid bevor ihr einen Bug meldet.)

      //Update 29. November:

      Die neuen Dialogtypen von SAMP 0.3.7 können nun via shoebill-common-1.2-SNAPSHOT verwendet werden.

      Folgendes muss in der pom.xml geändert / hinzugefügt werden

      XML-Quellcode

      1. <dependency>
      2. <groupId>net.gtaun</groupId>
      3. <artifactId>shoebill-common</artifactId>
      4. <version>1.2-SNAPSHOT</version>
      5. <type>jar</type>
      6. <scope>compile</scope>
      7. </dependency>

      Danach kann ein TabListDialog mit oder ohne Header erstellt werden:

      Java-Quellcode

      1. TabListDialog.create(player, eventManager)
      2. .caption("My Dialog")
      3. .buttonOk("Buy")
      4. .buttonCancel("Cancel")
      5. .header(0, "Weapon")
      6. .header(1, "Price ($)")
      7. .item(TabListDialogItem.create()
      8. .column(0, ListDialogItem.create().itemText("Deagle").build())
      9. .column(1, ListDialogItem.create().itemText("$500").build())
      10. .onSelect((item, o) -> {
      11. //Give player a Deagle
      12. })
      13. .build())
      14. .item(TabListDialogItem.create()
      15. .column(0, ListDialogItem.create().itemText("M4").build())
      16. .column(1, ListDialogItem.create().itemText("$12000").build())
      17. .onSelect((item1, o1) -> {
      18. //Give player a m4
      19. })
      20. .build())
      21. .build()
      22. .show();
      Alles anzeigen

      Es können 0-3 Header via der .header() Funktion gesetzt werden, und Reihen mit der .item() Funktion hinzugefügt werden.
      Es müssen TabListDialogItems anstatt normale ListDialogItems verwendet werden. Mit der .column() Funktion kann der Inhalt der Spalten 0-3 gesetzt werden. Als Inhalt werden normale ListDialogItems verwendet und somit können auch RadioItems und Switches verwendet werden. Handler können mit der .onSelect() Methode gesetzt werden.

      Hier ein Screenshot:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von 123marvin123 () aus folgendem Grund: Update von Shoebill-Common

    • Hi Marvin ich hätte mal eine Frage zu deinem Plugin , die ich mir bereits schon lange gestellt habe, wie arbeitet dein Plugin mit dem samp server, also wie muss ich mir das vorstellen ?

      Also kann ich auch wie in Java gewohnt Prozesse auf seperate Threads auslagern wie zum beispiel resourcenlastige Berechnungen oder Timer ohne das die Performance des "Hauptthreads" darunter leidet ?
    • Shoebill erstellt beim Start eine vollwertige Java Maschine, du kannst also alle Features von Java 8 verwenden. Auch weitere Threads können eröffnet werden, um somit rechenintensive Berechnungen durchzuführen. Außerdem bietet Shoebill eine "objekt-orientierte" Erfahrung im Gegensatz zu Pawn, und bietet durch shoebill-common auch viele Hilfsklassen die einem eine Menge Arbeit abnehmen bei alltäglichen Aufgaben.
    • So, hallöchen. Erstmal ein richtig geiles Projekt, hatte eigentlich mit SA-MP abgeschlossen und bin durch gelangweiltes Surfen drauf gestoßen. und hab gleich einige fragen.

      Spieler Fahrzeuge etc. habt ihr ja jetzt auch code-technisch in Objekte gepackt, die dann Events aufrufen, jedenfalls hab ich das so verstanden.

      Als freundlicher Hinweis, ihr solltet das LVDM-Beispiel mal durchkommentieren. Ich hab ohne Spaß 2 Stunden gebraucht und zu kapieren das der PlayerController eine eigene Klasse ist in dem die Events die die Player triggern abgearbeitet wird ;(

      Zudem habe ich nicht Verstanden wofür die Variable 'e' wie in e.getPlayer() (unten der genaue Ausschnitt steht) steht.

      Quellcode

      1. eventManagerNode.registerHandler(PlayerUpdateEvent.class, (e) ->
      2. {
      3. Player player = e.getPlayer();
      4. // getUpdateCount() Example
      5. if (player.getUpdateCount() % 100 == 0)
      6. {
      7. player.setScore(player.getMoney());
      8. }
      9. });
      Naja ich wusel mich mal weiter durch den Beispiel-code/Dokumentation, vielleicht verstehe ich es ja bevor jemand antwortet. :D
    • @Saintsbury

      Das e ist der Name der Variable, die bei dem Event übergeben wird (IdR also e als Kurzform für für event), und ist eine instanz der PlayerUpdateEvent Klasse (siehe erster Parameter der registerHandler Funktion, dort wird der Typ des Events deklariert).
      Die Wird genutzt um innerhalb des Eventhandlers auf Event-Spezifische Funktionen zuzugreifen (z.b. e.getPlayer(), um den Spieler zu bekommen der das Event ausgelöst hat). Die Funktionen der Klasse findet man in den Docs (nur leider ohne Beschreibung was sie tun...)

      Kalcor schrieb:

      The fact is, I am right. And if you think I'm wrong, you are wrong.