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.txtmit 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 (nutzegfür eine Gruppe,rfür eine Regen-Gruppe).- aggressiv:
1bedeutet, es greift auf Sicht an,0bedeutet 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.txtwill die lokale Koordinate der Map, nicht die globale. Erscheint der Boss nicht, ist das fast immer die Ursache. - vnum-Unstimmigkeit:
mob_proto,regen.txtundmob_drop_item.txtmü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.