Wenn du über einfache Pferde hinausgehen und deinen Spielern Kampf-Reittiere bieten willst, brauchst du echte Kontrolle über das Metin2 Reittier-System. Die klassische Reitmechanik ist in den meisten Clients fertig enthalten; die eigentliche Arbeit besteht darin, Reittiere als Items zu definieren, jedem ein Modell und Boni zuzuweisen, Kampf-Reittiere von dekorativen zu trennen und das Ganze zu balancieren, ohne die Wirtschaft deines Servers zu zerstören. In dieser Anleitung gehe ich die gesamte Pipeline durch, von der item_proto bis zum Servercode und den Quest-Funktionen, Schritt für Schritt.
Wie das Reittier-System funktioniert
In Metin2 ist ein Reittier visuell ein Mob-Modell, auf dem der Charakter sitzt. Das heißt, jedes Reittier ist eigentlich ein Eintrag in der mob_proto mit eigener vnum; der Charakter "reitet" diese vnum und der Server fügt seinem Zustand ein RIDING-Flag hinzu. Ausgelöst wird das Ganze durch das Reittier-Item im Inventar. Der Ablauf sieht so aus:
- Der Spieler benutzt ein Reittier-Item (Doppelklick).
- Der Server liest die Mob-vnum, die an dieses Item gebunden ist, und setzt den Charakter auf dieses Modell.
- Solange das Reittier aktiv ist, werden dem Charakter Bonus-Affects zugewiesen (HP, Bewegungsgeschwindigkeit, Angriffswert usw.).
- Wenn die Dauer abläuft oder der Spieler absteigt, werden Reittier und Boni entfernt.
Diese Trennung ist wichtig: das Visuelle (Mob-Modell), der Auslöser (Inventar-Item) und der Effekt (Bonus-Affects) sind drei getrennte Schichten. Falsch verdrahtet erhältst du entweder ein unsichtbares Reittier oder ein Item, dessen Bonus nie auslöst.
item_proto: das Reittier-Item definieren
Für jedes Reittier legst du einen Eintrag in der Tabelle item_proto an. Reittier-Items sind benutzbare (USE) Items, die den Charakter bei Benutzung aufsteigen lassen. Das entscheidende Feld ist jenes, das angibt, auf welches Reittier-Modell das Item verweist — also enthält eines der value-Felder die mob_proto-vnum des Reittiers. Ein typisches Beispiel:
vnum | name | type | subtype | value0 | value1
---------+-------------------+-----------+-------------+--------+-------
71114 | Streitross (Rot) | ITEM_USE | USE_MOUNT | 20114 | 0
Hier ist value0 die Mob-vnum des Reittiers (Beispiel: 20114) und value1 kann zur Dauerkontrolle dienen (in Sekunden; 0 = unbegrenzt). Feldnamen und -reihenfolge variieren je nach Source-Version, also nimm deine eigene item_proto-Vorlage als Referenz und erfinde keine Werte. Vergiss nach der Änderung nicht, die item_proto auch clientseitig nachzuziehen (in der Regel die Dateien item_proto und item_names); sonst erscheint das Item nicht oder zeigt sich "leer" im Client.
Modell und Boni des Reittiers
Das Reittier selbst wird in der mob_proto definiert. Die wichtigsten Teile sind hier die Modelldatei (das .gr2 / Motion-Pack des Reittiers) und das korrekte Einstellen des Typs des Reittiers. Reittier-Boni sind Affects, die einsetzen, wenn der Spieler aufsteigt, und sie werden meist auf eine von zwei Arten vergeben:
- Feste Boni: ins Reittier eingebacken, bei jedem Ritt identisch (z. B. +20 % Bewegungsgeschwindigkeit).
- Quest-basierte Boni: per Questlogik hinzugefügt, wenn der Spieler aufsteigt — zeitlich begrenzt oder bedingt.
Die zweite Methode ist weitaus flexibler, weil du den Bonus ändern kannst, ohne Code neu zu kompilieren, einfach indem du eine Questdatei aktualisierst. Wenn du die Server-Source lieber nicht kompilieren willst, ist es klug, das gesamte Balancing auf der Questseite zu halten.
Kampf-Reittiere und Quest-Funktionen
Metin2 kennt zwei Arten von Reittieren: das normale Reittier, rein dekorativ oder für Geschwindigkeit, und das Kampf-Reittier, mit dem du im Reiten angreifen kannst. Ein Kampf-Reittier lässt dich im Sattel deine Waffe benutzen und besondere berittene Fertigkeiten auslösen (etwa einen Sturmangriff). Dieses Verhalten wird im Servercode anhand des Reittier-Typs entschieden.
Um Reittiere aus einer Quest zu steuern, nutzt du die eingebauten pc-Funktionen von Metin2. Die gängigsten:
-- Setze den Spieler fuer 60 Sekunden auf Reittier 20114
pc.mount(20114, 60)
-- Sitzt der Spieler gerade auf einem Reittier?
if pc.is_mount() then
say("Du sitzt bereits auf einem Reittier.")
end
-- Absteigen
pc.unmount()
-- Beim Aufsteigen einen zeitlich begrenzten Bonus anwenden
-- (apply-Typ, Wert, Dauer[Sek])
pc.mount_bonus(apply.MOV_SPEED, 20, 60)
Willst du ein Reittier-Item an eine Quest binden, fängst du die Item-Benutzung ab und rufst dort pc.mount auf:
quest reittier_streitross begin
state start begin
when 71114.use begin
if pc.is_mount() then
pc.unmount()
else
pc.mount(20114, 0) -- unbegrenzt reiten
pc.mount_bonus(apply.MAX_HP, 3000, 0)
pc.mount_bonus(apply.ATT_GRADE_BONUS, 50, 0)
end
end
end
end
Hier erledigt dasselbe Item sowohl Auf- als auch Absteigen: Sitzt der Spieler bereits auf dem Reittier, steigt er ab, sonst steigt er auf. Boni mit pc.mount_bonus zu vergeben, lässt dich das gesamte Balancing in einer einzigen Questdatei bündeln. Wichtig: Stelle sicher, dass die apply-Konstanten, die du verwendest, exakt mit den Definitionen in deiner Server-Source übereinstimmen; ein falscher apply-Typ bewirkt stillschweigend nichts oder gibt einen unerwarteten Bonus.
Balancing: Boni unter Kontrolle halten
Reittier-Boni sind einer der schnellsten Wege, die PvP- und Wirtschaftsbalance eines Servers zu zerstören. Ein starkes, für alle erreichbares Reittier wird zu einem dauerhaften Stat-Buff und zwingt Spieler, "reiten zu müssen". Ein paar praktische Regeln:
- Halte Boni bescheiden. Bewegungsgeschwindigkeit ist ein natürlicher Reittier-Bonus; aber Angriffs-/Verteidigungswerte aufzublähen zerstört deine gesamte Balance-Tabelle. Fang klein an und erhöhe mit Spieler-Feedback.
- Setze Kampf-Reittiere auf eine eigene Stufe. Ein Kampf-Reittier ist ein starker Vorteil; mach es nicht zu einem billigen Item, das jeder ewig nutzen kann. Es zeitlich begrenzt zu halten (Event oder Cash-Shop) wahrt die Balance.
- Beschränke sie auf PvP-Maps. Reittier-Boni oder das Aufsteigen selbst in Gildenkriegen oder Arenen zu deaktivieren, verhindert, dass Können gegen ein Item verliert.
- Denke Dauer und Kosten zusammen. Ein kostenloses, dauerhaftes Reittier hat keinen Wert; zeitlich begrenzte, fair bepreiste Reittiere halten Wirtschaft und Spielziele am Leben.
Prüfe nach jeder Änderung die syserr-Logs: eine falsche vnum oder ein fehlendes Modell kann beim Aufsteigen einen stillen Crash oder einen Unsichtbares-Reittier-Bug auslösen.
Testen und Live-Schaltung
Bevor du ein Reittier live schaltest, geh diese Checkliste mit einem GM-Konto durch: Erscheint das Reittier, wenn das Item benutzt wird, werden die Boni angewendet (öffne die Charakterinfo und prüfe die Werte), steigt es sauber ab, wenn die Zeit abläuft oder per pc.unmount(), und bleibt das Reittier in Randfällen wie Teleport, Tod oder Gildenkrieg nicht hängen. Stelle sicher, dass die item_proto von Client und Server synchron sind; der häufigste Bug ist ein Reittier, das auf dem Server existiert, aber nicht zum Client gespiegelt wurde, sodass es für Spieler nie erscheint.
Häufige Fragen
Was ist der Unterschied zwischen einem Reittier und einem Pet?
Ein Pet ist eine eigene Entität, die neben dem Charakter läuft, selbst Boni gibt und meist gefüttert werden muss. Ein Reittier ist ein Modell, auf dem der Charakter sitzt, und gibt nur einen Bonus, solange du reitest. Unter der Haube beruhen beide auf einem Mob-Modell, werden aber mit unterschiedlichen Flags und Mechaniken verwaltet.
Kann ich Boni ohne Kompilieren ändern?
Ja. Wenn du Boni über pc.mount_bonus aus einer Questdatei vergibst, musst du die Server-Source nicht neu kompilieren; aktualisiere einfach die Quest und löse einen Quest-Reload des Ordners quest aus. Das beschleunigt Balance-Tests enorm.
Mein Reittier ist beim Reiten unsichtbar, warum?
Fast immer ein Client-Server-Mismatch: der mob_proto-Eintrag des Reittiers existiert auf dem Server, aber die mob_proto des Clients oder das Modell-Pack (.gr2/Motion) fehlt. Prüfe zuerst, ob die vnums übereinstimmen, dann, ob die Modelldatei im Client-Pack vorhanden ist; syserr und das Client-Log zeigen meist die fehlende Datei.
Richtest du ein ausgewogenes Reittier-System auf deinem Server ein? Von Kampf-Reittieren bis zur Bonus-Balance können wir gemeinsam an Metin2 Server-Source, Quests und Item-Editing arbeiten. Kontaktiere mich, um dein Projekt zu besprechen.