Vorwort
Hallo. Dies ist ein aktueller Guide und eine gute Richtlinie um euch zu erklären, wie man einen eigenen Server mit eAthena und RagnarokRE Client aufsetzt und auch zum laufen bringt.
Dies soll unter Umständen dazu beitragen, dass weniger Posts mit konstant denselben Fragen im eAthena erscheinen.
Auf gehts.
Was brauchen wir?
Grundvorraussetzungen, Programme die ihr runtergeladen/installiert haben solltet:
- TortoiseSVN ( )
- Microsoft Visual C++ Express 2010 ( )
- K3dt's Diffpatcher ( )
- Ragray ( )
- GRF Factory ( )
- Hex Editor MX oder Hex Workshop ( )
- Xampp ( )
Warum brauchen wir das?
TortoiseSVN wird benötigt, um die eAthena SVN runterzuladen. Pre-compilte Archive sind zwar angenehm und simpel,
mit einer SVN besteht allerdings nicht die Gefahr, dass ihr etwas falsches/altes runterladet.
Außerdem macht sich das updaten angenehmer.
Visual C++ wird zum "compilen" des Servers benötigt. Was ihr mit der eAthena SVN bekommt, ist eine Sammlung
aus Dateien und Ordnern. Der Source Code von eAthena muss von euch kompiliert werden, damit ihr es starten könnt.
K3dt's Diffpatcher wird zum diffen der Exe benötigt
Der Rest erklärt sich, Xampp ist eine Zusammenfassung aus Webserver, SQL Server und FTP Server unter Windows.
Vorbereitungen
Zuerst bereitet ihr einen vernünftigen Arbeitsplatz vor, denn wenn alles unordentlich rumfliegt, verliert ihr später die Übersicht.
Legt nun auf einem Datenträger eurer Wahl, bei mir "D:" einen Ordner namens "eAthena" an.
Dort drin erstellt ihr weitere Ordner, einen "Server" Ordner, einen "Client" Ordner, einen "Tools" Ordner.
Das sollte so aussehen:
In den Ordner Tools tut ihr alle Tools bezüglich RO. Diese wären GRF Factory und den Diff-Patcher.
In den Ordner Client installiert ihr ersteinmal Ragray. Ragray stellt die Basis für euren Client dar.
Nachdem ihr Ragray installiert habt, patcht kRO und kRO RE. Zuerst startet ihr die
D:\eAthena\Client\Ragnarok.exe und lasst sie durchlaufen (es ist fertig, wenn die ausgeblendeten Buttons erscheinen),
danach lasst ihr D:\eAthena\Client\RagnarokRE.exe durchlaufen.
Server Download / SVN
Ich habe gemerkt, dass viele einfach nicht dazu in der Lage zu sein scheinen, sich schnell per Google darüber zu erkundigen was SVN ist.
SVN steht für Subversion und ist eine Möglichkeit, Entwicklern eine geteilte Plattform zum entwickeln zu bieten.
Es gibt viele SVN Services, eAthena benutzt Googlecode.
Es ist im Prinzip nichts anderes als ein Ordnersystem, das auf einem Server gespeichert wird.
Der Vorteil ist, dass bei jeder Änderung am Ordnersystem ein Changelog geschrieben werden kann und
eine Revisionsnummer vergeben wird, die in grob eine Version darstellt.
Außerdem könnt ihr so mit einem einfachen Rechtsklick und der Auswahl von "SVN Update" eure Revision auf die aktuellste eAthena Revision updaten.
Laden wir uns nun die eAthena SVN herunter.
Geht in den Ordner D:\eAthena und macht einen rechts-klick auf den Ordner "Server".
Dort müsstet ihr im Kontextmenü einen Punkt namens "SVN Checkout" haben.
Klickt darauf.
Anschließend sollte sich folgendes Fenster öffnen:
Im Textfeld unter "URL of repository:" gebt ihr nun folgende URL ein:
Code:
http://eathena-project.googlecode.com/svn/trunk/
TortoiseSVN läd euch nun die aktuellste eAthena SVN herunter.
Wartet einfach bis es fertig ist.
Danach solltet ihr in
D:\eAthena\Server
ein vollständiges eAthena haben
Machen wir uns erstmal an unseren Client.
Diffen / Hexen des Clients
Viele Leute haben Angst vorm diffen, ich versteh nicht ganz, warum.
Wenn ihr es falsch macht, versucht es immer wieder, mit anderen Konfigurationen.
Zuerst sucht ihr euch unter folgender URL einen Client eurer Wahl aus:
Code:
http://svn6.assembla.com/svn/ClientSide/Diff_Project/kRO/RagexeRE/
Wir allerdings nehmen RagnarokRE Clients.
Auf Sirius_White's Empfehlung bitte ich euch, den Client vom 07.04.2010 zu nehmen,
da dieser auch Serverseitig momentan am stabilsten und aktuellsten ist.
Klickt einfach auf den Link namens "2010-04-07/", das Datum gibt das
Erstellungsdatum des Clients an, also wann der Client von Gravity kompiliert wurde.
Die .rar ist der Client selbst, den .diff brauchen wir ebenfalls, mit diesem diffen wir unseren Client.
Ladet nun beides herunter.
Ich habe den Pfad
Code:
D:\eAthena\Tools\Clients\2010-04-07
Entpackt nun das .rar Archiv und bestaunt euren brandneuen Client, den ihr nun selbst diffen und hexen dürft.
Was genau macht das diffen denn?
.exe Dateien, auch bekannt als Portable Executables (PE) sind im Grunde auch nichts anderes,
als ein Dateiformat. Der Unterschied ist, das Windows dieses Dateiformat ausführen kann und dann Dinge passieren.
In diesem Dateiformat finden sich an einigen Stellen Daten die geändert werden können,
so können z.B. Zahlen für maximale Headgears, Screenshot Qualitäten und Farben geändert werden.
Wir könnten nun einen Hex-Editor nehmen und dies Positionen (Offsets) der Zahlen suchen und direkt
editieren. Dies wäre aber bei der heutigen Anzahl an mögliche Modifikationen eine wahre Drecksarbeit.
Dank dem Diff-Team sind wir dazu in der Lage, durch eine kleine .diff Datei und einen Diff-Patcher
die Werte dieser Zahlen ganz komfortabel zu ändern.
Das aktuelle Diff-Format kann nicht alles, für ein paar Dinge müssen wir immernoch mit dem
Hex-Editor drüber, aber das grundsätzliche passiert durch den Diff-Patcher.
Das diffen
Schauen wir uns das ganze doch einfach mal an.
Startet nun K3dt's Diff-Patcher und öffnet sowohl euren Diff als auch eure Exe damit.
Das ganze sollte dann in etwa so aussehen:
Es sieht am Anfang womöglich sehr unübersichtlich aus und man hat teilweise auch keine Ahnung, was man da eigentlich diffen soll.
Eine Beschreibung der einzelnen Diffs findet ihr
Ich sage euch am besten einfach, was ihr diffen müsst und was nicht, der Rest ist für euch optional,
macht es so wie ihr denkt und möchtet.
Was MUSS/SOLLTE gedifft werden?
- [Fix] Aura Crashfix
- [Fix] Fix Client Freeze Langtype 1+
- [Packet](11) Disable Login Packet 0x2b0
- [Data] Unlimited Loadings Screens
- [Data](7) GRF Adata/Bdata Support (Warum seht ihr gleich)
- [Fix] Disable Captcha
- [Data] Load Lua before Lub
- [Fix] Chat @-Bug
- [Add] Disable Nagle-Algorithm
Was sollte NICHT gedifft werden
Diese Informationen mögen veraltet sein, ich lasse mich gerne eines besseren belehren
- [UI](10) Enable /showname
- [Data](8) Use encoded descriptions
Spielt einfach ein bischen rum. Wenn der Client crasht, dann ist es halt so,
einfach nochmal probieren.
Ich habe es nun folgendermassen gedifft:
Mit dem Button "Patch" schließt ihr das diffen ab.
Wenn dies fehlschlägt, andert eure Diffs ein bischen.
Nun sollte im Ordner der Exe eine
Code:
2010-04-07aRagexeRE_patched.exe
Dies ist unsere gediffte Exe.
Nun gehts aber noch weiter...
Hexen
Warum müssen wir hexen?
Einmal, damit wir einen anderen Fenstertitel erhalten können, weiterhin:
Wir haben adata/bdata Support gedifft.
Dies haben wir getan, damit wir keine DATA.INI brauchen und andere Server
nicht mit unserem kollidieren, wenn sie im selben Ordner installiert sind.
Wir werden aus der adata.grf die wir nun nutzen könnten unsere eigene GRF "hexen"
Öffnet dazu einfach Hex Editor MX und öffnet damit eure gediffte Exe.
Bevor ihr nun lange rumsucht:
STRG+F um die Suche zu öffnen, ihr sucht nach einem Text, und zwar nach dem Text
"diff".
Dies sollte euch an eine Stelle bringen, an der ihr etwas ähnliches wie
Code:
2010-04-07RagexeRE by Diff Team
Beginnend ab dem ersten Zeichen dieser Phrase könnt ihr nun euren eigenen Titel eintragen.
Um die restlichen Buchstaben wegzukriegen könnt ihr sie einfach mit Leerzeichen auffüllen,
ihr könnt allerdings auch Null-bytes daraus machen.
Weiter gehts.
Nun sucht ihr nach dem Begriff "adata"
Ihr könnt die beiden Wörter "adata.grf" und "bdata.grf" an denen ihr nun gelandet seid einfach in eure eigenen GRF Namen ändern.
Achtet dabei darauf, dass der Name nur bis zum letzten Null-byte vor dem nächsten wirklichen Text gehen darf.
Beispiel:
Falsch:
Richtig:
Das wars auch schon mit der Zauberei.
Die Exe ist nun fertig und ihr könnt sie bedenkenlos in euren Client Ordner ( D:\eAthena\Client ) ziehen und nach Wünschen umbenennen.
Machen wir nun noch die GRF fertig.
Die GRF
Die GRF ist ein Archiv, wie eine .rar, die die Spieldaten für den Client enthält.
Im Grunde zieht der Client alles nötige aus der data.grf und rdata.grf, um aber
die Möglichkeit zur massiven Modifikation zu haben, brauchen wir ein paar Dinge.
Aktuelle Full-Data mit RE Support.
Lua Files.
Entpackt die Full-Data, packt die Lua Files in den "lua files/" Ordner eurer Full Data
und passt eure clientinfo.xml an.
Wir haben bisher noch keine Server-Configs gemacht, stellt die IP einfach auf 127.0.0.1.
Für eine ausführliche Erklärung der clientinfo schaue man ins Wiki
Ihr könnt dies nun zu einer GRF verpacken und genau so nennen, wie ihr eure Custom-GRF in den Client gehext habt.
Um euch aber die Entwicklung zu erleichtern, reicht es fürs erste, das ganze in den "data/" Ordner eures RO Clients zu schieben.
Vorraussetzung hierfür ist der Diff "Read data folder first", habt ihr diesen nicht, benutzt eine GRF.
Der Client ist nun fertig und startklar, machen wir uns an die letzten Schritte am Server.
Die Datenbank
Startet das Xampp Control Panel und startet sowohl den Apache als auch den MySql Prozess.
Klickt nun auf diesen link
Zauberei!
localhost ist eure lokale Domain, sie löst nach 127.0.0.1, eurer lokalen IP auf.
Dies bedeutet, dass ihr euch nun in eurem phpMyAdmin befindet.
Übrigens, wenn der Apache nicht starten will, schließt bitte Skype und Teamviewer,
da diese Port 80 benutzen, den der Apache braucht.
Alternativ hilft auch der "Portcheck" im Xampp Control Panel
Im phpMyAdmin loggt ihr euch mit dem Benutzer "root" ein, Passwort bleibt leer.
Drückt Enter und ihr seid im phpMyAdmin.
Nun legen wir erstmal einen Benutzer an...
Klickt oben im Menü auf "Rechte" und dann unten auf "Neuen Benutzer hinzufügen".
Ich nehme für die Benutzerdaten einfach folgende:
Benutzer: ragnarok
Host: Jeder Host
Passwort: ragnarok
Dies dient nur zur Demonstration, ihr wählt natürlich weitaus sicherere Daten.
Markiert unten den Punkt "Erstelle eine Datenbank mit gleichem Namen und gewähre alle Rechte".
Wenn ihr nun auf "OK" unten drückt, sollte links eine neue Datenbank erscheinen, die eurem
Benutzernamen entspricht.
Bei mir nuneinmal "ragnarok".
Klickt sie an.
Ihr landet nun im Datenbank Controlpanel.
Ihr müsst nun die eAthena SQL Files importieren.
Klickt dazu auf "Importieren" im Menü oben.
Die SQL Files befinden sich im eAthena im Ordner "sql-files"
Ihr braucht nur die main.sql und die log.sql
Wenn eure Monster und Itemdatenbanken ebenfalls SQL basiert werden sollen, braucht ihr auch die
item_db.sql, item_db2.sql, mob_db.sql und die mob_db2.sql
Links sollten nun ein paar Tabellen erscheinen, einfache Links.
Wählt die "login" Tabelle an.
In der "login" Tabelle werden alle Account-Daten gespeichert.
Ein Benutzer, der standard Serverbenutzer, ist bereits vorhanden.
Klickt auf den Bleistift und editiert ihn, gebt ihm neue Daten.
Merkt euch diese, ihr werdet sie noch brauchen.
Achtet beim Feld "user-pass" bitte darauf, dass ihr links im Dropdown "MD5" auswählt,
damit sichert ihr euren Server gegenüber Angriffen ein bischen weiter ab.
Anschließend drückt "OK" und oben im Menü auf "Einfügen".
Hier legen wir euren GM Benutzer an.
Interessant sind nur die Felder "userid" (Accountname), "user-pass" (Passwort) und "email" (E-Mail addresse).
In das Feld "level" tragt ihr 99 ein, im Dropdown neben dem Feld "user-pass" wählt ihr wieder "MD5" aus.
Bestätigt mit "OK".
Eure Datenbanken sind nun eingerichtet und konfiguriert.
Wenden wir uns nun den Server-Configs zu.
Server und Serverkonfigurationen
Das erste was ihr tun solltet, ist die Paketversion korrekt einzutragen.
Der erste Schritt ist die "db/packet_db.txt".
Ändert folgendes
Code:
packet_db_ver: 23 //packet_db_ver: default
Code:
//packet_db_ver: 23 packet_db_ver: default
Geht anschließend in die "src/common/mmo.h"
Ihr befindet euch nun im eAthena Source Code.
Dieser Schritt ist notwendig, damit eAthena die Pakettransfers des Clients richtig zuordnen kann und
keine Fehler entstehen.
Eure Paketversion entspricht des Datums eures Clients ohne die "-".
Angenommen ihr benutzt den Client 2010-04-07aRagexeRE, ist eure Paketversion 20100407.
Sucht nach
Code:
#ifndef PACKETVER #define PACKETVER 20081126 //#define PACKETVER 20100223 #endif
Code:
#ifndef PACKETVER #define PACKETVER 20100407 //#define PACKETVER 20100223 #endif
Wenden wir uns nun den Konfigurationen zu.
Kurz und knapp:
Solange ihr Lokal arbeitet, sind alle eure IPs 127.0.0.1.
Dies ist Standard, d.h. ihr braucht dort nichts weiter ändern.
Guides zu den Konfigurationen findet ihr hier in massen.
Wichtig ist, dass ihr in der "conf/map_athena.conf" und "conf/char_athena.conf"
die Werte
Code:
// Server Communication username and password. userid: s1 passwd: p1
in der "conf/login_athena.conf" müsst ihr
Code:
// Store passwords as MD5 hashes instead of plaintext ? // NOTE: Will not work with clients that use <passwordencrypt> use_MD5_passwords: no
Code:
// Store passwords as MD5 hashes instead of plaintext ? // NOTE: Will not work with clients that use <passwordencrypt> use_MD5_passwords: yes
In der "conf/inter_athena.conf" passt ihr die Benutzerdaten zu eurer Datenbank an.
Nun sollte alles korrekt konfiguriert sein und ihr könnt eigentlich loslegen...
aber womit? Es sind ja garkeine Exe-Dateien im eAthena vorhanden!
Kein Problem, dafür habt ihr Visual C++.
Im eAthena Ordner sollte eine "eAthena-9.sln" sein.
Öffnet diese einfach mit Visual C++.
Ihr kompiliert nun folgende Programme:
map-server_sql
char-server_sql
login-server_sql
Einfach einen Rechtsklick auf das jeweilige Projekt im Projektexplorer rechts und auf "Neu erstellen" klicken.
Sobald er fertig kompiliert habt tut ihr nun folgendes:
- Startet im eAthena Ordner die login-athena_sql.exe
- Startet im eAthena Ordner die char-athena_sql.exe
- Startet im eAthena ORdner die map-athena_sql.exe
- Startet euren gepatchten Client im Client Ordner
Viel Spaß beim zocken.
Mit freundlichen Grüßen,
DarkDevine
PS: Ich werde diesen Guide nicht editieren, ich weiß, dass er nicht perfekt ist, nicht sehr spezifisch und nicht farbig und wenige Bilder enthält etc., ihr braucht mir dies nicht mitzuteilen. Ich habe keine Zeit für sowas, da ich permanent arbeiten bin, ich habe diesen Guide an zwei Tagen vor der Fahrt zur Baustelle geschrieben. Wer Langeweile hat, darf diesen Guide gerne als Basis nehmen und mit neuen Bildern und Farben bestücken und selbst releasen.
PSS: Rechtschreibfehler dürft ihr behalten