A real problem

02/19/2019 09:26 KYUUBISAz#1
[Only registered and activated users can see links. Click Here To Register...]



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 
02/19/2019 19:22 andii#2
Please use our collection thread for requests like that:
[Only registered and activated users can see links. Click Here To Register...]

#closed