Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- define DUNGEON_MAP_INDEX 202
- define ENTER_LIMIT_TIME 30
- quest novy_dung_20 begin
- state start begin
- function je_v_dungu(idx)
- return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
- end
- function vytvorit_dungeon()
- d.setf("zahajen",0)
- d.setf("caszahajeni",get_global_time())
- end
- function vycistit_timery(inx)
- clear_server_timer("ukol_1_timer", inx)
- clear_server_timer("ukol_2_timer", inx)
- end
- when 20500.click begin
- local ilosc = 1
- local id_przep = 30032
- say("Solo / party")
- local s = select("Enter", "Cancel")
- if s == 1 then
- if party.is_party() then
- local pids = {party.get_member_pids()}
- local noTicketMembers = {}
- local levelCheck = true
- local notEnoughLevelMembers = {}
- local ticketCheck = true
- local ticketGroup = {30032, 1, 30032, 1}
- for i, pid in next, pids, nil do
- q.begin_other_pc_block(pid)
- local canPass = false
- for idx=1, table.getn(ticketGroup),2 do
- if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
- canPass = true
- break
- end
- end
- if not canPass then
- table.insert(noTicketMembers, pc.get_name())
- ticketCheck = false
- end
- if pc.level < 20 then
- table.insert(notEnoughLevelMembers, pc.get_name())
- levelCheck = false
- end
- q.end_other_pc_block()
- end
- if not ticketCheck then
- say("These members do not have entry item")
- for i, name in next, noTicketMembers, nil do
- say(" - "..name)
- end
- if levelCheck then
- return
- else
- wait()
- end
- end
- if not levelCheck then
- say("These members do not have enough level")
- for i, name in next, notEnoughLevelMembers, nil do
- say(" - "..name)
- end
- return
- end
- if party.is_leader() then
- if party.is_map_member_flag_lt("next_enter_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
- for i, pid in next, pids, nil do
- q.begin_other_pc_block(pid)
- canPass = false
- for idx=1, table.getn(ticketGroup),2 do
- if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
- canPass = true
- pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
- break
- end
- end
- q.end_other_pc_block()
- end
- if canPass then
- d.new_jump_party(DUNGEON_MAP_INDEX, 1017, 133)
- novy_dung_20.vytvorit_dungeon()
- end
- else
- -- setskin(NOWINDOW)
- say("Entry time not expired yet")
- end
- else
- -- setskin(NOWINDOW)
- say("you are not a group owner..")
- end
- else
- if pc.getf("novy_dung_20","next_enter_time") - (get_global_time() - ENTER_LIMIT_TIME * 60) <= 0 then
- if pc.count_item(id_przep) >= ilosc then
- if pc.get_level() >= 20 then
- pc.remove_item(id_przep, ilosc)
- d.join(DUNGEON_MAP_INDEX)
- novy_dung_20.vytvorit_dungeon()
- else
- -- setskin(NOWINDOW)
- say("You do not have enough level to entry. ")
- end
- else
- -- setskin(NOWINDOW)
- say("You do not have the required item.")
- end
- else
- -- setskin(NOWINDOW)
- say("Entry time not expired yet")
- end
- end
- end
- end
- when login begin
- local idx = pc.get_map_index()
- if idx == DUNGEON_MAP_INDEX then
- if not pc.is_gm() then
- pc.warp(235400, 236400)
- end
- elseif novy_dung_20.je_v_dungu(idx) then
- -- pc.set_warp_location(200, 2354 , 2364)
- if d.getf("zahajen") == 0 then
- d.setf("zahajen", 1)
- d.setf("ukol", 1)
- d.regen_file("data/dungeon/dung_20/1.txt")
- d.spawn_mob(8029, 78, 87)
- server_timer("ukol_1_timer",4*60,d.get_map_index())
- d.notice("4 min to destroy stones.")
- end
- end
- end
- when ukol_1_timer.server_timer begin
- if d.select(get_server_timer_arg()) then
- d.setf("ukol",0)
- d.notice("Time out! ")
- d.clear_regen()
- d.kill_all()
- server_timer("dun20_timer_end",5,d.get_map_index())
- end
- end
- when 8029.kill with novy_dung_20.je_v_dungu(pc.get_map_index()) begin
- if d.getf("ukol") == 1 then
- d.setf("ukol",0)
- novy_dung_20.vycistit_timery(d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.notice("Stone destroyed!")
- server_timer("dung20_ukol_2", 10, d.get_map_index())
- end
- end
- when dung20_ukol_2.server_timer begin
- if d.select(get_server_timer_arg()) then
- d.setf("ukol",2)
- d.setf("count",4)
- d.jump_all(1020 , 134)
- d.regen_file("data/dungeon/dung_20/1.txt")
- d.spawn_mob(491, 137, 186)
- d.spawn_mob(492, 168, 78)
- d.spawn_mob(493, 65, 106)
- d.spawn_mob(494, 73, 174)
- server_timer("ukol_2_timer",5*60,d.get_map_index())
- d.notice("Find Mahon, Goo-paem Chuong, Bo in 5 min! ")
- end
- end
- when ukol_2_timer.server_timer begin
- if d.select(get_server_timer_arg()) then
- d.setf("ukol",0)
- d.notice("Time out! ")
- d.clear_regen()
- d.kill_all()
- server_timer("dun20_timer_end",5,d.get_map_index())
- end
- end
- when 491.kill or 492.kill or 493.kill or 494.kill with novy_dung_20.je_v_dungu(pc.get_map_index()) begin
- if d.getf("ukol") == 2 then
- if d.getf("count") > 0 then
- d.setf("count", d.getf("count")-1)
- end
- if d.getf("count") <= 0 then
- d.setf("ukol",0)
- novy_dung_20.vycistit_timery(d.get_map_index())
- d.clear_regen()
- d.kill_all()
- server_timer("dung20_ukol_3", 10, d.get_map_index())
- else
- d.notice("Left : "..d.getf("count").." ")
- end
- end
- end
- when dung20_ukol_3.server_timer begin
- if d.select(get_server_timer_arg()) then
- d.setf("ukol",3)
- d.jump_all(1020 , 134)
- d.regen_file("data/dungeon/dung_20/1.txt")
- d.notice("Kill all monsters.")
- server_timer ("dung_20_sledovat_monstra1", 10, d.get_map_index())
- end
- end
- when dung_20_sledovat_monstra1.server_timer begin
- if d.select(get_server_timer_arg()) then
- if d.getf("ukol") == 3 then
- if d.count_monster() == 0 then
- d.setf("ukol",0)
- d.clear_regen()
- d.kill_all()
- server_timer("dung20_ukol_4", 10, d.get_map_index())
- else
- d.notice("Left : "..d.count_monster().." ")
- server_timer ("dung_20_sledovat_monstra2", 20, d.get_map_index())
- end
- end
- end
- end
- when dung_20_sledovat_monstra2.server_timer begin
- if d.select(get_server_timer_arg()) then
- if d.getf("ukol") == 3 then
- if d.count_monster() == 0 then
- d.setf("ukol",0)
- d.notice("You killed all monsters!")
- d.clear_regen()
- d.kill_all()
- server_timer("dung20_ukol_4", 10, d.get_map_index())
- else
- d.notice("Left : "..d.count_monster().." ")
- server_timer ("dung_20_sledovat_monstra1", 20, d.get_map_index())
- end
- end
- end
- end
- when dung20_ukol_4.server_timer begin
- if d.select(get_server_timer_arg()) then
- d.setf("ukol",4)
- d.jump_all(1020 , 134)
- d.regen_file("data/dungeon/dung_20/1.txt")
- d.spawn_mob(591, 78, 87)
- d.notice("Kill boss!")
- end
- end
- when 591.kill with novy_dung_20.je_v_dungu(pc.get_map_index()) begin
- if d.getf("ukol") == 4 then
- d.setf("ukol",0)
- novy_dung_20.vycistit_timery(d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.set_point_to_rank("Captain", get_global_time() - d.getf("caszahajeni"), 591)
- server_timer("dun20_timer_end", 60, d.get_map_index())
- end
- end
- when logout begin
- local idx = pc.get_map_index()
- if novy_dung_20.je_v_dungu(idx) then
- if d.getf("zahajen") == 1 then
- pc.setf("novy_dung_20","next_enter_time",get_global_time())
- end
- end
- end
- when dun20_timer_end.server_timer begin
- if d.select(get_server_timer_arg()) then
- novy_dung_20.vycistit_timery(d.get_map_index())
- d.set_warp_location(200, 2354 , 2364)
- d.exit_all()
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement