aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Metin2

Metin2 Pet-System: Anleitung zum Hinzufügen von Pets

Das Metin2 Pet-System ist die Art und Weise, wie du die Begleiter verwaltest, die deinem Charakter folgen, passive Boni geben und sogar aufsteigen können. Auf klassischen Servern ist ein Pet rein kosmetisch, während ein modernes Pet-System Fütterung, Level, Boni und manchmal Fähigkeiten mitbringt. In dieser Anleitung erkläre ich, wie das System funktioniert, woher Pet-Boni kommen, wie die Fütterungsmechanik arbeitet und welche Schritte nötig sind, um ein ganz neues Pet-Modell auf deinem Server hinzuzufügen.

Wie das Pet-System funktioniert

In Metin2 ist ein Pet praktisch ein spezieller Mob-Eintrag. Der Charakter aktiviert das Pet über ein Beschwörungs-Item im Inventar (ein Ei, eine Pfeife oder ein Halsband); dies ist ein Item vom Typ USE, und beim Benutzen wird eine temporäre, an den Spieler gebundene Entität erzeugt. Das Pet entsteht nicht als Gegner am Boden, sondern als NPC, der seinem Besitzer folgt.

  • Beschwörungs-Item — in item_proto definiert, meist mit type = USE und einem Subtyp in der Art von USE_PET.
  • Pet-Modell — entspricht einer vnum in mob_proto; die Optik stammt aus einer .gr2-Modelldatei auf der Client-Seite.
  • Verhalten — der erzeugende Code bindet das Pet an seinen Besitzer; es greift nicht an, sondern bleibt einfach in der Nähe (ausgenommen Kampf-Pet-Varianten).

Die neueren Pet-Systeme (das Add-on, das gemeinhin als "Pet-System" bezeichnet wird) legen Level, eine Hunger-Leiste, eine Dauer und Boni über diese Grundstruktur. Diese Schichten werden überwiegend von der Quest-Engine (Lua) und ein paar zusätzlichen Tabellen gesteuert.

Woher die Pet-Boni kommen

Pet-Boni sind temporäre Statuserhöhungen, die auf den Spieler angewendet werden, der das Pet trägt. Du kannst sie auf zwei Hauptwegen verdrahten:

  • Item-Boni — Boni direkt am Beschwörungs-Item über item_proto definieren (zum Beispiel APPLY_MAX_HP, APPLY_ATT_SPEED). Sie gelten, solange das Pet aktiv ist.
  • Quest-basierte Boni — wenn du Boni möchtest, die mit dem Pet-Level skalieren, ist es deutlich flexibler, sie aus einer Lua-Quest über Aufrufe wie apply_bonus hinzuzufügen.

Das folgende Beispiel ist vereinfachte Quest-Logik, die dem Spieler beim Beschwören einen Angriffsbonus basierend auf dem Pet-Level gewährt:

quest pet_bonus begin
    state start begin
        when 53001.use begin
            local lvl = pc.getqf("pet_level")
            -- +5 Angriffswert pro Level
            apply.apply("ATT_GRADE_BONUS", lvl * 5, 60 * 30)
            chat("Dein Pet stärkt dich!")
        end
    end
end

Der entscheidende Punkt: Binde die Bonusdauer an die Dauer des Pets und wende den Bonus konsistent erneut an, wenn das Pet beschworen oder zurückgerufen wird. Andernfalls kann ein Spieler ihn ausnutzen, indem er das Pet wiederholt neu beschwört.

Die Fütterungsmechanik

Die Fütterung ist der Teil des Pet-Systems, der den Spieler beschäftigt hält. Die Logik lautet: Das Pet hat einen Hunger-/Sättigungswert, der mit der Zeit sinkt, und der Spieler füllt ihn mit einem speziellen Pet-Futter-Item wieder auf. Erreicht die Sättigung null, hört das Pet auf, Boni zu geben, oder verschwindet.

  • Speichere den Sättigungswert in einem Quest-Flag auf dem Spieler: pc.setqf("pet_food", 100).
  • Lasse den Wert regelmäßig über einen Timer sinken (Quest when … with timer).
  • Wenn das Pet-Futter-Item benutzt wird, erhöhe den Wert und verhindere, dass er die Obergrenze (z. B. 100) überschreitet.
quest pet_feed begin
    state start begin
        when 53010.use begin
            local food = pc.getqf("pet_food")
            food = math.min(food + 25, 100)
            pc.setqf("pet_food", food)
            item.remove()
            chat("Pet-Sättigung: "..food.."/100")
        end
    end
end

Du kannst die Fütterung mit dem Level-System kombinieren: Beim Füttern erhält das Pet einen kleinen pet_exp-Wert, steigt bei festgelegten Schwellen auf und seine Boni wachsen. Diese Schleife motiviert den Spieler, sich regelmäßig um das Pet zu kümmern.

Schritte zum Hinzufügen eines neuen Pet-Modells

Ein optisch neues Pet auf deinem Server hinzuzufügen erfordert Dateien sowohl auf dem Client als auch auf dem Server. Die Reihenfolge ist wie folgt:

  • 1. Modelldateien: Lege die .gr2-Modell- und Animationsdateien des neuen Pets zusammen mit den Textur-Dateien (.dds) in den passenden pack-Ordner auf dem Client.
  • 2. mob_proto-Eintrag: Füge das Pet unter einer neuen vnum zu mob_proto hinzu, als NPC-/Pet-Typ mit seinen Geschwindigkeits- und Größenwerten. Der Server muss diesen Eintrag korrekt einlesen.
  • 3. Client-Definition: Bringe die clientseitige mob_proto (oder .txt-Definition) und den Modellpfad in Einklang; die Verbindung zwischen der vnum und der .gr2-Datei muss korrekt sein.
  • 4. Beschwörungs-Item: Erstelle einen neuen item_proto-Eintrag und binde ihn beim Benutzen an die Quest bzw. den Code-Pfad, der das Pet mit dieser neuen vnum beschwört.
  • 5. Lokalisierung: Ergänze Name/Beschreibung des Pets und des Items in den locale-Dateien.

Gehe beim Testen Schritt für Schritt vor: Erscheint das Item zuerst im Inventar; wird dann beim Benutzen das Pet erzeugt; stimmen anschließend Modell und Animation; und funktioniert zuletzt die Bonus-/Fütterungsschleife. Jeden Schritt zu isolieren macht die Fehlersuche deutlich einfacher.

Häufige Fehler

  • Unsichtbares Pet: Die vnum existiert auf dem Server, aber der Modellpfad passt auf dem Client nicht — es wird erzeugt, bleibt aber unsichtbar. mob_proto muss auf beiden Seiten konsistent sein.
  • Bonus bleibt dauerhaft: Der Bonus wird beim Zurückrufen des Pets nicht entfernt. Binde die Dauer an die Lebensdauer des Pets und setze den Bonus beim Zurückrufen zurück.
  • proto-Inkonsistenz: Die item_proto-/mob_proto-Versionen von Client und Server unterscheiden sich; das zeigt sich als "unbekanntes Item" oder als Absturz. Verteile immer dasselbe proto an beide Seiten.

Häufige Fragen

Kann ein Pet dem Charakter schaden oder angreifen?

Ein Standard-Pet folgt nur seinem Besitzer und greift nicht an. Wenn du ein "Kampf-Pet" möchtest, musst du ein eigenes Verhalten (Mob-KI) definieren und das Pet so programmieren, dass es Gegner angreift; das ist eine andere Entwicklungsaufgabe als das klassische Folge-Pet.

Verschwindet das Pet, wenn ich es nicht füttere?

Das hängt ganz von deinem Systemdesign ab. Ein verbreiteter Ansatz ist, dass das Pet keine Boni mehr gibt, sobald die Sättigung null erreicht; auf manchen Servern wird das Pet vollständig zurückgerufen. Die Logik legst du in der Lua-Quest fest.

Ist ein Pet-Level-System Pflicht?

Nein. Für ein einfaches kosmetisches Pet genügen ein Beschwörungs-Item und ein Modell. Level, Fütterung und Bonus-Schichten sind optionale Funktionen, die hinzugefügt werden, um die Spielerbindung zu erhöhen.

Möchtest du ein solides, missbrauchssicheres Pet-System für deinen Server? Ich kann den gesamten Ablauf aufbauen und testen — das Hinzufügen eines Pet-Modells, die Fütterungsmechanik und die Boni — von Anfang bis Ende. Nimm Kontakt auf, um über dein Projekt zu sprechen.

Devamı için