Hallo,
würde gerne aus der Quest rausnehmen das man sie nur in der Gruppe Betreten kann:
Code
- define BLOCK_DOOR 20387
- define DUNGEON_MAN 20385
- define DUNGEON_MAN_DIR 0
- define DUNGEON_MAP_INDEX 351
- define ENTER_LIMIT_TIME 30
- define ENTRY_MAN 20394
- define ENTRY_MAP_INDEX 62
- define FINAL_BOSS 6091
- define LEVEL2_KEY 30329
- define LEVEL2_STONE 20386
- define LEVEL4_TARGET 6051
- define LEVEL5_REALKEY 30330
- define LEVEL5_STONE 20386
- define LEVEL5_GEN_LIMIT 100
- define LEVEL6_TARGET 8057
- define LEVEL_CUT 100
- define MOB_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/"
- define IN_DOOR 20388
- define NPC_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/npc.txt"
- define TICKET_GROUP 10033
- define LIMITED_PASS_TICKET 71175
- quest flame_dungeon begin
- state start begin
- when ENTRY_MAN.click with pc.get_level() >= 100 begin
- pc.give_item2(LIMITED_PASS_TICKET, 1)
- set_state(run)
- end
- when flame_dungeon_45m_left_timer.server_timer begin
- if d.select(get_server_timer_arg()) then
- notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
- notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
- server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
- end
- end
- when flame_dungeon_30m_left_timer.server_timer begin
- if d.select(get_server_timer_arg()) then
- notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
- notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
- server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
- end
- end
- when flame_dungeon_15m_left_timer.server_timer begin
- if d.select(get_server_timer_arg()) then
- notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
- notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
- server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
- end
- end
- when flame_dungeon_5m_left_timer.server_timer begin
- if d.select(get_server_timer_arg()) then
- notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
- notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
- server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
- end
- end
- when flame_dungeon_1m_left_timer.server_timer begin
- if d.select(get_server_timer_arg()) then
- notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
- notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
- server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
- end
- end
- when flame_dungeon_0m_left_timer.server_timer begin
- local setting = flame_dungeon.setting()
- if d.select(get_server_timer_arg()) then
- notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
- server_timer("dungeon_end_timer",10,d.get_map_index())
- end
- end
- when dungeon_end_timer.server_timer begin -- ?? ??? (??? ????)
- local setting = flame_dungeon.setting()
- if d.select(get_server_timer_arg()) then
- flame_dungeon.clear_timer(d.get_map_index())
- d.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
- d.exit_all()
- d.setf("party_leader_pid", 0)
- end
- end
- when killed_A_1.server_timer begin -- ??? ???1 (level1,level3)
- if d.select(get_server_timer_arg()) then
- if d.count_monster() <= 0 then -- 1?? ??? ???
- if d.getf("level") == 11 then
- notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- else
- notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- end
- d.setf("level",0)
- else
- server_timer ("killed_A_2", 6, get_server_timer_arg())
- end
- end
- end
- when killed_A_2.server_timer begin -- ??? ???2 (1? 2 ?????? ???)
- if d.select(get_server_timer_arg()) then
- if d.count_monster() <= 0 then -- 1?? ??? ???
- if d.getf("level") == 11 then
- notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- else
- notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- end
- d.setf("level",0)
- else
- server_timer ("killed_A_1", 6, get_server_timer_arg())
- end
- end
- end
- end
- state run begin
- function setting()
- return
- {
- ["bossroom_entry_pos"] = {8109,6867},
- ["boss_pos"] = {686,637},
- ["doors_pos"] = {
- {320,394},
- {293,359},
- {333,321},
- {378,320},
- {400,355},
- {394,401}
- },
- ["idoors_pos"] = {
- {268,447},
- {234,359},
- {300,264},
- {454,217},
- {470,355},
- {467,469}
- },
- ["doors_dir"] = {135,90,210,152,90,223},
- ["idoors_dir"] = {135,90,210,135,90,239},
- ["dungeon_entry_pos"] = {7762, 6739},-- ??? ?? ???? ?
- ["DUNGEON_MAN_bpos"] = {690,722},
- ["DUNGEON_MAN_pos"] = {354,362},
- ["LEVEL2_STONE_pos"] = {195,352},
- ["LEVEL4_TARGET_pos"] = {470,175},
- ["LEVEL5_STONE_pos"] = {
- {486, 345},
- {511, 336},
- {525, 349},
- {521, 365},
- {503, 372},
- {486, 365},
- {500, 354}
- },
- ["LEVEL6_TARGET_pos"] = {511,480},
- ["outside_entry_pos"] = {6142,7068}, --??????? ??? ?
- ["YAK_pos"] = {376, 397} -- ?? ??
- }
- end
- function is_flamed(idx) -- ???? ??? ??
- return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
- end
- function make_dungeon() -- ?? ???
- local setting = flame_dungeon.setting()
- d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
- -- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR)
- -- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
- d.regen_file(NPC_REGEN_FILE_PATH)
- d.setf("level",0)
- for i=1,6 do
- d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
- end
- for i=1,6 do
- d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
- end
- d.setf("clear_count",0)
- d.setf("started",0)
- d.setf("dungeon_enter",0) -- ????? ?????? // ??? : 0 ?? : 1 // ??? ??????? ?? ??
- end
- function go_boss() -- ??? ??
- local setting = flame_dungeon.setting()
- if pc.get_level() < 104 then --????
- -- syschat(gameforge.flame_dungeon._580_notice)
- say(gameforge.flame_dungeon._580_notice)
- return
- else
- -- say_title(gameforge.flame_dungeon._010_say)
- say_title("Schlund des Am-heh")
- say("")
- say("Möchtest du durch den Schlund des Am-heh gehen und")
- say("deinem Schicksal begegnen?")
- local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
- if warp == 1 then
- d.notice("Besiegt Razador, den König über Feuer und Asche.")
- d.setf("level",17)
- d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
- d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt")
- -- d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
- d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2])
- end
- end
- end
- function level_clear() -- ?? ???, ?????, ?????
- d.setf("level",0)
- d.clear_regen()
- d.purge_area(750000,620000,817400,689400) -- ??? -- d.purge() ????
- end
- function clear_timer(inx) -- ??? ????
- clear_server_timer ("flame_dungeon_0m_left_timer", inx)
- clear_server_timer ("flame_dungeon_1m_left_timer", inx)
- clear_server_timer ("flame_dungeon_5m_left_timer", inx)
- clear_server_timer ("flame_dungeon_10m_left_timer", inx)
- clear_server_timer ("flame_dungeon_15m_left_timer", inx)
- clear_server_timer ("flame_dungeon_30m_left_timer", inx)
- clear_server_timer ("flame_dungeon_45m_left_timer", inx)
- clear_server_timer ("killed_A_1", inx)
- clear_server_timer ("killed_A_2", inx)
- clear_server_timer ("flame_dungeon_ticket_remove", inx)
- end
- when login begin
- local idx = pc.get_map_index()
- local setting = flame_dungeon.setting()
- if idx == DUNGEON_MAP_INDEX then
- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
- elseif flame_dungeon.is_flamed(idx) then -- ?? ??, ??? ?? ??
- ------------------------------------------------------------------------------------------------------------------------------------------------------
- --??? ??? ???? ???? ???? ?????? ?? ?? ??? ????. ???? ??? ?? ???? ???? ?? ?? ??? ??? ??.
- --???? ???? ?? ?? ?? ??? ??? ??, ???? ??? ??? ????? ?? ??? ????? ???? ??? ??? ??? ??.
- ------------------------------------------------------------------------------------------------------------------------------------------------------
- -- pc.set_warp_location(0, 0 , 0) --???? ?? ???? ??? ?? ??
- pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ?? ??? ? ??? ????
- local ticketGroup = {71093, 1, 71130, 1}
- if d.getf("dungeon_enter") == 0 then -- ???? ???
- local canPass = false
- for i=1, table.getn(ticketGroup),2 do
- if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
- canPass = true
- break
- end
- end
- if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- ??????? ????
- notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
- say(gameforge.flame_dungeon._060_say)
- timer("flame_dungeon_warp_timer", 5)
- elseif not canPass then
- notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
- say(gameforge.flame_dungeon._080_say)
- timer("flame_dungeon_warp_timer", 5)
- elseif pc.get_level() < 100 then
- notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
- say(gameforge.flame_dungeon._100_say)
- timer("flame_dungeon_warp_timer", 5)
- end
- elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ????? ??? ???????
- for i=1, table.getn(ticketGroup),2 do
- if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
- pc.remove_item(ticketGroup[i], ticketGroup[i+1])
- break
- end
- end
- pc.setf("flame_dungeon","ticket_delete",1)
- end
- else
- pc.setf("flame_dungeon","ticket_delete",0)
- end
- end
- when flame_dungeon_warp_timer.timer begin
- local setting = flame_dungeon.setting()
- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
- end
- when logout begin
- local idx = pc.get_map_index()
- if flame_dungeon.is_flamed(idx) then
- if d.getf("dungeon_enter") == 1 then -- ???? ?? ?? ? ????
- pc.setf("flame_dungeon","exit_time",get_global_time()) -- ???? ???? ??? ??? ??, ?? ???? ??? or ?? ???? ???
- end
- end
- end
- when ENTRY_MAN.chat.gameforge.flame_dungeon._110_npcChat begin
- local setting = flame_dungeon.setting()
- if party.is_party() then
- -- ?? ?? ?? ?? ??? ?????
- local party_check = 0
- if d.find(party.getf("dungeon_index")) then
- party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
- end
- if d.find(party.getf("dungeon_index")) and party_check then
- if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- ?? ?? 5? ??
- local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
- if dungeon_level == 17 then -- ??
- pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
- else
- pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
- end
- else -- 5? ???? ? ?? ??
- say_title(mob_name(ENTRY_MAN))
- say(gameforge.flame_dungeon._590_say)
- end
- else
- local pids = {party.get_member_pids()}
- local noTicketMembers = {}
- local notEnoughLevelMembers = {}
- local ticketCheck = true
- local levelCheck = true
- local ticketGroup = {50150, 1, 50150, 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 < LEVEL_CUT then
- table.insert(notEnoughLevelMembers, pc.get_name())
- levelCheck = false
- end
- q.end_other_pc_block()
- end
- if pc.count_item(50150) == 0 then
- say("Du benötigst einen Razador-Schlüssel um passieren zu können.")
- say_item_vnum(50150)
- return
- end
- if not levelCheck then
- say_title("Die Rotdrachen-Festung ~ Dungeon")
- say("")
- say_reward("Betreten fehlgeschlagen!")
- say("")
- say("Um die Rotdrachen-Festung zu betreten,")
- say("muss jedes Mitglied der Gruppe Level 100")
- say("erreicht haben. Folgende Spieler haben derzeit")
- say("das Level nicht erreicht:")
- for i, name in next, notEnoughLevelMembers, nil do
- say(color(1,1,0), " ~ "..name)
- end
- return
- end
- if party.is_leader() then
- say_title("Die Rotdrachen-Festung ~ Dungeon")
- say("")
- say("Einen Kampf mit Razador aufnehmen.")
- say("")
- say_reward("Möchtest du die Rotdrachen-Festung betreten?")
- local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
- if warp == 1 then
- if party.is_map_member_flag_lt("exit_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
- pc.remove_item(50150, 1)
- flame_dungeon.make_dungeon()
- else
- --say("test : ???? ?? ????? ??? ?????.")
- say_title("Die Rotdrachen-Festung ~ Dungeon")
- say("")
- say_reward("Betreten fehlgeschlagen!")
- say("")
- say("Die Wartezeit für den Wiedereintritt in die")
- say("Rotdrachen-Festung ist noch nicht abgelaufen. ")
- say("Verb. Zeit: "..LIB_duration(pc.getf("flame_dungeon","exit_time") - get_global_time()).."")
- end
- end
- party.setf("flame_dungeon_boss_kill_count", 0)
- else
- say(gameforge.flame_dungeon._150_say)
- end
- end
- else
- say_title("Die Rotdrachen-Festung ~ Dungeon")
- say("")
- say_reward("Betreten fehlgeschlagen!")
- say("")
- say("Ich schätze deinen Mut, doch alleine wirst du in")
- say("der Rotdrachen-Festung in dein Verderben rennen.")
- say("Stelle eine starke Gruppe zusammen und ich werde")
- say("dir Einlass gewähren.")
- end
- end
- -- when ENTRY_MAN.chat."Test : ?????" with is_test_server() begin -- ????
- -- local setting = flame_dungeon.setting()
- -- pc.setf("flame_dungeon","fdRtest",1)
- -- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, DUNGEON_MAP_INDEX)
- -- end
- when ENTRY_MAN.chat."TEST : Init time limit init" with is_test_server() begin -- ????
- pc.setf("flame_dungeon","exit_time",get_global_time()-3550)
- say("Done")
- end
- -- when DUNGEON_MAN.chat."Test : ?? ??" with is_test_server() begin -- ????
- -- say("?? ??? : "..d.count_monster())
- -- say("level : "..d.getf("level"))
- -- say("Dmap index : "..d.get_map_index())
- -- say("Pmap index : "..pc.get_map_index())
- -- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
- -- say("global time : "..get_global_time())
- -- if flame_dungeon.is_flamed(d.get_map_index()) then
- -- say("in dungeon") -- is_flamed ?? ??
- -- end
- -- if d.is_unique_dead("stone1") then
- -- say("stone1 is dead")
- -- else
- -- say("stone1 is not dead")
- -- end
- -- end
- -- when DUNGEON_MAN.chat."????" begin -- ????
- -- say("??? ???")
- -- flame_dungeon.clear_timer(d.get_map_index())
- -- flame_dungeon.make_dungeon()
- -- end
- when DUNGEON_MAN.chat."Test : Boss Room" with is_test_server() begin -- ????
- flame_dungeon.go_boss()
- end
- -- < ?? ?? ???>
- -- when DUNGEON_MAN.chat."???" begin -- ???? ??? ?? ? ?? ???
- -- local setting = flame_dungeon.setting()
- -- say("??? ????????")
- -- local warp = select("??","??")
- -- if warp == 1 then
- -- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
- -- end
- -- end
- -- <<<< ?? ??>>>> --
- when DUNGEON_MAN.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'? x?? ?? ??? ?? ? ?? ?? , '1x'? x?? ?? ??? ???
- local setting = flame_dungeon.setting()
- if d.getf("started") == 0 then
- say_title("Schlund des Am-heh")
- say("")
- say_reward("Der Schlund des Am-heh wurde erweckt.")
- say("")
- say("Nun kommt niemand mehr herein – oder heraus.")
- say("Die Tore der Rotdrachen-Festung schließen sich für")
- say("eine Stunde.")
- wait()
- d.setf("started",1)
- -- ???? ?????? ??? ??? exit timer? ???? ???? ????? ????? ????? ?
- server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
- notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
- -- ??? ??? ??
- -- ?? ?? ??? ?? ??? ???? ??? ???? ??? ??? ????.
- local pids = {party.get_member_pids()}
- local ticketGroup = {71093, 1, 71130, 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
- pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
- break
- end
- end
- if not canPass then
- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
- end
- q.end_other_pc_block()
- end
- d.setqf2("flame_dungeon","ticket_delete",1)
- d.setf("dungeon_enter",1)
- -- ??? ??? ??? ?? ??? ????.
- party.setf("dungeon_index", d.get_map_index())
- d.setf("party_leader_pid", party.get_leader_pid())
- end
- if d.getf("level") < 7 then --???? ???
- if d.getf("clear_count") == 6 then -- ? ??? ??? ???
- d.setf("level",7)
- else
- local rand = number(1,6)--???? ????? ?? ???? ?? ?? ?????? ???
- local setlev = 0
- d.setf("level",7) -- ?? ?? ??? ?? ??? ?????? ??? ????? ????
- for i=1,50 do
- setlev = setlev + 1
- if setlev > 6 then
- setlev = 1
- end
- if not d.is_unique_dead("door"..setlev) then
- rand = rand - 1
- if rand == 0 then
- d.setf("level",setlev)
- d.setf("clear_count",d.getf("clear_count")+1)
- break
- end
- end
- end
- end
- end
- if d.getf("level") == 1 then
- say_title("Schlund des Am-heh")
- say("")
- say("Aufgabe: Wagt euch in den Ring der Dämonen und")
- say("geht als Sieger hervor.")
- notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
- d.kill_unique("door1")
- d.kill_unique("idoor1")
- d.setf("level",11)
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_a.txt")
- server_timer ("killed_A_1", 12, d.get_map_index())
- elseif d.getf("level") == 11 then
- say(gameforge.flame_dungeon._270_say)
- say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
- elseif d.getf("level") == 2 then
- say_title("Schlund des Am-heh")
- say("")
- say("Aufgabe: Findet das goldene Zahnrad und löst damit")
- say("den verborgenen Mechanismus in der Stele der Isfet")
- say("aus.")
- notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
- d.spawn_mob(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- ??? ??
- d.kill_unique("door2")
- d.kill_unique("idoor2")
- d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_b.txt")
- d.setf("level",12)
- elseif d.getf("level") == 12 then
- say(gameforge.flame_dungeon._310_say)
- elseif d.getf("level") == 3 then
- say_title("Schlund des Am-heh")
- say("")
- say("Aufgabe: Wagt euch in den Ring der Dämonen und")
- say("geht als Sieger hervor.")
- notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
- d.kill_unique("door3")
- d.kill_unique("idoor3")
- d.setf("level",13)
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_c.txt")
- server_timer ("killed_A_1", 12, d.get_map_index())
- elseif d.getf("level") == 13 then
- say(gameforge.flame_dungeon._270_say)
- say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
- elseif d.getf("level") == 4 then -- 474 178
- say_title("Schlund des Am-heh")
- say("")
- say("Aufgabe: Besiegt Ignator, Bewacher der Glut.")
- notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
- d.setf("level",14)
- d.kill_unique("door4")
- d.kill_unique("idoor4")
- d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_d.txt")
- d.spawn_mob(LEVEL4_TARGET,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- ????? ??
- elseif d.getf("level") == 14 then
- say(gameforge.flame_dungeon._330_say)
- say(gameforge.flame_dungeon._340_say)
- elseif d.getf("level") == 5 then -- 510 355
- say_title("Schlund des Am-heh")
- say("")
- say("Aufgabe: Sucht nach den Steinen der Maat und zieht")
- say("sie in der richtigen Reihenfolge auf die sieben")
- say("Stelen der Isfet.")
- say("Wendet ihr den Stein der Maat auf der falschen")
- say("Stele an, zerbricht er.")
- notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
- notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
- d.kill_unique("door5")
- d.kill_unique("idoor5")
- d.setf("level",15)
- d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
- local vis = { 0,0,0,0,0,0,0}
- for i=1,7 do
- vis[i] = 0
- end
- for i = 1, 7 do -- ???? ???
- local ran = number(1,7)
- local st = 0
- for j = 1, 50 do
- st = st + 1
- if st > 7 then
- st = 1
- end
- if vis[st] == 0 then
- ran = ran - 1
- if ran == 0 then
- vis[st] = 1
- d.set_unique("stone5_"..st, d.spawn_mob(LEVEL5_STONE, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
- break
- end
- end
- end
- end
- elseif d.getf("level") == 15 then
- say(gameforge.flame_dungeon._370_say)
- elseif d.getf("level") == 6 then -- 507 490
- say_title("Schlund des Am-heh")
- say("")
- say("Aufgabe: Nur wer die sengende Hitze nicht scheut,")
- say("wird den Metin des Fegefeuers zerstören.")
- notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
- d.setf("level",16)
- d.kill_unique("door6")
- d.kill_unique("idoor6")
- d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_f.txt")
- d.spawn_mob(LEVEL6_TARGET, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- ?????? ??
- elseif d.getf("level") == 16 then
- say(gameforge.flame_dungeon._390_say)
- say(gameforge.flame_dungeon._400_say)
- elseif d.getf("level") == 7 then
- -- setskin(NOWINDOW)
- flame_dungeon.go_boss()
- else
- say(gameforge.flame_dungeon._410_say)
- end
- npc.unlock()
- end
- when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2?? ??? ?? ??
- local i = number(1, 100) -- 100?? 1 ??? ????
- if i == 1 then
- game.drop_item (LEVEL2_KEY, 1)
- end
- end
- when LEVEL2_STONE.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY and d.getf("level") == 12 begin -- 2?? ?? ????
- local i = number(1, 5) -- 5?? 1 ??? ?? ??
- if i == 1 then
- npc.purge()
- item.remove()
- notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- flame_dungeon.level_clear()
- else
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Dieses Zahnrad war eine Fälschung und wurde")
- say("zerstört. Findet das Original.")
- end
- end
- when LEVEL4_TARGET.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
- notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- flame_dungeon.level_clear()
- end
- when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5?? ??? ?? ??
- local i = number(1, 30) -- 30?? 1 ??? ????
- if i == 1 then
- game.drop_item (LEVEL5_REALKEY, 1)
- end
- end
- when LEVEL5_STONE.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY and d.getf("level") == 15 begin -- 5?? ???? ????
- local setting = flame_dungeon.setting()
- if npc.get_vid() == d.get_unique_vid("stone5_1") then -- ??? ?? ????? ? ?? ????? ???? ????
- npc.purge()
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Das war eine weise Wahl. Zerstört nun die nächste")
- say("Stele.")
- d.setf("stonekill",2) -- 2? ?? ???
- if d.count_monster() < LEVEL5_GEN_LIMIT then
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
- end
- elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
- if d.getf("stonekill") == 2 then -- 2??? ?? ??? 2???? ??? ??? ?
- npc.purge()
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Das war eine weise Wahl. Zerstört nun die nächste")
- say("Stele.")
- d.setf("stonekill",3)
- if d.count_monster() < LEVEL5_GEN_LIMIT then
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
- end
- else
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Falsche Reihenfolge. Der Stein der Maat wurde")
- say("dabei zerstört.")
- -- say("2?")
- end
- elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
- if d.getf("stonekill") == 3 then
- npc.purge()
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Das war eine weise Wahl. Zerstört nun die nächste")
- say("Stele.")
- d.setf("stonekill",4)
- if d.count_monster() < LEVEL5_GEN_LIMIT then
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
- end
- else
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Falsche Reihenfolge. Der Stein der Maat wurde")
- say("dabei zerstört.")
- -- say("3?")
- end
- elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
- if d.getf("stonekill") == 4 then
- npc.purge()
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Das war eine weise Wahl. Zerstört nun die nächste")
- say("Stele.")
- d.setf("stonekill",5)
- if d.count_monster() < LEVEL5_GEN_LIMIT then
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
- end
- else
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Falsche Reihenfolge. Der Stein der Maat wurde")
- say("dabei zerstört.")
- -- say("4?")
- end
- elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
- if d.getf("stonekill") == 5 then
- npc.purge()
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Das war eine weise Wahl. Zerstört nun die nächste")
- say("Stele.")
- d.setf("stonekill",6)
- if d.count_monster() < LEVEL5_GEN_LIMIT then
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
- end
- else
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Falsche Reihenfolge. Der Stein der Maat wurde")
- say("dabei zerstört.")
- -- say("5?")
- end
- elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
- if d.getf("stonekill") == 6 then
- npc.purge()
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Das war eine weise Wahl. Zerstört nun die letzte")
- say("Stele.")
- d.setf("stonekill",7)
- if d.count_monster() < LEVEL5_GEN_LIMIT then
- d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
- end
- else
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Falsche Reihenfolge. Der Stein der Maat wurde")
- say("dabei zerstört.")
- -- say("6?")
- end
- else
- if d.getf("stonekill") == 7 then
- npc.purge()
- item.remove()
- notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- flame_dungeon.level_clear()
- else
- item.remove()
- say_title("Schlund des Am-heh")
- say("")
- say("Falsche Reihenfolge. Der Stein der Maat wurde")
- say("dabei zerstört.")
- -- say("7?")
- end
- end
- end
- when LEVEL6_TARGET.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ??? ???? ?
- notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
- notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
- flame_dungeon.level_clear()
- end
- when FINAL_BOSS.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- ?? ????
- --notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
- game.drop_item_with_ownership(72000, 1)
- game.drop_item_with_ownership(81001, 1)
- game.drop_item_with_ownership(72000, 1)
- notice_all("Die Gruppe von ".. pc.get_name() .." haben Razador besiegt. Herzlichen Glückwunsch!")
- notice_all("Endlich herrscht Frieden in der Rotdrachen-Festung.")
- notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
- server_timer("dungeon_end_timer", 60,d.get_map_index())
- flame_dungeon.level_clear()
- -- ??? ?, ??? ?? ???(104?, 105? ???) ???? ??? ??? ??? ??? ???.
- if party.is_party() then
- party.setf("flame_dungeon_boss_kill_count", 1)
- end
- end
- end
- end
Finde es leider aber nicht vermute mal das es mit den Zeilen zu tun hat:
Code
- when login begin
- local idx = pc.get_map_index()
- local setting = flame_dungeon.setting()
- if idx == DUNGEON_MAP_INDEX then
- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
- elseif flame_dungeon.is_flamed(idx) then -- ?? ??, ??? ?? ??
- ------------------------------------------------------------------------------------------------------------------------------------------------------
- --??? ??? ???? ???? ???? ?????? ?? ?? ??? ????. ???? ??? ?? ???? ???? ?? ?? ??? ??? ??.
- --???? ???? ?? ?? ?? ??? ??? ??, ???? ??? ??? ????? ?? ??? ????? ???? ??? ??? ??? ??.
- ------------------------------------------------------------------------------------------------------------------------------------------------------
- -- pc.set_warp_location(0, 0 , 0) --???? ?? ???? ??? ?? ??
- pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ?? ??? ? ??? ????
- local ticketGroup = {71093, 1, 71130, 1}
- if d.getf("dungeon_enter") == 0 then -- ???? ???
- local canPass = false
- for i=1, table.getn(ticketGroup),2 do
- if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
- canPass = true
- break
- end
- end
- if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- ??????? ????
- notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
- say(gameforge.flame_dungeon._060_say)
- timer("flame_dungeon_warp_timer", 5)
- elseif not canPass then
- notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
- say(gameforge.flame_dungeon._080_say)
- timer("flame_dungeon_warp_timer", 5)
- elseif pc.get_level() < 100 then
- notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
- say(gameforge.flame_dungeon._100_say)
- timer("flame_dungeon_warp_timer", 5)
- end
- elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ????? ??? ???????
- for i=1, table.getn(ticketGroup),2 do
- if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
- pc.remove_item(ticketGroup[i], ticketGroup[i+1])
- break
- end
- end
- pc.setf("flame_dungeon","ticket_delete",1)
- end
- else
- pc.setf("flame_dungeon","ticket_delete",0)
- end
- end
Aber habe keine ahnung wie ich es ändern könnte. Bin dankbar für jede hilfe
MFG: Knock