
Homemud
*******


Abhaengigkeiten
===============

   Um den Treiber mit allen Features, die unsere Mudlib benutzt, zu
   bauen, benoetigt man folgende Pakete (die Namen koennen je nach
   Distribution abweichen):

   libjson0/json-c, libssl, libsqlite3, libpcre3, libxml2, libgcrypt,
   libpcre3, libiconv

   Beachte, dass man auf debianbasierten System auch die
   entsprechenden Entwicklerpackete (**-dev*) mitinstallieren muss,
   weil sie die notwendigen Header-Dateien der Files enthalten.


Anleitung fuer ein Homemud, unter Linux
=======================================

   Mit den folgenden Schritten installiert man die gegenwaertige
   mudlib und einen Driver der Version LDMUD-3.5.x.

   1. Lade den aktuellen Driver unter
      https://github.com/ldmud/ldmud herunter. Du kannst auch das Repo
      via git clonen.

   2. Lade die aktuelle Mudlib von
      https://mg.mud.de/gerrit/gitweb?p =mudlib-public.git herunter,
      entweder durch einen Klick auf "snapchot" oder mittels git
      clonen. Dabei kann sich git an unserem selbsterstellten SSL-
      Zertifikat stoeren, wenn Du Dich darum nicht kuemmern willst,
      nutze die Option "-c http.sslVerify=false".

   3. Gehe in das *src/*-Verzeichnis des drivers

   4. Im *src/*-Verzeichnis, fuehere "./autogen.sh" aus

   5. Im src/-Verzeichnis, passe die Pfade in settings/morgengrauen
      an, und fuehre settings/morgengrauen aus

   6. im src/-Verzeichnis, kompiliere und installiere den Treiber
      mit "make all" und "make install-all".

   7. Falls noch nicht geschehen, schiebe die Mudlib in den Ordner,
      den Du in *settings/morgengrauen* eingestellt hast

   Nun laesst sich das Homemud mit der installierten ldmud-binary
   starten. Du kannst als Argument noch einen alternativen Port
   angeben.

   8. Starte das mud mit der installierten ldmud-Binary. Mittels
      "ldmud <port>" kannst Du auch den Port bestimmten, auf welchem
      das Homemud laeuft.

   Optional kannst Du noch den Namen des Mudgottes von Jof auf etwas
   anderes aendern, das geht wie folgt:

   code-block:

      mv save/j/jof.o save/t/thomas.o
      mv secure/save/j/jof.o secure/save/t/thomas.o
      # (beachte den Namen des Unterverzeichnisses, es ist der erste Buchstabe
      # Deines Namens. )
      sed -i 's/jof/thomas/' secure/save/t/thomas.o
      mkdir -p players/thomas
      mv players/jof/workroom.c players/thomas/workroom.c

   Nachdem Login muss man nun noch den Workroom anpassen:

   code-block:

      clone /obj/tools/MGtool
      xcall $me->SetProp(P_START_HOME, "/players/thomas/workroom");
      save


Beispielinstallation
====================

   code-block:

      cd <mudhome>
      git clone https://github.com/ldmud/ldmud.git
      cd ldmud-3.5/src
      ./autogen.sh
      settings/morgengrauen
      make all && make install-all
      cd <mudhome>
      # hier wurde der bin/ Ordner nicht angepasst, wir verschieben noch die
      # Binary
      mv bin.install/ldmud bin/ldmud
      tar xvzf <mudlib-snapshot.tgz>
      git clone https://mg.mud.de/gerrit/mudlib-public
      cd <mudhome>
      cd <mudlib>
      mv save/j/jof.o save/t/thomas.o
      mv secure/save/j/jof.o secure/save/t/thomas.o
      # (beachte den Namen des Unterverzeichnisses, es ist der erste Buchstabe
      # Deines Namens. )
      sed -i 's/jof/thomas/' secure/save/t/thomas.o
      mkdir -p players/thomas
      mv players/jof/workroom.c players/thomas/workroom.c
      bin/ldmud
      # oder
      bin/ldmud -m <alternative path to mudlib> <alternative port>

   Nachdem Login muss man nun noch den Workroom anpassen:

   code-block:

      clone /obj/tools/MGtool
      xcall $me->SetProp(P_START_HOME, "/players/thomas/workroom");
      save

Letzte Aenderung: 2018-12-09 von Deaddy (auf Basis von Zesstras engl.
Anleitung)
