quest snow_dungeon begin state start begin function get_settings() local snow_dungeon_settings = {} snow_dungeon_settings.map_index = 352 --Map İndex snow_dungeon_settings.base_cord = {5120,1536} --Koordinat snow_dungeon_settings.outside_entry_pos = {61,4327,1668} --Sohan Girişi snow_dungeon_settings.need_level = 96 --Gerekli Level snow_dungeon_settings.exittime = 60 --Exit Süresi snow_dungeon_settings.jumptime = 5 --Atlama Süresi snow_dungeon_settings.cooldown = 60*60 --Soğuma Süresi snow_dungeon_settings.dungeontime = 60*60 --Zindan Süresi snow_dungeon_settings.jumpbacktime = 60*5 --Geri Dönüş Süresi snow_dungeon_settings.DurationLoopTimer = 15 --Kontrol Loop Süresi snow_dungeon_settings.key2 = 30331 --2. Kat Anahtar snow_dungeon_settings.npc5 = 20398 --5. Kat Mob snow_dungeon_settings.npc5count = 6 --5. Kat Mob Sayısı snow_dungeon_settings.key5 = 30332 --5. Kat Anahtar snow_dungeon_settings.mob6 = 8058 --6. Kat Ayaz Metni snow_dungeon_settings.mob7 = 6151 --7. Kat Szel Vnum snow_dungeon_settings.key8 = 30333 --8. Kat Anahtar snow_dungeon_settings.npc9 = 20399 --9. Kat Taht npc snow_dungeon_settings.bossgroup = 6062 --9. Kat Boss Grup snow_dungeon_settings.boss = 6191 --9. Kat Boss snow_dungeon_settings.SzelCords_level_7 = {{752,499},{758,479},{772,452},{763,444},{750,451},{728,441},{726,455},{718,482},{715,491},{731,473},{748,429}} snow_dungeon_settings.StoneCords_level_5 = {{432,508},{437,493},{448,492},{448,476},{467,475},{466,464},{462,450},{458,428},{446,439},{431,431},{415,416},{402,427},{397,438},{375,434},{374,456},{390,468},{385,492},{402,505},{404,489},{386,482}} snow_dungeon_settings.Position_level_1 = { 171,271 } snow_dungeon_settings.Position_level_2 = { 761,270 } snow_dungeon_settings.Position_level_3 = { 187,491 } snow_dungeon_settings.Position_level_4 = { 421,259 } snow_dungeon_settings.Position_level_5 = { 419,530 } snow_dungeon_settings.Position_level_6 = { 571,706 } snow_dungeon_settings.Position_level_7 = { 746,534 } snow_dungeon_settings.Position_level_8 = { 303,710 } snow_dungeon_settings.Position_level_9 = { 848,693 } snow_dungeon_settings.Position_level_10 = { 927,391 } return snow_dungeon_settings end function is_nemeres_dungeon() local set = snow_dungeon.get_settings() local map = pc.get_map_index() if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then return true else return false end end when 20395.chat."GM: Nemere Kulesi" with pc.is_gm() begin local s = select("Nemere Kulesi Aç/Kapat","Hiçbir şey") if s == 1 then if game.get_event_flag("nemere_on") == 0 then say("Nemere Kulesi şu anda kapalı.") say("Aktif etmek istiyor musun?") if select("Evet","Hayır") == 2 then return end game.set_event_flag("nemere_on",1) return else say("Nemere Kulesi şu anda açık.") say("Kapatmak istiyor musun?") if select("Evet","Hayır") == 2 then return end game.set_event_flag("nemere_on",0) return end elseif s == 2 then return end end when 20395.chat."GM Süreyi Sıfırla" with pc.is_gm() begin say("Game Master; sureyi sıfırlamak mı istiyorsun?") if select("Evet","Hayır") == 1 then pc.setf("snow_dungeon","duration",0) return end end when 20395.chat."Nemere'nin Gözetleme Kulesi" with game.get_event_flag("nemere_on") == 1 begin local set = snow_dungeon.get_settings() local need_level = 96 say("Nemere'nin Gözetleme Kulesi'ne girmek") say("istiyor musun?") if select("Gir","Girme") == 2 then return end if pc.get_level() < need_level then say("Kuleye girebilmek icin en az "..need_level..".") say("seviyede olmalısın.") return end local lasttime = pc.getf("snow_dungeon","duration") if lasttime >= get_global_time() then say_title(mob_name(npc.get_race())) say("Nemere'nin Gözetleme Kulesi'ne yeniden giriş ") say("için bekleme süresi henüz dolmamış.") local cooldowntime = pc.getf("snow_dungeon","duration") - get_global_time() if cooldowntime>3600 then local cooldowntimeh = math.floor(cooldowntime/3600) cooldowntime = cooldowntime - cooldowntimeh*3600 local cooldowntimem = math.floor(cooldowntime/60) cooldowntime = cooldowntime - cooldowntimem*60 local cooldowntimes = cooldowntime say("Kalan süre: "..cooldowntimeh.." saat "..cooldowntimem.." dakika "..cooldowntimes.." saniye") elseif cooldowntime > 60 then local cooldowntimem = math.floor(cooldowntime/60) cooldowntime = cooldowntime - cooldowntimem*60 local cooldowntimes = cooldowntime say("Kalan süre: "..cooldowntimem.." dakika "..cooldowntimes.." saniye") else say("Kalan süre: "..pc.getf("snow_dungeon","duration") - get_global_time().." saniye") end return end timer("make_dungeon",2) end when 20395.chat."Zindana geri dön... " with pc.getf("snow_dungeon","map") >= 1 begin local set = snow_dungeon.get_settings() local c = pc.getf("snow_dungeon","map") local z = pc.getf("snow_dungeon","channel") local dwLevel = d.getf_from_map_index("level",c) local next_jump_time = set.jumptime if z == pc.get_channel_id() then if d.select(c) then say("dungeon bulundu. ch " ..z.. "index "..c.. "kat "..dwLevel.."") if get_global_time() > pc.getf("snow_dungeon","outtime") + set.jumpbacktime then say("Geri dönme hakkını kaybettin.") d.setf("DungeonBlock",0) pc.setf("snow_dungeon","map",0) pc.setf("snow_dungeon","outtime",0) pc.setf("snow_dungeon","channel",0) return end local cord = set.base_cord if dwLevel == 1 or dwLevel == 0 then pos = set.Position_level_1 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 2 then pos = set.Position_level_2 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 3 then pos = set.Position_level_3 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 4 then pos = set.Position_level_4 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 5 then pos = set.Position_level_5 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 6 then pos = set.Position_level_6 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 7 then pos = set.Position_level_7 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 8 then pos = set.Position_level_8 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 9 then pos = set.Position_level_9 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) elseif dwLevel == 10 then pos = set.Position_level_10 pc.warp((pos[1]+cord[1])*100,(pos[2]+cord[2])*100,c) else return end local loop_durr = set.DurationLoopTimer clear_server_timer("CheckLevelAndCountKillOnMobs",c) server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,c) else say("Zindanı Bitirmişsiniz!") pc.setf("snow_dungeon","map",0) pc.setf("snow_dungeon","outtime",0) pc.setf("snow_dungeon","channel",0) end else say("Zindanınız bu kanalda görünmüyor!") say("Zindanınızın olduğu kanal: "..z.."") return end end when make_dungeon.timer begin local ticketGroup = {71130, 1} local set = snow_dungeon.get_settings() local cord = set.base_cord local start_pos = set.Position_level_1 if pc.count_item(ticketGroup[1]) >= ticketGroup[2] then pc.remove_item(ticketGroup[1], ticketGroup[2]) else say("Geçiş Biletine sahip değilsin!") return end d.new_jump_all(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2])) snow_dungeon._ClearAlls() pc.setf("snow_dungeon","map",d.get_map_index()) d.setf("level",0) d.spawn_mob_dir(20397, 173,262,1) end when 20397.chat."Nemere'nin Gözetleme Kulesi" with d.getf("level") == 0 begin say("Nemere'nin Gözetleme kulesine girdin. Burada") say("en fazla bir saat bulunabilirsin. Kuleden") say("Çıktığında bir saat bekledikten sonra tekrar") say("girebilirsin.") wait() local set = snow_dungeon.get_settings() local loop_durr = set.DurationLoopTimer local t = get_global_time() d.setf("LastTimeGetOutPut",0) server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index()) d.regen_file("data/dungeon/ice_dungeon/zone_1.txt") d.setf("Start_Time",t + set.dungeontime) server_timer("Jp_OutAllFailNotice",(t + set.dungeontime) - t,d.get_map_index()) d.setf("level",1) d.setf("DungeonBlock",1) d.notice("Bütün düşmanları mağlup edin!") npc.purge() snow_dungeon._GetLastTime() setskin(NOWINDOW) end when 20397.chat."Nemere Taht Salonu" with d.getf("level") == 9 begin local set = snow_dungeon.get_settings() local next_jump_time = set.jumptime local level = d.getf("level") local stone_level_6 = set.mob6 local stone_level_9 = set.npc9 local boss_vnum = set.boss local wait_time = set.exittime local mobvnum = npc.get_race() say("Nemere Taht Salonu'na girmek istiyor musun?") local s = select("Gir","Belki sonra") if s == 2 then return end server_timer("Jp_Boss",next_jump_time,d.get_map_index()) local v = set.bossgroup d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt") d.spawn_group(v, 928, 335, 5 ,1, 1) npc.purge() setskin(NOWINDOW) end function _ClearAlls() local d_index = d.get_map_index() clear_server_timer("CheckLevelAndCountKillOnMobs",d_index) clear_server_timer("Jp_1",d_index) clear_server_timer("Jp_2",d_index) clear_server_timer("Jp_3",d_index) clear_server_timer("Jp_4",d_index) clear_server_timer("Jp_5",d_index) clear_server_timer("Jp_6",d_index) clear_server_timer("Jp_7",d_index) clear_server_timer("Jp_8",d_index) clear_server_timer("Jp_9",d_index) clear_server_timer("Jp_Boss",d_index) clear_server_timer("Jp_OutAll",d_index) clear_server_timer("Jp_OutAllFail",d_index) clear_server_timer("Jp_OutAllFailNotice",d_index) d.setf("level",0) d.setf("Start_Time",0) d.setf("LastTimeGetOutPut",0) d.setf("Stone_5_count",0) d.setf("Stone_5_item_fail",0) d.clear_regen() d.kill_all() end when logout begin if snow_dungeon.is_nemeres_dungeon() == true then if d.select(pc.get_map_index()) then local set = snow_dungeon.get_settings() pc.setf("snow_dungeon","outtime",get_global_time()) pc.setf("snow_dungeon","map",d.get_map_index()) pc.setf("snow_dungeon","channel",pc.get_channel_id()) end end end function _GetLastTime() local c = get_global_time() local t = d.getf("Start_Time") - c local o = d.getf("LastTimeGetOutPut") if c >= o then if t >= 60 then d.notice("Nemere Gözlemevi'ndeki kalan sure: "..math.ceil(t / 60).." dakika") d.notice("Süre bitiminde gözlemevinden dışarı, girişe ışınlanacaksınız.") else d.notice("Nemere Gözlemevi'ndeki kalan süre: "..t.." saniye") d.notice("Süre bitiminde gözlemevinden dışarı, girişe ışınlanacaksınız.") end if t >= (60*10) then d.setf("LastTimeGetOutPut",c + 60*5) elseif t >= (60*5) then d.setf("LastTimeGetOutPut",c + 60*2) else d.setf("LastTimeGetOutPut",c + 10) end end end when Jp_OutAllFailNotice.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Zindan için verilen süre doldu.") server_timer("Jp_OutAll",2,d.get_map_index()) end end when CheckLevelAndCountKillOnMobs.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local level = d.getf("level") local mob_count = d.count_monster() local next_jump_time = set.jumptime if level == 1 and mob_count <= 0 then d.notice("Az sonra ikinci kata ışınlanacaksınız.") server_timer("Jp_2",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt") elseif level == 3 and mob_count <= 0 then d.notice("Az sonra dördüncü kata ışınlanacaksınız.") server_timer("Jp_4",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_4.txt") elseif level == 4 and mob_count <= 0 then d.notice("Az sonra beşinci kata ışınlanacaksınız.") server_timer("Jp_5",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt") end snow_dungeon._GetLastTime() end end when Jp_2.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.key2 d.setf("level",2) local cord = set.base_cord local pos = set.Position_level_2 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Bazı canavarların üzerinde buz anahtarı var.") d.notice("Buz anahtarları ellerinden alın ve uyan anahtarı bulun!") end end when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin local set = snow_dungeon.get_settings() local next_jump_time = set.jumptime local level = d.getf("level") if level == 2 then pc.remove_item("30331",1) d.notice("Az sonra üçüncü kata ışınlanacaksınız.") server_timer("Jp_3",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_3.txt") end end when Jp_3.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() d.setf("level",3) local cord = set.base_cord local pos = set.Position_level_3 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Bütün düşmanları mağlup edin!") end end when Jp_4.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() d.setf("level",4) local cord = set.base_cord local pos = set.Position_level_4 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Bütün düşmanları mağlup edin!") end end when Jp_5.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.npc5 d.setf("level",5) local cord = set.base_cord local pos = set.Position_level_5 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Bir sonraki kata geçmek icin Arktos küpleri'ndeki mühürleri sırasıyla kırın.") d.notice("Buz canavarlarını mağlup edin ve ellerinden kuzey yıldızlarını alıp mühürleri kırın!") snow_dungeon._Create_Stones_level5() end end function _DropKeyOnLevel5() if number(1,1000) >= 900 then return end local set = snow_dungeon.get_settings() local count = set.npc5count local vnum = set.key5 local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."") local fail_count = d.getf("Stone_5_item_fail") +1 local search = d.getf("Stone_5_count") local search2 = d.get_unique_vid("stone5_"..search.."") if search2 != get_random_unique then d.setf("Stone_5_item_fail",fail_count) end game.drop_item_and_select(vnum,1) if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then item.set_socket(1,search2) d.setf("Stone_5_item_fail",0) elseif fail_count > 6 then item.set_socket(1,search2) d.setf("Stone_5_item_fail",0) else item.set_socket(1,get_random_unique) end end function _Create_Stones_level5() local set = snow_dungeon.get_settings() local stone_level5_count_MQ = set.npc5count local c = set.StoneCords_level_5 local v = set.npc5 for i = 1, stone_level5_count_MQ, 1 do local n = number(1,table.getn(c)) d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2])) table.remove(c,n) if i == 1 then d.setf("Stone_5_count",1) d.setf("Stone_5_item_fail",0) end end end when 20398.take begin if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() local stone_level5_count = set.npc5count local next_jump_time = set.jumptime if item.get_vnum() == 30332 then local npc_vid = npc.get_vid() local search = d.getf("Stone_5_count") local search2 = d.get_unique_vid("stone5_"..search.."") if npc_vid == search2 then local new = search +1 if new > stone_level5_count then d.notice("Az sonra altıncı kata ışınlanacaksınız.") npc.purge() if item.get_vnum() == 30332 then item.remove() end server_timer("Jp_6",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() else if new == 2 then say("Başardınız! Şimdi ikinci mührü kırın.") elseif new == 3 then say("Başardınız! Şimdi üçüncü mührü kırın.") elseif new == 4 then say("Başardınız! Şimdi dördüncü mührü kırın.") elseif new == 5 then say("Başardınız! Şimdi beşinci mührü kırın.") elseif new == 6 then say("Başardınız! Şimdi altıncı mührü kırın.") end npc.purge() if item.get_vnum() == 30332 then item.remove() d.setf("Stone_5_count",new) end end else say("Sıralamanın doğru olmasına dikkat edin! Başka bir") say("küpü deneyin.") if item.get_vnum() == 30332 then item.remove() end end end end end when Jp_6.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.mob6 d.setf("level",6) local cord = set.base_cord local pos = set.Position_level_6 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Bütün canavarları mağlup edin ve ardından") d.notice("Ayaz Metini'ni yok edin.") local MobStonelvl6 = set.mob6 d.spawn_mob(MobStonelvl6,570,649) end end when Jp_7.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.MobVnum_level_7 d.setf("level",7) local cord = set.base_cord local pos = set.Position_level_7 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Ayazın ve buzun efendisi Szel'i bulun ve yok edin.") end end when Jp_8.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.key8 d.setf("level",8) local cord = set.base_cord local pos = set.Position_level_8 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Bütün buz canavarlarını mağlup edin ve buzçiçeği") d.notice("anahtarını bulun.") end end when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin local set = snow_dungeon.get_settings() local next_jump_time = set.jumptime local level = d.getf("level") if level == 8 then if number(1,3) == 1 then d.notice("Az sonra dokuzuncu kata ışınlanacaksınız.") server_timer("Jp_9",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() if item.get_vnum() == 30333 then item.remove() end else say("Yanlış anahtardı. Doğru anahtarı bulun!") if item.get_vnum() == 30333 then item.remove() end end end end when Jp_9.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.npc9 d.setf("level",9) local cord = set.base_cord local pos = set.Position_level_9 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Kuzeyli Ejderha Sütunu'nu yok edin.") d.spawn_mob(v,849,655) end end when Jp_Boss.server_timer begin if d.select(get_server_timer_arg()) then local set = snow_dungeon.get_settings() local v = set.boss d.setf("level",10) local cord = set.base_cord local pos = set.Position_level_10 d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2])) pc.setf("snow_dungeon","map",d.get_map_index()) d.notice("Ayazın ve buzun kralı Nemere'yi mağlup edin.") end end when kill begin if snow_dungeon.is_nemeres_dungeon() == true then local set = snow_dungeon.get_settings() local next_jump_time = set.jumptime local level = d.getf("level") local stone_level_6 = set.mob6 local stone_level_7 = set.mob7 local stone_level_9 = set.npc9 local boss_vnum = set.boss local wait_time = set.exittime local mobvnum = npc.get_race() if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,25) then local v = set.key2 game.drop_item(v,1) elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,20) then snow_dungeon._DropKeyOnLevel5() elseif level == 6 and mobvnum == stone_level_6 then d.notice("Az sonra yedinci kata ışınlanacaksınız.") server_timer("Jp_7",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.regen_file("data/dungeon/ice_dungeon/zone_7.txt") --Szel local v_MQv = set.mob7 local c = set.SzelCords_level_7 local n = number(1,table.getn(c)) d.spawn_mob(v_MQv, c[n][1], c[n][2]) elseif level == 7 and mobvnum == stone_level_7 then d.notice("Az sonra sekizinci kata ışınlanacaksınız.") server_timer("Jp_8",next_jump_time,d.get_map_index()) d.clear_regen() d.kill_all() d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt") elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,25) then local v = set.key8 game.drop_item(v,1) elseif level == 9 and mobvnum == stone_level_9 then d.clear_regen() d.kill_all() d.spawn_mob_dir(20397, 849,670,1) elseif level == 10 and mobvnum == boss_vnum then d.clear_regen() d.kill_all() notice_all("Nemere "..pc.get_name().." tarafından yok edildi.") d.notice("Nemere mağlup edildi!") d.notice("Bir dakika icerisinde Nemere Gözlemevi'nden dışarı ışınlanacaksınız.") pc.setf("snow_dungeon","map",0) pc.setf("snow_dungeon","channel",0) d.setf("DungeonBlock",0) local canredo = get_global_time() + set.cooldown pc.setf("snow_dungeon","duration",canredo) server_timer("Jp_OutAll",wait_time,d.get_map_index()) end end end when Jp_OutAll.server_timer begin if d.select(get_server_timer_arg()) then snow_dungeon._ExitAll() end end function _ExitAll() d.exit_all() end end end