Testserver erweitern

Du hast 1 neue Nachrichten seit deinem letzten Besuch.

Dieses Wiki beschreibt das Ergänzen des eigenen Testservers um weitere Gegenstände, ausgehend von einem Linux-OS:

1. Quellen kompilieren: Der Compiling Guide

Zunächst muss man erfolgreich die Quellen entsprechend des Compiling Guides kompilieren.

Anzumerken wäre, dass Debian-basierte Distros Cal3d als deb-Paket installieren können.

Repositories u.a.:

http://ftp.de.debian.org sid/main Packages

http://ftp.de.debian.org testing/main Packages

Dies erspart das Runterladen/Kompilieren von Cal3d wie im Guide beschrieben
(nicht vergessen: "--with-cal3d=$HOME/development/cal3d"-flag weglassen).


2. Pfade definieren: Exports

Ist dies geschafft, so erstellt man eine Textdatei im neu erstellten planeshift-Ordner mit folgendem Inhalt:

export CRYSTAL=/Pfad/zu/cs

  1. export CAL3D=/Pfad/zu/cal3d

export LD_LIBRARY_PATH=$CEGUI/lib:/Pfad/zu/cs:$LD_LIBRARY_PATH

(Wurde Cal3d selbst kompiliert, so muss die zweite Zeile auskommentiert und ebenfalls angepasst werden.)

Dadurch wird der Ort von cs (und ggf. Cal3d) definiert.


3. Maps einlesen lassen

Damit der zu startende Server nun alle Maps einliest, muss eine weitere Textdatei erstellt werden:

  1. loadmap akkaio
  2. loadmap akkroad
  3. loadmap arena
  4. loadmap bdr2bdoors
  5. loadmap bdroad1
  6. loadmap bdroad2
  7. loadmap bronzedoors
  8. loadmap deathrealm
  9. loadmap hyarena
  10. loadmap hybdr
  11. loadmap hydlaa_common
  12. loadmap hydlaa_jayose
  13. loadmap hydlaa_plaza
  14. loadmap hydlaa_winch
  15. loadmap hydungeon
  16. loadmap hyjayose
  17. loadmap hyoja2
  18. loadmap hysewers
  19. loadmap jayose
  20. loadmap korogan
  21. loadmap laanx
  22. loadmap laanxdungeon
  23. loadmap magicshop
  24. loadmap npcroom1
  25. loadmap npcroom2
  26. loadmap npcroom_corr
  27. loadmap ojakorogan
  28. loadmap ojaroad1
  29. loadmap ojaroad2
  30. loadmap podium
  31. loadmap sewers
  32. loadmap tavern_de_kadel
  33. loadmap terr_common
  34. loadmap wtower
  35. loadmap guildlaw
  36. loadmap guildsimple
  37. loadmap tutorial
  38. loadmap blackflame
  39. loadmap caves01
  40. loadmap caves02
  41. loadmap gugrontid
  42. loadmap roadtogug
  43.  
  44. spawn
  45.  
  46. ready

Wurden während der Entwicklung von Planeshift weitere, neue Maps hinzugefügt, so können die entsprechenden Namen aus "../planeshift/art/world" entnommen (Name der zip-files ohne Endung) und der Liste angehängt werden.


4. Server starten

Damit der Server sowohl cs (und Cal3d) findet, als auch direkt alle Maps lädt, erstellt man ein Start-script im planeshift-Ordner indem man folgendes in eine Textdatei kopiert:

  1. #!/bin/bash
  2. source profile
  3. ./psserver --run=/this/autorun

Diese Script muss ausführbar gemacht werden. Nennt man es bspw. "serverstart", so erfolgt dies mit:
  1. chmod +x serverstart



5. Optional: Client über diesselbe Kompilation starten

Soll der Client über die kompilierten Quellen gestartet werden, so muss auch hierfür ein Start-script erstellt werden, damit der cs- (und Cal3d-) Pfad gefunden wird. Analog zum Server-Start-script:

  1. #!/bin/bash
  2. source profile
  3. ./psclient

Auch dieses muss ausführbar gemacht werden.


6. Zusätzliche Gegenstände inkludieren

Der frisch kompilierte Server enthält lediglich eine Minimalaustattung an Gegenständen. Um diese zu erweitern müssen mysql Datenbanken ergänzt werden. Diese finden sich in "../planeshift/src/server/database/mysql".

6.1 Allgemein Definitionen: commonstrings.sql

In "../planeshift/art/things" finden sich diverse zip-Files. Möchte man eine Waffe hinzufügen, so entpackt man "weapons.zip", und entscheidet sich z.B. für ein "Throwing Knife".

  1. [..]
  2. throwing_knife01a.dds
  3. throwing_knife01a_icon.dds
  4. throwing_knife01a.meshfact
  5. [..]

Nun öffnet man "../planeshift/src/server/database/mysql/commonstrings.sql" mit einem Texteditor, und dupliziert 2 der bereits vorhandenen Zeilen. Diese beiden Zeilen müssen angepasst werden:

1. Die "UNIQUE id" muss eine in dieser Datei einmalig vorkommende Zahl (id) sein.

2. Die "UNIQUE strings" enthalten die Dateinamen der beiden dds-Files des gewünschten Gegnstandes ohne Endung.



Beispiel:

INSERT INTO common_strings VALUES("2403","weapons#throwing_knife01a");

INSERT INTO common_strings VALUES("2413","/planeshift/weapons/throwing_knife01a_icon.dds");

Die erste Zeile definiert das Modell, die zweite das Icon.
Nun wurden also dem "Throwing Knife" Zahlen zugewiesen.


6.2 Eigenschaften definieren: item_stats.sql

Damit der Server das "Throwing Knife" als Gegenstand behandelt, der z.B. angelegt werden kann, müssen Eigenschaften in der Datei "../planeshift/src/server/database/mysql/item_stats.sql" festgelegt werden.
Auch hier wieder am besten eine Zeile duplizieren und anpassen.

Erläuterung anhand des Beispiels:

(249,'B','Throwing Knife',7.00,5.00,100,0,'BULK LEFTHAND RIGHTHAND','RANGEWEAPON',0.10,0,-1,-1,'0','0','0',0.00,0.00,0.00,0.00,0.00,0.00,4.00,0.00,0.00,0.00,0.00,0.00,2403,2413,0,0,0,'Sabre',1,
1000.00,'SWORD',,0.00,,0.00,'0',0.00,'0',0,0.0000,0,0,0,1,'0','nosound',50,,,NULL,NULL,-1,2),

Wichtigste erforderliche Anpassungen:

249: Einmalige id-Nummer

Throwing Knife: Individueller Name

2403: id-Nummer des Modells aus der commonstrings.sql

2413: id-Nummer des Icons aus der commonstrings.sql



6.3 Datenbanken aktualisieren

Damit der Server die Änderungen berücksichtigt, müssen zunächst die Datenbanken, die auf Basis der sql-Dateien aufgebaut werden, aktualisiert werden. Im Verzeichnis "../planeshift/src/server/database/mysql" loggt man sich zunächst in mysql ein (siehe Compiling Guide, "Create the database") und führt aus:

  1. mysql> source drop.sql;
  2. mysql> source create_all.sql;

Anmerkung: Der erste Befehl ist empfehlenswert, da ein "source commonstrings.sql" die Datenbank nicht notwendigerweise korrekt updated.


7. Server neustarten

Zuletzt muss der Server neu gestartet werden. Nachdem man sich eingeloggt hat, vergibt man sich per "/admin" im Chatwindow entsprechende Rechte, ein anschließendes "/items" öffnet ein Fenster durch das man sich den neuen Gegenstand ins Inventory spawnen kann.

Eingeordnet in: