RAGE MP Dev-Blog #2

Nachdem ich die Registration und die Anmeldung fertig hatte, habe ich mich dazu entschieden aus dem Server einen Reallife Server zu machen, wie es sie bei SA:MP (San Andreas Multiplayer) oder MTA (Multi Theft Auto) schon gab. Nach der Registration und Anmeldung kam das Geldsystem sowie die Bankautomaten und schon traten die ersten Probleme auf. Die Promises funktionieren in Rage MP leider nicht so, wie sie sollen. Wenn eine Funktion mit einem Promise direkt in einem Rage MP Event aufgerufen wird, wird der Promise nicht ordentlich ausgeführt. Der Code funktioniert allerdings in Node.js wunderbar. Mit einem setTimeout auf 0ms direkt nachdem Start des Events funktioniert der Promise komischerweise.


Nachdem ich das Problem dann mit dem setTimeout gelöst habe, ging es mit dem Chat sowie dem Levelsystem weiter. Der Rage MP Chat ist leider nicht so toll, daher hab ich mit einem Browser einen eigenen Chat erstellt und den Rage MP Chat deaktiviert. Mit den Pfeiltasten kann man im Chat dann seine letzten eingegebenen Nachrichten erneut absenden. Zusätzlich wird vor der Chat-Nachricht dann auch die Uhrzeit angezeigt. Das Levelsystem ist ganz simpel gehalten. Für jede Aktion im Spiel wird es später Erfahrungspunkte geben, wodurch der Spieler im Level steigt und neue Features freischaltet.


Auch das Inventar System habe ich zumindest serverseitig schon fertiggestellt, also es gibt aktuell noch keine Darstellung für den Spieler. Das System kann dann später problemlos in andere Entities, wie zum Beispiel Fahrzeuge oder Häuser, eingebunden werden. Es wurde so programmiert dass auch Inventare in Inventare drin sein können, zum Beispiel kann ein Spieler später in seinem Inventar eine Tasche mit Gegenständen, welche auch ein Inventar ist, haben und diese dann auch einem anderen Spieler übergeben oder in ein Fahrzeug, welches auch ein Inventar hat, legen.


In den letzten Tagen hab ich dann auch mit großer Anstrengung Webpack soweit eingerichtet, dass es für Client und Server funktioniert und der Server nach dem bündeln neugestartet wird. Webpack bündelt alle Javascript-Dateien zu einer Datei. Zusätzlich verwende ich jetzt auch für den Client TypeScript und ändere alles Stück für Stück auf TypeScript-Dateien.