Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.05 KB | None | 0 0
  1. define DUNGEON_MAP_INDEX 202
  2. define ENTER_LIMIT_TIME 30
  3. quest novy_dung_20 begin
  4. state start begin
  5.  
  6. function je_v_dungu(idx)
  7. return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
  8. end
  9.  
  10. function vytvorit_dungeon()
  11. d.setf("zahajen",0)
  12. d.setf("caszahajeni",get_global_time())
  13. end
  14.  
  15. function vycistit_timery(inx)
  16. clear_server_timer("ukol_1_timer", inx)
  17. clear_server_timer("ukol_2_timer", inx)
  18.  
  19. end
  20.  
  21. when 20500.click begin
  22. local ilosc = 1
  23. local id_przep = 30032
  24. say("Solo / party")
  25. local s = select("Enter", "Cancel")
  26. if s == 1 then
  27. if party.is_party() then
  28. local pids = {party.get_member_pids()}
  29. local noTicketMembers = {}
  30. local levelCheck = true
  31. local notEnoughLevelMembers = {}
  32. local ticketCheck = true
  33. local ticketGroup = {30032, 1, 30032, 1}
  34. for i, pid in next, pids, nil do
  35. q.begin_other_pc_block(pid)
  36.  
  37. local canPass = false
  38. for idx=1, table.getn(ticketGroup),2 do
  39. if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
  40. canPass = true
  41. break
  42. end
  43. end
  44.  
  45. if not canPass then
  46. table.insert(noTicketMembers, pc.get_name())
  47. ticketCheck = false
  48. end
  49. if pc.level < 20 then
  50. table.insert(notEnoughLevelMembers, pc.get_name())
  51. levelCheck = false
  52. end
  53.  
  54. q.end_other_pc_block()
  55. end
  56. if not ticketCheck then
  57. say("These members do not have entry item")
  58. for i, name in next, noTicketMembers, nil do
  59. say(" - "..name)
  60. end
  61. if levelCheck then
  62. return
  63. else
  64. wait()
  65. end
  66. end
  67.  
  68. if not levelCheck then
  69. say("These members do not have enough level")
  70. for i, name in next, notEnoughLevelMembers, nil do
  71. say(" - "..name)
  72. end
  73. return
  74. end
  75. if party.is_leader() then
  76. if party.is_map_member_flag_lt("next_enter_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
  77. for i, pid in next, pids, nil do
  78. q.begin_other_pc_block(pid)
  79. canPass = false
  80. for idx=1, table.getn(ticketGroup),2 do
  81. if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
  82. canPass = true
  83. pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
  84. break
  85. end
  86. end
  87. q.end_other_pc_block()
  88. end
  89. if canPass then
  90. d.new_jump_party(DUNGEON_MAP_INDEX, 1017, 133)
  91. novy_dung_20.vytvorit_dungeon()
  92. end
  93. else
  94. -- setskin(NOWINDOW)
  95. say("Entry time not expired yet")
  96. end
  97. else
  98. -- setskin(NOWINDOW)
  99. say("you are not a group owner..")
  100. end
  101. else
  102. if pc.getf("novy_dung_20","next_enter_time") - (get_global_time() - ENTER_LIMIT_TIME * 60) <= 0 then
  103. if pc.count_item(id_przep) >= ilosc then
  104. if pc.get_level() >= 20 then
  105. pc.remove_item(id_przep, ilosc)
  106. d.join(DUNGEON_MAP_INDEX)
  107. novy_dung_20.vytvorit_dungeon()
  108. else
  109. -- setskin(NOWINDOW)
  110. say("You do not have enough level to entry. ")
  111. end
  112. else
  113. -- setskin(NOWINDOW)
  114. say("You do not have the required item.")
  115. end
  116. else
  117. -- setskin(NOWINDOW)
  118. say("Entry time not expired yet")
  119. end
  120. end
  121. end
  122. end
  123.  
  124. when login begin
  125. local idx = pc.get_map_index()
  126. if idx == DUNGEON_MAP_INDEX then
  127. if not pc.is_gm() then
  128. pc.warp(235400, 236400)
  129. end
  130. elseif novy_dung_20.je_v_dungu(idx) then
  131. -- pc.set_warp_location(200, 2354 , 2364)
  132. if d.getf("zahajen") == 0 then
  133. d.setf("zahajen", 1)
  134. d.setf("ukol", 1)
  135. d.regen_file("data/dungeon/dung_20/1.txt")
  136. d.spawn_mob(8029, 78, 87)
  137. server_timer("ukol_1_timer",4*60,d.get_map_index())
  138. d.notice("4 min to destroy stones.")
  139. end
  140. end
  141. end
  142.  
  143. when ukol_1_timer.server_timer begin
  144. if d.select(get_server_timer_arg()) then
  145. d.setf("ukol",0)
  146. d.notice("Time out! ")
  147. d.clear_regen()
  148. d.kill_all()
  149. server_timer("dun20_timer_end",5,d.get_map_index())
  150. end
  151. end
  152.  
  153. when 8029.kill with novy_dung_20.je_v_dungu(pc.get_map_index()) begin
  154. if d.getf("ukol") == 1 then
  155. d.setf("ukol",0)
  156. novy_dung_20.vycistit_timery(d.get_map_index())
  157. d.clear_regen()
  158. d.kill_all()
  159. d.notice("Stone destroyed!")
  160. server_timer("dung20_ukol_2", 10, d.get_map_index())
  161. end
  162. end
  163.  
  164. when dung20_ukol_2.server_timer begin
  165. if d.select(get_server_timer_arg()) then
  166. d.setf("ukol",2)
  167. d.setf("count",4)
  168. d.jump_all(1020 , 134)
  169. d.regen_file("data/dungeon/dung_20/1.txt")
  170. d.spawn_mob(491, 137, 186)
  171. d.spawn_mob(492, 168, 78)
  172. d.spawn_mob(493, 65, 106)
  173. d.spawn_mob(494, 73, 174)
  174. server_timer("ukol_2_timer",5*60,d.get_map_index())
  175. d.notice("Find Mahon, Goo-paem Chuong, Bo in 5 min! ")
  176. end
  177. end
  178.  
  179. when ukol_2_timer.server_timer begin
  180. if d.select(get_server_timer_arg()) then
  181. d.setf("ukol",0)
  182. d.notice("Time out! ")
  183. d.clear_regen()
  184. d.kill_all()
  185. server_timer("dun20_timer_end",5,d.get_map_index())
  186. end
  187. end
  188.  
  189. when 491.kill or 492.kill or 493.kill or 494.kill with novy_dung_20.je_v_dungu(pc.get_map_index()) begin
  190. if d.getf("ukol") == 2 then
  191. if d.getf("count") > 0 then
  192. d.setf("count", d.getf("count")-1)
  193. end
  194. if d.getf("count") <= 0 then
  195. d.setf("ukol",0)
  196. novy_dung_20.vycistit_timery(d.get_map_index())
  197. d.clear_regen()
  198. d.kill_all()
  199. server_timer("dung20_ukol_3", 10, d.get_map_index())
  200. else
  201. d.notice("Left : "..d.getf("count").." ")
  202. end
  203. end
  204. end
  205.  
  206.  
  207. when dung20_ukol_3.server_timer begin
  208. if d.select(get_server_timer_arg()) then
  209. d.setf("ukol",3)
  210. d.jump_all(1020 , 134)
  211. d.regen_file("data/dungeon/dung_20/1.txt")
  212. d.notice("Kill all monsters.")
  213. server_timer ("dung_20_sledovat_monstra1", 10, d.get_map_index())
  214. end
  215. end
  216.  
  217.  
  218. when dung_20_sledovat_monstra1.server_timer begin
  219. if d.select(get_server_timer_arg()) then
  220. if d.getf("ukol") == 3 then
  221. if d.count_monster() == 0 then
  222. d.setf("ukol",0)
  223. d.clear_regen()
  224. d.kill_all()
  225. server_timer("dung20_ukol_4", 10, d.get_map_index())
  226. else
  227. d.notice("Left : "..d.count_monster().." ")
  228. server_timer ("dung_20_sledovat_monstra2", 20, d.get_map_index())
  229. end
  230. end
  231. end
  232. end
  233.  
  234.  
  235. when dung_20_sledovat_monstra2.server_timer begin
  236. if d.select(get_server_timer_arg()) then
  237. if d.getf("ukol") == 3 then
  238. if d.count_monster() == 0 then
  239. d.setf("ukol",0)
  240. d.notice("You killed all monsters!")
  241. d.clear_regen()
  242. d.kill_all()
  243. server_timer("dung20_ukol_4", 10, d.get_map_index())
  244. else
  245. d.notice("Left : "..d.count_monster().." ")
  246. server_timer ("dung_20_sledovat_monstra1", 20, d.get_map_index())
  247. end
  248. end
  249. end
  250. end
  251.  
  252. when dung20_ukol_4.server_timer begin
  253. if d.select(get_server_timer_arg()) then
  254. d.setf("ukol",4)
  255. d.jump_all(1020 , 134)
  256. d.regen_file("data/dungeon/dung_20/1.txt")
  257. d.spawn_mob(591, 78, 87)
  258. d.notice("Kill boss!")
  259. end
  260. end
  261.  
  262. when 591.kill with novy_dung_20.je_v_dungu(pc.get_map_index()) begin
  263. if d.getf("ukol") == 4 then
  264. d.setf("ukol",0)
  265. novy_dung_20.vycistit_timery(d.get_map_index())
  266. d.clear_regen()
  267. d.kill_all()
  268. d.set_point_to_rank("Captain", get_global_time() - d.getf("caszahajeni"), 591)
  269. server_timer("dun20_timer_end", 60, d.get_map_index())
  270. end
  271. end
  272.  
  273. when logout begin
  274. local idx = pc.get_map_index()
  275. if novy_dung_20.je_v_dungu(idx) then
  276. if d.getf("zahajen") == 1 then
  277. pc.setf("novy_dung_20","next_enter_time",get_global_time())
  278. end
  279. end
  280. end
  281.  
  282. when dun20_timer_end.server_timer begin
  283. if d.select(get_server_timer_arg()) then
  284. novy_dung_20.vycistit_timery(d.get_map_index())
  285. d.set_warp_location(200, 2354 , 2364)
  286. d.exit_all()
  287. end
  288. end
  289. end
  290. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement