Hallo Com!
Ich habe wie in meinem anderen Bitte melden Sie sich an, um diesen Link zu sehen. schon angemerkt an einem Dungeon-System geschrieben.
Dies möchte ich hier kurz vorstellen und zum Testen anregen, da ich denke, dass es noch einige Bugs gibt, welche ich so nicht wirklich bedacht habe.
!Update!
Ich habe eine Git Repo für dieses System erstellt und den Bug, dass man nur einen Dungeon erstellen konnte mit @DasFragezeichen gelöst. Zudem habe ich ein paar weitere Bugs behoben, welche mir nicht wirklich aufgefallen sind.
Bitte melden Sie sich an, um diesen Link zu sehen.
Erklärung von Libs:
Da ich gebeten wurde einmal Libs allgemein zu erklären versuche ich dies hier einmal:
Libs sind simpel gesagt .lua Dateien, wo nur "functionen" stehen.
Trägt man diese in die questlib.lua ein kann man diese Funktionen in jeder Quest nutzen:
Hinweis:
Funktionen, welche nur innerhalb eine Lib genutzt werden müssen NICHT in die quest_functions eingetragen werden.
Warum Libs?
Der Grund ist sehr simpel:
Nutzt man eine Quest Funktion sehr oft kann man diese in Libs auslagern und damit sehr viel Code/Copy&Paste sowie Fehler verhindern.
Beispiel dafür ist die Funktion des Targets auf einem NPC/Monster. Nun trägt man wenn man ein Target auf dieser Vid haben möchte nur eine Zeile Code mit der Vnum des Ziels.
Erklärung des Dungeon-Systems:
Das Dungeon-System besteht aus 4 LUA Dateien: 2x Quests und 2x Libs
1. Quest: dungeon_basic_test.lua ist der Dungeon an sich
2. Quest: dungeon_server_timer.lua ist eine Quest für alle Server Timer für diese Dungeons
3. Lib: dungeons.lua ist die Lib für das Dungeon-System.
4. Lib: common.lua isteine Lib für generelle Funktionen
Für den Dungeon Eintritt wird die Funktion selectDungeon() benötigt:
selectDungeon(min_level, dungeon_map_idx, dungeon_local_x, dungeon_local_y, dungeon_name, fail_time, entry_item, entry_item_count, only_solo_modus, dungeon_cooldown, dungeon_cooldown_reset_item, dungeon_cooldown_reset_item_count)
min_level Selbsterklärend
dungeon_map_idx Der Map Index des Dungeons
dungeon_local_x, dungeon_local_y Die x, y Positionen OHNE *100
dungeon_name Der Name des Dungeons
fail_time Die Zeit, welche der Spieler Zeit hat. Eine 0 Eintragen wenn es kein Zeitlimit geben soll!
entry_item Das Item, welches zum Betreten benötigt wird. Eine 0 Eintragen wenn es kein Item geben soll!
entry_item_count Die Anzahl vom Item, welches zum Betreten benötigt wird. Eine 0 Eintragen wenn es kein Item geben soll!
only_solo_modus 1 = Solo Dungeon / 0 = Egal, ob mit oder ohne Gruppe -> Einen Only Party Dungeon gibt es nicht
dungeon_cooldown Die Zeit, welche man warten muss nachdem man den Dungeon betreten hat. Dies gilt NUR für den Gruppen-Anführer!
dungeon_cooldown_reset_item Das Item, welches man nutzen kann um diesen Cooldown zu entfernen
dungeon_cooldown_reset_item_count Die Anzahl dafür "dungeon_cooldown_reset_item"
Nun kommen wir zu den Stages:
Ich habe 8 Dungeon Ebenen vorbereitet, welche nach Lust und Laune erweitert werden können:
DUNGEON_TYPE_KILL_MONSTER = 1
DUNGEON_TYPE_KILL_BOSS = 2
DUNGEON_TYPE_KILL_METINSTONE = 3
DUNGEON_TYPE_KEYSTONE = 4
DUNGEON_TYPE_TALK_TO_NPC = 5
DUNGEON_TYPE_KEYSTONE_IN_WAVES = 6
DUNGEON_TYPE_FIND_REAL_METINSTONE = 7
DUNGEON_TYPE_KILL_RANDOM_BOSS = 8
Im Beispiel Dungeon sind alle 8 Stages einmal vorbereitet und spielbar.
Man benötigt um eine Ebene hinzuzufügen einfach nur ein weiteres "elseif stage == X then" einzutragen und die Funktionen der Ebene.
Dies kommt in den login or enter trigger sowie in den kill oder ggf. den take, click Trigger.
Mit freundlichen Grüßen, Kazuma