Advertisement
Guest User

Untitled

a guest
Oct 31st, 2015
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.35 KB | None | 0 0
  1. quest snow_dungeon begin
  2. state start begin
  3. when 9010.chat."Spawn Estátua" 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: SnowD Jump level 9" with snow_dungeon.is_nemeres_dungeon() == true begin
  9. local set = snow_dungeon.get_settings()
  10. d.notice("Der Richtige Schlüssel 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: SnowD Jump level 10" 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: SnowD Spawn Boss" 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: SnowD Ending" 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 north star coordinates")
  40. -- end
  41. when 9010.chat."TESTSERVER: SnowD Spawn create Cords Test level 5" with snow_dungeon.is_nemeres_dungeon() == true begin
  42. snow_dungeon._Create_Stones_level5()
  43. setskin(NOWINDOW)
  44. end
  45. when 9010.chat."TESTSERVER: SnowD Create Key level 5" with snow_dungeon.is_nemeres_dungeon() == true begin
  46. snow_dungeon._DropKeyOnLevel5()
  47. setskin(NOWINDOW)
  48. end
  49. when 9010.chat."TESTSERVER: SnowD Get cord from Level" 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("old: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
  54. local warp_to_level = set. _G[ "Position_level_"..level ]
  55. say("new: 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 --Benötigte Level für 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 geprüft 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 für 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 für die 2.Ebene --Frostschlüssel
  72. snow_dungeon_settings.NpcVnum_level_5 = 20398 --MobVnum von 5.Ebene --Würfel des Arktos
  73. snow_dungeon_settings.StoneCount_level_5 = 6 --Wie viele Würfel 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 Würfel 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 --Eisblumenschlüssel
  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.  
  92. snow_dungeon_settings.Position_level_1 = { 171,271 } --Position ebene 1 --Startposition --Töte alle Monster auf dieser Ebene.
  93. snow_dungeon_settings.Position_level_2 = { 761,270 } --Position ebene 2 --Finde den richtigen Frostschlüssel, nur ein Schamane kann ihn benutzen.
  94. snow_dungeon_settings.Position_level_3 = { 187,491 } --Position ebene 3 --Töte alle Monster auf dieser Ebene.
  95. snow_dungeon_settings.Position_level_4 = { 421,259 } --Position ebene 4 --Töte alle Monster auf dieser Ebene.
  96. snow_dungeon_settings.Position_level_5 = { 419,530 } --Position ebene 5 --Öffnet die Siegel an den Würfel des Arktos in der richtigen Reihenfolge. (Zieht Nordstern auf die Würfel)
  97. snow_dungeon_settings.Position_level_6 = { 571,706 } --Position ebene 6 --Töte alle Monster auf dieser Ebene. Danach Zersöre den Metin der Kälte (Nur ein Schamane kann ihn Schaden)
  98. snow_dungeon_settings.Position_level_7 = { 746,534 } --Position ebene 7 --Töte alle Monster auf dieser Ebene und Szel
  99. snow_dungeon_settings.Position_level_8 = { 303,710 } --Position ebene 8 --Der Eisblumenschlüssel muss gedroppt werden, jedoch kann dieser nur von Schamanen und Ninja benutzt werden.
  100. snow_dungeon_settings.Position_level_9 = { 848,693 } --Position ebene 9 --Zerstört die Säule des Norddrachen. Nur Ninjas und Schamanen können ihm Schaden zufügen.
  101. snow_dungeon_settings.Position_level_10 = { 927,391 } --Position ebene 10 (BossZone) --Besiege Nemere, den König über Frost und Eis.
  102. snow_dungeon_settings.Enable_TestServerMode = false --Ob TestServer mode aktiviert ist. Wenn ja werden die Aufgaben schneller beendet.
  103. snow_dungeon_settings.IsNewGameRevision = true --Need GameRevision 40301
  104. return snow_dungeon_settings
  105. end
  106. function is_TestServerMode()
  107. local set = snow_dungeon.get_settings()
  108. return set.Enable_TestServerMode
  109. end
  110. function is_nemeres_dungeon()
  111. local set = snow_dungeon.get_settings()
  112. local map = pc.get_map_index()
  113. if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then
  114. return true
  115. else
  116. return false
  117. end
  118. end
  119. when 20395.chat."Juntar ao grupo" with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) begin
  120. local set = snow_dungeon.get_settings()
  121. local n = party.getf("ice_dungeon_map_index")
  122. local cord = set.base_cord
  123. local level = d.getf_from_map_index("level", n)
  124. --say("News Dungeon Level your group: "..level.."")
  125. if level == 0 then
  126. say_npc_name()
  127. say("O teu grupo já matou o nemere.")
  128. return
  129. end
  130. if pc.getqf("out_party_time") < get_global_time() then
  131. say_npc()
  132. say("")
  133. say("Já saiste à "..math.ceil(set.DurationMaxOnReJoinGroup /60) .." Minuto(s)")
  134. say("Já não é possivel juntares-te ao teu grupo.")
  135. say(" ")
  136. return
  137. end
  138. if n == 0 then
  139. setskin(NOWINDOW)
  140. return
  141. else
  142. say_npc()
  143. say("")
  144. say("Queres juntar-te ao teu grupo?")
  145. if select("Sim","Não") == 1 then
  146. local warp_to_level = set.Position_level_1
  147. local level = d.getf_from_map_index("level", n)
  148. if level >= 1 and level <= 10 then
  149. if level == 1 then warp_to_level = set.Position_level_1
  150. elseif level == 2 then warp_to_level = set.Position_level_2
  151. elseif level == 3 then warp_to_level = set.Position_level_3
  152. elseif level == 4 then warp_to_level = set.Position_level_4
  153. elseif level == 5 then warp_to_level = set.Position_level_5
  154. elseif level == 6 then warp_to_level = set.Position_level_6
  155. elseif level == 7 then warp_to_level = set.Position_level_7
  156. elseif level == 8 then warp_to_level = set.Position_level_8
  157. elseif level == 9 then warp_to_level = set.Position_level_9
  158. elseif level == 10 then warp_to_level = set.Position_level_10
  159. end
  160. pc.warp((cord[1] + warp_to_level[1])*100,(cord[2] + warp_to_level[2])*100,n)
  161. else
  162. return
  163. end
  164. end
  165. end
  166. end
  167.  
  168. when 20395.chat."O Nemere está à espera" begin
  169. local set = snow_dungeon.get_settings()
  170. local need_level = set.need_level
  171. say_npc()
  172. say("")
  173. say("Queres mesmo que o teu grupo")
  174. say("entre na cave gelada?")
  175. if select("Sim, queremos entrar! ","Não, está muito frio...") == 2 then
  176. return
  177. end
  178. if (pc.is_gm() and pc.getf("snow_dungeon","duration") >= get_global_time()) then
  179. say("És gm, remover tempo de espera?")
  180. if select("Sim","Não") == 1 then
  181. pc.setf("snow_dungeon","duration",0)
  182. return
  183. end
  184. end
  185. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  186. say("O servidor está em modo teste.")
  187. say("Juntar agora.")
  188. timer("make_dungeon",3)
  189. return
  190. end
  191. if not party.is_leader() then
  192. say_npc()
  193. say("Vejo que és coragoso, mas sozinho")
  194. say("de certesa que não vais conseguir matar o Nemere.")
  195. say("Reú-ne um grupo forte para")
  196. say("poderes entrar na cave.")
  197. return
  198. end
  199. if pc.get_level() < need_level then
  200. say("Precisas de ser nivel "..need_level.."")
  201. say("para entrar nesta cave.")
  202. return
  203. end
  204. if pc.getf("snow_dungeon","duration") >= get_global_time() then
  205. say_npc()
  206. say("O tempo de espera para")
  207. say("a cave do nemere ainda não terminou.")
  208. say("Falta: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."")
  209. return
  210. end
  211. if snow_dungeon._CheckMembersLevel() == false then
  212. return
  213. else
  214. timer("make_dungeon",2)
  215. end
  216. end
  217. when 20397.chat."Começar a Batalha" begin --Eisiger Löwe
  218. say_npc()
  219. say("")
  220. say("Queres mesmo começar?")
  221. if select("Sim","Não, mais tarde") == 1 then
  222. local set = snow_dungeon.get_settings()
  223. local loop_durr = set.DurationLoopTimer
  224. local wait_durations = set.wait_duration
  225. local t = get_global_time()
  226. d.setf("LastTimeGetOutPut",0)
  227. server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index())
  228. d.regen_file("data/dungeon/ice_dungeon/zone_1.txt")
  229. d.setf("Start_Time",t + set.maxlife_time_on_dungeon)
  230. server_timer("Jp_OutAllFailNotice",(t + set.maxlife_time_on_dungeon) - t,d.get_map_index())
  231. --pc.setqf("duration",t + wait_durations)
  232. d.setqf2("snow_dungeon","duration",t + wait_durations)
  233. d.setf("level",1)
  234. d.notice("Os primeiros monstros aparecem, mata-os para ires para o próximo piso.")
  235. npc.purge()
  236. snow_dungeon._GetLastTime()
  237. end
  238. setskin(NOWINDOW)
  239. end
  240. when make_dungeon.timer begin
  241. local set = snow_dungeon.get_settings()
  242. local cord = set.base_cord
  243. local start_pos = set.Position_level_1
  244. local t = get_global_time()
  245. d.new_jump_party(352,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
  246. --d.new_jump_all(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
  247. snow_dungeon._ClearAlls()
  248. d.setf("party_leader_pid",party.get_leader_pid())
  249. party.setf("ice_dungeon_map_index",d.get_map_index())
  250. d.spawn_mob_dir(20397, 173,262,1) --Eisiger Löwe
  251. end
  252. function _ClearAlls()
  253. local d_index = d.get_map_index()
  254. clear_server_timer("CheckLevelAndCountKillOnMobs",d_index)
  255. clear_server_timer("Jp_1",d_index)
  256. clear_server_timer("Jp_2",d_index)
  257. clear_server_timer("Jp_3",d_index)
  258. clear_server_timer("Jp_4",d_index)
  259. clear_server_timer("Jp_5",d_index)
  260. clear_server_timer("Jp_6",d_index)
  261. clear_server_timer("Jp_7",d_index)
  262. clear_server_timer("Jp_8",d_index)
  263. clear_server_timer("Jp_9",d_index)
  264. clear_server_timer("Jp_10",d_index)
  265. clear_server_timer("Jp_OutAll",d_index)
  266. clear_server_timer("Jp_OutAllFail",d_index)
  267. clear_server_timer("Jp_OutAllFailNotice",d_index)
  268. d.setf("level",0)
  269. d.setf("party_leader_pid",0)
  270. d.setf("Start_Time",0)
  271. d.setf("LastTimeGetOutPut",0)
  272. d.setf("Stone_5_count",0)
  273. d.setf("Stone_5_item_fail",0)
  274. d.clear_regen()
  275. d.kill_all()
  276. end
  277.  
  278. function _CheckMembersLevel()
  279. local set = snow_dungeon.get_settings()
  280. local user_fail_level = {}
  281. local pids = {party.get_member_pids()}
  282. local need_level = set.need_level_group
  283. local have_ninja = false
  284. local have_shaman = false
  285. for i = 1, table.getn(pids), 1 do
  286. q.begin_other_pc_block(pids)
  287. if pc.get_level() < need_level then
  288. table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
  289. end
  290. local job = pc.get_job()
  291. have_ninja = true
  292. have_shaman = true
  293. q.end_other_pc_block()
  294. end
  295. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  296. --dchat("TestServer Mode is enable.")
  297. return true
  298. end
  299. if have_ninja == false then
  300. say("Não podes entrar sem um ninja.")
  301. say("")
  302. return false
  303. end
  304. if have_shaman == false then
  305. say("Não podes entrar sem um shaman.")
  306. say("")
  307. return false
  308. end
  309. if table.getn(user_fail_level) >= 1 then
  310. say_npc()
  311. say("")
  312. say("Alguns membros do grupo")
  313. say("ainda não são nivel "..need_level..":")
  314. for x = 1, table.getn(user_fail_level), 1 do
  315. say(color(1,1,0), " "..user_fail_level[x])
  316. end
  317. return false
  318. end
  319. if table.getn(user_fail_level) == 0 then
  320. return true
  321. end
  322. end
  323. when logout begin
  324. if snow_dungeon.is_nemeres_dungeon() == true then
  325. local set = snow_dungeon.get_settings()
  326. pc.setqf("out_party_time",get_global_time() + set.DurationMaxOnReJoinGroup)
  327. --snow_dungeon.unregister_name()
  328. end
  329. end
  330.  
  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:# O teu grupo não está na cave")
  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:# O meu nivel é muito baixo")
  344. d.exit()
  345. return
  346. end
  347. --chat("Welcome to Nemeres waiting, you have "..math.ceil((d.getf("Start_Time") - get_global_time()) /60) .." Minutes Time.")
  348. --notice("Kill all the monsters on this level to get to the next floor.")
  349. --snow_dungeon._GetLastTime()
  350. end
  351. end
  352.  
  353. function _GetLastTime()
  354. local c = get_global_time()
  355. local t = d.getf("Start_Time") - c
  356. local o = d.getf("LastTimeGetOutPut")
  357. --d.notice("CurrentTime: "..c.." Last: "..o.."")
  358. if c >= o then
  359. if t >= 60 then
  360. d.notice("Faltam "..math.ceil(t / 60).." Minuto(s).")
  361. else
  362. d.notice("Faltam "..t .." Segundo(s).")
  363. end
  364. if t >= (60*10) then
  365. d.setf("LastTimeGetOutPut",c + 60*5)
  366. elseif t >= (60*5) then
  367. d.setf("LastTimeGetOutPut",c + 60*2)
  368. else
  369. d.setf("LastTimeGetOutPut",c + 10)
  370. end
  371. --d.setf("LastTimeGetOutPut",c + 60*number(3,5)) -- Random
  372. end
  373. end
  374.  
  375. when Jp_OutAllFailNotice.server_timer begin
  376. if d.select(get_server_timer_arg()) then
  377. d.notice("O tempo acabou.")
  378. server_timer("Jp_OutAll",1,d.get_map_index())
  379. end
  380. end
  381.  
  382. when CheckLevelAndCountKillOnMobs.server_timer begin
  383. if d.select(get_server_timer_arg()) then
  384. local set = snow_dungeon.get_settings()
  385. local level = d.getf("level")
  386. local mob_count = d.count_monster()
  387. local next_jump_time = set.NextJumpTime
  388. --d.notice("level: "..level.." mob_count: "..mob_count.."")
  389. if level == 1 and mob_count <= 0 then
  390. d.notice("Derrotas-te todos os monstros,[ENTER} vais ser teleportado para o próximo piso.")
  391. d.notice("")
  392. server_timer("Jp_2",next_jump_time,d.get_map_index())
  393. d.clear_regen()
  394. d.kill_all()
  395. d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt")
  396. elseif level == 3 and mob_count <= 0 then
  397. d.notice("Derrotas-te todos os monstros,[ENTER}vais ser teleportado para o próximo piso.")
  398. d.notice("")
  399. server_timer("Jp_4",next_jump_time,d.get_map_index())
  400. d.clear_regen()
  401. d.kill_all()
  402. d.regen_file("data/dungeon/ice_dungeon/zone_4.txt")
  403. elseif level == 4 and mob_count <= 0 then
  404. d.notice("Derrotas-te todos os monstros,[ENTER}vais ser teleportado para o próximo piso.")
  405. d.notice("")
  406. server_timer("Jp_5",next_jump_time,d.get_map_index())
  407. d.clear_regen()
  408. d.kill_all()
  409. d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt")
  410. elseif level == 6 and mob_count <= 0 then
  411. local MobStonelvl6 = set.MobVnum_level_6
  412. d.notice("Derrotas-te todos os monstros,[ENTER} a "..mob_name(MobStonelvl6).." aparece..")
  413. d.notice("")
  414. d.clear_regen()
  415. d.kill_all()
  416. d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
  417. d.spawn_mob(MobStonelvl6,570,649)
  418. elseif level == 7 and mob_count <= 0 then
  419. d.notice("Derrotas-te todos os monstros,[ENTER}vais ser teleportado para o próximo piso.")
  420. d.notice("")
  421. server_timer("Jp_8",next_jump_time,d.get_map_index())
  422. d.clear_regen()
  423. d.kill_all()
  424. d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt")
  425. end
  426. snow_dungeon._GetLastTime()
  427. end
  428. end
  429.  
  430. when Jp_2.server_timer begin --Jump Level 2
  431. if d.select(get_server_timer_arg()) then
  432. local set = snow_dungeon.get_settings()
  433. local v = set.key_level_2
  434. d.setf("level",2)
  435. local cord = set.base_cord
  436. local pos = set.Position_level_2
  437. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  438. d.notice("Encontra "..item_name(v).." certa para entrar.")
  439. d.notice("")
  440. end
  441. end
  442. when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin --key_level_2
  443. local set = snow_dungeon.get_settings()
  444. local next_jump_time = set.NextJumpTime
  445. local job = pc.get_job()
  446. local level = d.getf("level")
  447. if level == 2 then
  448. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  449. --dchat("SET VARIABLE JOB 3")
  450. job = 3
  451. end
  452. if job == 3 -- Schamane weiblich
  453. or job == 7 --Schamane männlich
  454. then
  455. if number(1,3) == 1 then --or d.count_monster() < 10 then
  456. d.notice("A chave correta foi encontrada, [ENTER}vais ser teleportado para o próximo piso.")
  457. server_timer("Jp_3",next_jump_time,d.get_map_index())
  458. d.clear_regen()
  459. d.kill_all()
  460. d.regen_file("data/dungeon/ice_dungeon/zone_3.txt")
  461. item.remove()
  462. else
  463. d.notice("Chave errada.")
  464. item.remove()
  465. end
  466. else
  467. d.notice("Apenas shamans.")
  468. return
  469. end
  470. end
  471. end
  472.  
  473. when Jp_3.server_timer begin --Jump Level 3
  474. if d.select(get_server_timer_arg()) then
  475. local set = snow_dungeon.get_settings()
  476. d.setf("level",3)
  477. local cord_MQ = set.base_cord
  478. local pos = set.Position_level_3
  479. d.jump_all((cord_MQ[1] + pos[1]), (cord_MQ[2] + pos[2]))
  480. d.notice("Mata todos os monstros para[ENTER} ir para o próximo piso.")
  481. end
  482. end
  483.  
  484. when Jp_4.server_timer begin --Jump Level 4
  485. if d.select(get_server_timer_arg()) then
  486. local set = snow_dungeon.get_settings()
  487. d.setf("level",4)
  488. local cord = set.base_cord
  489. local pos = set.Position_level_4
  490. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  491. d.notice("Mata todos os monstros para[ENTER} ir para o próximo piso.")
  492. end
  493. end
  494.  
  495. when Jp_5.server_timer begin --Jump Level 5
  496. if d.select(get_server_timer_arg()) then
  497. local set = snow_dungeon.get_settings()
  498. local v = set.NpcVnum_level_5
  499. d.setf("level",5)
  500. local cord = set.base_cord
  501. local pos = set.Position_level_5
  502. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  503. d.notice("Abriste "..mob_name(v).." na ordem correta.")
  504. if set.IsNewGameRevision == true then
  505. d.notice("A chave caiu do monstro ...")
  506. else
  507. d.notice("A chave foi diretamente para o teu inventário ...")
  508. end
  509. snow_dungeon._Create_Stones_level5()
  510. end
  511. end
  512.  
  513. function _DropKeyOnLevel5()
  514. if number(1,1000) >= 666 then --Abbruch der weiteren funtion -> Damit es spannend bleibt bei den würfeln... :P
  515. return
  516. end
  517. local set = snow_dungeon.get_settings()
  518. local count = set.StoneCount_level_5
  519. local vnum = set.Key_on_level_5
  520. local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."")
  521. local fail_count = d.getf("Stone_5_item_fail") +1
  522. local search = d.getf("Stone_5_count")
  523. local search2 = d.get_unique_vid("stone5_"..search.."")
  524. if search2 != get_random_unique then
  525. d.setf("Stone_5_item_fail",fail_count)
  526. end
  527. --
  528. if set.IsNewGameRevision == true then
  529. --New function
  530. game.drop_item_and_select(vnum,1)
  531. else
  532. pc.give_item2_select(vnum,1)
  533. end
  534. --dchat("Creaty Key fail_count: "..fail_count.."")
  535. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --Wenn TestServer Modus
  536. item.set_socket(1,search2)
  537. d.setf("Stone_5_item_fail",0)
  538. elseif fail_count > 6 then --Wenn mehr wie x mal nicht richtig erstellt wird, dann kommt der richtige Key
  539. item.set_socket(1,search2)
  540. d.setf("Stone_5_item_fail",0)
  541. else
  542. item.set_socket(1,get_random_unique)
  543. end
  544. end
  545.  
  546. function _Create_Stones_level5()
  547. local set = snow_dungeon.get_settings()
  548. local stone_level5_count_MQ = set.StoneCount_level_5
  549. local c = set.StoneCords_level_5 --{ {432,508},{437,493},{448,492},{448,476},{467,475},{466,464}}
  550. local v = set.NpcVnum_level_5
  551. for i = 1, stone_level5_count_MQ, 1 do
  552. local n = number(1,table.getn©)
  553. --d.spawn_mob(20398, c[n][1], c[n][2])
  554. d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2]))
  555. --d.set_unique("stone5_"..i.."", mob.spawn(20398, c[n][1], c[n][2],1,1,1)) --GEHT
  556. --d.set_unique("stone5_"..i.."", d.spawn_mob_ac_dir(20398, c[n][1], c[n][2],i)) --GEHT
  557. table.remove(c,n)
  558. if i == 1 then
  559. d.setf("Stone_5_count",1)
  560. d.setf("Stone_5_item_fail",0)
  561. end
  562. end
  563. end
  564.  
  565. when 20398.take begin --NpcVnum_level_5
  566. if snow_dungeon.is_nemeres_dungeon() == true then
  567. local set = snow_dungeon.get_settings()
  568. local stone_level5_count = set.StoneCount_level_5
  569. local next_jump_time = set.NextJumpTime
  570. local vnum = item.get_vnum()
  571. local key_level_5 = set.Key_on_level_5 --30332
  572. local unique_item = item.get_socket(1)
  573. --dchat("unique_item: "..unique_item.."")
  574. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  575. d.notice("TESTSERVERMODE, vais ser teleportado para o próximo piso.")
  576. npc.purge()
  577. item.remove()
  578. server_timer("Jp_6",next_jump_time,d.get_map_index())
  579. d.clear_regen()
  580. d.kill_all()
  581. d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
  582. return
  583. end
  584. if vnum == key_level_5 then
  585. local npc_vid = npc.get_vid()
  586. local search = d.getf("Stone_5_count")
  587. local search2 = d.get_unique_vid("stone5_"..search.."")
  588. --dchat("npc_vid: "..npc_vid.." search:"..search.." search2:"..search2.." ")
  589. if npc_vid == search2 then
  590. if unique_item == npc_vid then
  591. local new = search +1
  592. if new > stone_level5_count then
  593. d.notice("A última pedra foi destruida, vais ser teleporado para o próximo piso.")
  594. npc.purge()
  595. item.remove()
  596. server_timer("Jp_6",next_jump_time,d.get_map_index())
  597. d.clear_regen()
  598. d.kill_all()
  599. d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
  600. else
  601. d.notice("A "..search..". pedra foi destruida. [ENTER}Faltam ".. stone_level5_count - search .." pedras.")
  602. npc.purge()
  603. item.remove()
  604. end
  605. d.setf("Stone_5_count",new)
  606. else
  607. chat("Pedra certa, chave errada.")
  608. item.remove()
  609. end
  610. else
  611. chat("Esta não é a pedra certa.")
  612. end
  613. end
  614. end --if is dungeon end
  615. end --when end
  616.  
  617. when Jp_6.server_timer begin --Jump Level 6
  618. if d.select(get_server_timer_arg()) then
  619. local set = snow_dungeon.get_settings()
  620. local v = set.MobVnum_level_6
  621. d.setf("level",6)
  622. local cord = set.base_cord
  623. local pos = set.Position_level_6
  624. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  625.  
  626. d.notice("Mata todos os monstros. [ENTER]Depois, mata o "..mob_name(v).."")
  627. d.notice("Apenas os shaman podem ajudar-te.")
  628. --d.spawn_mob(v,570,649)
  629.  
  630. end
  631. end
  632.  
  633. when Jp_7.server_timer begin --Jump Level 7
  634. if d.select(get_server_timer_arg()) then
  635. local set = snow_dungeon.get_settings()
  636. local v = set.MobVnum_level_7
  637. d.setf("level",7)
  638. local cord = set.base_cord
  639. local pos = set.Position_level_7
  640. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  641. d.notice("Mataste todos os monstros, [ENTER]mata agora o "..mob_name(v)..".")
  642. end
  643. end
  644.  
  645. when Jp_8.server_timer begin --Jump Level 8
  646. if d.select(get_server_timer_arg()) then
  647. local set = snow_dungeon.get_settings()
  648. local v = set.Key_on_level_8
  649. d.setf("level",8)
  650. local cord = set.base_cord
  651. local pos = set.Position_level_8
  652. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  653. d.notice("Kill monsters to her as long "..item_name(v).." have.")
  654. d.notice("But only Mage and Ninjas can use it.")
  655. end
  656. end
  657.  
  658. when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin --Key_on_level_8
  659. local set = snow_dungeon.get_settings()
  660. local next_jump_time = set.NextJumpTime
  661. local level = d.getf("level")
  662. local job = pc.get_job()
  663. if level == 8 then
  664. if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
  665. --dchat("SET VARIABLE JOB 3")
  666. job = 3
  667. end
  668. if job == 1 -- Ninja weiblich
  669. or job == 5 --Ninja männlich
  670. or job == 3 -- Schamane weiblich
  671. or job == 7 --Schamane männlich
  672. then
  673. if number(1,3) == 1 then
  674. d.notice("The correct key has been found in a few seconds[ENTER] it goes to the next floor.")
  675. server_timer("Jp_9",next_jump_time,d.get_map_index())
  676. d.clear_regen()
  677. d.kill_all()
  678. d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
  679. item.remove()
  680. else
  681. d.notice("That was the wrong key.")
  682. item.remove()
  683. end
  684. else
  685. d.notice("Only Mage and Ninja can use.")
  686. return
  687. end
  688. end
  689. end
  690.  
  691. when Jp_9.server_timer begin --Jump Level 9
  692. if d.select(get_server_timer_arg()) then
  693. local set = snow_dungeon.get_settings()
  694. local v = set.NpcVnum_level_9
  695. d.setf("level",9)
  696. local cord = set.base_cord
  697. local pos = set.Position_level_9
  698. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  699. d.notice("Destroy the "..mob_name(v).." ")
  700. d.notice("But only Mage and Ninjas can add him naught.")
  701. d.notice("")
  702. d.spawn_mob(v,849,655)
  703. end
  704. end
  705.  
  706. when Jp_Boss.server_timer begin --Jump Level BossZone
  707. if d.select(get_server_timer_arg()) then
  708. local set = snow_dungeon.get_settings()
  709. local v = set.BossVnum
  710. d.setf("level",10)
  711. local cord = set.base_cord
  712. local pos = set.Position_level_10
  713. d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
  714. d.notice("Defeated "..mob_name(v)..", the king of frost and ice.")
  715. end
  716. end
  717.  
  718. when kill begin
  719. if snow_dungeon.is_nemeres_dungeon() == true then
  720. local set = snow_dungeon.get_settings()
  721. local next_jump_time = set.NextJumpTime
  722. local level = d.getf("level")
  723. local stone_level_6 = set.MobVnum_level_6
  724. local stone_level_9 = set.NpcVnum_level_9
  725. local boss_vnum = set.BossVnum
  726. local wait_time = set.WaitBeforOutAllOnExit
  727. local mobvnum = npc.get_race()
  728. --dchat("nemeres_wait_dungeon MobVnum = "..mobvnum.."")
  729. if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
  730. local v = set.key_level_2
  731. game.drop_item(v,1)
  732. elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,15) then
  733. snow_dungeon._DropKeyOnLevel5()
  734. elseif level == 6 and mobvnum == stone_level_6 then
  735. d.notice("The "..mob_name(stone_level_6).." was destroyed, in a few seconds it goes to the next floor.")
  736. d.notice("")
  737. server_timer("Jp_7",next_jump_time,d.get_map_index())
  738. d.clear_regen()
  739. d.kill_all()
  740. d.regen_file("data/dungeon/ice_dungeon/zone_7.txt") --Szel
  741. local v_MQv = set.MobVnum_level_7
  742. local c = set.SzelCords_level_7
  743. local n = number(1,table.getn©)
  744. d.spawn_mob(v_MQv, c[n][1], c[n][2])
  745. elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
  746. local v = set.Key_on_level_8
  747. game.drop_item(v,1)
  748. elseif level == 9 and mobvnum == stone_level_9 then
  749. d.notice("The "..mob_name(stone_level_9).." was destroyed, in a few seconds it goes to the next floor.")
  750. server_timer("Jp_Boss",next_jump_time,d.get_map_index())
  751. d.clear_regen()
  752. d.kill_all()
  753. d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
  754. local v = set.BossVnumGroup
  755. d.spawn_group(v, 928, 335, 5 ,1, 1) -- (Input from SRC: argument: vnum,x,y,radius,aggressive,count)
  756. elseif level == 10 and mobvnum == boss_vnum then
  757. d.clear_regen()
  758. d.kill_all()
  759. d.notice("You defeated "..mob_name(boss_vnum).." . In "..wait_time.." seconds all be teleported.")
  760. server_timer("Jp_OutAll",wait_time,d.get_map_index())
  761. end
  762. end
  763. end
  764. when Jp_OutAll.server_timer begin --Jump Out Bye bye ;D
  765. if d.select(get_server_timer_arg()) then
  766. snow_dungeon._ExitAll()
  767. end
  768. end
  769. function _ExitAll()
  770. d.exit_all()
  771. end
  772. end
  773. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement