
quest
PHP Code:
quest moon_dragon_zone begin
state start begin
function setting()
return
{
["map_index"] = 402,
["ticket_vnum"] = 50152,
["dungeon_entry_pos"] = {21099, 16237},
["boss1"] = 8051,
["boss2"] = 269,
["spawn"] = {410, 385},
}
end
function make_dungeon(ld_vid, channel)
local setting = moon_dragon_zone.setting()
local event_flag = string.format("moon_dungeon_status_%d", channel)
game.set_event_flag(event_flag, get_time() + 60 * 5)
d.new_jump_party(setting.map_index, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
d.setf("moon_party_leader_pid", ld_vid)
party.setf("moon_dungeon_index", d.get_map_index())
d.spawn_mob(setting.boss1, setting.spawn[1], setting.spawn[2])
clear_server_timer("moon_2h_left_timer", get_server_timer_arg())
clear_server_timer("moon_exit_timer", get_server_timer_arg())
server_timer("moon_2h_left_timer", 60 * 5, d.get_map_index())
end
when login begin
local idx = pc.get_map_index()
local setting = moon_dragon_zone.setting()
if idx >= (setting.map_index * 10000) and idx < (setting.map_index * 10000 + 10000) then
pc.setf("moon_drugan", "limit_moon_activity", 0)
if pc.getqf("moon_enter") > 0 then
pc.setqf("moon_enter", 0)
return
end
pc.warp(1090300, 1784000)
end
end
when logout begin
local idx = pc.get_map_index()
local setting = moon_dragon_zone.setting()
if idx >= (setting.map_index * 10000) and idx < (setting.map_index * 10000 + 10000) then
pc.setqf("exit_time_logout", get_global_time() + 5 * 60)
if pc.getqf("moon_enter") > 0 then
pc.setqf("moon_enter", 0)
end
pc.setf("moon_drugan", "limit_moon_activity", get_time() + 5 * 60)
end
end
when 8051.kill with pc.in_dungeon() begin
local setting = moon_dragon_zone.setting()
d.spawn_mob(setting.boss2, setting.spawn[1], setting.spawn[2])
d.notice(" لقد قمت بتدمير ماتين الغم, واستدعاء التنين. ")
end
when 269.kill with pc.in_dungeon() begin
local setting = moon_dragon_zone.setting()
d.set_warp_location(202, 11043, 17885)
d.notice(" رائع,لقد استطعت هزيمة تنين القمر واحلال السلام في الكهف! ")
d.notice(" سيتم نقلك خارج الكهف خلال ثوان. ")
notice_multiline(string.format(" مجموعة %s نجحت في قتل تنين القمر ونشر السلام في المنطقة! ", pc.name), notice_all)
server_timer("moon_exit_timer", 300, d.get_map_index())
end
when moon_2h_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.set_warp_location(202, 11043, 17885)
d.notice(" لقد انتهى الوقت,ولم تستطع قتل التنين! ")
server_timer("moon_exit_timer", 5, get_server_timer_arg())
end
end
when moon_exit_timer.server_timer begin
if d.select(get_server_timer_arg()) then
clear_server_timer("moon_exit_timer", get_server_timer_arg())
clear_server_timer("moon_2h_left_timer", get_server_timer_arg())
d.setf("moon_party_leader_pid", 0)
d.exit_all()
end
end
when 20413.chat." كهف تنين القمر " begin
local setting = moon_dragon_zone.setting()
say_title(mob_name(20413))
say("")
say(" هل تريد ان تحارب ضد تنين القمر؟ ")
local agree = select(" نعم ", " لا ")
if agree == 1 then
say_title(mob_name(20413))
say("")
if not party.is_party() then
say(" لتستطيع الدخول للكهف يجب ان تكون ضمن ")
say(" اعضاء المجموعة. ")
return
end
local party_check = 0
if d.find(party.getf("moon_dungeon_index")) then
party_check = (d.getf_from_map_index("moon_party_leader_pid", party.getf("moon_dungeon_index")) == party.get_leader_pid())
end
if d.find(party.getf("moon_dungeon_index")) and party_check then
if get_global_time() > pc.getqf("exit_time_logout") then
say(" لسوء الحظ, لقد اتيت متأخرا, عد الي ")
say(" بعد 5 دقائق.")
return
end
pc.setf("moon_dragon_zone", "moon_enter", 1)
say(" سيتم نقلك الي مجموعتك. ")
say("")
wait()
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("moon_dungeon_index"))
end
local event_flag = string.format("moon_dungeon_status_%d", pc.get_channel_id())
if game.get_event_flag(event_flag) > get_time() then
local next_time = (game.get_event_flag(event_flag) - get_time())
say(" ان المدخل مغلق الأن. ")
if next_time < 60 then
say(string.format(" حاول مجددا بعد %d ثانية(s).", tonumber(next_time)))
else
say(string.format(" حاول مجددا بعد %d دقيقة(s).", tonumber(next_time / 60)))
end
return
end
if not party.is_leader() then
say(" يجب ان تكون قائد المجموعة, ")
say(" لتستطيع الدخول الى الكهف. ")
return
end
if party.get_near_count() < 2 then
say(" يجب ان يرافقك لاعب في المجموعة على الاقل, ")
say(" لتستطيع الدخول الى الكهف. ")
return
end
local pids = {party.get_member_pids()}
local ticketCheck = true
local notEnoughTicketMembers = {}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
if pc.count_item(setting.ticket_vnum) < 1 then
table.insert(notEnoughTicketMembers, pc.get_name())
ticketCheck = false
end
q.end_other_pc_block()
end
if not ticketCheck then
say(" لتستطيع الدخول الي الغرفة يجب ")
say(string.format(" ان يمتلك كل عضو من المجموعة %s.", item_name(setting.ticket_vnum)))
say("")
say(" الاعضاء الأتيين لا يمتكلون الأداة:")
for i, name in next, notEnoughLevelMembers, nil do
say("- "..name.."")
end
return
end
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
pc.remove_item(setting.ticket_vnum, 1)
pc.setf("moon_dragon_zone", "moon_enter", 1)
q.end_other_pc_block()
end
say(" استعد, سيتم نقلك برفقة اعضاء المجموعة, ")
say(" الى داخل, كهف تنين القمر. ")
wait()
moon_dragon_zone.make_dungeon(party.get_leader_pid(), pc.get_channel_id())
end
end
end
end






