- الرئيسية
-
خيارات سريعة
خيارات سريعة

-----------------------
quest dragon_lair_access begin
state start begin
function get_settings()
local settings = {}
settings.cooldown_time = 2600 -- الوقت المخصص لقتل التنين - المدة ساعة
settings.group_time = 300 -- الوقت المخصص لإعطاء كلمة السر - المدة 5 دقائق
settings.access_item = 30179 -- مفتاح دائري
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
elseif (settings.access_item_amount == -1) then
settings.access_item_amount = 0
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() -- الدالة المخصصة لنقل اللاعب داخل غرفة التنين 1-2
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() -- الدالة المخصصة لنقل اللاعب خارج غرفة التنين 1-2
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)
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(" شبح سورا : [ENTER] ")
say(" سأنقلك فوراً إلى كهف التنين إذا كنت تود ذلك ")
say(" لكن عليك أولاً إعطائي 3x مفتاح دائري للدخول [ENTER] ")
say_item_vnum(settings.access_item)
local give_item = select(" خذ ودعني الآن أدخل "," لا أود ذلك الآن (إلغاء) ")
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(" يهزم التنين الأزرق ")
send_letter(" يهزم التنين الأزرق ")
q.set_clock(" الوقت المتبقي ", time_remaining)
timer("dragon_lair_timer", time_remaining)
notice_multiline(string.format(" لم يتبقى سوى %d دقائق لقتل التنين الأزرق ", 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(" التنين الأزرق لا يزال متعب ", notice_all)
else
notice_multiline(" لقد عاد التنين الأزرق ", notice_all)
end
dragon_lair_access.warp_all_from_lair()
end
when 30128.chat." إنني أرغب في قتل التنين! " with pc.get_map_index() != 208 begin
local name_npc = npc.get_race()
local title = mob_name(name_npc)
--
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
repeat
if not dragon_lair_access.give_item_to_ghost() then
return
end
pc.setqf("time", starttime)
dragon_lair_access.warp_to_lair()
set_state(kill_dragon)
elseif time_remaining < 0 and npc.lock() then
say_title(" "..title.." : [ENTER] ")
say(" إنك أول من يطلب مني السماح له بالدخول لمعبد التنين ")
say(" سوف أسمح لك بالدخول بمجرد توفرك على مايكفي من ")
say(" المفاتيح الدائرية، ويجب عليك قبلها أن تحدد رقماً سرياً ")
say(" يمكنك أن تمنحه لرفاقك في غضون 5 دقائق لكي يتمكنو ")
say(" هم أيضاً من دخول المعبد لمساعدتك بقتل بيران-سيتاو [ENTER] ")
say(" ولكن تذكر، بأن مفعول المفاتيح يدوم لمدة 60 دقيقة فقط ")
say(" ويجب أثنائها أن تنجح أنت ورفاقك في تصفية التنين الأزرق[ENTER] ")
local abort = select(" أنا مستعد "," إلغاء (أغلق) ")
if abort == 2 then
npc.unlock()
return
end
else
say_title(" "..title.." : [ENTER] ")
say(" المعذرة! إنك لا تملك مايكفي من المفاتيح الدائرية ")
say(" فإنني بحاجة إلى x3 مفاتيح من أجل تفعيل البوابة[ENTER] ")
say_item_vnum(settings.access_item)
say(" ستحصل عليه من الزعماء الأشرار يونغان وهواشين[ENTER] ")
return
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(" تحاول مجموعة %s قتل التنين الأزرق ", pc.name), notice_all)
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)
game.set_event_flag("dragon_lair_alive", 1)
char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' SPAWN DRAGON')
dragon_lair_access.show_time_remaining(settings.cooldown_time)
set_state(kill_dragon)
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(" لم يتبقى سوى %d دقائق لقتل التنين الأزرق ", 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(" لديك 5 دقائق لإرسال الرقم السري %s ", game.get_event_flag("dragon_lair_password")), notice)
end
end
when 2493.kill with pc.get_map_index() == 208 begin
char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' DRAGON KILLED')
game.set_event_flag("dragon_lair_alive", 0)
game.drop_item_with_ownership(71123, 1)
game.drop_item_with_ownership(71129, 1)
notice_multiline(string.format(" لقد نجحت مجموعة %s في قتل التنين الأزرق ", pc.name), notice_all)
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
end
المشاركة الأصلية كتبت بواسطة: Quest
حط الكويست الاصلي لانه اي مسافة او حرف غلط ما يشتغل
المشاركة الأصلية كتبت بواسطة: 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/_master/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 2493.kill with pc.get_map_index() == 208 begin
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
end
| الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع :1(0عضو و1ضيف) |
| ضيف، |
جميع مايطرح في المنتدى لا يعبر بالضرورة عن رأي إدارة المنتدى، وانما يعبر عن رأي كاتبه، ولذلك تتخلى إدارة المنتدى مسؤوليتها عما يطرح فيه من آراء وتوصيات او أي اتفاق بين الأعضاء.
© 2022 جميع الحقوق محفوظة لـ منظمة قانون التطور | يعمل بواسطة Pbboard