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

Metin2 Boss-System: Grandboss-Spawn und Drop einrichten

Ein solides metin2 Boss-System bestimmt den meistgespielten Content eines Privatservers: Spieler wissen, wann ein Grandboss erscheint, sammeln sich zu dieser Stunde auf der Map und kämpfen um seltene Drops. Doch hinter diesem Erlebnis müssen drei separate Dateien im Einklang arbeiten — die regen.txt oder das Quest-Lua, das den Spawn auslöst, die mob_drop_item.txt, die die Drops festlegt, und die Ansagen, die Spieler alarmieren. In diesem Leitfaden gehe ich Schritt für Schritt durch das Einrichten von Boss-Spawn-Timern, der Droptabelle und der Ansagen.

Der Unterschied zwischen Boss und Grandboss

Technisch sind beide nur eine Monsterzeile in mob_proto; der Unterschied liegt im Feld Rang/Typ und in der Spawn-Logik. Ein normaler Boss lebt meist dauerhaft auf einer Map und respawnt kurz nach seinem Tod. Ein Grandboss ist ein seltenes, mächtiges Wesen, das oft nach einem Zeitplan erscheint — etwa zu festen Zeiten jeden Tag oder wenn eine bestimmte Bedingung erfüllt ist.

  • Boss: in regen.txt mit fester Position und Respawn-Timer definiert. Der Serverkern erledigt den Rest automatisch.
  • Grandboss: meist per Quest gespawnt, gesteuert durch einen Timer oder ein Event-Flag, mit serverweiter Ansage im Moment seines Erscheinens.

Diese Unterscheidung vorab zu klären sagt dir, welches Werkzeug du nutzt. Einen ständig patrouillierenden Boss per Quest zu verwalten bringt unnötige Komplexität; umgekehrt beraubt dich der Versuch, einen geplanten Grandboss allein mit regen.txt zu bauen, der flexiblen Kontrolle.

Boss-Spawns mit regen.txt einrichten

Jede Map hat eine eigene regen.txt in ihrem Ordner (zum Beispiel map_a1/regen.txt). Um einen Boss dauerhaft spawnen zu lassen, fügst du nur eine einzige Zeile hinzu. Die Spaltenreihenfolge lautet:

# Typ  aggressiv  x     y    x_radius  y_radius  z  Ric  Zeit  Prozent  Anzahl  vnum
m      1          512   480  0         0         0  0    30m   100      1       2492

Was die Felder bedeuten:

  • m: ein einzelnes Monster (nutze g für eine Gruppe, r für eine Regen-Gruppe).
  • aggressiv: 1 bedeutet, es greift auf Sicht an, 0 bedeutet passiv.
  • x / y: die lokalen Koordinaten der Map (relativ zur oberen linken Ecke).
  • Zeit: Respawn-Verzögerung nach dem Tod — geschrieben als 5s, 10m, 1h.
  • vnum: die Monster-ID in mob_proto.

Nach dem Speichern der Datei musst du entweder den Server neu starten oder die Daten mit einem GM-Befehl wie /reload aktualisieren, damit die Änderung greift. Am einfachsten findest du die richtigen Koordinaten, indem du dich einloggst, dich auf die Zielstelle stellst und die lokalen x/y mit einem GM-Befehl wie /where abliest.

Geplante Grandboss-Spawns mit Quest-Lua

Für einen geplanten Grandboss nutzen wir das Questsystem. Das Kernwerkzeug ist die Funktion game.spawn_mob(vnum, x, y), die ein Monster an der angegebenen lokalen Koordinate auf der Map spawnt, auf der sie aufgerufen wird. Das folgende Beispiel baut ein einfaches Gerüst, das den Boss-Kill überwacht und beim Tod ansagt:

quest grandboss begin
    state start begin
        function spawn_meley()
            local x, y = 1023, 875
            game.spawn_mob(2493, x, y)
            notice_all("[Grandboss] Meley Lady ist auf der Map erschienen!")
        end

        when 2493.kill begin
            notice_all("Der Grandboss wurde besiegt! Bereitet euch auf den naechsten Spawn vor.")
            server_timer("meley_respawn", 6 * 60 * 60)  -- in 6 Stunden
        end

        when meley_respawn.server_timer begin
            grandboss.spawn_meley()
        end
    end
end

Hier feuert der Block when 2493.kill, wenn das Monster mit vnum 2493 getötet wird. server_timer startet einen serverweiten Countdown, der an keinen Spieler gebunden ist — das ist das Herz des Grandboss-Timings, denn der Boss muss spawnen, auch wenn niemand online ist. Willst du einen Spawn nach Echtzeit (etwa täglich um 21:00), kannst du die Stunde mit os.date in einem Login-Trigger prüfen und ein Event-Flag verwenden:

when login begin
    local stunde = tonumber(os.date("%H"))
    if stunde == 21 and game.get_event_flag("meley_heute") == 0 then
        game.set_event_flag("meley_heute", 1)
        grandboss.spawn_meley()
    end
end

Diese Methode ist einfach und lesbar; auf größeren, robusteren Servern bevorzugt man ein separates "Boss-Timer"-Quest, das den Spawn von einem einzigen Punkt aus verwaltet, damit derselbe Boss nie zweimal spawnt.

Drop-Einrichtung: mob_drop_item.txt

Boss-Drops werden größtenteils durch Gruppen in mob_drop_item.txt verwaltet. Jede Gruppe ist an eine Mob-vnum gebunden, und jede Zeile darin definiert ein Item, seine Menge und seine Drop-Chance (als Prozentwert, nicht als Promille):

Group GrandbossMeley
{
    Mob     2493
    Type    drop
    1   71001   1   30.000000
    2   72003   5   15.000000
    3   50300   1   2.500000
}

Die Zeilen lauten: Index item_vnum Menge Chance. Das Feld Type steuert das Drop-Verhalten:

  • drop: jede Zeile wird unabhängig nach Chance gewürfelt; ein Boss kann mehrere Items fallen lassen.
  • kill: es wird nur ein Item aus der Gruppe gewählt; geeignet für Loot-Pool-Logik.
  • limit / level_limit: für Drops, die an eine Levelspanne gebunden sind.

Berücksichtige beim Festlegen der Chancen die Spielerzahl und die Server-Rate: Auf einem High-Rate-Server verursacht ein seltenes Item mit 30% schnell Inflation. Seltene Items niedrig (etwa 1–3%) und häufige Drops moderat zu halten, hält die Wirtschaft gesund. Nach dem Bearbeiten der Datei wendest du die Änderung mit einem GM-Befehl wie /reload d oder einem Serverneustart an.

Ansagen für Spawn und Drop

Ein gutes Boss-System hält Spieler informiert. Die beiden meistgenutzten Funktionen sind:

  • notice_all("..."): sendet eine gelbe Infomeldung an jeden Spieler auf dem Server — ideal für einen Grandboss-Spawn.
  • notice("..."): sendet eine Nachricht nur an den Spieler, der das Quest ausgelöst hat.

Ein sehr beliebtes Feature ist, dem Server anzusagen, wenn ein seltenes Item fällt. Das baust du in einem Drop-Quest, indem du das gefallene Item prüfst:

when kill with npc.is_pc() == false begin
    if npc.get_race() == 2493 then
        local spieler = pc.get_name()
        notice_all(string.format("%s hat ein legendaeres Item von Meley Lady erbeutet!", spieler))
    end
end

Solche Ansagen verstärken das Gefühl "ich sollte auch dort sein" und erhöhen den Andrang zu Boss-Stunden. Übertreibe es nur nicht — kündigst du jeden gewöhnlichen Drop an, werden die Nachrichten zu Lärm und verlieren ihre Wirkung.

Testen und häufige Fehler

Teste vor dem Livegang mit GM-Befehlen: /mob 2493 spawnt den Boss vor dir, /notice test probiert eine Ansage. Die häufigsten Probleme:

  • Falsche Koordinate: regen.txt will die lokale Koordinate der Map, nicht die globale. Erscheint der Boss nicht, ist das fast immer die Ursache.
  • vnum-Unstimmigkeit: mob_proto, regen.txt und mob_drop_item.txt müssen dieselbe vnum verwenden. Ein einziger Ziffernfehler lässt den Boss "ohne Drop".
  • Reload vergessen: Dateien speichern reicht nicht; die Daten müssen neu in den Kern geladen werden. Im Zweifel: Server neu starten.
  • syserr prüfen: Quest-Fehler landen in den syserr-Logs. Will ein Grandboss nicht spawnen, schaust du zuerst dort.

Solange du diese drei Dateien (Spawn, Drop, Ansage) konsistent hältst, hast du skalierbaren Boss-Content gebaut, auf den Spieler sehnsüchtig warten.

Häufige Fragen

Spawnt der Grandboss, wenn niemand online ist?

Wenn du server_timer oder einen Mechanismus nach Echtzeit nutzt, ja — der Spawn ist unabhängig von Spielern. Allerdings muss die Map vom Kern geladen sein, wenn game.spawn_mob aufgerufen wird; auf den meisten Servern sind die Hauptmaps immer geladen, daher ist das kein Problem.

Schreibe ich Drop-Chancen als Promille oder als Prozent?

In mob_drop_item.txt wird die Chance als Prozent geschrieben (30.000000 = 30%). Mit Dezimalstellen kannst du sehr kleine Chancen definieren (0.100000 = 0,1%). Andere Dateien wie common_drop_item.txt können ein anderes Format nutzen, also verwechsle sie nicht.

Warum spawnt derselbe Boss zweimal?

Meist spawnen sowohl regen.txt als auch ein Quest denselben Boss, oder das Event-Flag wird nicht sauber zurückgesetzt. Verwalte einen geplanten Grandboss aus einer einzigen Quelle und setze das Flag vor dem Respawn zurück.

Willst du ein ausgewogenes Boss- und Grandboss-System für deinen Server? Wir können Spawn-Timing, Drop-Wirtschaft und Ansagefluss so einrichten, dass deine Spieler bleiben. Um dein Projekt zu besprechen, nimm Kontakt mit mir auf.

Devamı için