Jump to content

duffisk2w

Member
  • Posts

    14
  • Joined

  • Last visited

  • Feedback

    0%

About duffisk2w

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

duffisk2w's Achievements

Contributor

Contributor (5/16)

  • Collaborator
  • Dedicated
  • Conversation Starter
  • First Post
  • Reacting Well

Recent Badges

8

Reputation

  1. please, can you help me somewhere, I have everything right but it shows such an error Foto : [Hidden Content] Error C2027 use of undefined type 'CItemData'
  2. thank you very much for the advice all functions d_setf i changed d.setf(d.get_map_index(), but the error is still the same dungeon_set_flag: not enough arguments. quest halloween2022_dungeon_zone begin state start begin --** --** Login: Dungeon exit coordinates set on dungeon entrance and timers. --** when login begin local data = Halloween2022Dungeon.GetData(); local outside_base = data["outside_data"]["base"][pc.get_empire()]; local outside_pos = data["outside_data"]["pos"][pc.get_empire()]; if (Halloween2022Dungeon.InDungeon()) then pc.set_warp_location(data["outside_data"]["index"][pc.get_empire()], outside_base["x"] + outside_pos["x"], outside_base["y"] + outside_pos["y"]); d.setf(d.get_map_index(), "dungeon_expire_time", 0); if pc.get_map_index() == 161 then if pc.get_map_index() >= 1610000 and pc.get_map_index() < 1619999 then pc.warp(1618700,1255700) end pc.set_warp_location(358, 4864, 3072) elseif pc.get_map_index() >= 1610000 and pc.get_map_index() < 1619999 then pc.set_warp_location(358, 4864, 3072) end if ((party.is_leader() or not party.is_party()) and d.getf("initialized") == 0) then if d.getf("first_regen") == 1 then--already start!!!! return end d.setf(d.get_map_index(), "first_regen", 1) -- set for already regened!!! d.setf(d.get_map_index(), "initialized", 1); d.setf(d.get_map_index(), "Halloween2022_floor", 1); d.setf(d.get_map_index(), "Halloween2022_candestroyFStone", 1); d.setf(d.get_map_index(), "start_time", get_time()); d.setf(d.get_map_index(), "can_back_dungeon", 1) -- active back dungeon when first enter! if (data["time_out"] > 0) then d.setf(d.get_map_index(), "dungeon_time_limit", d.getf("start_time") + data["time_out"]); server_loop_timer("halloween2022_dungeon_time_out", data["time_out_step"], d.get_map_index()); d.notice(string.format("<Bloody cathedral> You have %s to complete the Bloody cathedral.", get_time_format(data["time_out"]))) --d.notice(string.format("<Bloody cathedral> The player '%s' has complete the Bloody cathedral.", pc.get_name())) end -- if local door_data = data["1floor_door_data"]; local seal_data = data["1floor_seal_data"]; local stone_data = data["1floor_stone_data"]; local stone_vid = 0; for stone_idx, stone_pos in ipairs(stone_data["pos"]) do stone_vid = d.spawn_mob_dir(stone_data["vnum_full"], stone_pos["x"], stone_pos["y"], stone_pos["dir"]); d.set_unique(string.format("metinstone_1floor_%d", stone_idx), stone_vid); end -- for d.spawn_mob_dir(door_data["vnum"], door_data["pos"]["x"], door_data["pos"]["y"], door_data["pos"]["dir"]); d.spawn_mob_dir(seal_data["vnum_small"], seal_data["pos"]["x"], seal_data["pos"]["y"], seal_data["pos"]["dir"]); d.regen_file("data/dungeon/halloween2022_dungeon/1floor_statues.txt"); end -- if -- Send the entrance timer as soon as they enter the instance, it will update every time they rejoin, but ultimately this is just a fallback case. -- The real timer gets applied when they kill the final boss. if (data["entrance_timer"] > 0) then pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); end -- if local player_online_qf = string.format("player_online_%d", pc.get_player_id()); if (d.getf(player_online_qf) == 0) then d.setf(player_online_qf, 1); d.setf(d.get_map_index(), "dungeon_members_num", d.getf("dungeon_members_num")+1); -- You can be in a party and still enter the dungeon alone end -- if local player_status_qf = string.format("player_status_%d", pc.get_player_id()); if (d.getf(player_status_qf) == 0) then d.setf(player_status_qf, 1); d.setf(d.get_map_index(), "dungeon_members_tot", d.getf("dungeon_members_tot")+1); end -- if elseif (Halloween2022Dungeon.InMap()) then notice("Dungeon Instance not found.") notice("You'll be teleported out of the map.") pc.warp((outside_base["x"] + outside_pos["x"]) * 100, (outside_base["y"] + outside_pos["y"]) * 100, data["outside_data"]["index"][pc.get_empire()]); end -- if/elseif end -- when --** --** Logout: Item removal. --** when logout with Halloween2022Dungeon.InDungeon() begin local data = Halloween2022Dungeon.GetData(); -- Send the entrance timer as soon as they logout from the instance, it will update every time they rejoin, but ultimately this is just a fallback case. -- The real timer gets applied when they kill the final boss. if (data["entrance_timer"] > 0) then pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); end -- if d.setf(string.format("player_online_%d", pc.get_player_id()), 0); d.setf(d.get_map_index(), "dungeon_members_num", d.getf("dungeon_members_num")-1); if (d.getf("dungeon_members_num") == 0) then d.setf(d.get_map_index(), "dungeon_expire_time", get_time() + time_min_to_sec(5)); end -- if if (d.getf("dungeon_members_tot") > 1) then d.notice(string.format("<Bloody cathedral> The player '%s' has left the dungeon.", pc.get_name())) end -- if -- Item removal here. end -- when --** --** Kill: Metinstones to spawn first boss --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["1floor_stone_data"]["vnum_full"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_candestroyFStone") == 1 begin local data = Halloween2022Dungeon.GetData(); local stone_data = data["1floor_stone_data"]; d.setf(d.get_map_index(), "1floor_stone_damaged", d.getf("1floor_stone_damaged")+1); d.notice("<Bloody cathedral> This stone is under a spell now!"); if npc.get_vid() == d.get_unique_vid("metinstone_1floor_1") then d.set_unique("1floor_halfstone_1", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][1]["x"], stone_data["pos"][1]["y"], stone_data["pos"][1]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_2") then d.set_unique("1floor_halfstone_2", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][2]["x"], stone_data["pos"][2]["y"], stone_data["pos"][2]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_3") then d.set_unique("1floor_halfstone_3", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][3]["x"], stone_data["pos"][3]["y"], stone_data["pos"][3]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_4") then d.set_unique("1floor_halfstone_4", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][4]["x"], stone_data["pos"][4]["y"], stone_data["pos"][4]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_5") then d.set_unique("1floor_halfstone_5", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][5]["x"], stone_data["pos"][5]["y"], stone_data["pos"][5]["dir"])); end -- if if (d.getf("1floor_stone_damaged") == 5) then d.setf(d.get_map_index(), "Halloween2022_candestroyFStone", 0); d.setf(d.get_map_index(), "Halloween2022_killFirstBoss", 1); Halloween2022Dungeon.SpawnFirstBoss(); end -- if end -- when --** --** Kill: First boss to get an item --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["1floor_fboss_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_killFirstBoss") == 1 begin local data = Halloween2022Dungeon.GetData(); local StatueItem = data["1floor_item_statue"] local ActivationItem = data["1floor_item_activate"] d.setf(d.get_map_index(), "1floor_Firstboss_count", d.getf("1floor_Firstboss_count")+1); d.setf(d.get_map_index(), "Halloween2022_killFirstBoss", 0); if (d.getf("1floor_Firstboss_count") <= 2) then d.setf(d.get_map_index(), "Halloween2022_canDestroyAngelStatue", 1); game.drop_item(StatueItem, 1); d.notice(string.format("<Bloody cathedral> Use the %s to destroy %s", item_name(StatueItem), mob_name(data["1floor_statue_npc"]))); else game.drop_item(ActivationItem, 1); d.setf(d.get_map_index(), "Halloween2022_canActivateSeal", 1); d.notice(string.format("<Bloody cathedral> Use the %s to activate %s", item_name(ActivationItem), mob_name(data["1floor_seal_data"]["vnum_middle"]))); end -- if end -- when --** --** Take: First floor Angel Statue break. --** when 9477.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_statue"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canDestroyAngelStatue") == 1 begin local data = Halloween2022Dungeon.GetData(); d.setf(d.get_map_index(), "1floor_angel_statue", d.getf("1floor_angel_statue")+1); d.setf(d.get_map_index(), "Halloween2022_canDestroyAngelStatue", 0); npc.kill(); item.remove(); if (d.getf("1floor_angel_statue") == 1) then d.setf(d.get_map_index(), "Halloween2022_canDestroySecondStone", 1); for i = 1, 5 do d.purge_unique("1floor_halfstone_"..i); end -- for local stone_data = data["1floor_stone_data"]; local stone_vid = 0; for stone_idx, stone_pos in ipairs(stone_data["pos"]) do d.spawn_mob_dir(stone_data["vnum_half"], stone_pos["x"], stone_pos["y"], stone_pos["dir"]); --d.set_unique(string.format("metinstone_1floor_%d", stone_idx), stone_vid); end -- for d.notice("<Bloody cathedral> You broke the spell! Destroy the stones!"); else game.drop_item(data["1floor_item_activate"], 1); d.setf(d.get_map_index(), "Halloween2022_canActivateSeal", 1); d.notice(string.format("<Bloody cathedral> Use the %s to build a part of %s!", item_name(data["1floor_item_activate"]), mob_name(data["1floor_seal_data"]["vnum_small"]))); end -- if end -- when --** --** Kill: Second part of first stone --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["1floor_stone_data"]["vnum_half"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canDestroySecondStone") == 1 begin local data = Halloween2022Dungeon.GetData(); local stone_data = data["1floor_stone_data"]; d.setf(d.get_map_index(), "1floor_stone_destroyed", d.getf("1floor_stone_destroyed")+1); if (d.getf("1floor_stone_destroyed") == 5) then d.setf(d.get_map_index(), "Halloween2022_canDestroySecondStone", 0); d.setf(d.get_map_index(), "Halloween2022_killFirstBoss", 1); Halloween2022Dungeon.SpawnFirstBoss(); end -- if end -- when --** --** Take: First floor Middle seal activation. --** when 9478.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_activate"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canActivateSeal") == 1 begin local data = Halloween2022Dungeon.GetData(); local seal_data = data["1floor_seal_data"]; item.remove(); d.setf(d.get_map_index(), "1floor_seal_state", d.getf("1floor_seal_state")+1); d.setf(d.get_map_index(), "Halloween2022_canActivateSeal", 0); d.setf(d.get_map_index(), "1floor_monsters", 1); d.spawn_mob_dir(seal_data["vnum_middle"], seal_data["pos"]["x"], seal_data["pos"]["y"], seal_data["pos"]["dir"]); npc.kill(); d.regen_file("data/dungeon/halloween2022_dungeon/1floor_monsters_1.txt"); end -- when --** --** Kill: First floor monsters. --** when kill with not npc.is_pc() and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("1floor_monsters") == 1 begin d.setf(d.get_map_index(), "1floor_killed", d.getf("1floor_killed") + 1); local data = Halloween2022Dungeon.GetData(); local wave_num = d.getf("1floor_waves_killed")+1; if (d.getf("1floor_killed") == data["1floor_to_kill"][wave_num]) then d.setf(d.get_map_index(), "1floor_killed", 0); d.setf(d.get_map_index(), "1floor_monsters", 0); d.setf(d.get_map_index(), "1floor_waves_killed", d.getf("1floor_waves_killed")+1); d.purge_area(data["inside_data"]["base"]["x"]*100, data["inside_data"]["base"]["y"]*100, (data["inside_data"]["base"]["x"]+8192)*100, (data["inside_data"]["base"]["y"]+16384)*100); d.notice(string.format("<Bloody cathedral> Wave n.%d vanquished.", wave_num)) if (d.getf("1floor_waves_killed") == 1) then d.setf(d.get_map_index(), "1floor_monsters", 1); d.regen_file("data/dungeon/halloween2022_dungeon/1floor_monsters_2.txt"); else game.drop_item(data["1floor_item_activate"], 1); d.setf(d.get_map_index(), "Halloween2022_canActivateSeal", 1); d.notice(string.format("<Bloody cathedral> You can now drag the %s onto the %s to destroy it.", item_name(data["1floor_item_activate"]), mob_name(data["1floor_seal_data"]["vnum_middle"]))) end -- if end -- if end -- when --** --** Take: First floor Final seal activation. --** when 9479.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_activate"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canActivateSeal") == 1 begin local data = Halloween2022Dungeon.GetData(); local seal_data = data["1floor_seal_data"]; local FirstBoss_data = data["1floor_fboss_data"]; item.remove(); d.setf(d.get_map_index(), "1floor_seal_state", d.getf("1floor_seal_state")+1); d.setf(d.get_map_index(), "Halloween2022_canActivateSeal", 0); d.setf(d.get_map_index(), "Halloween2022_killFirstBoss", 1); d.spawn_mob_dir(seal_data["vnum_full"], seal_data["pos"]["x"], seal_data["pos"]["y"], seal_data["pos"]["dir"]); npc.kill(); d.spawn_mob(FirstBoss_data["vnum"], FirstBoss_data["pos"]["x"], FirstBoss_data["pos"]["y"]); end -- when --** --** Take: First floor - Seal activation + second floor setting --** when 9480.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_activate"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canActivateSeal") == 1 begin local data = Halloween2022Dungeon.GetData(); item.remove(); d.kill_all(); local npc_data = data["2floor_calyx_data"]; local stone_vid = 0; for npc_idx, npc_pos in ipairs(npc_data["pos"]) do npc_vid = d.spawn_mob_dir(npc_data["vnum_empty"], npc_pos["x"], npc_pos["y"], npc_pos["dir"]); d.set_unique(string.format("2floor_npc%d", npc_idx), npc_vid); end -- for local BossData = data["2floor_fboss_data"] d.spawn_mob_dir(BossData["vnum"], BossData["pos"]["x"], BossData["pos"]["y"], BossData["pos"]["dir"]); d.setf(d.get_map_index(), "Halloween2022_floor", 2); d.setf(d.get_map_index(), "2floor_canKill_boss", 1); d.notice(string.format("<Bloody cathedral> Fill all %s with blood in exact order!", mob_name(npc_data["vnum_full"]))); d.notice(string.format("<Bloody cathedral> If you will try to fill wrong %s, you have to repeat the task!", mob_name(npc_data["vnum_full"]))); d.notice(string.format("<Bloody cathedral> Kill %s, to be able to fill the first one!", mob_name(BossData["vnum"]))); end -- when --** --** Kill: Second boss to get an item --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["2floor_fboss_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_canKill_boss") == 1 begin local data = Halloween2022Dungeon.GetData(); d.setf(d.get_map_index(), "2floor_canKill_boss", 0); d.setf(d.get_map_index(), "2floor_canFill_calyx", 1); game.drop_item(data["2floor_item"], 1); d.notice(string.format("<Bloody cathedral> You got a %s, let's fill up an %s now!", item_name(data["2floor_item"]), mob_name(data["2floor_calyx_data"]["vnum_empty"]))); end -- when --** --** Take: Second floor - filling calyxes --** when 9482.take with item.get_vnum() == Halloween2022Dungeon.GetData()["2floor_item"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_canFill_calyx") == 1 begin local data = Halloween2022Dungeon.GetData(); local npc_data = data["2floor_calyx_data"]; local stone_data = data["2floor_stone_data"] d.setf(d.get_map_index(), "2floor_canFill_calyx", 0); d.setf(d.get_map_index(), "2floor_calyx_filled", d.getf("2floor_calyx_filled")+1); item.remove(); if d.getf("2floor_calyx_filled") == 1 then d.setf(d.get_map_index(), "2floor_canDestroy_stone", 1); d.setf(d.get_map_index(), "2floor_stone_stage", 1); d.spawn_mob_dir(stone_data["vnum"], stone_data["pos"]["x"], stone_data["pos"]["y"], stone_data["pos"]["dir"]); d.notice(string.format("<Bloody cathedral> You filled up correct %s. Destroy %s now to proceed", mob_name(data["2floor_calyx_data"]["vnum_empty"]), mob_name(stone_data["vnum"]))); elseif d.getf("2floor_calyx_filled") == 2 then d.setf(d.get_map_index(), "2floor_monsters", 1); d.regen_file("data/dungeon/halloween2022_dungeon/2floor_monsters.txt"); d.notice("<Bloody cathedral> Kill all monsters to proceed!"); elseif d.getf("2floor_calyx_filled") == 3 then d.setf(d.get_map_index(), "2floor_canDestroy_stone", 2); d.regen_file("data/dungeon/halloween2022_dungeon/2floor_stones.txt"); d.notice(string.format("<Bloody cathedral> Destroy all %s to proceed!", mob_name(stone_data["vnum"]))); elseif d.getf("2floor_calyx_filled") == 4 then d.notice("<Bloody cathedral> You filled all calyxes. You summoned a mother of vampires! Mother of evil!"); d.notice("<Bloody cathedral> She is coming! Get ready!"); d.purge_area(data["inside_data"]["base"]["x"]*100, data["inside_data"]["base"]["y"]*100, (data["inside_data"]["base"]["x"]+8192)*100, (data["inside_data"]["base"]["y"]+16384)*100); server_timer("final_boss_spawn", data["2floor_final_boss_spawn"], d.get_map_index()); end -- if if npc.get_vid() == d.get_unique_vid("2floor_npc1") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][1]["x"], npc_data["pos"][1]["y"], npc_data["pos"][1]["dir"]); d.kill_unique("2floor_npc1"); elseif npc.get_vid() == d.get_unique_vid("2floor_npc2") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][2]["x"], npc_data["pos"][2]["y"], npc_data["pos"][2]["dir"]); d.kill_unique("2floor_npc2"); elseif npc.get_vid() == d.get_unique_vid("2floor_npc3") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][3]["x"], npc_data["pos"][3]["y"], npc_data["pos"][3]["dir"]); d.kill_unique("2floor_npc3"); elseif npc.get_vid() == d.get_unique_vid("2floor_npc4") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][4]["x"], npc_data["pos"][4]["y"], npc_data["pos"][4]["dir"]); d.kill_unique("2floor_npc4"); end -- if end -- when --** --** Kill: Second stone --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["2floor_stone_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 begin local data = Halloween2022Dungeon.GetData(); local stone_data = data["2floor_stone_data"] if d.getf("2floor_canDestroy_stone") == 1 then d.setf(d.get_map_index(), "2floor_canDestroy_stone", 0); d.setf(d.get_map_index(), "2floor_canFill_calyx", 1); game.drop_item(data["2floor_item"], 1); d.notice(string.format("<Bloody cathedral> You got a %s, let's fill up an %s now!", item_name(data["2floor_item"]), mob_name(data["2floor_calyx_data"]["vnum_empty"]))); elseif d.getf("2floor_canDestroy_stone") == 2 then d.setf(d.get_map_index(), "2floor_stone_count", d.getf("2floor_stone_count")+1); if (d.getf("2floor_stone_count") == stone_data["count_to_destroy"]) then d.setf(d.get_map_index(), "2floor_canDestroy_stone", 0); d.setf(d.get_map_index(), "2floor_canFill_calyx", 1); game.drop_item(data["2floor_item"], 1); end -- if end -- if end -- when --** --** Kill: Second floor - monsters --** when kill with not npc.is_pc() and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_monsters") == 1 begin d.setf(d.get_map_index(), "2floor_killed", d.getf("2floor_killed") + 1); local data = Halloween2022Dungeon.GetData(); if (d.getf("2floor_killed") == data["2floor_to_kill"]) then d.setf(d.get_map_index(), "2floor_killed", 0); d.setf(d.get_map_index(), "2floor_monsters", 0); d.setf(d.get_map_index(), "2floor_canFill_calyx", 1); d.purge_area(data["inside_data"]["base"]["x"]*100, data["inside_data"]["base"]["y"]*100, (data["inside_data"]["base"]["x"]+8192)*100, (data["inside_data"]["base"]["y"]+16384)*100); d.notice(string.format("<Bloody cathedral> You killed all monsters. Fill another %s.", mob_name(data["2floor_calyx_data"]["vnum_empty"]))); game.drop_item(data["2floor_item"], 1); end -- if end -- when --** --** Server Timer: Final boss spawn. --** when final_boss_spawn.server_timer begin if (d.select(get_server_timer_arg())) then local data = Halloween2022Dungeon.GetData(); local boss_data = data["2floor_finalboss_data"] d.setf(d.get_map_index(), "2floor_final_boss", 1); d.set_unique("FinalBoss", d.spawn_mob_dir(boss_data["vnum"], boss_data["pos"]["x"], boss_data["pos"]["y"], boss_data["pos"]["dir"])); end -- if end -- when --** --** Kill: Final boss --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["2floor_finalboss_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_final_boss") == 1 begin local data = Halloween2022Dungeon.GetData(); local chest_data = data["reward_chest"] if (data["time_out"] > 0) then clear_server_timer("halloween2022_dungeon_time_out", d.get_map_index()); end -- if if (d.getf("dungeon_members_tot") > 1) then --notice_all(string.format("[Dungeon Notice]: %s and their party have completed the `Bloody cathedral` in %s.", pc.get_name(), get_time_format(d.getf("completion_time") - d.getf("start_time")))) notice_all(" "..pc.get_name().." Completed the Bloody Cathedral.") d.setf(d.get_map_index(), "can_back_dungeon", 0) -- Deaktivieren else --notice_all(string.format("[Dungeon Notice]: %s has completed the `Bloody cathedral`%s in %s.", pc.get_name(), (data["enter_mode"] == 3 and " without a party" or ""), get_time_format(d.getf("completion_time") - d.getf("start_time")))) notice_all(" "..pc.get_name().." Completed the Bloody Cathedral.") d.setf(d.get_map_index(), "can_back_dungeon", 0) -- Deaktivieren end -- if/else if (data["entrance_timer"] > 0) then if (d.getf("dungeon_members_tot") > 1) then for _, pid in ipairs(party_get_member_pids()) do q.begin_other_pc_block(pid); -- pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); -- q.end_other_pc_block(); end -- for d.notice(string.format("<Bloody cathedral> Each one of you will be unable to re-enter the dungeon for %s.", get_time_format(data["entrance_timer"]))) else pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); d.notice(string.format("<Bloody cathedral> You will be unable to re-enter the dungeon for %s.", get_time_format(data["entrance_timer"]))) end -- if/else end -- if clear_dungeon(true); d.setf(d.get_map_index(), "2floor_final_boss", 0); d.setf(d.get_map_index(), "dungeon_complete", 1); d.spawn_mob_dir(chest_data["vnum"], chest_data["pos"]["x"], chest_data["pos"]["y"], chest_data["pos"]["dir"]); d.setf(d.get_map_index(), "can_back_dungeon", 0) -- Deaktivieren d.notice(string.format("<Bloody cathedral> You can take your reward by opening the %s.", mob_name(data["reward_chest"]["vnum"]))) d.notice(string.format("<Bloody cathedral> You will be teleported out of the dungeon in %s.", get_time_format(data["out_room"]))) server_timer("halloween2022_dungeon_out_room", data["out_room"], d.get_map_index()); end -- when when 9484.chat."Take reward" with Halloween2022Dungeon.InDungeon() and d.getf("dungeon_complete") == 1 begin local data = Halloween2022Dungeon.GetData(); local qf = string.format("reward_state_%d", pc.get_player_id()); if (d.getf(qf) == 1) then say_title(string.format("%s:[ENTER]", mob_name(npc.get_race()))) say_reward("You already got your reward.[ENTER]") return; end -- if d.setf(qf, 1); d.setf(d.get_map_index(), "can_back_dungeon", 0) -- Deaktivieren pc.give_item2(data["reward_data"]["vnum"], data["reward_data"]["quantity"]); setskin(NOWINDOW); end -- when --** --** Server Timer: Time expiration. --** when halloween2022_dungeon_time_out.server_timer begin if (d.select(get_server_timer_arg())) then local reg_time, cur_time = d.getf("dungeon_time_limit"), get_time(); if (reg_time <= cur_time) then clear_server_timer("halloween2022_dungeon_time_out", get_server_timer_arg()); d.notice("<Bloody cathedral> Time expired.") d.notice("<Bloody cathedral> You will be teleported out of the dungeon.") d.setf(d.get_map_index(), "can_back_dungeon", 0) -- Deaktivieren d.exit_all(); else d.notice(string.format("<Bloody cathedral> Time remaining: %s.", get_time_format(reg_time - cur_time))) end -- if/else end -- if end -- when --** --** Server Timer: Dungeon cleanup. --** when halloween2022_dungeon_out_room.server_timer begin if (d.select(get_server_timer_arg())) then d.notice("<Bloody cathedral> You are getting teleported out of the dungeon.") d.setf(d.get_map_index(), "can_back_dungeon", 0) -- Deaktivieren d.exit_all(); end -- if end -- when end -- state end -- quest
  3. quest halloween2022_dungeon_zone begin state start begin --** --** Login: Dungeon exit coordinates set on dungeon entrance and timers. --** when login begin local data = Halloween2022Dungeon.GetData(); local outside_base = data["outside_data"]["base"][pc.get_empire()]; local outside_pos = data["outside_data"]["pos"][pc.get_empire()]; if (Halloween2022Dungeon.InDungeon()) then pc.set_warp_location(data["outside_data"]["index"][pc.get_empire()], outside_base["x"] + outside_pos["x"], outside_base["y"] + outside_pos["y"]); d.setf("dungeon_expire_time", 0); if pc.get_map_index() == 161 then if pc.get_map_index() >= 1610000 and pc.get_map_index() < 1619999 then pc.warp(486400,307200) end pc.set_warp_location(358, 4864, 3072) elseif pc.get_map_index() >= 1610000 and pc.get_map_index() < 1619999 then pc.set_warp_location(358, 4864, 3072) end if ((party.is_leader() or not party.is_party()) and d.getf("initialized") == 0) then if d.getf("first_regen") == 1 then--already start!!!! return end d.setf("first_regen", 1) -- set for already regened!!! d.setf("initialized", 1); d.setf("Halloween2022_floor", 1); d.setf("Halloween2022_candestroyFStone", 1); d.setf("start_time", get_time()); d.setf("can_back_dungeon", 1) -- active back dungeon when first enter! if (data["time_out"] > 0) then d.setf("dungeon_time_limit", d.getf("start_time") + data["time_out"]); server_loop_timer("halloween2022_dungeon_time_out", data["time_out_step"], d.get_map_index()); d.notice(string.format("<Bloody cathedral> You have %s to complete the Bloody cathedral.", get_time_format(data["time_out"]))) --d.notice(string.format("<Bloody cathedral> The player '%s' has complete the Bloody cathedral.", pc.get_name())) end -- if local door_data = data["1floor_door_data"]; local seal_data = data["1floor_seal_data"]; local stone_data = data["1floor_stone_data"]; local stone_vid = 0; for stone_idx, stone_pos in ipairs(stone_data["pos"]) do stone_vid = d.spawn_mob_dir(stone_data["vnum_full"], stone_pos["x"], stone_pos["y"], stone_pos["dir"]); d.set_unique(string.format("metinstone_1floor_%d", stone_idx), stone_vid); end -- for d.spawn_mob_dir(door_data["vnum"], door_data["pos"]["x"], door_data["pos"]["y"], door_data["pos"]["dir"]); d.spawn_mob_dir(seal_data["vnum_small"], seal_data["pos"]["x"], seal_data["pos"]["y"], seal_data["pos"]["dir"]); d.regen_file("data/dungeon/halloween2022_dungeon/1floor_statues.txt"); end -- if -- Send the entrance timer as soon as they enter the instance, it will update every time they rejoin, but ultimately this is just a fallback case. -- The real timer gets applied when they kill the final boss. if (data["entrance_timer"] > 0) then pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); end -- if local player_online_qf = string.format("player_online_%d", pc.get_player_id()); if (d.getf(player_online_qf) == 0) then d.setf(player_online_qf, 1); d.setf("dungeon_members_num", d.getf("dungeon_members_num")+1); -- You can be in a party and still enter the dungeon alone end -- if local player_status_qf = string.format("player_status_%d", pc.get_player_id()); if (d.getf(player_status_qf) == 0) then d.setf(player_status_qf, 1); d.setf("dungeon_members_tot", d.getf("dungeon_members_tot")+1); end -- if elseif (Halloween2022Dungeon.InMap()) then notice("Dungeon Instance not found.") notice("You'll be teleported out of the map.") pc.warp((outside_base["x"] + outside_pos["x"]) * 100, (outside_base["y"] + outside_pos["y"]) * 100, data["outside_data"]["index"][pc.get_empire()]); end -- if/elseif end -- when --** --** Logout: Item removal. --** when logout with Halloween2022Dungeon.InDungeon() begin local data = Halloween2022Dungeon.GetData(); -- Send the entrance timer as soon as they logout from the instance, it will update every time they rejoin, but ultimately this is just a fallback case. -- The real timer gets applied when they kill the final boss. if (data["entrance_timer"] > 0) then pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); end -- if d.setf(string.format("player_online_%d", pc.get_player_id()), 0); d.setf("dungeon_members_num", d.getf("dungeon_members_num")-1); if (d.getf("dungeon_members_num") == 0) then d.setf("dungeon_expire_time", get_time() + time_min_to_sec(5)); end -- if if (d.getf("dungeon_members_tot") > 1) then d.notice(string.format("<Bloody cathedral> The player '%s' has left the dungeon.", pc.get_name())) end -- if -- Item removal here. end -- when --** --** Kill: Metinstones to spawn first boss --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["1floor_stone_data"]["vnum_full"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_candestroyFStone") == 1 begin local data = Halloween2022Dungeon.GetData(); local stone_data = data["1floor_stone_data"]; d.setf("1floor_stone_damaged", d.getf("1floor_stone_damaged")+1); d.notice("<Bloody cathedral> This stone is under a spell now!"); if npc.get_vid() == d.get_unique_vid("metinstone_1floor_1") then d.set_unique("1floor_halfstone_1", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][1]["x"], stone_data["pos"][1]["y"], stone_data["pos"][1]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_2") then d.set_unique("1floor_halfstone_2", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][2]["x"], stone_data["pos"][2]["y"], stone_data["pos"][2]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_3") then d.set_unique("1floor_halfstone_3", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][3]["x"], stone_data["pos"][3]["y"], stone_data["pos"][3]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_4") then d.set_unique("1floor_halfstone_4", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][4]["x"], stone_data["pos"][4]["y"], stone_data["pos"][4]["dir"])); elseif npc.get_vid() == d.get_unique_vid("metinstone_1floor_5") then d.set_unique("1floor_halfstone_5", d.spawn_mob_dir(stone_data["vnum_npc"], stone_data["pos"][5]["x"], stone_data["pos"][5]["y"], stone_data["pos"][5]["dir"])); end -- if if (d.getf("1floor_stone_damaged") == 5) then d.setf("Halloween2022_candestroyFStone", 0); d.setf("Halloween2022_killFirstBoss", 1); Halloween2022Dungeon.SpawnFirstBoss(); end -- if end -- when --** --** Kill: First boss to get an item --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["1floor_fboss_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_killFirstBoss") == 1 begin local data = Halloween2022Dungeon.GetData(); local StatueItem = data["1floor_item_statue"] local ActivationItem = data["1floor_item_activate"] d.setf("1floor_Firstboss_count", d.getf("1floor_Firstboss_count")+1); d.setf("Halloween2022_killFirstBoss", 0); if (d.getf("1floor_Firstboss_count") <= 2) then d.setf("Halloween2022_canDestroyAngelStatue", 1); game.drop_item(StatueItem, 1); d.notice(string.format("<Bloody cathedral> Use the %s to destroy %s", item_name(StatueItem), mob_name(data["1floor_statue_npc"]))); else game.drop_item(ActivationItem, 1); d.setf("Halloween2022_canActivateSeal", 1); d.notice(string.format("<Bloody cathedral> Use the %s to activate %s", item_name(ActivationItem), mob_name(data["1floor_seal_data"]["vnum_middle"]))); end -- if end -- when --** --** Take: First floor Angel Statue break. --** when 9477.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_statue"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canDestroyAngelStatue") == 1 begin local data = Halloween2022Dungeon.GetData(); d.setf("1floor_angel_statue", d.getf("1floor_angel_statue")+1); d.setf("Halloween2022_canDestroyAngelStatue", 0); npc.kill(); item.remove(); if (d.getf("1floor_angel_statue") == 1) then d.setf("Halloween2022_canDestroySecondStone", 1); for i = 1, 5 do d.purge_unique("1floor_halfstone_"..i); end -- for local stone_data = data["1floor_stone_data"]; local stone_vid = 0; for stone_idx, stone_pos in ipairs(stone_data["pos"]) do d.spawn_mob_dir(stone_data["vnum_half"], stone_pos["x"], stone_pos["y"], stone_pos["dir"]); --d.set_unique(string.format("metinstone_1floor_%d", stone_idx), stone_vid); end -- for d.notice("<Bloody cathedral> You broke the spell! Destroy the stones!"); else game.drop_item(data["1floor_item_activate"], 1); d.setf("Halloween2022_canActivateSeal", 1); d.notice(string.format("<Bloody cathedral> Use the %s to build a part of %s!", item_name(data["1floor_item_activate"]), mob_name(data["1floor_seal_data"]["vnum_small"]))); end -- if end -- when --** --** Kill: Second part of first stone --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["1floor_stone_data"]["vnum_half"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canDestroySecondStone") == 1 begin local data = Halloween2022Dungeon.GetData(); local stone_data = data["1floor_stone_data"]; d.setf("1floor_stone_destroyed", d.getf("1floor_stone_destroyed")+1); if (d.getf("1floor_stone_destroyed") == 5) then d.setf("Halloween2022_canDestroySecondStone", 0); d.setf("Halloween2022_killFirstBoss", 1); Halloween2022Dungeon.SpawnFirstBoss(); end -- if end -- when --** --** Take: First floor Middle seal activation. --** when 9478.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_activate"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canActivateSeal") == 1 begin local data = Halloween2022Dungeon.GetData(); local seal_data = data["1floor_seal_data"]; item.remove(); d.setf("1floor_seal_state", d.getf("1floor_seal_state")+1); d.setf("Halloween2022_canActivateSeal", 0); d.setf("1floor_monsters", 1); d.spawn_mob_dir(seal_data["vnum_middle"], seal_data["pos"]["x"], seal_data["pos"]["y"], seal_data["pos"]["dir"]); npc.kill(); d.regen_file("data/dungeon/halloween2022_dungeon/1floor_monsters_1.txt"); end -- when --** --** Kill: First floor monsters. --** when kill with not npc.is_pc() and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("1floor_monsters") == 1 begin d.setf("1floor_killed", d.getf("1floor_killed") + 1); local data = Halloween2022Dungeon.GetData(); local wave_num = d.getf("1floor_waves_killed")+1; if (d.getf("1floor_killed") == data["1floor_to_kill"][wave_num]) then d.setf("1floor_killed", 0); d.setf("1floor_monsters", 0); d.setf("1floor_waves_killed", d.getf("1floor_waves_killed")+1); d.purge_area(data["inside_data"]["base"]["x"]*100, data["inside_data"]["base"]["y"]*100, (data["inside_data"]["base"]["x"]+8192)*100, (data["inside_data"]["base"]["y"]+16384)*100); d.notice(string.format("<Bloody cathedral> Wave n.%d vanquished.", wave_num)) if (d.getf("1floor_waves_killed") == 1) then d.setf("1floor_monsters", 1); d.regen_file("data/dungeon/halloween2022_dungeon/1floor_monsters_2.txt"); else game.drop_item(data["1floor_item_activate"], 1); d.setf("Halloween2022_canActivateSeal", 1); d.notice(string.format("<Bloody cathedral> You can now drag the %s onto the %s to destroy it.", item_name(data["1floor_item_activate"]), mob_name(data["1floor_seal_data"]["vnum_middle"]))) end -- if end -- if end -- when --** --** Take: First floor Final seal activation. --** when 9479.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_activate"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canActivateSeal") == 1 begin local data = Halloween2022Dungeon.GetData(); local seal_data = data["1floor_seal_data"]; local FirstBoss_data = data["1floor_fboss_data"]; item.remove(); d.setf("1floor_seal_state", d.getf("1floor_seal_state")+1); d.setf("Halloween2022_canActivateSeal", 0); d.setf("Halloween2022_killFirstBoss", 1); d.spawn_mob_dir(seal_data["vnum_full"], seal_data["pos"]["x"], seal_data["pos"]["y"], seal_data["pos"]["dir"]); npc.kill(); d.spawn_mob(FirstBoss_data["vnum"], FirstBoss_data["pos"]["x"], FirstBoss_data["pos"]["y"]); end -- when --** --** Take: First floor - Seal activation + second floor setting --** when 9480.take with item.get_vnum() == Halloween2022Dungeon.GetData()["1floor_item_activate"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 1 and d.getf("Halloween2022_canActivateSeal") == 1 begin local data = Halloween2022Dungeon.GetData(); item.remove(); d.kill_all(); local npc_data = data["2floor_calyx_data"]; local stone_vid = 0; for npc_idx, npc_pos in ipairs(npc_data["pos"]) do npc_vid = d.spawn_mob_dir(npc_data["vnum_empty"], npc_pos["x"], npc_pos["y"], npc_pos["dir"]); d.set_unique(string.format("2floor_npc%d", npc_idx), npc_vid); end -- for local BossData = data["2floor_fboss_data"] d.spawn_mob_dir(BossData["vnum"], BossData["pos"]["x"], BossData["pos"]["y"], BossData["pos"]["dir"]); d.setf("Halloween2022_floor", 2); d.setf("2floor_canKill_boss", 1); d.notice(string.format("<Bloody cathedral> Fill all %s with blood in exact order!", mob_name(npc_data["vnum_full"]))); d.notice(string.format("<Bloody cathedral> If you will try to fill wrong %s, you have to repeat the task!", mob_name(npc_data["vnum_full"]))); d.notice(string.format("<Bloody cathedral> Kill %s, to be able to fill the first one!", mob_name(BossData["vnum"]))); end -- when --** --** Kill: Second boss to get an item --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["2floor_fboss_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_canKill_boss") == 1 begin local data = Halloween2022Dungeon.GetData(); d.setf("2floor_canKill_boss", 0); d.setf("2floor_canFill_calyx", 1); game.drop_item(data["2floor_item"], 1); d.notice(string.format("<Bloody cathedral> You got a %s, let's fill up an %s now!", item_name(data["2floor_item"]), mob_name(data["2floor_calyx_data"]["vnum_empty"]))); end -- when --** --** Take: Second floor - filling calyxes --** when 9482.take with item.get_vnum() == Halloween2022Dungeon.GetData()["2floor_item"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_canFill_calyx") == 1 begin local data = Halloween2022Dungeon.GetData(); local npc_data = data["2floor_calyx_data"]; local stone_data = data["2floor_stone_data"] d.setf("2floor_canFill_calyx", 0); d.setf("2floor_calyx_filled", d.getf("2floor_calyx_filled")+1); item.remove(); if d.getf("2floor_calyx_filled") == 1 then d.setf("2floor_canDestroy_stone", 1); d.setf("2floor_stone_stage", 1); d.spawn_mob_dir(stone_data["vnum"], stone_data["pos"]["x"], stone_data["pos"]["y"], stone_data["pos"]["dir"]); d.notice(string.format("<Bloody cathedral> You filled up correct %s. Destroy %s now to proceed", mob_name(data["2floor_calyx_data"]["vnum_empty"]), mob_name(stone_data["vnum"]))); elseif d.getf("2floor_calyx_filled") == 2 then d.setf("2floor_monsters", 1); d.regen_file("data/dungeon/halloween2022_dungeon/2floor_monsters.txt"); d.notice("<Bloody cathedral> Kill all monsters to proceed!"); elseif d.getf("2floor_calyx_filled") == 3 then d.setf("2floor_canDestroy_stone", 2); d.regen_file("data/dungeon/halloween2022_dungeon/2floor_stones.txt"); d.notice(string.format("<Bloody cathedral> Destroy all %s to proceed!", mob_name(stone_data["vnum"]))); elseif d.getf("2floor_calyx_filled") == 4 then d.notice("<Bloody cathedral> You filled all calyxes. You summoned a mother of vampires! Mother of evil!"); d.notice("<Bloody cathedral> She is coming! Get ready!"); d.purge_area(data["inside_data"]["base"]["x"]*100, data["inside_data"]["base"]["y"]*100, (data["inside_data"]["base"]["x"]+8192)*100, (data["inside_data"]["base"]["y"]+16384)*100); server_timer("final_boss_spawn", data["2floor_final_boss_spawn"], d.get_map_index()); end -- if if npc.get_vid() == d.get_unique_vid("2floor_npc1") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][1]["x"], npc_data["pos"][1]["y"], npc_data["pos"][1]["dir"]); d.kill_unique("2floor_npc1"); elseif npc.get_vid() == d.get_unique_vid("2floor_npc2") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][2]["x"], npc_data["pos"][2]["y"], npc_data["pos"][2]["dir"]); d.kill_unique("2floor_npc2"); elseif npc.get_vid() == d.get_unique_vid("2floor_npc3") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][3]["x"], npc_data["pos"][3]["y"], npc_data["pos"][3]["dir"]); d.kill_unique("2floor_npc3"); elseif npc.get_vid() == d.get_unique_vid("2floor_npc4") then d.spawn_mob_dir(npc_data["vnum_full"], npc_data["pos"][4]["x"], npc_data["pos"][4]["y"], npc_data["pos"][4]["dir"]); d.kill_unique("2floor_npc4"); end -- if end -- when --** --** Kill: Second stone --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["2floor_stone_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 begin local data = Halloween2022Dungeon.GetData(); local stone_data = data["2floor_stone_data"] if d.getf("2floor_canDestroy_stone") == 1 then d.setf("2floor_canDestroy_stone", 0); d.setf("2floor_canFill_calyx", 1); game.drop_item(data["2floor_item"], 1); d.notice(string.format("<Bloody cathedral> You got a %s, let's fill up an %s now!", item_name(data["2floor_item"]), mob_name(data["2floor_calyx_data"]["vnum_empty"]))); elseif d.getf("2floor_canDestroy_stone") == 2 then d.setf("2floor_stone_count", d.getf("2floor_stone_count")+1); if (d.getf("2floor_stone_count") == stone_data["count_to_destroy"]) then d.setf("2floor_canDestroy_stone", 0); d.setf("2floor_canFill_calyx", 1); game.drop_item(data["2floor_item"], 1); end -- if end -- if end -- when --** --** Kill: Second floor - monsters --** when kill with not npc.is_pc() and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_monsters") == 1 begin d.setf("2floor_killed", d.getf("2floor_killed") + 1); local data = Halloween2022Dungeon.GetData(); if (d.getf("2floor_killed") == data["2floor_to_kill"]) then d.setf("2floor_killed", 0); d.setf("2floor_monsters", 0); d.setf("2floor_canFill_calyx", 1); d.purge_area(data["inside_data"]["base"]["x"]*100, data["inside_data"]["base"]["y"]*100, (data["inside_data"]["base"]["x"]+8192)*100, (data["inside_data"]["base"]["y"]+16384)*100); d.notice(string.format("<Bloody cathedral> You killed all monsters. Fill another %s.", mob_name(data["2floor_calyx_data"]["vnum_empty"]))); game.drop_item(data["2floor_item"], 1); end -- if end -- when --** --** Server Timer: Final boss spawn. --** when final_boss_spawn.server_timer begin if (d.select(get_server_timer_arg())) then local data = Halloween2022Dungeon.GetData(); local boss_data = data["2floor_finalboss_data"] d.setf("2floor_final_boss", 1); d.set_unique("FinalBoss", d.spawn_mob_dir(boss_data["vnum"], boss_data["pos"]["x"], boss_data["pos"]["y"], boss_data["pos"]["dir"])); end -- if end -- when --** --** Kill: Final boss --** when kill with npc.get_race() == Halloween2022Dungeon.GetData()["2floor_finalboss_data"]["vnum"] and Halloween2022Dungeon.InDungeon() and d.getf("Halloween2022_floor") == 2 and d.getf("2floor_final_boss") == 1 begin local data = Halloween2022Dungeon.GetData(); local chest_data = data["reward_chest"] if (data["time_out"] > 0) then clear_server_timer("halloween2022_dungeon_time_out", d.get_map_index()); end -- if if (d.getf("dungeon_members_tot") > 1) then --notice_all(string.format("[Dungeon Notice]: %s and their party have completed the `Bloody cathedral` in %s.", pc.get_name(), get_time_format(d.getf("completion_time") - d.getf("start_time")))) notice_all(" "..pc.get_name().." Completed the Bloody Cathedral.") d.setf("can_back_dungeon", 0) -- Deaktivieren else --notice_all(string.format("[Dungeon Notice]: %s has completed the `Bloody cathedral`%s in %s.", pc.get_name(), (data["enter_mode"] == 3 and " without a party" or ""), get_time_format(d.getf("completion_time") - d.getf("start_time")))) notice_all(" "..pc.get_name().." Completed the Bloody Cathedral.") d.setf("can_back_dungeon", 0) -- Deaktivieren end -- if/else if (data["entrance_timer"] > 0) then if (d.getf("dungeon_members_tot") > 1) then for _, pid in ipairs(party_get_member_pids()) do q.begin_other_pc_block(pid); -- pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); -- q.end_other_pc_block(); end -- for d.notice(string.format("<Bloody cathedral> Each one of you will be unable to re-enter the dungeon for %s.", get_time_format(data["entrance_timer"]))) else pc.setf("Halloween2022Dungeon_zone", "entrance_timer", get_time() + data["entrance_timer"]); d.notice(string.format("<Bloody cathedral> You will be unable to re-enter the dungeon for %s.", get_time_format(data["entrance_timer"]))) end -- if/else end -- if clear_dungeon(true); d.setf("2floor_final_boss", 0); d.setf("dungeon_complete", 1); d.spawn_mob_dir(chest_data["vnum"], chest_data["pos"]["x"], chest_data["pos"]["y"], chest_data["pos"]["dir"]); d.setf("can_back_dungeon", 0) -- Deaktivieren d.notice(string.format("<Bloody cathedral> You can take your reward by opening the %s.", mob_name(data["reward_chest"]["vnum"]))) d.notice(string.format("<Bloody cathedral> You will be teleported out of the dungeon in %s.", get_time_format(data["out_room"]))) server_timer("halloween2022_dungeon_out_room", data["out_room"], d.get_map_index()); end -- when when 9484.chat."Take reward" with Halloween2022Dungeon.InDungeon() and d.getf("dungeon_complete") == 1 begin local data = Halloween2022Dungeon.GetData(); local qf = string.format("reward_state_%d", pc.get_player_id()); if (d.getf(qf) == 1) then say_title(string.format("%s:[ENTER]", mob_name(npc.get_race()))) say_reward("You already got your reward.[ENTER]") return; end -- if d.setf(qf, 1); d.setf("can_back_dungeon", 0) -- Deaktivieren pc.give_item2(data["reward_data"]["vnum"], data["reward_data"]["quantity"]); setskin(NOWINDOW); end -- when --** --** Server Timer: Time expiration. --** when halloween2022_dungeon_time_out.server_timer begin if (d.select(get_server_timer_arg())) then local reg_time, cur_time = d.getf("dungeon_time_limit"), get_time(); if (reg_time <= cur_time) then clear_server_timer("halloween2022_dungeon_time_out", get_server_timer_arg()); d.notice("<Bloody cathedral> Time expired.") d.notice("<Bloody cathedral> You will be teleported out of the dungeon.") d.setf("can_back_dungeon", 0) -- Deaktivieren d.exit_all_lobby(); else d.notice(string.format("<Bloody cathedral> Time remaining: %s.", get_time_format(reg_time - cur_time))) end -- if/else end -- if end -- when --** --** Server Timer: Dungeon cleanup. --** when halloween2022_dungeon_out_room.server_timer begin if (d.select(get_server_timer_arg())) then d.notice("<Bloody cathedral> You are getting teleported out of the dungeon.") d.setf("can_back_dungeon", 0) -- Deaktivieren d.exit_all_lobby(); end -- if end -- when end -- state end -- quest
  4. sysr : dungeon_set_flag: not enough arguments. the dungeon doesn't work for me, does anyone know how to fix it? THX DEV
  5. my problem : Hello, I use fast mount, but when I drive, the monsters load slowly like lags mount folder i have /share/data/monster run.mse I have it set up well in both the client and the server THX
  6. can't install mysql 5.6 root@ambr:~ # cd /usr/ports/databases/mysql56-server root@ambr:/usr/ports/databases/mysql56-server # make install ===> mysql56-server-5.6.49 cannot install: unknown MySQL version: 56. *** Error code 1 Stop. make: stopped in /usr/ports/databases/mysql56-server root@ambr:/usr/ports/databases/mysql56-server # this command doesn't work either root@ambr:/usr/ports/databases/mysql56-server # pkg install mysql56-server mysql56-client Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. pkg: No packages available to install matching 'mysql56-server' have been found in the repositories pkg: No packages available to install matching 'mysql56-client' have been found in the repositories root@ambr:/usr/ports/databases/mysql56-server # i have FreeBsd12.2 THXX
  7. Game.py : [Hidden Content] the error appears when I open the game settings and it logs me out
  8. Syssr: 0526 00:01:09827 :: File "game.py", line 1407, in OnKeyUp 0526 00:01:09827 :: TypeError 0526 00:01:09827 :: : 0526 00:01:09827 :: 'NoneType' object has no attribute '__getitem__' 0526 00:01:09827 :: close failed in file object destructor: sys.excepthook is missing lost sys.stderr THX mt2dev
  9. I did it accordingly but the error is still the same solved you can close thx
  10. SYSSR: Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05D79770>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC42B0>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC46F0>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC4710>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC47F0>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC4890>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC48B0>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC48D0>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC48F0>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC4910>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC4930>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC4950>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC4990>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05FC49B0>> ignored Exception AttributeError: "'NoneType' object has no attribute '__del__'" in <bound method NumberLine.__del__ of <ui.NumberLine object at 0x05FC49D0>> ignored Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05D79850>> ignored close failed in file object destructor: sys.excepthook is missing lost sys.stderr thank you all
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.