Sehr schöne Maps!
Schade das aus dem Projekt nach so langer Entwicklungszeit doch nichts wird.
Beiträge von 123marvin123
-
-
Sieht gut aus, weißt du schon wann, oder ob du den Server eröffnest?
-
Man ist nicht gezwungen seinen Gamemode in Pawn zu schreiben. Es gibt mehrere Frameworks die es ermöglichen, seine Ideen in Java oder C++ zu schreiben.
Für C++ ist es das GDK, für Java ist es das Shoebill Projekt (welches von mir beeinflusst wird) und es gibt noch SampSharp mit dem man in C# seinen Code schreiben kann.
Da Pawn sehr mühsam und aufwendig ist, macht es mehr Spaß seinen Gamemode z.B. in Java zu schreiben, da man dort außerdem noch alle Libraries von dritt-Anbietern verwenden kann. -
Wie siehts aktuell eigentlich aus? Wenn Shoebill genommen wird, könnte ich ca. 8400 Zeilen Code pushen, von einem Roleplay Gamemode den ich angefangen hab.
Enthalten sind Login & Register, sowie ein dynamisches Firmen System. (Busfirmen z.B. können eigene Linien erstellen (Ingame-Editor), Lohn einstellen, Mitarbeiter einstellen, Verlust/Gewinn der Mitarbeiter anschauen, Preise anpassen etc.) und ein Haussystem (und wahrscheinlich noch ein paar mehr Dinge). -
Wenn sich die Funktionen der Parametern nicht groß verändern funktioniert alles weiter. Bei neuen Callback und Funktionen die noch nicht von Shoebill implementiert wurden, kannst du auch die Nativen Interfaces von Shoebill benutzen, und jegliche Funktion aufrufen oder ein beliebiges Callback hooken. Das funktioniert übrigens auch mit jedem anderem Plugin auch, du kannst z.B. das Audio Plugin über Shoebill steuern und dessen Funktionen und Callback verwenden. Wenn du ein Beispiel sehen möchtest kannst du folgendes durchlesen -> Project Shoebill 1.1 - Schreibe Gamemodes in Java
-
@MiX(eP): Du kannst die erstelle .jar Datei aus deiner Maven-Repo nehmen und auf den Server in den shoebill/gamemodes Ordner kopieren. Dann musst du nurnoch die benötigten Libs manuell in die resources.yml eintragen.
@BlackAce: Das Shoebill Plugin (also die Binaries für den SAMP Server) erstellt eine Java Virtual Machine (JVM). Genau das selbe passiert, wenn du jedes andere Java Programm startest, wie z.B. Minecraft. Das heißt, du kannst jede Funktion von Java benutzen (Dateisystem verwalten, Emails senden, Daten von einem FTP-Server holen, Shell-Befehle ausführen oder direkt einen Webserver basierend auf Java). Außerdem kannst du jede Java Library verwenden, die existiert, wie z.B. Apache Commons. Dir steht alles offen, du kannst Mysql / MongoDB / Sqlite verwenden oder dein ganz eigenes Dateiformat entwerfen.
-
Also ich denke das ganze ist eine gute Idee.
1) Roleplay
2) Es sollte aufjedenfall einen Server dazu geben, wer ihn leitet ist erstmal egal.
3) Shoebill (einfach zu verstehen & ich kann Support geben) -
Du musst die build.gradle Datei öffnen und bei dependencies { ... }
einfach -> "compile 'com.github.nkzawa:socket.io-client:0.3.0'" (ohne ") hinzufügen.
Wenn dein Projekt kein Gradle Projekt ist, musst du dir die Library manuell runterladen und hinzufügen.//Edit: Ich sehe grad das du ein Maven Projekt benutzt. Füg einfach das:
<dependency>
<groupId>com.github.nkzawa</groupId>
<artifactId>socket.io-client</artifactId>
<version>0.4.1</version>
</dependency>bei den <dependencies> hinzu. (in der pom.xml)
-
Dann hast du irgendwelche alten Artefakte. Wahrscheinlich eine alte shoebill-api.
//Edit:
Falls euer Server crasht wenn ihr ein Dialog anzeigt, bitte ich euch den mitgelieferten shoebill-updater zu verwenden. (update-shoebill.bat/sh)
Dieser Bug sollte nun gefixxt sein, und euer Server sollte nicht aufgrund dieses Fehlers crashen.- Alle Callbacks die den Rückgabewert behandeln können nun korrekt in Shoebill verwendet werden. (PlayerUpdateEvent unterbrechen, PlayerTextEvent, etc.)
- Es können nun native Funktionen von anderen Plugins aufgerufen werden. (Stelle dafür sicher das Shoebill in der server.cfg an erster Stelle steht)
- Der player.spawn() Bug wurde behoben, die Spieler spawnen wie gewohnt(Benutzung)
Callbacks unterbinden:
PHPeventManager.registerHandler(PlayerTextEvent.class, event -> { if(event.getPlayer().isSpectating()) event.disallow(); //There will be no message in the chat if the player is currently spectating somebody });
Native Funktionen aufrufen (Streamer Beispiel):
PHPAmxCallable createDynamicObject = null; for(AmxInstance instance : Shoebill.get().getAmxInstanceManager().getAmxInstances()) { createDynamicObject = instance.getNative("CreateDynamicObject"); if(createDynamicObject != null) { //found CreateDynamicObject native, call it like this: createDynamicObject.call(18421, ....); //normal pawn arguments. Make sure you put a f after a Float value, like this: 13.0f or 0f break; } }
Bitte benutzt den beigelegten shoebill-updater, weil sich der Launcher, das Plugin und die Runtime geändert haben. Einfach die update-shoebill.bat/sh Datei im Serverordner starten und die neusten Dateien werden runtergeladen.
Ich hab mal ein kleines Video gemacht, wie mein ein einfaches Projekt in IntelliJ IDEA 14 aufsetzt:
Externer Inhalt www.youtube.comInhalte 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=g2SOqax3EuwEs wurde soeben ein wichtiger Fehler behoben. Ihr könnt mit dem mitgelieferten Updater (update-shoebill.bat/sh) die benötigten Dateien automatisch runterladen lassen.
Ihr könnt jedoch auch die Dateien aus dem Startpost neu runterladen, und die Dateien ersetzen. Das Update sollte auf jeden Fall durchgeführt werden, wenn ihr die Sicherheit und Stabilität eures Servers nicht vernachlässigen wollt.//Edit: Update 4. März
- Callbacks hooken & native Funktionen aufrufen
- Eine Amx mit allen Callbacks ist nun nicht mehr nötig, Shoebill findet die Callbacks automatischWir sind froh, euch das neuste Update präsentieren zu dürfen. Das Update bringt die Möglichkeit Callbacks zu hooken.
Bitte stellt sicher, dass ihr den shoebill-updater verwenden (update-shoebill.bat/sh im server Ordner), weile viele Dateien geändert wurden (shoebill-runtime, launcher, plugin, api)In diesem Beispiel werde ich euch zeigen, wie ihr Callbacks des Plugin FCNPC hooken könnt, und native Funktionen aufzurufen:
(plugin url: http://forum.sa-mp.com/showthread.php?t=428066)Hook hinzufügen (Stellt sicher, dass ihr die Hook wieder löscht wenn der GM / das Plugin wieder entladen wird):
PHP
Alles anzeigen@Override protected void onEnable() throws Throwable { Shoebill.get().getAmxInstanceManager().hookCallback("FCNPC_OnCreate", amxCallEvent -> { System.out.println("FCNPC created a npc with id " + amxCallEvent.getParameters()[0]); }, "i"); } @Override protected void onDisable() throws Throwable { Shoebill.get().getAmxInstanceManager().unhookCallback("FCNPC_OnCreate"); //hook wieder löschen }
Der FCNPC_OnCreate Callback sieht wie folgt aus:
public FCNPC_OnCreate(npcid);Wie man sieht, beinhaltet er einen Parameter (Integer). Also müssen wir diesen Parameter am Ende der .hookCallback() Methode registrieren. Es existieren folgende Datentypen:
i -> Integer
f -> Float
s -> StringWenn man also einen Callback hat, der so aussieht:
public OnPlayerChangeName(id, old_name, new_name[]);müsste man ihn wie folgt registrieren:
PHPShoebill.get().getAmxInstanceManager().hookCallback("OnPlayerChangeName", amxCallEvent -> { }, "iss");
Wenn man nun einen NPC mithilfe von FCNPC erstellen möchte, muss die native Funktion aufgerufen werden (in einem Befehl z.B):
Die Funktion dafür sieht wie folgt aus:
native FCNPC_Create(name[]);Außerdem wird die ID des erstellten NPCs zurück gegeben:
PHP
Alles anzeigen@Command public boolean createnpc(Player player, String name) { AmxCallable nativeMethod = null; for(AmxInstance instance : Shoebill.get().getAmxInstanceManager().getAmxInstances()) { //durch alle amx Instanzen loopen if((nativeMethod = instance.getNative("FCNPC_Create")) != null) //checken ob die amx die methode enthält break; //if yes, break out of the loop } if(nativeMethod != null) { //falls die Methode gefunden wurde, wird sie ausgeführt wie folgt: player.sendMessage(Color.ORANGE, "* Exec with result: " + nativeMethod.call(name)); //gebe die erstelle Id and den Spieler zurück } else { player.sendMessage(Color.ORANGE, "* Not found!"); //Funktion nicht gefunden (plugin nicht geladen oder Tippfehler?) } return true; }
- Dieses Update erlaubt es, Werte per Referenz zu übergeben (benötigt z.B. für GetPlayerName & GetPlayerPos)
Um das neue Feature nutzen zu können, müsst ihr das Plugin und shoebill-api updaten. (update-shoebill.bat/sh in dem Server Ordner)
So wird es benutzt:
PHP
Alles anzeigen@Command public boolean getmyname(Player player) { // /getmyname command AmxCallable nativeMethod = null; for(AmxInstance instance : Shoebill.get().getAmxInstanceManager().getAmxInstances()) { if((nativeMethod = instance.getNative("GetPlayerName")) != null) break; } if(nativeMethod != null) { ReferenceString str = new ReferenceString("", 32); nativeMethod.call(player.getId(), str, str.getLength()); //native GetPlayerName(playerid, str[], len); player.sendMessage(Color.ORANGE, "Dein Name lautet " + str.getValue()); } else player.sendMessage(Color.ORANGE, "* Fehler!"); return true; }
Der Code ist natürlich nicht besonders nützlich, da man auch einfach player.getName(); verwenden kann, man kann jedoch auch native Funktionen von anderen Plugins aufrufen (z.B. FCNPC_GetPosition).
Aktuell sind 3 Datentypen verfügbar:+ ReferenceString
+ ReferenceFloat
+ ReferenceIntwelche alle im Package net.gtaun.shoebill.amx.types zu finden sind.
-
Nimm diese Version: http://forum.sa-mp.com/showthread.php?t=513499
SetPlayerGravity(playerid, 0.001); -
Zeig mal deine Savefcar() Funktion.
-
Ausgesprochen professioneller und zuverlässiger Service!
Hab jetzt seit ca. einer Woche einen vServer bei server-free.org, und hatte bisher noch keine Probleme oder Ausfälle.
Die performance des Server entspricht den beschriebenen Angaben.Nur zu empfehlen!
-
Am besten machst du dir ein CMake Projekt, dass kannst du dann unter Linux, Windows und Mac kompilieren.
-
Wenn du in deinem Gamemode irgendwo ein return 1 stehen hast, wird verhindert das der Callback in weiteren Scripts aufgerufen wird.
Du musst also return 0 am Ende stehen haben, damit der Callback in weiteren Scripts aufgerufen wird:
public OnDialogResponse(...)
{
return 1; //Falsch wenn du willst das der FS den Callback erreicht
}public OnDialogResponse(...)
{
return 0; //Damit wird der FS den Callback erreichen.
} -
Man sieht doch ganz klar das es nicht an den Plugins liegt, sondern an dem Gamemode.
Accessing element at index 2000 past array upper bound 1999
bedeutet das versucht wird ein Element in einem Array aufzurufen, obwohl es nicht existiert / außerhalb des gültigen Bereiches liegt.
//Edit: Hab ihm das Problem grad behoben.
-
Auf der Wiki Seite steht irgendwie das man grade Werte verwenden sollte, um die Kompatibilität zu maximieren.
Anstatt: 312.134 nimmst du z.B: 312
Ich weiß aber nicht ob es funktioniert, hab es selber noch nicht getestet.
-
Du musst eigentlich nur bei der shoebill-api die Version auf 1.1-SNAPSHOT ändern (in der pom.xml).
Der Rest ist gleich geblieben. -
Alf21:
Die update-shoebill Datei liegt erst beim 1.1 Release dabei -> http://bit.ly/1CPISlu.
Wenn du das Plugin ersetzt, geh dabei auch sicher das du die Launcher Datei im Ordner Shoebill -> Bootstrap ersetzt, sowie den Shoebill Gamemode und Filterscript mit dem aus dem
heruntergeladenen Ordner. Dein Problem schau ich mir später mal an. -
Danke, Shoebill 1.1 wurde eben released. Ich werde das Tutorial später aktualisieren, so wie mehrere Beispiele posten.
-
Solange unser Buildserver nicht erreichbar ist, könnt ihr auch die Sonatype Repo verwenden. (https://oss.sonatype.org/content/repositories/snapshots/)
In der pom.xml tragt ihr bei repositories folgendes ein:
Code<repository> <id>sonatype-nexus-snapshots</id> <name>Sonatype Nexus Snapshots</name> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </snapshots> </repository>
//Update: Shoebill 1.1 wurde soeben released.
Die neue Version ermöglicht es euch, Pawn Gamemodes und Filterscripts gleichzeitig mit Shoebill Gamemodes zu verwenden.
Ein genaueres Tutorial folgt noch. Download im Startthread. Wenn ihr updaten möchtet, dann nehmt den updater aus dem neuen Downloadpaket und führt update-shoebill.bat aus.