inspiriert durch den Dungeon "Magic Field of Crevice" aus dem Spiel "Dekaron" - hab' ich 'ne abgespeckte Version davon für Metin2 gebastelt =)
Die hier releaste Version wird nicht die Version sein, die ich auf meinem Server verwenden werde. Gründe: Das Questscript hat eventuell/möglicherweise den ein oder anderen Bug, ich hab's mehrfach getestet, es Funktioniert 100%, aber ist sehr umständlich geschrieben, weshalb ich keine Bugs ausschließen würde. Außerdem - ist die Map nur Zweckmäßig angelegt.
Die komplette Version mit besserem Script und anständiger Map gibt's in ~'ner Woche nach Anfrage zusammen mit Installation auf Client und Server inclusive Anpassung des Scripts auf die Umstände des Servers für 10€ Bezahlung via Paypal. Das entspricht bei 'nem schlecht bezahlten Job 1 Arbeitsstunde. =)
Seid nett und löhnt mir die ein oder andere Schachtel Zigaretten
Die komplette Version mit besserem Script und anständiger Map gibt's in ~'ner Woche nach Anfrage zusammen mit Installation auf Client und Server inclusive Anpassung des Scripts auf die Umstände des Servers für 10€ Bezahlung via Paypal. Das entspricht bei 'nem schlecht bezahlten Job 1 Arbeitsstunde. =)
Seid nett und löhnt mir die ein oder andere Schachtel Zigaretten
Support:
- Vollversion erworben von "i'm HNSY" - Questscript entbuggt, auf 10 Runden ausgedehnt,
>Zufriedenheit: Siehe Kommentar =)
- Vollversion wird Spielbar sein auf dem Server "Alesta2" =)
Bin für weitere Anfragen offen ^-^
>Zufriedenheit: Siehe Kommentar =)
- Vollversion wird Spielbar sein auf dem Server "Alesta2" =)
Bin für weitere Anfragen offen ^-^
Screenshots:
Entrance:
Screenshot Zwischenbosssequenz:
Beschreibung:
Es ist ein Party-Dungeon, designt für 4-8 Spieler.
Die Spieler kommen auf die Map, die Map hat 4 Gänge.
Am Ende jedes Ganges befindet sich ein "Pad",
jedes Pad besitzt eine andere Farbe.
Beim Start des Dungeons spawnen von den Pads aus Monster.
Mit jeder Sekunde kommen neue Monster dazu.
Der Spieler muss diese Monster töten, bevor ihre Anzahl zu hoch wird.
Wenn die Spieler schnell genug sind - stagniert die Zahl der Monster
auf der Map.
Sind die Spieler jedoch zu langsam - steigt die Zahl der Monster.
Erreicht die Anzahl Monster eine bestimmte Zahl - schlägt der Dungeon fehl.
Der Spawn der Monster ist in Runden unterteilt.
Eine Runde dauert 2 Minuten, und nach jeder Runde bekommen die Spieler 30 Sekunden Pause (z.B. zum neu-buffen, Shami Buff, blabla).
Die Spieler kommen auf die Map, die Map hat 4 Gänge.
Am Ende jedes Ganges befindet sich ein "Pad",
jedes Pad besitzt eine andere Farbe.
Beim Start des Dungeons spawnen von den Pads aus Monster.
Mit jeder Sekunde kommen neue Monster dazu.
Der Spieler muss diese Monster töten, bevor ihre Anzahl zu hoch wird.
Wenn die Spieler schnell genug sind - stagniert die Zahl der Monster
auf der Map.
Sind die Spieler jedoch zu langsam - steigt die Zahl der Monster.
Erreicht die Anzahl Monster eine bestimmte Zahl - schlägt der Dungeon fehl.
Der Spawn der Monster ist in Runden unterteilt.
Eine Runde dauert 2 Minuten, und nach jeder Runde bekommen die Spieler 30 Sekunden Pause (z.B. zum neu-buffen, Shami Buff, blabla).
Prototyp Questscript:
PHP Code:
quest mfo_crevice begin
state start begin
when 20089.chat. "Verteidigung der Stadt!" begin
if pc.get_level() < 45 then
say_title("Du bist hier nicht von nutzen.")
say("")
say("Wir brauchen Leute um die Stadt zu verteidigen.")
say("Du? wirkst etwas schlaff auf den Beinen.")
say("Dich können wir nicht gebrauchen.")
say("")
say_reward("Komm zurück wenn du Lv.45 erreicht hast!")
pc.setqf("cDialog", 0)
else
say_title("Die Stadt wird angegriffen!")
say("")
say("Hey, "..pc.get_name()..", komm mal schnell her.")
say(pc.get_name()..": Was ist denn?")
say("Ich habe das Gefühl, dass wir bald mit")
say("einem Angriff der Fomore rechnen müssen.")
say("Unsere Mittel sind derzeit etwas Knapp,")
say("die Fomore belagern immer mehr von unseren")
say("Erz-Minen, das macht das ganze nur")
say("noch ernster, und uns verwundbar")
wait()
say_title("Suche weitere Söldner!")
say("")
say("Für die Verteidigung der Stadt brauchen")
say("wir unbedingt noch mehr Leute.")
say_reward("Es ist für den einzelnen unmöglich,")
say_reward("dabei zu überleben..")
say("Wenn du 4 Leute zusammen bekommst, könnt ihr")
say("eine ganz ordentliche Fläche übernehmen.")
say("Aber wir müssen unsere Kämpfer auch gut verteilen.")
say("Wir stellen maximal 8 Leute pro Bereich auf.")
wait()
say_title("Wir brauchen Gold")
say("")
say("Wir Sammeln derzeit alle")
say("etwas Geld zusammen, um Erz und brennbares")
say("zu leisten, um Waffen herzustellen.")
say("Ich bitte dich darum, dich ein wenig")
say("daran zu beteiligen.")
say("")
say_reward("Sprich mit Rezeena, um zur Stadtmauer")
say_reward("zu gelangen!")
pc.setqf("cDialog", 1)
end
end
when 40001.chat. "Wegen der Verteidigung der Mauer.." begin
if pc.getqf("cDialog") == 1 then
if not pc.in_dungeon() and party.is_party() and party.is_leader() and party.get_near_count() >= 2 then
say_title("Instance-Dungeon:")
say_title("Crevice in a Wall")
say("")
say_reward("Mindestlevel: 45")
say_reward("Anzahl Spieler: Min. 4, Max. 8")
say_reward("Eintrittskosten: 50000 Gold")
say("")
say("Möchtest du der Instance beitreten?")
local s = select("Wir sind bereit!", "Gib uns einen Moment")
if s == 1 then
if pc.get_gold() >= 50000 then
pc.change_gold(-50000)
timer("join", 3)
chat("50000 Gold bezahlt")
chat("Du wirst zur Stadtmauer teleportiert...")
elseif pc.get_gold() < 50000 then
say_title("Nicht genügend Gold:")
say("")
say_reward("Es tut mir leid, du musst 50000 Gold")
say_reward("bezahlen, um der Instance beizutreten")
end
end
end
if party.is_party() and party.is_leader() and party.get_near_count() < 2 then
say_title("Nicht genügend Leute!")
say("")
say("Eure Anzahl hält den Angriffen niemals stand.")
say("Ihr braucht Verstärkung!")
end
if not pc.in_dungeon() and party.is_party() and not party.is_leader() then
say_title("Anführer:")
say("")
say("Bitte lass mich mit dem Anführer deiner")
say("Truppe sprechen.")
end
if not pc.in_dungeon() and not party.is_party() then
say_reward("Du kannst die Instance nicht alleine betreten!")
end
if party.is_leader() and pc.in_dungeon() then
say_title("Du sprichst mit Rezeena:")
say("")
say("Soll ich dir schildern, was dir bevorsteht?")
say("Oder willst du den Kampf starten?")
local f = select("Anleitung 'Crevice'", "Kampf starten!")
if f == 1 then
say_title("Anleitung: Crevice in a Wall")
say("")
say("Feinde greifen von 4 verschiedenen Seiten an.")
say("Diese 4 Seiten sind mit farbigen Pads markiert.")
say("Mit jeder Sekunde erscheinen neue Feinde.")
say("Du und deine Gruppe müsst die Angreifer bezwingen.")
say("Steigt die Anzahl der Angreifer auf über 100, dann")
say("hat die Verteidigung fehlgeschlagen.")
say("Nähert sich die Anzahl der Feinde auf ein")
say("kritisches Niveau werdet ihr benachrichtigt.")
wait()
say_title("Anleitung: Crevice in a Wall")
say("")
say("In der ersten Runde greifen Feinde vom")
say("goldenen Pad an.")
say("In der zweiten Runde nähern sich Feinde vom")
say("goldenen UND vom blauen Pad.")
say("In der dritten Runde erscheinen Feinde auf")
say("allen 4 Pads.")
say("In der vierten Runde kommt ein elitärer Angreifer")
say("dazu. Bezwinge ihn, und deine Gruppe erhält")
say("Bonus-Erfahrung.")
say("In der letzten finalen Runde müsst ihr den")
say("Anführer der Angreifer bezwingen. Wenn euch")
say("dies gelingt war die Verteidigung erfolgreich,")
say("und ihr erhält eure Belohnung.")
elseif f == 2 then
d.notice("Der Party-Leader hat den Kampf gestartet!")
timer("crevicestart", 2)
end
elseif pc.in_dungeon() and not party.is_leader() then
say_title("Mach dich bereit:")
say("")
say("Stell' dich auf deiner Position auf.")
say("Der Angriff könnte jeden Moment eintreffen")
end
else
say_title("Die Stadtmauer verteidigen")
say("")
say("Du solltest mit Pung-Ho sprechen.")
say("Er hat nähere Informationen dazu.")
end
end
when join.timer begin
d.join(303)
end
when login with pc.in_dungeon() begin
if d.count_monster() < 1 then
d.spawn_mob(40001, 152, 136, 1, 1)
d.notice("Mach dich bereit, dich zu verteidigen!")
d.setf("Runde", 1)
end
end
when crevicestart.timer begin
if d.getf("Runde") == 5 then
d.notice("Final-Round! Vernichte den Boss!")
d.spawn_mob(5163, 141, 128, 1, 1)
else
d.kill_all()
d.notice("Monsterwellen treffen ein...")
d.setf("Monster", 120)
loop_timer("Rundentimer", 1)
end
end
when Rundentimer.timer begin
if d.getf("Monster") == 0 then
cleartimer("Rundentimer")
d.notice("Ihr habt die ".. d.getf("Runde") ..". Welle überstanden!")
d.notice("Die nächste Welle startet 30 Sekunden!")
timer("cooldown", 30)
d.kill_all()
end
if d.getf("Runde") == 1 then
d.spawn_mob(5101, 184, 128, 1, 1)
elseif d.getf("Runde") == 2 then
d.spawn_mob(5103, 184, 128, 1, 1)
d.spawn_mob(5102, 99, 129, 1, 1)
elseif d.getf("Runde") == 3 then
d.spawn_mob(5104, 184, 128, 1, 1)
d.spawn_mob(5102, 99, 129, 1, 1)
d.spawn_mob(5101, 142, 86, 1, 1)
d.spawn_mob(5103, 142, 170, 1, 1)
elseif d.getf("Runde") == 4 then
d.spawn_mob(5104, 184, 128, 1, 1)
d.spawn_mob(5102, 99, 129, 1, 1)
d.spawn_mob(5101, 142, 86, 1, 1)
d.spawn_mob(5103, 142, 170, 1, 1)
if d.getf("Monster") == 100 then
d.spawn_mob(5115, 141, 128, 1, 1)
d.notice("Ein Steinaffe ist aufgetaucht!")
end
end
if d.count_monster() >= 70 then
if d.count_monster() <80 then
d.notice("Achtung! Die Anzahl der Angreifer ist bei über 70!")
end
end
if d.count_monster() >= 80 then
if d.count_monster() <90 then
d.notice("Achtung! Die Anzahl der Angreifer ist bei über 80!")
end
end
if d.count_monster() >= 90 then
if d.count_monster() <100 then
d.notice("Warnung! Die Anzahl der Angreifer ist über 90!")
end
end
if d.count_monster() >= 100 then
d.kill_all()
cleartimer("Rundentimer")
cleartimer("cooldown")
cleartimer("crevicestart")
d.notice("ZIEHT EUCH ZURÜCK! DIE FEINDE ÜBERRENNEN UNS!")
chat("Die Verteidigung der Stadt schlug fehl..")
timer("failure", 3)
end
d.setf("Monster", d.getf("Monster") -1)
end
when cooldown.timer begin
d.setf("Runde", d.getf("Runde") +1)
timer("crevicestart", 1)
end
when 5163.kill begin
d.notice("Ihr habt alle Angriffe erfolgreich abgewehrt!")
d.notice("Sprecht mit Rezeena um euch eure Belohnung abzuholen!")
d.spawn_mob(40001, 152, 136, 1, 1)
set_state(complete)
end
when failure.timer begin
say_title("Mission Fehlgeschlagen...")
say("")
say_reward("Ihr konntet die Feinde nicht aufhalten.")
say_reward("Zieht euch zurück!")
timer("failout", 10)
end
when failout.timer begin
d.exit_all()
end
end
state complete begin
when 40001.chat. "Die Stadt wurde verteidigt!" begin
say_title("Ihr habt es geschafft!")
say("")
say("Ihr habt jeden Angriff abgewehrt!")
say("Dank euch besteht unsere Stadt weiter!")
say("")
say_reward("Für die Verteidigung der Stadt erhälst du:")
say_reward("1x Magische Steinplatte 'Tauschitem'")
pc.give_exp2(13000)
pc.give_item2(25041, 1)
set_state(start)
wait()
pc.warp(48400, 218200)
end
end
end
Kommentar:
Der Dungeon macht Irre Spaß.
Man kann selbst noch andere Belohnungen einfügen, andere Monster (Mein Tierversuch mit den Affen ist nur ein Test, ihr könnt dort Spawnen lassen was ihr wollt), um den Stil seinem Geschmack anzupassen.
Wer hierbei Hilfe braucht, den möchte ich auf Spoiler1 hinweisen =)
Aufgrunddessen, dass er auf Teamplay basiert - verbessert sich das Verhalten der Spieler innerhalb des Servers - wer 'n Arschloch ist findet dann halt keine Party die ihn mitnimmt. (So hat's in Dekaron funktioniert )
Download im Anhang =)
Archiv beinhaltet:
-Servermap
-Clientmap
-Client Maptexturen
-Client textureset.txt
-dungeonquestscript
Soll ja cool sein, sein Zeug mit VirusTotal zu scannen: