quest dungeon_name begin state start begin function settings() return { ["map_index"] = "Map Index Here", ["bilet_kodu"] = "Biletin kodu buraya", ["giris_koordinati"] = {x, y}, ["ikinci_kat"] = {x, y}, ["ucuncu_kat"] = {x, y}, ["dorduncu_kat"] = {x, y}, ["birinci_boss"] = "Boss_Vnum", ["ikinci_boss"] = "Boss_Vnum", ["ucuncu_boss"] = "Boss_Vnum", ["dorduncu_boss"] = "Boss_Vnum", ["birinci_boss_koordinat"] = {x, y}, ["ikinci_boss_koordinat"] = {x, y}, ["ucuncu_boss_koordinat"] = {x, y}, ["dorduncu_boss_koordinat"] = {x, y}, ["min_level"] = 95, ["max_level"] = 120, ["regen1"] = "data/dungeon/dungeon_name/regen_1thfloor.txt", ["regen2"] = "data/dungeon/dungeon_name/regen_2thfloor.txt", ["regen3"] = "data/dungeon/dungeon_name/regen_3thfloor.txt", ["regen4"] = "data/dungeon/dungeon_name/regen_4thfloor.txt", } end function zidana_giris() local setting = dungeon_name.settings() clear_server_timer("exit_almost_done_dungeonname", get_server_timer_arg()) clear_server_timer("exit_done_dungeonname", get_server_timer_arg()) server_timer("exit_almost_done_dungeonname", 120 * 60, d.get_map_index()) d.setf("group_timer", get_global_time(), 120 * 60) notice_all("Lider"..pc.get_name().." ve onun grubu DungeonName Zindanına Giriş Yaptı!") notica_all(string.format("Zindani tamamlamak icin %s kaldı!", get_time_remaining(120 * 60))) d.new_jump_party(setting.map_index, setting.giris_koordinati[1], setting.giris_koordinati[2]) d.set_regen_file(setting.regen1) d.setf("Kat", 1) end function clear_dungeon() d.notice("Birkac saniye sonra isinlanacaksiniz!") d.clear_regen() d.kill_all() cleartimer("upp_level") timer("upp_level", 10) end function check_dungeon() say_title(mob_name(20095)) local settings = dungeon_name.setting() if not party.is_party() then say("Eger bu zindana giris yapmak istiyorsan,") say("Bir grupta olman gerek!") return end end if not party.is_leader() then say("Oncelikle, grubunun") say("Lideriyle gorusmem gerek!") return end if party.get_near_count() < 3 then say("Eger zindana girmek istiyorsan") say("Grubun en az 3 kisi olması gerek!") return end local levelKontrol = true local bilteKontrol = true local yetersizLevelliUyeler = {} local levelSiniriniGecenUyeler = {} local biletiYetmeyenUyeler = {} local pids = {party.get_member_pids()} for i, pid in next, pids, nil do q.begin_other_pc_block(pid) if pc.get_level() < settings.min_level then table.insert(levelSiniriniGecenUyeler, pc.get_name()) levelKontrol = false end q.end_other_pc_block() end if not levelKontrol then say("Eget zindana girmek istiyorsanız,") say("butun grup uyeleri 95 levelden buyuk olmali") say("") say("Bu uyelerin seviyesi yeterli degil:") for i, n in next, yetersizLevelliUyeler, nil do say("- "..n) end return end for i, pid in next, pids, nil do q.begin_other_pc_block(pid) if pc.get_level() > settings.max_level then table.insert(levelSiniriniGecenUyeler, pc.get_name()) levelKontrol = false end q.end_other_pc_block() end if not levelKontrol then say("Eger zindana girmek istiyorsan,") say("butun grup uyelerinin leveli 105'ten kucuk olmalı") say("") say("Bu uyelerin leveli zindan icin cok fazla:") for i, n in next, levelSiniriniGecenUyeler, nil do say("- "..n) end return end for i, pid in next, pids, nil do q.begin_other_pc_block(pid) if pc.count_item(settings.bilet_kodu) < 1 then table.insert(biletiYetmeyenUyeler, pc.get_name()) bilteKontrol = false end q.end_other_pc_block() end if not bilteKontrol then say("Eger zindana girmek istiyorsan,") say(string.format("Bütün grup üyelerinin bilete sahip olması gerekiyor: %s.", item_name(settings.bilet_kodu))) say("") say("Bu üyelerin bileti yok:") for i, n in next, biletiYetmeyenUyeler, nil do say("- "..n) end return end for i, pid in next, pids, nil do q.begin_other_pc_block(pid) pc.remove_item(settings.bilet_kodu, 1) q.end_other_pc_block() end say("Devama bastıktan sonra") say("Bütün grup üyeleri ışınlanacak...!") wait() dungeon_name.enter_dungeon() end -- BIRINCI GOREV -- when 271.kill or 272.kill or 273.kill begin local count_kill_for_key, count = 60, d.getf("count") + 1 if d.getf("stage_key_done") == 0 then d.setf("count", count) end if count == count_kill_for_key then game.drop_item(51072, 1) d.setf("count", 0) d.setf("stage_key_done", 1) end end when 51072.use with d.getf("stage") == 1 begin local settings = dungeon_name.settings() if d.getf("used_first_chey") >= 1 then syschat("Zaten anahtarı kullandın.") else pc.remove_item(51072) d.spawn_mob(settings.birinci_boss, settings.birinci_boss_koordinat[1], settings.birinci_boss_koordinat[2]) d.setf("used_first_chey", 1) d.noteice("İlk patronu alt edin!") end end when 274.kill with d.getf("stage") == 1 begin d.notice("Patronu alt ettin!") dungeon_name.clear_dungeon() end -- 2. KAT -- when 273.kill or 275.kill or 276.kill or 277.kill begin local count_kill_for_key2, count2 = 80, d.getf("count2") +1 if d.getf("stage_key_done2") == 0 then d.setf("count2", count2) end if count2 == count_kill_for_key2 then game.drop_item(51072, 1) d.setf("count2", 0) d.setf("stage_key_done2", 1 ) end end when 51072.use with d.getf("stage") == 2 begin local settings = dungeon_name.settings() if d.getf("used_first_chey2") >= 1 then syschat("Zaten anahtarı kullandın.") else pc.remove_item(51072) d.spawn_mob(settings.ikinci_boss, settings.ikinci_boss_koordinat[1], settings.ikinci_boss_koordinat[2]) d.setf("used_first_chey2", 1) d.notice("İkinci bossla karşılaşma zamanı!") end end when 278.kill with d.getf("stage") == 2 begin d.notide("İkinci patronu yendin!") dungeon_name.clear_dungeon() end -- 3. KAT -- when kill.277 or 279.kill begin local count_kill_for_key3, count3 = 90, d.getf("count3") +1 if d.getf("stage_key_done3") == 0 then d.setf("count3", count3) end if count3 == count_kill_for_key3 then game.drop_item(51072, 1) d.setf("count3", 0) d.setf("stage_key_done3", 1) end end when 51072.use with d.getf("stage") == 3 begin local settings = dungeon_name.settings() if d.getf("uesd_first_chey3") >= 1 then syschat("Zaten bir anahtar kullandın.") else pc.remove_item(51072) d.spawn_mob(settings.ucuncu_boss, settings.ucuncu_boss_koordinat[1], settings.ucuncu_boss_koordinat[2]) d.setf("used_first_chey3", 1) d.notice("Üçüncü patronu alt edin!") end end when 280.kill with d.getf("stage") == 3 begin d.notice("Üçüncü patronu alt ettin!") dungeon_name.clear_dungeon() end -- 4. KAT -- when 281.kill or 282.kill begin local count_kill_for_key4, count4 = 100, d.getf("count4") + 1 if d.getf("stage_key_done4") == 0 then d.setf("count4", count4) end if count4 == count_kil_for_key4 then game.drop_item(51072, 1) d.setf("count4", 0) d.setf("stage_key_done4", 1) end end when 51072.use with d.getf("stage") == 4 begin local settings = dungeon_name.settings() if d.getf("used_first_chey4") >= 1 then syschat("Zaten 1 anahtar kullandın.") else pc.remove_item(51072) d.spawn_mob(settings.dorduncu_boss, settings.dorduncu_boss_koordinat[1], settings.dorduncu_boss_koordinat[2]) d.setf("used_first_chey4", 1) d.notice("Büyük patronu Alt Et!") end end when 283.kill with d.getf("stage") == 4 begin cleartimer("dungeon_name_exit3", get_server_timer_arg()) cleartimer("dungeon_name_exit", get_server_timer_arg()) timer("dungeon_name_exit", 60) d.kill_all() d.notice("60 Saniye içinde dışarı ışınlanıcaksınız!") notice_all("DungeonName Patronu Sahibi Olduğu Grubu Tarafından Katledildi"..pc.get_name()) end when logout with pc.in_dungeon() begin if pc.count_item(51072) >= 1 then pc.remove_item(51072, pc.count_item(51072)) end end -- Zaman Başlatıcılar -- when exit_almost_done_dungeonname.server_timer begin if d.select(get_server_timer_arg()) then d.set_warp_location(mapindex, x, y) d.notice("Zindan belirtilen süre içerisinde tamamlanamadı.") d.notice("Dışarı atılıyorsunuz !") server_timer("exit_done_dungeonname", 3, get_server_timer_arg()) end end when exit_done_dungeonname.server_timer begin if d.select(get_server_timer_arg()) then clear_server_timer("exit_done_dungeonname", get_server_timer_arg()) clear_server_timer("exit_almost_done_dungeonname", get_server_timer_arg()) d.exit_all() end end when dungeon_name_exit.timer begin local index = pc.get_map_index() if index >= (13 * 10000) and index < (13 * 10000 + 10000) then d.notice("Zaman doldu!") timer("dungeon_name_exit_3", 3 ) end end when dungeon_name_exit3.timer begin local index = pc.get_map_index() if index >= (13 * 10000) and index < (13 * 10000 + 10000) then d.exit_all_to_start_position() end end when upp_level.timer begin local stage, settings = d.getf("stage"), dungeon_name.settings() if stage == 1 then d.setf("stage", 2) d.set_regen_file(settings.regen2) d.jump_all(settings.ikinci_kat[1], settings.ikinci_kat[2]) notice_multiline("Anahtarı alana kadar canavarları alt edin!", d.notice) notice_multiline("Kalan canavarlar: 80", d.notice) end if stage == 2 then d.set_regen_file(settings.regen3) d.setf("stage", 3) d.jump_all(settings.ucuncu_kat[1], settings.ucuncu_kat[2]) notice_multiline("Anahtarı alana kadar canavarları alt et!", d.notice) notice_multiline("Kalan Canavarlar: 90", d.notice) end if stage == 3 then d.set_regen_file(settings.regen4) d.setf("stage", 4) d.jump_all(settings.dorduncu_kat[1] ,settings.dorduncu_kat[2]) notice_multiline("Anahtarı alana kadar canavarları alt et!", d.notice) notice_multiline("Kalan Canavarlar: 100", d.notice) end end -- END TIMERS -- when 20095.chat."DungeonName Dungeon" begin local settings = dungeon_name.settings() say_title(mob_name(20095)) say("") say("Bilgiler:") say("") say_reward(string.format("- Gerekli minimum seviye %s", settings.min_level)) say_reward(string.format("- Gereken maksimum seviye %s", settings.max_level)) say_reward(string.format("- Gereken Bilet %s", item_name(setting.bilet_kodu))) say_reward("- Eğer zindana giriş yapmak istiyorsanız bütün grup üyeleri") say_reward("- Bütün grup üyeleri [ENTER] CH1'de olmalı.") wait() say_title(mob_name(20095)) say("") say("DungeonName Zindanına Girmek İster Misin ?") say("Yeni bir dünya seni bekliyor") say("Fakat unutma, duydum !") say("Sadece en büyük savaşçılar onunla yüzleşebilir!") say("") if (select ("Evet", "Hayır") == 1) then dungeon_name.check_dungeon() end end end end end