1. quest snow_dungeon begin
  2. state start begin
  3. when 9010.chat."Tasi indir" with snow_dungeon.is_nemeres_dungeon() == true begin
  4. d.purge()
  5. d.spawn_mob_dir(20397, 173,262,1)
  6. setskin(NOWINDOW)
  7. end
  8. when 9010.chat."TESTSERVER: SnowDungeon 9.seviye'ye git" with snow_dungeon.is_nemeres_dungeon() == true begin
  9. local set = snow_dungeon.get_settings()
  10. --- d.notice("Der Richtige Schlussel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
  11. server_timer("Jp_9",6,d.get_map_index())
  12. d.clear_regen()
  13. d.kill_all()
  14. d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
  15. setskin(NOWINDOW)
  16. end
  17. when 9010.chat."TESTSERVER: SnowDungeon 10.seviye'ye git" with snow_dungeon.is_nemeres_dungeon() == true begin
  18. local set = snow_dungeon.get_settings()
  19. server_timer("Jp_Boss",3,d.get_map_index())
  20. d.clear_regen()
  21. d.kill_all()
  22. d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
  23. local v = set.BossVnumGroup
  24. d.spawn_group(v, 928, 335, 5 ,1, 1) -- (Input from SRC: argument: vnum,x,y,radius,aggressive,count)
  25. setskin(NOWINDOW)
  26. end
  27. when 9010.chat."TESTSERVER: SnowDungeon boss at" with snow_dungeon.is_nemeres_dungeon() == true begin
  28. local set = snow_dungeon.get_settings()
  29. local v = set.BossVnumGroup
  30. d.spawn_group(v, 928, 335, 5 ,1, 1) -- (INFO from SRC: argument: vnum,x,y,radius,aggressive,count)
  31. end
  32. when 9010.chat."TESTSERVER: SnowDungeon'u bitir" with snow_dungeon.is_nemeres_dungeon() == true begin
  33. server_timer("Jp_OutAll",5,d.get_map_index())
  34. say("done")
  35. end
  36. -- when 30331.use begin --key_level_2
  37. -- LIB_writelog("{"..pc.get_local_x()..","..pc.get_local_y().."}",3,"snowcordis.txt")
  38. -- d.spawn_mob(20399, pc.get_local_x(), pc.get_local_y())
  39. -- chat("write Nordstern Kordinaten")
  40. -- end
  41. when 9010.chat."TESTSERVER: SnowDungeon test 5.kat" with snow_dungeon.is_nemeres_dungeon() == true begin
  42. snow_dungeon._Create_Stones_level5()
  43. setskin(NOWINDOW)
  44. end
  45. when 9010.chat."TESTSERVER: SnowDungeon 5.kat" with snow_dungeon.is_nemeres_dungeon() == true begin
  46. snow_dungeon._DropKeyOnLevel5()
  47. setskin(NOWINDOW)
  48. end
  49. when 9010.chat."TESTSERVER: SnowDungeon pozisyonlarım" with snow_dungeon.is_nemeres_dungeon() == true begin
  50. local set = snow_dungeon.get_settings()
  51. local warp_to_level = set.Position_level_1
  52. local level = 2
  53. say("Eski: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
  54. local warp_to_level = set. _G[ "Position_level_"..level ]
  55. say("Yeni: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
  56. --DONT WORKS!
  57. end
  58. function get_settings()
  59. local snow_dungeon_settings = {}
  60. snow_dungeon_settings.map_index = 352 --Mapindex
  61. snow_dungeon_settings.base_cord = {5120, 1536 } --Base Kordinaten
  62. snow_dungeon_settings.outside_entry_pos = {61,4321,1667} --Mapindex, Exit Position (Eisland)
  63. snow_dungeon_settings.need_level = 100 --Ab wann ist der Dungeon betretbar.
  64. snow_dungeon_settings.need_level_group = 100 --Benotigte Level fur Gruppenmitglieder
  65. snow_dungeon_settings.WaitBeforOutAllOnExit = 60 --Wartezeit bevor alle alle herausteleportiert werden bei einem erfolgreichen Run. (Empfohlen 60)
  66. snow_dungeon_settings.NextJumpTime = 5 --Wann man zur nächsten ebene Gejumpt wird (timer) (Empfohlen 5)
  67. snow_dungeon_settings.DurationLoopTimer = 45 --Welchen intervall die Level und Missionen gepruft werden sollen. (Empfohlen 45)
  68. snow_dungeon_settings.wait_duration = 60*60*4 --Ab wann der Dungeon wieder betretbar ist (PartyLeader)
  69. snow_dungeon_settings.maxlife_time_on_dungeon = 60*60*1 --Maximale Zeit fur den Dungeon.
  70. snow_dungeon_settings.DurationMaxOnReJoinGroup = 60*5 --Maximale Zeit innerhalb wann man wieder in die Gruppe joinen kann.
  71. snow_dungeon_settings.key_level_2 = 30331 --KeyVnum fur die 2.Ebene --Frostschlussel
  72. snow_dungeon_settings.NpcVnum_level_5 = 20398 --MobVnum von 5.Ebene --Wurfel des Arktos
  73. snow_dungeon_settings.StoneCount_level_5 = 6 --Wie viele Wurfel des Arktos sollen erscheinen?
  74. snow_dungeon_settings.Key_on_level_5 = 30332 --KeyVnum von 5.Ebene --Nordstern
  75. snow_dungeon_settings.StoneCords_level_5 = {
  76. {432,508},{437,493},{448,492},{448,476},{467,475},{466,464},
  77. {462,450},{458,428},{446,439},{431,431},{415,416},{402,427},
  78. {397,438},{375,434},{374,456},{390,468},{385,492},{402,505},
  79. {404,489},{386,482}
  80. } --Positionen von Wurfel des Arktos
  81. snow_dungeon_settings.MobVnum_level_6 = 8058 --MobVnum von 6.Ebene --Metin der Kälte
  82. snow_dungeon_settings.MobVnum_level_7 = 6151 --MobVnum von 7.Ebene --Szel
  83. snow_dungeon_settings.SzelCords_level_7 = {
  84. {752,499},{758,479},{772,452},{763,444},{750,451},{728,441},
  85. {726,455},{718,482},{715,491},{731,473},{748,429}
  86. } --Positionen von Szel
  87. snow_dungeon_settings.Key_on_level_8 = 30333 --KeyVnum von 8.Ebene --Eisblumenschlussel
  88. snow_dungeon_settings.NpcVnum_level_9 = 20399 --MobVnum von 9.Ebene --Säule des Norddrachen
  89. snow_dungeon_settings.BossVnumGroup = 6062 --GroupMobVnum vom Boss --(Group.txt)
  90. snow_dungeon_settings.BossVnum = 6191 --MobVnum von 10.Ebene --Nemere(6191)
  91. snow_dungeon_settings.Position_level_1 = { 171,271 } --Position ebene 1 --Startposition --Tote alle Monster auf dieser Ebene.
  92. snow_dungeon_settings.Position_level_2 = { 761,270 } --Position ebene 2 --Finde den richtigen Frostschlussel, nur ein Schamane kann ihn benutzen.
  93. snow_dungeon_settings.Position_level_3 = { 187,491 } --Position ebene 3 --Tote alle Monster auf dieser Ebene.
  94. snow_dungeon_settings.Position_level_4 = { 421,259 } --Position ebene 4 --Tote alle Monster auf dieser Ebene.
  95. snow_dungeon_settings.Position_level_5 = { 419,530 } --Position ebene 5 --offnet die Siegel an den Wurfel des Arktos in der richtigen Reihenfolge. (Zieht Nordstern auf die Wurfel)
  96. snow_dungeon_settings.Position_level_6 = { 571,706 } --Position ebene 6 --Tote alle Monster auf dieser Ebene. Danach Zersore den Metin der Kälte (Nur ein Schamane kann ihn Schaden)
  97. snow_dungeon_settings.Position_level_7 = { 746,534 } --Position ebene 7 --Tote alle Monster auf dieser Ebene und Szel
  98. snow_dungeon_settings.Position_level_8 = { 303,710 } --Position ebene 8 --Der Eisblumenschlussel muss gedroppt werden, jedoch kann dieser nur von Schamanen und Ninja benutzt werden.
  99. snow_dungeon_settings.Position_level_9 = { 848,693 } --Position ebene 9 --Zerstort die Säule des Norddrachen. Nur Ninjas und Schamanen konnen ihm Schaden zufugen.
  100. snow_dungeon_settings.Position_level_10 = { 927,391 } --Position ebene 10 (BossZone) --Besiege Nemere, den Konig uber Frost und Eis.
  101. snow_dungeon_settings.Enable_TestServerMode = false --Ob TestServer mode aktiviert ist. Wenn ja werden die Aufgaben schneller beendet.
  102. snow_dungeon_settings.IsNewga_me_re_vi_sion = true --Need ga_me_re_vi_sion 40301
  103. return snow_dungeon_settings
  104. end
  105. function is_TestServerMode()
  106. local set = snow_dungeon.get_settings()
  107. return set.Enable_TestServerMode
  108. end
  109. function is_nemeres_dungeon()
  110. local set = snow_dungeon.get_settings()
  111. local map = pc.get_map_index()
  112. if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then
  113. return true
  114. else
  115. return false
  116. end
  117. end
  118. when 20395.chat."Gruba tekrar katıl" with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) begin
  119. local set = snow_dungeon.get_settings()
  120. local n = party.getf("ice_dungeon_map_index")
  121. local cord = set.base_cord
  122. local level = d.getf_from_map_index("level", n)
  123. --say("Aktuelles Dungeon Level deiner Gruppe: "..level.."")
  124. if level == 0 then
  125. say_npc_name()
  126. say("Grubunuz zaten Buzdaği'ni fethetti.")
  127. return
  128. end
  129. if pc.getqf("out_party_time") < get_global_time() then
  130. say_npc()
  131. say("")
  132. say("Du hast länger als "..math.ceil(set.DurationMaxOnReJoinGroup /60) .." Minute(n) vor dem")
  133. say("Eisberg verweilt und kannst jetzt nicht")
  134. say("mehr eintreten.")
  135. return
  136. end
  137. if n == 0 then
  138. setskin(NOWINDOW)
  139. return
  140. else
  141. say_npc()
  142. say("")
  143. say("Tekrar grubuna katılmak istiyor musun?")
  144. if select("Evet","Hayır") == 1 then
  145. local warp_to_level = set.Position_level_1
  146. local level = d.getf_from_map_index("level", n)
  147. if level >= 1 and level <= 10 then
  148. if level == 1 then warp_to_level = set.Position_level_1
  149. elseif level == 2 then warp_to_level = set.Position_level_2
  150. elseif level == 3 then warp_to_level = set.Position_level_3
  151. elseif level == 4 then warp_to_level = set.Position_level_4
  152. elseif level == 5 then warp_to_level = set.Position_level_5
  153. elseif level == 6 then warp_to_level = set.Position_level_6
  154. elseif level == 7 then warp_to_level = set.Position_level_7
  155. elseif level == 8 then warp_to_level = set.Position_level_8
  156. elseif level == 9 then warp_to_level = set.Position_level_9
  157. elseif level == 10 then warp_to_level = set.Position_level_10
  158. end
  159. pc.warp((cord[1] + warp_to_level[1])*100,(cord[2] + warp_to_level[2])*100,n)
  160. else
  161. return
  162. end
  163. end
  164. end
  165. end
  166. when 20395.chat."Nemere'nin Gözetleme Kulesi" begin
  167. local set = snow_dungeon.get_settings()
  168. local need_level = 35
  169. say_npc()
  170. say("")
  171. say("Grubunuz ile gerçekten Nemere'nin")
  172. say("Gözetleme Kulesi'ne girmek istiyor musunuz?")
  173. if select("Evet, girmek istiyoruz.","Hayır, orası çok soğuk.") == 2 then
  174. return
  175. end
  176. if (pc.is_gm() and pc.getf("snow_dungeon","duration") >= get_global_time()) then
  177. say("Game Master; süreyi sıfırlamak mı istiyorsun?")
  178. if select("Evet","Hayır") == 1 then
  179. pc.setf("snow_dungeon","duration",0)
  180. return
  181. end
  182. end
  183. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  184. say("Test server modu etkinleştirildi.")
  185. say(" Şimdi ışınlanacksınız.")
  186. timer("make_dungeon",3)
  187. return
  188. end
  189. if not party.is_leader() then
  190. say_npc()
  191. say("Cesaretini takdir ediyorum ama")
  192. say("yalnızca grup lideri giriş talebi yapabilir.")
  193. return
  194. end
  195. if pc.get_level() < need_level then
  196. say("Zindan'a girmek için en az "..need_level..".")
  197. say("seviyede olmalisin.")
  198. return
  199. end
  200. if pc.getf("snow_dungeon","duration") >= get_global_time() then
  201. say_npc()
  202. say("Nemeres Gözetleme Kulesi'ne yeniden giriş ")
  203. say("için bekleme süresi henüz dolmamış.")
  204. say("Kalan süre: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."")
  205. return
  206. end
  207. if snow_dungeon._CheckMembersLevel() == false then
  208. return
  209. else
  210. timer("make_dungeon",2)
  211. end
  212. end
  213. when 20397.chat."Savaşı başlat" begin --Eisiger Lowe
  214. say_npc()
  215. say("")
  216. say("Savaş'ı başlatmak istiyor musun?")
  217. if select("Evet","Hayır, korkuyorum. ") == 1 then
  218. local set = snow_dungeon.get_settings()
  219. local loop_durr = set.DurationLoopTimer
  220. local wait_durations = set.wait_duration
  221. local t = get_global_time()
  222. d.setf("LastTimeGetOutPut",0)
  223. server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index())
  224. d.regen_file("data/dungeon/ice_dungeon/zone_1.txt")
  225. d.setf("Start_Time",t + set.maxlife_time_on_dungeon)
  226. server_timer("Jp_OutAllFailNotice",(t + set.maxlife_time_on_dungeon) - t,d.get_map_index())
  227. --pc.setqf("duration",t + wait_durations)
  228. d.setqf2("snow_dungeon","duration",t + wait_durations)
  229. d.setf("level",1)
  230. d.notice("Bir sonraki kata çıkmak için Tüm yaratıkları öldürmelisiniz.")
  231. npc.purge()
  232. snow_dungeon._GetLastTime()
  233. end
  234. setskin(NOWINDOW)
  235. end
  236. when make_dungeon.timer begin
  237. local set = snow_dungeon.get_settings()
  238. local cord = set.base_cord
  239. local start_pos = set.Position_level_1
  240. local t = get_global_time()
  241. d.new_jump_party(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
  242. --d.new_jump_all(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
  243. snow_dungeon._ClearAlls()
  244. d.setf("party_leader_pid",party.get_leader_pid())
  245. party.setf("ice_dungeon_map_index",d.get_map_index())
  246. d.spawn_mob_dir(20397, 173,262,1) --Eisiger Lowe
  247. end
  248. function _ClearAlls()
  249. local d_index = d.get_map_index()
  250. clear_server_timer("CheckLevelAndCountKillOnMobs",d_index)
  251. clear_server_timer("Jp_1",d_index)
  252. clear_server_timer("Jp_2",d_index)
  253. clear_server_timer("Jp_3",d_index)
  254. clear_server_timer("Jp_4",d_index)
  255. clear_server_timer("Jp_5",d_index)
  256. clear_server_timer("Jp_6",d_index)
  257. clear_server_timer("Jp_7",d_index)
  258. clear_server_timer("Jp_8",d_index)
  259. clear_server_timer("Jp_9",d_index)
  260. clear_server_timer("Jp_10",d_index)
  261. clear_server_timer("Jp_OutAll",d_index)
  262. clear_server_timer("Jp_OutAllFail",d_index)
  263. clear_server_timer("Jp_OutAllFailNotice",d_index)
  264. d.setf("level",0)
  265. d.setf("party_leader_pid",0)
  266. d.setf("Start_Time",0)
  267. d.setf("LastTimeGetOutPut",0)
  268. d.setf("Stone_5_count",0)
  269. d.setf("Stone_5_item_fail",0)
  270. d.clear_regen()
  271. d.kill_all()
  272. end
  273. function _CheckMembersLevel()
  274. local set = snow_dungeon.get_settings()
  275. local user_fail_level = {}
  276. local pids = {party.get_member_pids()}
  277. local need_level = set.need_level_group
  278. local have_ninja = false
  279. local have_shaman = false
  280. for i = 1, table.getn(pids), 1 do
  281. q.begin_other_pc_block(pids[i])
  282. if pc.get_level() < need_level then
  283. table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
  284. end
  285. local job = pc.get_job()
  286. if job == 1 -- Ninja weiblich
  287. or job == 5 --Ninja männlich
  288. then
  289. have_ninja = true
  290. end
  291. if job == 3 -- Schamane weiblich
  292. or job == 7 --Schamane männlich
  293. then
  294. have_shaman = true
  295. end
  296. q.end_other_pc_block()
  297. end
  298. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  299. --dchat("TEST modu aktif.")
  300. return true
  301. end
  302. if have_ninja == false then
  303. say("Grubunuzda Ninja olmadan yukarı çıkamazsınız.")
  304. return false
  305. end
  306. if have_shaman == false then
  307. say("Grubunuzda Şaman olmadan yukarı çıkamazsınız.")
  308. return false
  309. end
  310. if table.getn(user_fail_level) >= 1 then
  311. say_npc()
  312. say("")
  313. say("Grubun bağzı üyeleri")
  314. say("henüz "..need_level..". seviyeye ulaşmamış:")
  315. for x = 1, table.getn(user_fail_level), 1 do
  316. say(color(1,1,0), " "..user_fail_level[x])
  317. end
  318. return false
  319. end
  320. if table.getn(user_fail_level) == 0 then
  321. return true
  322. end
  323. end
  324. when logout begin
  325. if snow_dungeon.is_nemeres_dungeon() == true then
  326. local set = snow_dungeon.get_settings()
  327. pc.setqf("out_party_time",get_global_time() + set.DurationMaxOnReJoinGroup)
  328. --snow_dungeon.unregister_name()
  329. end
  330. end
  331. when login begin
  332. if snow_dungeon.is_nemeres_dungeon() == true then
  333. local set = snow_dungeon.get_settings()
  334. local backk = set.outside_entry_pos
  335. pc.set_warp_location(backk[1], backk[2],backk[3])
  336. if d.getf("party_leader_pid") != party.get_leader_pid() then
  337. chat("nemeres_wait_dungeon #RAUS:# Sizin grubunuz içeride değil.")
  338. chat("nemeres_wait_dungeon #RAUS:#debug -> "..d.getf("party_leader_pid").." != "..party.get_leader_pid().."")
  339. d.exit()
  340. return
  341. end
  342. if pc.get_level() < set.need_level_group then
  343. chat("nemeres_wait_dungeon #RAUS:# Benim seviyem düşük.")
  344. d.exit()
  345. return
  346. end
  347. --chat("Hos geldiniz. Burada "..math.ceil((d.getf("Start_Time") - get_global_time()) /60) .." dakikalik sureniz var.")
  348. --notice("Sonraki kata cikmak icin Tum yaratiklari oldurun.")
  349. --snow_dungeon._GetLastTime()
  350. end
  351. end
  352. function _GetLastTime()
  353. local c = get_global_time()
  354. local t = d.getf("Start_Time") - c
  355. local o = d.getf("LastTimeGetOutPut")
  356. --d.notice("CurrentTime: "..c.." Last: "..o.."")
  357. if c >= o then
  358. if t >= 60 then
  359. d.notice("Yaklaşık "..math.ceil(t / 60).." dakikanız kaldı...")
  360. else
  361. d.notice("Yaklaşık "..t .." saniyeniz kaldı...")
  362. end
  363. if t >= (60*10) then
  364. d.setf("LastTimeGetOutPut",c + 60*5)
  365. elseif t >= (60*5) then
  366. d.setf("LastTimeGetOutPut",c + 60*2)
  367. else
  368. d.setf("LastTimeGetOutPut",c + 10)
  369. end
  370. --d.setf("LastTimeGetOutPut",c + 60*number(3,5)) -- Random
  371. end
  372. end
  373. when Jp_OutAllFailNotice.server_timer begin
  374. if d.select(get_server_timer_arg()) then
  375. d.notice("Zaman doldu.")
  376. server_timer("Jp_OutAll",1,d.get_map_index())
  377. end
  378. end
  379. when CheckLevelAndCountKillOnMobs.server_timer begin
  380. if d.select(get_server_timer_arg()) then
  381. local set = snow_dungeon.get_settings()
  382. local level = d.getf("level")
  383. local mob_count = d.count_monster()
  384. local next_jump_time = set.NextJumpTime
  385. --d.notice("level: "..level.." mob_count: "..mob_count.."")
  386. if level == 1 and mob_count <= 0 then
  387. d.notice("Tüm yaratıkları mağlup ettin. Bir kaç dakika içerisinde bir sonraki kata ışınlanacaksın.")
  388. d.notice("")
  389. server_timer("Jp_2",next_jump_time,d.get_map_index())
  390. d.clear_regen()
  391. d.kill_all()
  392. d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt")
  393. elseif level == 3 and mob_count <= 0 then
  394. d.notice("Tüm yaratıkları mağlup ettin. Bir kaç dakika içerisinde bir sonraki kata ışınlanacaksın.")
  395. d.notice("")
  396. server_timer("Jp_4",next_jump_time,d.get_map_index())
  397. d.clear_regen()
  398. d.kill_all()
  399. d.regen_file("data/dungeon/ice_dungeon/zone_4.txt")
  400. elseif level == 4 and mob_count <= 0 then
  401. d.notice("Tüm yaratıkları mağlup ettin. Bir kaç dakika içerisinde bir sonraki kata ışınlanacaksın.")
  402. d.notice("")
  403. server_timer("Jp_5",next_jump_time,d.get_map_index())
  404. d.clear_regen()
  405. d.kill_all()
  406. d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt")
  407. elseif level == 6 and mob_count <= 0 then
  408. local MobStonelvl6 = set.MobVnum_level_6
  409. d.notice("Tüm canavarları yok ettiniz. "..mob_name(MobStonelvl6).."'i öldürün.")
  410. d.notice("")
  411. d.clear_regen()
  412. d.kill_all()
  413. d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
  414. d.spawn_mob(MobStonelvl6,570,649)
  415. elseif level == 7 and mob_count <= 0 then
  416. d.notice("Tüm yaratıkları mağlup ettin. Bir kaç dakika içerisinde bir sonraki kata ışınlanacaksın.")
  417. d.notice("")
  418. server_timer("Jp_8",next_jump_time,d.get_map_index())
  419. d.clear_regen()
  420. d.kill_all()
  421. d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt")
  422. end
  423. snow_dungeon._GetLastTime()
  424. end
  425. end
  426. when Jp_2.server_timer begin --Jump Level 2
  427. if d.select(get_server_timer_arg()) then
  428. local set = snow_dungeon.get_settings()
  429. local v = set.key_level_2
  430. d.setf("level",2)
  431. local cord = set.base_cord
  432. local pos = set.Position_level_2
  433. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  434. d.notice("Yukarı çıkmak için "..item_name(v).."'i bulun.")
  435. d.notice("")
  436. end
  437. end
  438. when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin --key_level_2
  439. local set = snow_dungeon.get_settings()
  440. local next_jump_time = set.NextJumpTime
  441. local job = pc.get_job()
  442. local level = d.getf("level")
  443. if level == 2 then
  444. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  445. --dchat("SET VARIABLE JOB 3")
  446. job = 3
  447. end
  448. if job == 3 -- Schamane weiblich
  449. or job == 7 --Schamane männlich
  450. then
  451. if number(1,3) == 1 then --or d.count_monster() < 10 then
  452. d.notice("Doğru anahtarı buldunuz! Bir kaç saniye sonra ışınlanacaksınız.")
  453. server_timer("Jp_3",next_jump_time,d.get_map_index())
  454. d.clear_regen()
  455. d.kill_all()
  456. d.regen_file("data/dungeon/ice_dungeon/zone_3.txt")
  457. item.remove()
  458. else
  459. d.notice("Bu yanlış anahtar.")
  460. item.remove()
  461. end
  462. else
  463. d.notice("Bunu sadece Şamanlar kullanabilir.")
  464. return
  465. end
  466. end
  467. end
  468. when Jp_3.server_timer begin --Jump Level 3
  469. if d.select(get_server_timer_arg()) then
  470. local set = snow_dungeon.get_settings()
  471. d.setf("level",3)
  472. local cord_MQ = set.base_cord
  473. local pos = set.Position_level_3
  474. d.jump_all((cord_MQ[1] + pos[1]), (cord_MQ[2] + pos[2]))
  475. d.notice("Sonraki seviyeye ulaşmak için bütün yaratıkları öldürün!")
  476. end
  477. end
  478. when Jp_4.server_timer begin --Jump Level 4
  479. if d.select(get_server_timer_arg()) then
  480. local set = snow_dungeon.get_settings()
  481. d.setf("level",4)
  482. local cord = set.base_cord
  483. local pos = set.Position_level_4
  484. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  485. d.notice("Sonraki seviyeye ulaşmak için bütün yaratıkları öldürün!")
  486. end
  487. end
  488. when Jp_5.server_timer begin --Jump Level 5
  489. if d.select(get_server_timer_arg()) then
  490. local set = snow_dungeon.get_settings()
  491. local v = set.NpcVnum_level_5
  492. d.setf("level",5)
  493. local cord = set.base_cord
  494. local pos = set.Position_level_5
  495. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  496. d.notice("Anahtar düşürerek "..mob_name(v).." isimli buz küpünden mühürü açın. ")
  497. if set.IsNewga_me_re_vi_sion == true then
  498. d.notice("Anahtarı canavarlardan düşürebilirsiniz.")
  499. else
  500. d.notice("Anahtarlar otomatikman envanterinize gelecek.")
  501. end
  502. snow_dungeon._Create_Stones_level5()
  503. end
  504. end
  505. function _DropKeyOnLevel5()
  506. if number(1,1000) >= 666 then --Abbruch der weiteren funtion -> Damit es spannend bleibt bei den wurfeln... :P
  507. return
  508. end
  509. local set = snow_dungeon.get_settings()
  510. local count = set.StoneCount_level_5
  511. local vnum = set.Key_on_level_5
  512. local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."")
  513. local fail_count = d.getf("Stone_5_item_fail") +1
  514. local search = d.getf("Stone_5_count")
  515. local search2 = d.get_unique_vid("stone5_"..search.."")
  516. if search2 != get_random_unique then
  517. d.setf("Stone_5_item_fail",fail_count)
  518. end
  519. --
  520. if set.IsNewga_me_re_vi_sion == true then
  521. --New function
  522. game.drop_item(vnum,1)
  523. else
  524. pc.give_item2_select(vnum,1)
  525. end
  526. --dchat("Creaty Key fail_count: "..fail_count.."")
  527. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --Wenn TestServer Modus
  528. item.set_socket(1,search2)
  529. d.setf("Stone_5_item_fail",0)
  530. elseif fail_count > 6 then --Wenn mehr wie x mal nicht richtig erstellt wird, dann kommt der richtige Key
  531. item.set_socket(1,search2)
  532. d.setf("Stone_5_item_fail",0)
  533. else
  534. item.set_socket(1,get_random_unique)
  535. end
  536. end
  537. function _Create_Stones_level5()
  538. local set = snow_dungeon.get_settings()
  539. local stone_level5_count_MQ = set.StoneCount_level_5
  540. local c = set.StoneCords_level_5 --{ {432,508},{437,493},{448,492},{448,476},{467,475},{466,464}}
  541. local v = set.NpcVnum_level_5
  542. for i = 1, stone_level5_count_MQ, 1 do
  543. local n = number(1,table.getn(c))
  544. --d.spawn_mob(20398, c[n][1], c[n][2])
  545. d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2]))
  546. --d.set_unique("stone5_"..i.."", mob.spawn(20398, c[n][1], c[n][2],1,1,1)) --GEHT
  547. --d.set_unique("stone5_"..i.."", d.spawn_mob_ac_dir(20398, c[n][1], c[n][2],i)) --GEHT
  548. table.remove(c,n)
  549. if i == 1 then
  550. d.setf("Stone_5_count",1)
  551. d.setf("Stone_5_item_fail",0)
  552. end
  553. end
  554. end
  555. when 20398.take begin --NpcVnum_level_5
  556. if snow_dungeon.is_nemeres_dungeon() == true then
  557. local set = snow_dungeon.get_settings()
  558. local stone_level5_count = 6
  559. local next_jump_time = 5
  560. local vnum = item.get_vnum()
  561. local key_level_5 = 30332
  562. local search = d.getf("Stone_5_count")
  563. if vnum == key_level_5 then
  564. local new = search +1
  565. if new > stone_level5_count then
  566. d.notice("Son taşı açtınız, biraz sonra çıkacaksınız.")
  567. npc.purge()
  568. item.remove()
  569. server_timer("Jp_6",next_jump_time,d.get_map_index())
  570. d.clear_regen()
  571. d.kill_all()
  572. d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
  573. else
  574. d.notice(""..search..". Taşı açtınız, biraz daha ilerlemeniz gerekmekte. ".. stone_level5_count - search .." Adet taşınız kaldı.")
  575. npc.purge()
  576. item.remove()
  577. end
  578. d.setf("Stone_5_count",new)
  579. end --if is dungeon end
  580. end --when end
  581. end
  582. end
  583. state start begin
  584. when Jp_6.server_timer begin --Jump Level 6
  585. if d.select(get_server_timer_arg()) then
  586. local set = snow_dungeon.get_settings()
  587. local v = set.MobVnum_level_6
  588. d.setf("level",6)
  589. local cord = set.base_cord
  590. local pos = set.Position_level_6
  591. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  592. d.notice("Tüm canavarları öldürdünüz. Şimdi bütün canavarları yok edin ve "..mob_name(v).."'i mağlup edin.")
  593. --- d.notice("Nur Schamanen konnen ihm Schaden hinzufugen.")
  594. --d.spawn_mob(v,570,649)
  595. end
  596. end
  597. when Jp_7.server_timer begin --Jump Level 7
  598. if d.select(get_server_timer_arg()) then
  599. local set = snow_dungeon.get_settings()
  600. local v = set.MobVnum_level_7
  601. d.setf("level",7)
  602. local cord = set.base_cord
  603. local pos = set.Position_level_7
  604. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  605. d.notice("Metin taşarını başarıyla yok ettiniz. Şimdi "..mob_name(v).."'i mağlup edin!")
  606. end
  607. end
  608. when Jp_8.server_timer begin --Jump Level 8
  609. if d.select(get_server_timer_arg()) then
  610. local set = snow_dungeon.get_settings()
  611. local v = set.Key_on_level_8
  612. d.setf("level",8)
  613. local cord = set.base_cord
  614. local pos = set.Position_level_8
  615. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  616. d.notice("Yaratıkları keserek "..item_name(v).." düşürün.")
  617. d.notice("Bu nesnenin dilinden sadece Şaman ve Ninjalar anlayabiliyor...")
  618. end
  619. end
  620. when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin --Key_on_level_8
  621. local set = snow_dungeon.get_settings()
  622. local next_jump_time = set.NextJumpTime
  623. local level = d.getf("level")
  624. local job = pc.get_job()
  625. if level == 8 then
  626. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  627. --dchat("SET VARIABLE JOB 3")
  628. job = 3
  629. end
  630. if job == 1 -- Ninja weiblich
  631. or job == 5 --Ninja männlich
  632. or job == 3 -- Schamane weiblich
  633. or job == 7 --Schamane männlich
  634. then
  635. if number(1,3) == 1 then
  636. d.notice("Doğru anahtarı buldunuz.Bir kaç saniye içinde ışınlanacaksınız.")
  637. server_timer("Jp_9",next_jump_time,d.get_map_index())
  638. d.clear_regen()
  639. d.kill_all()
  640. d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
  641. item.remove()
  642. else
  643. d.notice("Bu anahtar yanlış.")
  644. item.remove()
  645. end
  646. else
  647. d.notice("Bunu sadece Şaman ve Ninja karakterleri kullanabilir.")
  648. return
  649. end
  650. end
  651. end
  652. when Jp_9.server_timer begin --Jump Level 9
  653. if d.select(get_server_timer_arg()) then
  654. local set = snow_dungeon.get_settings()
  655. local v = set.NpcVnum_level_9
  656. d.setf("level",9)
  657. local cord = set.base_cord
  658. local pos = set.Position_level_9
  659. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  660. d.notice(""..mob_name(v).."'yi mağlup edin!")
  661. d.notice("Fakat ona sadece Şaman'ın tecrübesi ve Ninja'nın kuvveti karşı koyabilir.")
  662. d.notice("")
  663. d.spawn_mob(v,849,655)
  664. end
  665. end
  666. when Jp_Boss.server_timer begin --Jump Level BossZone
  667. if d.select(get_server_timer_arg()) then
  668. local set = snow_dungeon.get_settings()
  669. local v = set.BossVnum
  670. d.setf("level",10)
  671. local cord = set.base_cord
  672. local pos = set.Position_level_10
  673. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  674. d.notice(""..mob_name(v).."'yi dondurun ve mağlup edin!")
  675. end
  676. end
  677. when kill begin
  678. if snow_dungeon.is_nemeres_dungeon() == true then
  679. local set = snow_dungeon.get_settings()
  680. local next_jump_time = set.NextJumpTime
  681. local level = d.getf("level")
  682. local stone_level_6 = set.MobVnum_level_6
  683. local stone_level_9 = set.NpcVnum_level_9
  684. local boss_vnum = set.BossVnum
  685. local wait_time = set.WaitBeforOutAllOnExit
  686. local mobvnum = npc.get_race()
  687. --dchat("nemeres_wait_dungeon MobVnum = "..mobvnum.."")
  688. if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
  689. local v = set.key_level_2
  690. game.drop_item(v,1)
  691. elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,15) then
  692. snow_dungeon._DropKeyOnLevel5()
  693. elseif level == 6 and mobvnum == stone_level_6 then
  694. d.notice(""..mob_name(stone_level_6).." mağlup edildi ve bir sonraki seviyeye geçiyorsunuz.")
  695. d.notice("")
  696. server_timer("Jp_7",next_jump_time,d.get_map_index())
  697. d.clear_regen()
  698. d.kill_all()
  699. d.regen_file("data/dungeon/ice_dungeon/zone_7.txt") --Szel
  700. local v_MQv = set.MobVnum_level_7
  701. local c = set.SzelCords_level_7
  702. local n = number(1,table.getn(c))
  703. d.spawn_mob(v_MQv, c[n][1], c[n][2])
  704. elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
  705. local v = set.Key_on_level_8
  706. game.drop_item(v,1)
  707. elseif level == 9 and mobvnum == stone_level_9 then
  708. d.notice(""..mob_name(stone_level_9).." mağlup edildi ve bir sonraki seviyeye geçiyorsunuz.")
  709. server_timer("Jp_Boss",next_jump_time,d.get_map_index())
  710. d.clear_regen()
  711. d.kill_all()
  712. d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
  713. local v = set.BossVnumGroup
  714. d.spawn_group(v, 928, 335, 5 ,1, 1) -- (Input from SRC: argument: vnum,x,y,radius,aggressive,count)
  715. elseif level == 10 and mobvnum == boss_vnum then
  716. d.clear_regen()
  717. d.kill_all()
  718. d.notice("Tebrikler cesur savaşçılar! "..mob_name(boss_vnum).."'yu mağlup ettiniz!.. Grup olarak "..wait_time.." saniye sonra ışınlanacaksınız.")
  719. notice_all(""..pc.get_name().." ve grup arkadaşları Nemeres'i mağlup etti!")
  720. server_timer("Jp_OutAll",wait_time,d.get_map_index())
  721. end
  722. end
  723. end
  724. when Jp_OutAll.server_timer begin --Jump Out Bye bye ;D
  725. if d.select(get_server_timer_arg()) then
  726. snow_dungeon._ExitAll()
  727. end
  728. end
  729. function _ExitAll()
  730. d.exit_all()
  731. end
  732. end
  733. end