Fehler in der Syserr:
Code:
SYSERR: Dec 12 14:39:15 :: AddServerTimer: already registered server timer name:dc_time_notice arg:900003 SYSERR: Dec 12 14:39:15 :: AddServerTimer: already registered server timer name:dc_time_notice arg:900003 SYSERR: Dec 12 14:39:15 :: AddServerTimer: already registered server timer name:dc_time_notice arg:900003 SYSERR: Dec 12 14:41:56 :: WriteRunningStateToSyserr: LUA_ERROR: quest devils_catacomb.start letter
Code:
quest devils_catacomb begin state start begin --Konfiguration when 30122.chat."DC Configuration!" with game.get_event_flag("block_dc_config") == 0 and pc.is_gm begin game.set_event_flag("dc_is_ok",1) game.set_event_flag("block_dc_config",1) game.set_event_flag("dc_versuche",1) end --Eintritt when 30122.chat."The Devil's Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 begin say_title("Geist eines Kriegers:") if pc.get_level() < 120 then say("Du kannst die teuflischen Katakomben noch") say("nicht betreten, da dein Level zu niedrig ist.") say("") say_reward("Komme zurück wenn du Level 120 erreicht hast.") say("") --elseif pc.getf("deviltower_zone", "dcenter") == 0 then -- say("Du musst einmal den Dämonenturm erfolgreich") -- say("abgeschlossen haben, um in die Katakomben eintreten") -- say("zu können.") -- say("") else say("Bisher haben "..game.get_event_flag("dcgamer").." Soldaten es versucht und "..game.get_event_flag("dc_geschaft").."") say("haben es tatsächlich geschafft Azrael zu besiegen.") say("") say("Bist du dieser Herausvorderung gewachsen?") say_reward("Du wärst der "..game.get_event_flag("dc_versuche")..". Kämpfer der es versucht.") say("") local dc_login = select("Betreten", "Abbrechen") if dc_login == 2 then return elseif dc_login == 1 then pc.warp(415200, 4209200) d.join(90) d.regen_file(get_locale_base_path().."/map/metin2_map_devilscatacomb/regen.txt") d.regen_file(get_locale_base_path().."/map/metin2_map_devilscatacomb/npc.txt") d.setf("base1_killed_mobs", 0) game.set_event_flag(("dcgamer"), game.get_event_flag("dcgamer")+1) game.set_event_flag(("dc_versuche"), game.get_event_flag("dc_versuche")+1) end end end when 20367.chat."Zurück zur Stadt" with pc.get_map_index() >= 900000 and pc.get_map_index() < 910000 begin say_title(""..mob_name(20367)..":") say("Bist du sicher, dass du aufgeben und") say("zurück in die Stadt möchtest?") say("") local s = select("Ja, ich bin zu schwach.", "Nein, ich will weiter kämpfen!") if s == 1 then if pc.get_empire() == 1 then pc.warp(474300,954800) elseif pc.get_empire() == 2 then pc.warp(63800,166400) elseif pc.get_empire() == 3 then pc.warp(959900,269200) end end end function get_devil_base() local x = pc.get_local_x() local y = pc.get_local_y() if pc.get_map_index() == 90 and x > 30 and y > 45 and x < 450 and y < 450 then return 1 end if pc.get_map_index() >= 900000 and pc.get_map_index() < 1000000 then if x > 30 and y > 45 and x < 450 and y < 450 then return 1 elseif x > 540 and y > 39 and x < 1000 and y < 462 then return 2 elseif x > 1048 and y > 35 and x < 1455 and y < 458 then return 3 elseif x > 31 and y > 541 and x < 564 and y < 1058 then return 4 elseif x > 650 and y > 540 and x < 1050 and y < 955 then return 5 elseif x > 1175 and y > 576 and x < 1420 and y < 810 then return 6 elseif x > 46 and y > 1091 and x < 102 and y < 1164 then return 7 end end return 0 end function register_player(vid) local player_count = d.getf("player_count") player_count = player_count + 1 d.setf("player_count", tonumber(player_count)) d.setf(string.format("player%d", player_count), tonumber(vid)) end function unregister_player(vid) local player_count = d.getf("player_count") local found = false for i = 1, player_count, 1 do if found == true then d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1))) end p = d.getf("player"..tostring(i)) if p == vid then i = i -1 found = true end end if found == true then d.setf("player_count", tonumber(player_count - 1)) end end function get_players() local players = {} local player_count = d.getf("player_count") for i = 1, player_count, 1 do players[i] = d.getf("player"..tostring(i)) end return players end function checkbase3item(pindex) local self_checked = false local self = pc.select(d.getf("player"..tostring(pindex))) if pc.count_item(30319) < 1 and self_checked == false then warp_to_village() else pc.remove_item(30319, 1) end if pc.get_vid() == self then self_checked = true end pc.select(self) end function spawnbase4portals() d.spawn_goto_mob(70, 673, 94, 847) d.spawn_goto_mob(91, 948, 347, 564) d.spawn_goto_mob(401, 558, 272, 829) d.spawn_goto_mob(274, 713, 141, 807) d.spawn_goto_mob(68, 815, 313, 868) d.spawn_goto_mob(431, 935, 355, 840) d.spawn_goto_mob(430, 842, 499, 787) end function get_remaining_minutes() local m = 60 - (get_global_time() - d.getf("start_time"))/60 if m <= 1 then return "one minute" else return string.format("%d Minuten", m) end end when login with devils_catacomb.get_devil_base() == 1 begin say_title("The Devil's Catacomb") say("Um in die 1. Ebene zu gelangen, müsst ihr den") say_item_vnum(30311) say("droppen und auf die Statue des Kud ziehen!") say("Du bekommst diesen bei den Monstern.") say("") say_reward("Ingesamt habt ihr 90 Minuten Zeit.") pc.remove_item(30311, pc.count_item(30311)) pc.remove_item(30312, pc.count_item(30312)) end when kill with devils_catacomb.get_devil_base() == 1 begin d.setf("base1_killed_mobs", d.getf("base1_killed_mobs")) if number(1, 100) == 1 or d.getf("base1_killed_mobs") >= 432 then game.drop_item(30311, 1) end end when 30101.take with item.vnum == 30311 and devils_catacomb.get_devil_base() == 1 begin item.remove() say("Das Eingangsportal wurde geöffnet.") say("Geh schnell hindurch!") wait() say("Hier beginnt das wahre Abendteuer! Du hast") say("jedoch nur eine Stunde Zeit, um die Devil's") say("Catacomb zu erforschen.") wait() d.new_jump_all(90, 4632, 42082) d.clear_regen() d.regen_file("data/dungeon/devilcave/dc_regen_ebene2.txt") d.regen_file("data/dungeon/devilcave/dc_tore_ebene2.txt") d.setf("doors", 0) d.setf("start_time", get_global_time()) server_timer("dc_time_expired", 60*60, d.get_map_index()) server_timer("dc_time_notice", 30*60, d.get_map_index()) server_timer("dc_time_notice", 45*60, d.get_map_index()) server_timer("dc_time_notice", 50*60, d.get_map_index()) server_timer("dc_time_notice", 55*60, d.get_map_index()) end when login with pc.in_dungeon() == true and devils_catacomb.get_devil_base() != 0 begin pc.set_warp_location(65, 5914, 999) devils_catacomb.register_player(pc.get_vid()) loop_timer("base7_smashout", 10) if party.is_leader() == true then d.setf("leader", pc.get_vid()) end if devils_catacomb.get_devil_base() != 2 then return end say("Zerstöre das Siegel dieses Tores, um die 3. Ebene") say("zu erreichen!") say_reward("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.") end when logout with pc.in_dungeon() == true and devils_catacomb.get_devil_base() > 1 begin devils_catacomb.unregister_player(pc.get_vid()) end when kill with npc.get_race()>30111 and npc.get_race()<30119 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 2 begin d.setf("doors", d.getf("doors") + 1) end when 30103.click with pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 2 begin npc.lock() say("Während du den Stein genauer untersuchst, kannst") say("du eine Gravur erkennen.") say("") say_reward("Möchtest du der 2. Ebene beitreten?") local s = select("Ja, lass mich eintreten!", "Nein, ich möchte nicht eintreten.") if s == 1 then say("Du wirst nun in die 3. Ebene teleportiert.") timer("base3_jump", 4) wait() else say("Du wirst zurück in deine Stadt teleportiert.") wait() if pc.get_empire() == 1 then pc.warp(474300,954800) elseif pc.get_empire() == 2 then pc.warp(63800,166400) elseif pc.get_empire() == 3 then pc.warp(959900,269200) end end end when base3_jump.timer begin if d.getf("base3jump") == 1 then return end d.setf("base3jump", 1) d.purge() --table.foreach(devils_catacomb.get_players(), devils_catacomb.checkbase3item) d.jump_all(5427, 42282) d.notice("Suche den richtigen Metinstein und zerstöre ihn!") d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.") d.clear_regen() d.regen_file("data/dungeon/devilcave/dc_regen_ebene3.txt") d.spawn_mob(8034, 1237, 237) d.spawn_mob(8034, 1337, 166) d.spawn_mob(8034, 1152, 138) d.spawn_mob(8034, 1135, 344) d.spawn_mob(8034, 1367, 354) end when kill with npc.get_race()==8034 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 3 and d.getf("warp_countdown_mode") != 1 begin local stone_count = d.getf("stone_count") stone_count = stone_count + 1 if stone_count >= 5 or number(1, 5) == 5 then d.notice("Der richtige Metinstein wurde zerstört. Du darfst nun die 4. Ebene betreten.") d.setf("warp_countdown_mode", 1) server_timer("base4_jump", 7, pc.get_map_index()) else d.setf("stone_count", stone_count + 1) d.notice("Du hast den falschen Metinstein zerstört. Finde den Richtigen!") end end when base4_jump.server_timer begin if d.select(get_server_timer_arg()) then d.purge() d.jump_all(4143, 42657) d.clear_regen() --d.regen_file("data/dungeon/devilcave/dc_warps.txt") devils_catacomb.spawnbase4portals() d.spawn_mob(30104, 500, 787) d.regen_file("data/dungeon/devilcave/dc_warps.txt") d.notice("Finde den Weg aus dem Labyrinth, um die 5. Ebene zu erreichen!") d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.") end end when 30104.click with pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 4 begin npc.purge() say("Du hast es geschafft! Hier ist der Ausgang des") say("Labyrinths. Steige nun in die 5. Ebene hinab.") wait() server_timer("base5_jump", 4, pc.get_map_index()) end when base5_jump.server_timer begin if d.select(get_server_timer_arg()) then d.purge() d.jump_all(4917, 42925) d.notice("Besiege die Dämonenwachen, um das Fratzen-Totem zu erhalten. Es dient dir als Schlüssel zu 6. Ebene.") d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.") local pos = { {850, 588}, {714, 655}, {701, 817}, {987, 838}, {994, 657}, } cid = number(1, 5) d.spawn_mob(2591, pos[cid][1], pos[cid][2]) d.regen_file("data/dungeon/devilcave/dc_regen_ebene5.txt") end end when kill with npc.get_race()==2591 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 5 begin game.drop_item(30312, 1) end when 30102.take with item.vnum == 30312 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 5 begin item.remove() d.purge() d.notice("Aus den Tiefen der Davil's Catacomb dringt ein makernschütterndes Brüllen.") d.notice("Charon ist erwacht!") d.jump_all(5422, 42782) d.clear_regen() d.regen_file("data/dungeon/devilcave/dc_regen_ebene6.txt") server_loop_timer('base6_update', 10, pc.get_map_index()) d.notice("Besiege Charon und seine Schergen!") d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.") end when base6_update.server_timer begin if not d.select(get_server_timer_arg()) then server_timer("base6_update_stop_timer", 1, get_server_timer_arg()) return end if d.count_monster() == 0 then d.notice("Charon, der Wächter der Katakomben wurde besiegt!") d.notice("Nun erwartet dich die wahre Gefahr.") server_timer("base7_jump", 5, get_server_timer_arg()) end end when base6_update_stop_timer.server_timer begin clear_server_timer("base6_update", get_server_timer_arg()) end when base7_jump.server_timer begin clear_server_timer("base6_update", get_server_timer_arg()) if not d.select(get_server_timer_arg()) then return end d.purge() d.jump_all(4147, 43191) d.clear_regen() d.regen_file("data/dungeon/devilcave/dc_regen_ebene7.txt") d.set_unique("boss", d.spawn_mob(2598, 74, 1105)) server_loop_timer("base7_boss_update", 10, get_server_timer_arg()) d.notice("Töte Azrael!") d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.") d.setf("level", 7) end when base7_boss_update.server_timer begin if d.select(get_server_timer_arg()) then if d.is_unique_dead("boss") then d.clear_regen() clear_server_timer("dc_time_expired", get_server_timer_arg()) say_in_map(d.get_map_index(), color256(255, 230, 186).."The Devil´s Catacomb:[ENTER]"..color256(196, 196, 196).."Azrael wurde getötet!.[ENTER]Nun kann wieder Frieden in[ENTER]die Katakomben einkehren.[ENTER]Du wirst in einer Minute heraus teleportiert.[ENTER]") game.set_event_flag(("dc_geschaft"), game.get_event_flag("dc_geschaft")+1) server_timer("base7_update_stop_timer", 1, get_server_timer_arg()) server_timer("dc_end_jump", 60, get_server_timer_arg()) end return end server_timer("base7_update_stop_timer", 1, get_server_timer_arg()) end when base7_update_stop_timer.server_timer begin clear_server_timer("base7_boss_update", get_server_timer_arg()) end when base7_smashout.timer begin if d.getf("level") == 7 and devils_catacomb.get_devil_base() != 7 and d.select(pc.get_map_index()) then d.jump_all(4147, 43191) end end when dc_end_jump.server_timer begin if d.select(get_server_timer_arg()) then d.setf("level", 0) clear_server_timer("dc_time_expired", get_server_timer_arg()) clear_server_timer("base7_smashout", get_server_timer_arg()) clear_server_timer("base7_update_stop_timer", get_server_timer_arg()) clear_server_timer("base7_boss_update", get_server_timer_arg()) clear_server_timer("base6_update_stop_timer", get_server_timer_arg()) clear_server_timer("base6_update", get_server_timer_arg()) clear_server_timer("base5_jump", get_server_timer_arg()) clear_server_timer("base4_jump", get_server_timer_arg()) d.clear_regen() d.exit_all() end end when dc_time_expired.server_timer begin if d.select(get_server_timer_arg()) then d.setf("level", 0) d.notice("Die Zeit ist abgelaufen. Du hast es nicht geschafft die Katakomben") d.notice("von dem Bösen zu erlösen.") clear_server_timer("base7_smashout", get_server_timer_arg()) clear_server_timer("base7_update_stop_timer", get_server_timer_arg()) clear_server_timer("base7_boss_update", get_server_timer_arg()) clear_server_timer("base6_update_stop_timer", get_server_timer_arg()) clear_server_timer("base6_update", get_server_timer_arg()) clear_server_timer("base5_jump", get_server_timer_arg()) clear_server_timer("base4_jump", get_server_timer_arg()) d.clear_regen() --table.foreach(devils_catacomb.get_players(), devils_catacomb.polyzombie) d.exit_all() end end when dc_time_notice.server_timer begin if d.select(get_server_timer_arg()) then d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.") end end end end