Hey,
eine Dokumentation in dem Sinne gibt es nicht.
Ein paar koreanische Kommentare hier und da, das wars dann aber auch.
Das meiste muss man für sich selbst erkunden und nachvollziehen.
Ein paar Tipps für den Start kann ich dir jedoch mit auf den Weg geben.
Vorweg:
Ich selbst habe damit begonnen den Server zu modifizieren, bevor ich mir den Client angeschaut habe.
Es ist außerdem sehr empfehlenswert Visual Studio zum bearbeiten des Codes zu verwenden.
Damit sieht nicht nur alles strukturiert und schön aus, sondern du kannst direkt zu den jeweiligen Aufrufen von Funktionen navigieren,
ohne mühsam 321 Dateien mit NP++ durchsuchen zu müssen.
Eine weitere bewährte Methode ist es, Funktionsblöcke ein- bzw. aufzuklappen (Bearbeiten -> Gliedern -> Alle Gliederungen umschalten).
So verlierst du nicht die Übersicht.
Zu Beginn kann ich nur raten die Character- sowie Item-Klasse genauer zu untersuchen.
Dazu zählen char.h char.cpp char_battle.cpp char_item.cpp char_skill.cpp item.h item.cpp
Außerdem interessant für den Anfang:
constants.h constants.cpp cmd.cpp cmd_general.cpp cmd_gm.cpp config.h config.cpp
/common/item_length.h & length.h
Alleine in der Character-Klasse lassen sich schon viele Dinge so abändern, um ingame Veränderungen feststellen zu können.
Dann würde ich einen Blick auf die Kommunikation zwischen Server & Client sowie umgekehrt werfen.
Ausschlaggebende Dateien für die Kommunikation sind:
packet.h => enthält die Struktur der Pakete (muss 1:1 mit Client übereinstimmen)
packet_info.cpp => registriert vom Client gesendete Pakete
input_main.cpp => handled ankommende Pakete vom Client
Im Anschluss daran ist dann noch die Kommunikation zwischen Server und dem DB-Core interessant.
/common/tables.h => entspricht der packet.h zur Client-Kommunikation
/db/ClientManager.cpp => handled ankommende Pakete vom GAME-Core
/game/input_db.cpp => handled ankommende Pakete vom DB-Core
Ein paar wenige Konventionen an welche man sich tatsächlich durchgehend gehalten hat gibt es übrigens auch noch.
Zum Beispiel enthalten die Paket-Header immer ein eindeutiges Kürzel im Namen, wie HEADER_CG_QUICKSLOT_ADD.
In diesem Fall steht CG für Client-Game, sprich dieses Paket wird vom Client erwartet und auf Serverseite verarbeitet.
Weitere Kürzel: GC (Game-Client) CG (Client-Game) GD (Game-Database) DG (Database-Game)
Ich denke mit den Informationen solltest du dich erstmal etwas einlesen können. Wenn du bereit für den Client bist, melde dich.
Grüße