SAMP | Java Development

  • Abend,


    ich habe da mal eine Frage spezifisch des SAMP - Java Development.


    Welche Vorteile bringt mir das jetzt genau wenn ich einen Gamemode in Java schreibe? (Schnelleren Gamemode, neue Features)
    Muss ich dafür ein Java Profi sein oder reicht es wenn ich die Syntax kenne ? (Kenne Bruchstücke aus der Syntax)


    mfg :thumbup:

  • Hey,
    du hast weiterhin nur die möglichkeiten die dir SAMP bietet ob du jetzt mit PAWN arbeitest oder Java deine Funktionen bleiben gleich.


    Es erleichtert vielleicht denen die kein PAWN können die Arbeit, da sie PAWN nicht lernen müssen.


    Mit freundlichen Grüßen
    PermanenT

  • Schneller wird es nicht seien können, da du ja durch das Java Plugin erst noch einen Umweg machst. Aber spürbar wird es wohl nicht sein.
    Die Vorteile sind vor allem das dich fernab von DINI und XYZ-CMD die wunderbare Welt der Java APIs erwartet, und all die tollen Sachen die eine Objekt-Orientierte Programmiersprache eben so mit sich bringt. Dazu dann noch eine Vielfalt von Bibliotheken die nur darauf warten von dir genutzt zu werden.


    Muss ich dafür ein Java Profi sein oder reicht es wenn ich die Syntax kenne ?

    Zwischen Profi und jemandem der die Syntax kennt liegen Welten. Profi muss man sicher nicht sein, aber nur die Syntax zu beherrschen funktioniert nur wenn du auch weisst wie man Googelt und in der Lage bist dich selber mit Problemen auseinander zu setzen.
    Solange du nicht mit zu hohen Erwartungen an die Sache ran gehst ist ein klares Ziel wie z.b. ein Gamemode aber sicher nicht verkehrt um einzusteigen. Jedenfalls hilft mir sowas immer. 8D hatte mal ne Tutorial-reihe auf YouTube über Java die fand ich ganz nett, und ist auch erstmal die Basics durch gegangen. Würde ich dir ans Herz legen wenn es die noch gibt.

  • Du hast eben die Möglichkeiten einer Programmiersprache. Sprich du kannst dinge direkt realisieren, die mit Pawn ein zusätzliches Plugin benötigen würden. Wie PermanenT bereits sagte bleiben die Möglichkeiten in Bezug auf SAMP natürlich die gleichen, aber du hast auf Seiten der Sprache natürlich weit mehr Optionen. Du könntest zum Beispiel andere Datenbanken, wie MongoDB einsetzen.

  • Es gab ja Plugins die im Breadfish veröffentlich wurden, kann man direkt im Gamemode mit Java so Plugins gleich als Quellcode einbringen ?


    Zitat

    Die Vorteile sind vor allem das dich fernab von DINI und XYZ-CMD die wunderbare Welt der Java APIs erwartet, und all die tollen Sachen die eine Objekt-Orientierte Programmiersprache eben so mit sich bringt. Dazu dann noch eine Vielfalt von Bibliotheken die nur darauf warten von dir genutzt zu werden.


    Ich nutze nur MySQL, von DINI halte ich nichts.
    Wie würde es denn aussehen wenn man einen Befehl in Java schreibt der einen anderen Spieler kickt ?
    Welche Bibliotheken könnten denn auf mich warten und welche Vorteile bringen sie mir ?
    Ich weis das Java sehr viel Möglichkeiten als Pawn mit sich bringt, aber ich müsste detailreich wissen welche das genau sind.



    mfg :thumbup:

  • Ich weis das Java sehr viel Möglichkeiten als Pawn mit sich bringt, aber ich müsste detailreich wissen welche das genau sind.


    Vergleichen wir das mal mit dem Umfang eines Schulbuches im Gegensatz zu dem einer Bibliothek, einfach zu viel um das alles aufzuzählen. Der größte Vorteil ist aber, wie maddin bereits sagte, dass Java eine objektorientierte Sprache ist.

  • Zitat

    Der größte Vorteil ist aber, wie maddin bereits sagte, dass Java eine objektorientierte Sprache ist.


    Tut mir leid dass ich das fragen muss, aber was bringt es mir das eine Objektorientierte Sprache ist ? (Frage ist ernst gemeint, ich habe keine Ahnung davon)


    mfg :thumbup:

  • Wie würde es denn aussehen wenn man einen Befehl in Java schreibt der einen anderen Spieler kickt ?

    Tut mir leid dass ich das fragen muss, aber was bringt es mir das eine Objektorientierte Sprache ist ?

    Schau dir mal Shoebill/example-lvdm an. Das ist der LVDM Gamemode in Java, da ist das denke ich recht gut veranschaulicht.


    Welche Bibliotheken könnten denn auf mich warten und welche Vorteile bringen sie mir ?

    Das kann von Datenbank Verbindungen (MySQL, PostgreSQL, MongoDB, redis, MariaDB, was auch immer), über Utility (z.b. Google Guava, Apache commons), Logging (z.b. SLF4J), Web frameworks bis hin zu simplen Mathematischen Bibliotheken alles sein.

  • Wenn ich das richtig verstehe, braucht man auch kein sscanf mehr.


    Code
    @Command
    public boolean kick(Player p, Player Target)
    {
    	target.sendClientMessage(COLOR.RED, "Kicked by ID " + p);
    	target.kick();
    }


    So ungefähr, ist jetzt aus dem Kopf raus geschrieben.


    mfg :thumbup:

  • @xMichael: Es gibt viele Vorteile, der größte ist wie schon oft gesagt das man einfach eine vollständige Java Umgebung zur Verfügung hat und machen kann was man möchte.
    Java ist keine Skriptsprache wie Pawn und hat deswegen auch einfach viel mehr Features direkt mit eingebaut. Shoebill ist übrigens in den reinen Funktionsaufrufen deutlich schneller als Pawn,
    bei Strings wird Java jedoch ein wenig schlechter abschneiden. Ein weiterer Vorteil ist das shoebill-common Paket das Shoebill bereitstellt. Darin enthalten sind ein Befehlsprozessoren (der Kick-Befehl jedoch gibt hat der Prozessor deutlich mehr zu bieten wie mehrere Klassen z.B. nur für Admins und einen "BeforeCheck" mit dem überprüft werden kann ob der Nutzer überhaupt Rechte für den Befehl hat.)


    Du kannst übrigens jedes Plugin mit Shoebill verwenden, da Shoebill die Möglichkeit bietet native Callbacks zu hooken, und Funktionen aufzurufen.
    Hier mal zwei Speedstest:


    Java:
    Result: 190ms

    Code
    MapAndreas mapAndreas = new MapAndreas(new File(LvdmGamemode.getInstance().getDataDir(), "SAfull.hmap"));
    long milli = System.currentTimeMillis();
    for(int i = 0; i < 10000000; i++) {
        mapAndreas.findZ(i%3000, i/3000);
    }
    player.sendMessage(Color.RED, "* Ms: " + (System.currentTimeMillis() - milli));


    Pawn:
    Result: 1004ms

    Code
    new Float:z;
    new tick = GetTickCount();
    for(new i = 0; i < 10000000; i++) {
        MapAndreas_FindZ_For2DCoord(i%3000, i/3000,z);
    }
    printf("Difference: %i ms", GetTickCount() - tick);


    und hier der zweite: http://forum.sa-mp.com/showpost.php?p=1273981&postcount=16

  • Ja klar könnte man einen kompletten Gamemode aufbauen, dafür ist es ja gemacht ;)
    und Java ist nicht nur beim ausführen oftmals schneller, sondern auch beim entwicklen. Alles geht schneller da man viel organisierter ist und eine vernünftige IDE hat mit Autovervollständigung etc.

  • Am besten benutzt du IntelliJ IDEA 14 von JetBrains. Davon gibt es eine kostenlose Variante namens Community Edition die völlig ausreicht.
    Wenn du anfangen möchtest, schaust du dir am besten die Tutorials an die ich im Thread von Shoebill gepostet habe.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen