Slender_Man 173 Posted March 27, 2015 Translate: gameforge.dragon_lair_access = {}gameforge.dragon_lair_access._010_npcChat = " Templo do Dragão Azúl "gameforge.dragon_lair_access._020_say = "[ENTER]Você não é o primeiro a vir aqui.[ENTER]digite o código secreto e eu deixo você entrar! "gameforge.dragon_lair_access._030_say = "[ENTER]Este número está incorreto. "gameforge.dragon_lair_access._040_select = " Tentar outra vez. "gameforge.dragon_lair_access._050_say = "[ENTER]Dentro do templo você não tem nenhuma proteção.[ENTER]Você precisa ter o número exato de chaves para poder[ENTER]assim, subir até o templo do dragão.[ENTER]Você precisa digitar um código secreto.[ENTER]E passar esse código para seus amigos dentro de 5 minutos.[ENTER]Você irá encontrar seus amigos dentro do templo.[ENTER]São somentes 60 minutos para derrotar o dragão!"gameforge.dragon_lair_access._060_select = " Entrar "gameforge.dragon_lair_access._070_say = "[ENTER]Digite o código: "gameforge.dragon_lair_access._080_say = "[ENTER]O código pode conter apenas números. "gameforge.dragon_lair_access._090_notice = "[Templo do Dragão] %s e seu grupo estão tentando derrotar o dragão! "gameforge.dragon_lair_access._100_say = "[ENTER]Você não pode entrar na sala![ENTER]Precisa ter chave elo perdido. "gameforge.dragon_lair_access._105_say = "[ENTER]E necessário: "gameforge.dragon_lair_access._110_npcChat = "Sair deste lugar! "gameforge.dragon_lair_access._115_say = "[ENTER]Quero voltar para entrada da caverna. "gameforge.dragon_lair_access._116_select = "Sim "gameforge.dragon_lair_access._117_select = "Não "gameforge.dragon_lair_access._120_say = "[ENTER]Outro grupo está tentando matar o dragão.[ENTER]Você tem que esperar um tempo, até que você possa entrar no templo. "gameforge.dragon_lair_access._130_say = "[ENTER]Vou levá-lo diretamente para a sala de dragão.[ENTER]Boa Sorte! "gameforge.dragon_lair_access._140_select = "Entrar "gameforge.dragon_lair_access._145_notice = "%s, Você tem 5 minutos para passar o código ao seus amigos. "gameforge.dragon_lair_access._150_notice = "O Dragão de Água ainda está vivo! "gameforge.dragon_lair_access._160_notice = "O Dragão de Água renasceu novamente! "gameforge.dragon_lair_access._165_sendLetter = "Derrotar Dragão de Água. "gameforge.dragon_lair_access._170_notice = "Vocês tem %d minutos para derrotar o dragão! "gameforge.dragon_lair_access._180_notice = "[Templo do Dragão] %s e seu grupo derrotaram o dragão! "gameforge.dragon_lair_access._190_npcChat = "Quero voltar ao templo do dragão. " Quest: quest dragon_lair_access begin state start begin function get_settings() local settings = {} settings.cooldown_time = 3600 -- when can the dragon be killed again? settings.group_time = 300 -- how long can players enter after the first one is in the dragon's lair? settings.access_item = 30179 -- "Dragon God Symbols" settings.dragon_vnum = 2430 settings.spawn = {} settings.spawn.x = 181 settings.spawn.y = 173 settings.warp_in = {} settings.warp_in.first = {} settings.warp_in.last = {} settings.warp_in.first.x = 843677 settings.warp_in.first.y = 1066206 settings.warp_in.last.x = 844027 settings.warp_in.last.y = 1067599 settings.warp_out = {} settings.warp_out.first = {} settings.warp_out.last = {} settings.warp_out.first.x = 9200 settings.warp_out.first.y = 1206400 settings.warp_out.last.x = 10900 settings.warp_out.last.y = 1209100 settings.room_area = {} settings.room_area.first = {} settings.room_area.last = {} settings.room_area.first.x = 833000 settings.room_area.first.y = 1062500 settings.room_area.last.x = 844100 settings.room_area.last.y = 1071500 settings.access_item_amount = game.get_event_flag("dragon_lair_amount") if (settings.access_item_amount == 0) then settings.access_item_amount = 3 -- default value when event flag is not set elseif (settings.access_item_amount == -1) then settings.access_item_amount = 0 -- no dragon marks needed when event flag -1 (special case) end return settings end function get_random_point(area_coordinates) return math.random(area_coordinates.first.x, area_coordinates.last.x), math.random(area_coordinates.first.y, area_coordinates.last.y) end function warp_to_lair() local settings = dragon_lair_access.get_settings() local x, y = dragon_lair_access.get_random_point(settings.warp_in) char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' WARPTOLAIR: x:'.. x ..', y:' .. y) pc.warp(x,y) end function warp_from_lair() local settings = dragon_lair_access.get_settings() local x, y = dragon_lair_access.get_random_point(settings.warp_out) char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' WARPFROMLAIR: x:'.. x ..', y:' .. y) pc.warp(x,y) end function warp_all_from_lair() local settings = dragon_lair_access.get_settings() warp_all_in_area_to_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y, settings.warp_out.first.x, settings.warp_out.first.y, settings.warp_out.last.x, settings.warp_out.last.y) game.set_event_flag("dragon_lair_alive", 0) -- dragon is dead char_log(0, 'LAIR', 'WARP ALL') end function get_time_remaining() local settings = dragon_lair_access.get_settings() return (game.get_event_flag("dragon_lair_time") + settings.cooldown_time - get_global_time()) end function give_item_to_ghost() local settings = dragon_lair_access.get_settings() say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._130_say) say(settings.access_item_amount.."x: ") say_item_vnum(settings.access_item) local give_item = select(gameforge.dragon_lair_access._140_select, gameforge.locale.cancel) if give_item == 1 then pc.remove_item(settings.access_item, settings.access_item_amount) char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' GIVE ITEM') return true else return false end end function show_time_remaining(time_remaining) q.set_title(gameforge.dragon_lair_access._165_sendLetter) send_letter(gameforge.dragon_lair_access._165_sendLetter) q.set_clock(gameforge.locale.monkey_dungeon.quest_rest_time, time_remaining) timer("dragon_lair_timer", time_remaining) notice_multiline(string.format(gameforge.dragon_lair_access._170_notice, time_remaining / 60), notice) q.start() end when enter or login begin pc.setqf("is_leader", 0) q.done() if pc.get_map_index() == 208 and not pc.is_gm() then dragon_lair_access.warp_from_lair() end end when blue_dragon_timer.server_timer begin game.set_event_flag("dragon_lair_timer_used", 0) if game.get_event_flag("dragon_lair_alive") == 1 then notice_multiline(gameforge.dragon_lair_access._150_notice, notice_all) else notice_multiline(gameforge.dragon_lair_access._160_notice, notice_all) end dragon_lair_access.warp_all_from_lair() end when 30121.chat.gameforge.dragon_lair_access._010_npcChat with pc.get_map_index() != 208 begin local starttime = game.get_event_flag("dragon_lair_time") local current_time = get_global_time() local settings = dragon_lair_access.get_settings() local time_remaining = dragon_lair_access.get_time_remaining() if pc.count_item(settings.access_item) >= settings.access_item_amount then if starttime + settings.group_time >= current_time then local password_input; repeat say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._020_say) password_input = tonumber(input()) if password_input != game.get_event_flag("dragon_lair_password") then say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._030_say) local again = select(gameforge.dragon_lair_access._040_select, gameforge.locale.cancel) if again == 2 then return end end until password_input == game.get_event_flag("dragon_lair_password") if not dragon_lair_access.give_item_to_ghost() then return end -- right password pc.setqf("time", starttime) dragon_lair_access.warp_to_lair() set_state(kill_dragon) elseif time_remaining < 0 and npc.lock() then -- it is the first player talking with the ghost say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._050_say) local abort = select(gameforge.dragon_lair_access._060_select, gameforge.locale.cancel) if abort == 2 then npc.unlock() return end local password_number; repeat say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._070_say) password_number = tonumber(input()) local again; if type(password_number) != 'number' then say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._080_say) again = select(gameforge.dragon_lair_access._040_select, gameforge.locale.cancel) if again == 2 then npc.unlock() return end end until type(password_number) == 'number' if not dragon_lair_access.give_item_to_ghost() then npc.unlock() return end if dragon_lair_access.get_time_remaining() > 0 then pc.give_item2(settings.access_item, settings.access_item_amount) npc.unlock() say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._120_say) return end pc.setqf("password", password_number) timer("dragon_lair_warptimer", pc.get_channel_id()*2) npc.unlock() else say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._120_say) return end else say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._100_say) say(gameforge.dragon_lair_access._105_say) say(settings.access_item_amount.."x: ") say_item_vnum(settings.access_item) return end end when 30121.chat.gameforge.dragon_lair_access._110_npcChat with pc.get_map_index() == 208 begin say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._115_say) local warp = select(gameforge.dragon_lair_access._116_select, gameforge.dragon_lair_access._117_select) if warp == 1 then dragon_lair_access.warp_from_lair() -- so that GMs get ported out, too set_state(start) end end when dragon_lair_warptimer.timer begin local settings = dragon_lair_access.get_settings() if dragon_lair_access.get_time_remaining() < 0 then local starttime = get_global_time() game.set_event_flag("dragon_lair_time", starttime) -- set start time char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' SET STARTTIME: ' .. starttime) pc.setqf("time", starttime) pc.setqf("is_leader", 1) game.set_event_flag("dragon_lair_password", pc.getqf("password")) -- set password char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' SET PASSWORD: '.. pc.getqf("password")) server_timer("blue_dragon_timer", settings.cooldown_time) dragon_lair_access.warp_to_lair() set_state(spawn_dragon) else pc.give_item2(settings.access_item, settings.access_item_amount) say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._120_say) end pc.setqf("password", 0) end end state spawn_dragon begin when login begin local settings = dragon_lair_access.get_settings() purge_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y) notice_multiline(string.format(gameforge.dragon_lair_access._090_notice, pc.name), notice_all) -- spawn all mobs needed regen_in_map(208, "locale/turkey/map/metin2_map_skipia_dungeon_boss/regen.txt") mob.spawn_group(settings.dragon_vnum, settings.spawn.x, settings.spawn.y, 1, 1, 1) -- spawn the dragon game.set_event_flag("dragon_lair_alive", 1) -- dragon is alive char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' SPAWN DRAGON') notice_multiline(string.format(gameforge.dragon_lair_access._145_notice, game.get_event_flag("dragon_lair_password")), notice) dragon_lair_access.show_time_remaining(settings.cooldown_time) set_state(kill_dragon) end when 30121.chat.gameforge.dragon_lair_access._110_npcChat with pc.get_map_index() == 208 begin say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._115_say) local warp = select(gameforge.dragon_lair_access._116_select, gameforge.dragon_lair_access._117_select) if warp == 1 then dragon_lair_access.warp_from_lair() set_state(start) end end end state kill_dragon begin when dragon_lair_timer.timer begin set_state(start) end when login begin if pc.getqf("time") != game.get_event_flag("dragon_lair_time") or dragon_lair_access.get_time_remaining() <= 0 then set_state(start) else dragon_lair_access.show_time_remaining(dragon_lair_access.get_time_remaining()) end end when button or info begin notice_multiline(string.format(gameforge.dragon_lair_access._170_notice, dragon_lair_access.get_time_remaining() / 60), notice) local settings = dragon_lair_access.get_settings() if (pc.getqf("is_leader") == 1 and settings.cooldown_time-dragon_lair_access.get_time_remaining() < settings.group_time) then notice_multiline(string.format(gameforge.dragon_lair_access._145_notice, game.get_event_flag("dragon_lair_password")), notice) end end when 30121.chat.gameforge.dragon_lair_access._110_npcChat with pc.get_map_index() == 208 begin say_title(gameforge.ghost_story._010_sayTitle) say(gameforge.dragon_lair_access._115_say) local warp = select(gameforge.dragon_lair_access._116_select, gameforge.dragon_lair_access._117_select) if warp == 1 then dragon_lair_access.warp_from_lair() set_state(start) end end when 20009.chat.gameforge.dragon_lair_access._190_npcChat or 9012.chat.gameforge.dragon_lair_access._190_npcChat or 30121.chat.gameforge.dragon_lair_access._190_npcChat with pc.get_map_index() != 208 begin if pc.getqf("time") > 0 and pc.getqf("time") == game.get_event_flag("dragon_lair_time") then dragon_lair_access.warp_to_lair() else say_title(gameforge.neutral_warp._20_sayTitle) say(gameforge.dragon_lair_access._120_say) set_state(start) end end when kill begin if npc.get_race() == 2493 and pc.get_map_index() == 208 then char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' DRAGON KILLED') game.set_event_flag("dragon_lair_alive", 0) -- dragon is dead game.drop_item_with_ownership(71123, 1) -- dropping dragon scale game.drop_item_with_ownership(71129, 1) -- dropping toe nail notice_multiline(string.format(gameforge.dragon_lair_access._180_notice, pc.name), notice_all) -- the dragon has been killed by <name>! local settings = dragon_lair_access.get_settings() purge_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y) end end endend 1 andersonsg reacted to this Share this post Link to post Share on other sites