Yardım pvp manager space sorunu

  • Konuyu açan Konuyu açan classone45
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 4
  • Gösterim Gösterim 107
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

classone45

Üye
Üye
Mesaj
168
Çözümler
5
Beğeni
14
Puan
449
Ticaret Puanı
0
Pvp turnuvasında sayaç bitmeden space basılarak oyuncunun yanına gidilebiliyor space engeli nasıl getiririm
 
rakibe göre düzenlenmesi lazım
nasıl yaparım

pvp_manager.lua:
Genişlet Daralt Kopyala
quest pvp_manager begin
    state start begin
        when 9006.chat."GM:PvP Turnuvasına Işınlan " with pc.is_gm() begin
            say("Haritaya gitmek istiyor musun?")
            say("")
            local a = select("Evet ", "Hayır ")
            if a == 1 then   
                pc.warp(2355200,2483200)
            end
        end

        when login with pc.get_map_index() == 28 and (pvp_attenders == nil or pvp_attenders[pvp_manager.get_my_attender_id()] == nil or (pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 1 and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 2)) begin
            if pvp_attenders == nil then
                -- pvp_manager.guard_check_position()
                timer("pvp_guard_1", 10)
                return
            end
            if pvp_attenders[pvp_manager.get_my_attender_id()] == nil then
                -- pvp_manager.guard_check_position()
                timer("pvp_guard_1", 10)
                return
            end
            if pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 1 and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != 2 then
                -- pvp_manager.guard_check_position()
                timer("pvp_guard_1", 10)
            end
        end
        when pvp_guard_1.timer begin
            if pc.get_map_index() != 26 then--26
                return
            end
            -- pvp_manager.guard_check_position()
            timer("pvp_guard_2", 10)
        end
        when pvp_guard_2.timer begin
            if pc.get_map_index() != 26 then--26
                return
            end
            -- pvp_manager.guard_check_position()
            timer("pvp_guard_1", 10)
        end
        -- function guard_check_position()
            -- if pc.get_local_x() >= 127 and pc.get_local_y() >= 118 and pc.get_local_x() <= 148 and pc.get_local_y() <= 118 then
                -- pvp_manager.guard_reset()
            -- end
            -- if pc.get_local_x() >= 112 and pc.get_local_y() >= 118 and pc.get_local_x() <= 92 and pc.get_local_y() <= 118 then
                -- pvp_manager.guard_reset()
            -- end
            -- if pc.get_local_x() >= 92 and pc.get_local_y() >= 149 and pc.get_local_x() <= 112 and pc.get_local_y() <= 149 then
                -- pvp_manager.guard_reset()
            -- end
            -- if pc.get_local_x() >= 129 and pc.get_local_y() >= 149 and pc.get_local_x() <= 144 and pc.get_local_y() <= 149 then
                -- pvp_manager.guard_reset()
            -- end
        -- end
        
        function guard_reset()
            notice_all(""..pc.get_name().." Arenadan uzaklaştırıldı!")
            pc.warp(344000,502500)
        end
        
        when 9006.chat."PvP Turnuvasına Katıl " with game.get_event_flag("pvp") == 1 begin
            if party.is_party() then
                setskin(NOWINDOW)
                syschat("Gruptayken giriş yapamazsınız.")
                return
            end
            say_title("PvP Turnuvasına Katıl:")
                say("Ne yapmak istiyorsun?")
                local s = select("PvP Arenasına Işınlan " , "Kapat " )
                if s == 1 then
                pc.warp(2367000,2487700)
                else return
            end
        end
        when 20369.chat."Turnuva Bölgesini Temizle " with pc.get_map_index() == 28 and pc.is_gm() begin   
            say_title("PvP Turnuvası : ")
            say("")
            say("Bölgeyi temizlemek istiyor musun?")
            say("")
            local temizle = select("Evet ", "Hayır ")
            if temizle == 1 then
                warp_all_to_village(28,10)
            end
        end
        when 20369.chat."GM: PvP Turnuvası İptal Et " with pc.get_map_index() == 28 and pc.is_gm() and game.get_event_flag("pvp") != 0 begin
            say_title("GM: PvP Turnuvası İptal Et:")
            say("PvP Turnuvası iptal etmek istiyormusun?")
            say("")
            local s = select("Evet ", "Hayır ")
            if s == 1 then
                game.set_event_flag("pvp", 0)
                pvp_attenders = nil
                notice_all("Turnuva sona ermiştir!")
                say_title("PvP Turnuvası iptal edildi!")
                say("PvP Turnuvası iptal edildi!")
                say("")
                if pvp_manager_callback != nil then
                    pvp_manager_callback()
                end
            end
        end
        
        when 20369.chat."GM: Sınıf Seçimi " with pc.get_map_index() == 28 and pc.is_gm() and game.get_event_flag("pvp") == 0 and ae_pvp_tournament == nil begin
            say("")
            say("Turnuva sınıfını seç.")
            say("")
            local sinif = select("Savaşçı ", "Ninja ", "Sura ", "Şaman ", "Karışık ", "Vazgeç ")
            if sinif == 1 then
                game.set_event_flag("pvp_sinif",1)
                say("Savaşçı sınıfı seçildi.")
            elseif sinif == 2 then
                game.set_event_flag("pvp_sinif",2)
                say("Ninja sınıfı seçildi.")
            elseif sinif == 3 then
                game.set_event_flag("pvp_sinif",3)
                say("Sura sınıfı seçildi.")
            elseif sinif == 4 then
                game.set_event_flag("pvp_sinif",4)
                say("Şaman sınıfı seçildi.")
            elseif sinif == 5 then
                game.set_event_flag("pvp_sinif",5)
                say("Karışık seçildi.")
            end
        end

        when 20369.chat."GM: PvP Turnuvasını başlat " with pc.get_map_index() == 28 and pc.is_gm() and game.get_event_flag("pvp") == 0 and ae_pvp_tournament == nil begin
            say_title("PvP Turnuvasını başlat:")
            if game.get_event_flag("pvp_sinif") == 0 then
                say("Önce sınıf seçimi yap.")
                return
            end
            say("Lütfen minimum level sınırını gir (Min: 15):")
            local str_min_level = input()
            say_title("PvP Turnuvasını başlat:")
            local min_level = tonumber(str_min_level)
            if min_level == nil then
                say("Numara girilmedi.")
                say("")
                return
            end
            if tonumber(str_min_level) < 15 then
                min_level = 15
            end
            say("Minimum level : "..tostring(min_level)..".")
            say("lütfen maksimum level sınırını gir:")
            local str_max_level = input()
            say_title("PvP Turnuvasını başlat:")
            local max_level = tonumber(str_max_level)
            if max_level == nil then
                say("Numara girilmedi.")
                say("")
                return
            end
            if tonumber(str_max_level) < min_level then
                say("Maks level min levelden yüksek olmalı.")
                say("")
                return
            end
            
            game.set_event_flag("pvp_minlevel", min_level)
            game.set_event_flag("pvp_maxlevel", max_level)
            
            say("Minimum Level: "..tostring(min_level).." olarak ayarlandı.")
            say("Maksimum Level: "..tostring(max_level).." olarak ayarlandı.")
            say("")
            local s = select("Başlat ", "İptal et ")
            if s == 2 then
                return
            end
            
            say_title("PvP Turnuvasını başlat:")
            say("")
            say("PvP Turnuvası başladı.")
            say("")
            say_reward("Level Limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel"))
            pvp_manager.open_registrations()
        end
        function open_registrations()
            game.set_event_flag("pvp", 1)
            attender_count = 0
            game.set_event_flag("pvp_tournament", get_global_time())
            pvp_attenders = nil
            pvp_attenders = { }
            
            arena = {
                        -- arena 1
                        {
                            { 127, 118 },
                            { 148, 118 },
                            0,
                            "SLEEPING",
                            0,
                        },
                        -- arena 2
                        {
                            { 112, 118 },
                            { 92, 118 },
                            0,
                            "SLEEPING",
                            0,
                        },
                        -- arena 3
                        {
                            { 92, 149 },
                            { 112, 149 },
                            0,
                            "SLEEPING",
                            0,
                        },
                        -- arena 4
                        {
                            { 129, 149 },
                            { 144, 149 },
                            0,
                            "SLEEPING",
                            0,
                        },
                    }
            
            
            notice_all("|cff00ff00PvP Turnuvası başlamıştır.")
            notice_all("|cff00ff00Katılmak için "..mob_name(9006).."'ile görüş.")
            local sinif = game.get_event_flag("pvp_sinif")
            local siniff = ""
            if sinif == 1 then
                siniff = "|cffffcc00Savaşçılar "
                notice_all(siniff.."|cff00ff00Arası Turnuva Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
            elseif sinif == 2 then
                siniff = "|cffffcc00Ninjalar "
                notice_all(siniff.."|cff00ff00Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
            elseif sinif == 3 then
                siniff = "|cffffcc00Suralar "
                notice_all(siniff.."|cff00ff00Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
            elseif sinif == 4 then
                siniff = "|cffffcc00Şamanlar "
                notice_all(siniff.."|cff00ff00Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
            elseif sinif == 5 then
                siniff = "|cffffcc00Karışık "
                notice_all("Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
            end
            
        end
        when 20369.chat."Turnuvaya Katıl " with pc.get_map_index() == 28 and game.get_event_flag("pvp") == 1 begin
            say_title(mob_name(20369)..":")
            if party.is_party() then
                say("Gruptayken giriş yapamazsınız.")
                return
            end
            local sinif = game.get_event_flag("pvp_sinif")
            if sinif == 1 then
                if pc.get_job() != 0 then
                    if pc.get_job() != 4 then
                        say("Sadece savaşçılar girebilir.")
                        return
                    end
                end
            elseif sinif == 2 then
                if pc.get_job() != 1 then
                    if pc.get_job() != 5 then
                        say("Sadece ninjalar girebilir.")
                        return
                    end
                end
            elseif sinif == 3 then
                if pc.get_job() != 2 then
                    if pc.get_job() != 6 then
                        say("Sadece suralar girebilir.")
                        return
                    end
                end
            elseif sinif == 4 then
                if pc.get_job() != 3 then
                    if pc.get_job() != 7 then
                        say("Sadece şamanlar girebilir.")
                        return
                    end
                end
            end
            if game.get_event_flag("pvp_tournament") == pc.getqf("pvp_tournament") then
                say("Turnuvaya zaten kayıt yaptırdın.")
                say("")
                return
            end
            if pc.get_level() < 15 then
                say("Levelin çok düşük.")
                say("")
                return
            end
            if pc.get_level() < game.get_event_flag("pvp_minlevel") or pc.get_level() > game.get_event_flag("pvp_maxlevel") then
                say("Levelin  "..game.get_event_flag("pvp_minlevel").." ile "..game.get_event_flag("pvp_maxlevel").." arasında olması gerekli.")
                say("")
                return
            end
            --Kendinize göre Düzenleyebilirsiniz Yazıları--
            say("Turnuvaya Hoşgeldin")
            say("Kayıt olmadan Okuyunuz  !")
            say("Silah değiştirmek ve Kaçmak yasaktır.")
            say("Kutsama ile Girmek Yasaktır elenirsin.")
            say("Turnuva Sırasında Video alınması önerilir.")
            say("Turnuva Sırasında Küfür aşalayıcı Kelimeler Kullanmayanız.")
            say("Kurallara Uyunuz Diskalife Edilirsiniz ")
            say("Başarılar dileriz")
            say_reward("Kayıt Ücreti : 15.000 Yang ")
            -- say_item_vnum(50027)
            local s = select("Evet, katılmak istiyorum ", "Hayır, Katılmak istemiyorum ")
            say_title(mob_name(20369)..":")
            if s == 1 then
                if pc.get_gold() < 150000 then   
                    say_title("PvP Turnuvası ")
                    say("")
                    say(150000-pc.get_gold().." yang eksiğin var.")
                    say("Paranı tamamlayınca turnuvaya girebilirsin.")
                    return
                end
                -- if pc.count_item(50027) < 1 then#----------- Kayıt itemi istiyorsanız Aktif edin burayı
                    -- say("Giriş itemin olmadan giremezsin.")
                    -- say_item_vnum(50027)
                    -- return
                -- end
                say("Başarıyla kayıt oldun sıra sana geldiginde seni arenaya gönderecegim.")
                say("Turnuva başladığında burda olmassan elenirsin.")
                say("İyi şanslar ")
                say("")
                
                pvp_attenders[attender_count+1] = {name = pc.getname(), level = pc.get_level(), partner = nil, winner = true, fight_mode = 0, arena = 0}
                pc.setqf("attender_id", attender_count+1)
                pc.setqf("pvp_tournament", game.get_event_flag("pvp_tournament"))
                attender_count = attender_count + 1
                pc.change_gold(-150000)
                -- pc.remove_item(50027,1)-deaktif
                
                if achievement_manager != nil then
                    achievement_manager.on_participatepvpevent()
                end
                
            elseif s == 2 then
                say("Çok zayıf gözüküyorsun evlat ")
                say("diğer oyunculara karşı hiç şansın olamaz.")
                say("")
            end
        end
        when 20369.chat." PvP Turnuvası için yapılmış kayıtlar " with pc.get_map_index() == 28 and pc.is_gm() and game.get_event_flag("pvp") == 1 begin
            say_title(" PvP Turnuvası ")
            say("Şuana kadar "..tostring(attender_count).." oyuncu kayıt oldu.")
            if ae_pvp_tournament != nil then
                say("")
                return
            end
            say(" Kayıtları kapamak istiyormusun? ")
            say("")
            local s = select("Kayıtları kapat ", "Kayıt olmaya devam etsinler ")
            if s == 1 then
                say_title("Kayıtları Kapat:")
                say("Kayıtlar kapandı.")
                say("")
                pvp_manager.close_registrations()
            end
        end
        
        function close_registrations()
            if attender_count == 0 then
                notice_all("Girişler kapandı , kayıt yaptıramazsın.")
                game.set_event_flag("pvp", 0)
                pvp_attenders = nil
                if pvp_manager_callback != nil then
                    pvp_manager_callback()
                end
                return
            end
            game.set_event_flag("pvp", 2)
            pvp_manager.make_duel_list()
            duel_list_index = 0
            playerless_mode = false
            notice_all("PvP Turnuvası başlıyor!")
            pvp_manager.refresh_arenas()
        end
        
        when 20369.chat."Şimdi kiminle düello yapacağım?" with pc.get_map_index() == 28 and game.get_event_flag("pvp") == 2 and game.get_event_flag("pvp_tournament") == pc.getqf("pvp_tournament") begin
            say_title(mob_name(20369)..":")
            if pvp_manager.get_duel_partner() == nil then
                say("Şuanda sana uygun aday yok.")
                say("Eğer sana uygun aday bulamazsak bir sonraki ")
                say("rounda geçeceksin.")
                return
            end
            say("Düello yapacağın kişi:")
            say("")
            say_reward(""..pvp_manager.get_duel_partner().."")
        end
        

        function make_duel_list()
            duel_list = { }
            local i = 0
            for ai = 1, attender_count, 1 do
                if pvp_attenders[ai] != nil and pvp_attenders[ai].partner == nil and pvp_attenders[ai].winner == true then
                    local partner_id = pvp_manager.findpartner(tostring(pvp_attenders[ai].name), pvp_attenders[ai].level)
                    if partner_id != nil then
                        pvp_attenders[ai].partner = tostring(pvp_attenders[partner_id].name)
                        pvp_attenders[partner_id].partner = tostring(pvp_attenders[ai].name)
                        duel_list[i] = {fighter_id1 = ai, fighter_id2 = partner_id}
                        i = i + 1
                    end
                end
            end
            
            for ai = 1, attender_count, 1 do
                if pvp_attenders[ai] != nil and pvp_attenders[ai].partner == nil and pvp_attenders[ai].winner == true then
                    local partner_id = pvp_manager.findpartner_for_partnerless(tostring(pvp_attenders[ai].name), pvp_attenders[ai].level)
                    if partner_id != nil then
                        pvp_attenders[ai].partner = tostring(pvp_attenders[partner_id].name)
                        pvp_attenders[partner_id].partner = tostring(pvp_attenders[ai].name)
                        duel_list[i] = {fighter_id1 = ai, fighter_id2 = partner_id}
                        i = i + 1
                    end
                end
            end
        end
        
        
        function findpartner(name, level)
            local closest_level = nil
            local partner_id = nil
            for ai = 1, attender_count, 1 do
                if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true and tonumber(pvp_attenders[ai].level) <= level + 30 and tonumber(pvp_attenders[ai].level) >= level - 30 and tostring(pvp_attenders[ai].name) != name and pvp_attenders[ai].partner == nil and pvp_manager.is_player_in_map(tostring(pvp_attenders[ai].name)) == true then
                    if closest_level == nil then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    elseif tonumber(pvp_attenders[ai].level) == tonumber(level) then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    elseif tonumber(level) < tonumber(closest_level) and tonumber(pvp_attenders[ai].level) < tonumber(closest_level) then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    elseif tonumber(level) > tonumber(closest_level) and tonumber(pvp_attenders[ai].level) > tonumber(closest_level) then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    end
                end
            end
            return partner_id
        end
        
        function findpartner_for_partnerless(name, level)
            local closest_level = nil
            local partner_id = nil
            for ai = 1, attender_count, 1 do
                if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true and tostring(pvp_attenders[ai].name) != name and pvp_attenders[ai].partner == nil and pvp_manager.is_player_in_map(tostring(pvp_attenders[ai].name)) == true then
                    if closest_level == nil then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    elseif pvp_attenders[ai].level == level then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    elseif tonumber(level) < tonumber(closest_level) and pvp_attenders[ai].level < closest_level then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    elseif tonumber(level) > tonumber(closest_level) and pvp_attenders[ai].level > closest_level then
                        closest_level = pvp_attenders[ai].level
                        partner_id = ai
                    end
                end
            end
            return partner_id
        end
        
        function is_player_in_map(name)
            if pc.getname() == name then
                return true
            end
            local myname = pc.getname()
            local target = find_pc_by_name(name)
            local t = pc.select(target)
            if pc.getname() == myname then
                pc.select(t)
                return false
            end
            pc.select(t)
            return true
        end
        
        
        when 20369.chat."GM: Arenayı Temizle" with pc.is_gm() and game.get_event_flag("pvp") == 2 begin
            for aArena = 1, 4, 1 do
                arena[aArena][3] = 0
                arena[aArena][4] = "SLEEPING"
            end
            pvp_manager.refresh_arenas()
        end
        

        
        when 20369.chat."GM: PvP Turnuva Ödülü " with pc.is_gm() and pc.get_map_index() == 28 begin
            say_title("Ödül:")
            say("Şuanki Ödül "..game.get_event_flag("pvp_price_count").."x "..item_name(game.get_event_flag("pvp_price_vnum")).." (vnum: "..game.get_event_flag("pvp_price_vnum")..")")
            say("")
            local s = select("Ödülü Değiştir " , "Kapat ")
            if s == 2 then
                return
            end
            say_title("Ödül:")
            say("Yeni ödülün kodunu gir:")
            say("")
            local vnum = input()
            say_title("Ödül:")
            say("Yeni ödülün adetini gir:")
            say("")
            local count = input()
            game.set_event_flag("pvp_price_count", count)
            game.set_event_flag("pvp_price_vnum", vnum)
            say_title("Ödül değiştirildi:")
            say("Ödül değiştirildi.")
            say("Yeni ödül : "..count.."x "..item_name(vnum).." (vnum: "..vnum..")")
        end
        
        function refresh_arenas()
            for aArena = 1, 4, 1 do
                if duel_list[duel_list_index] == nil then
                    if playerless_mode == true then
                        pvp_manager.init_next_round()
                    else
                        pvp_manager.fight_playerless()
                    end
                    return
                end
                if arena[aArena][3] == 0 then
                    arena[aArena][3] = 1
                    pvp_manager.fight_init(duel_list[duel_list_index].fighter_id1, duel_list[duel_list_index].fighter_id2, aArena)
                end
            end
        end
        

        function fight_init(pid1, pid2, arena_id)
            duel_list_index = duel_list_index + 1
            if pvp_manager.is_player_in_map(tostring(pvp_attenders[pid1].name)) == false then
                notice_all(""..tostring(pvp_attenders[pid1].name).." adlı oyuncu oyunda olmadığından diskalifiye edildi.", pc.get_map_index())
                pvp_attenders[pid1].winner = false
                pvp_attenders[pid2].partner = nil
                arena[arena_id][3] = 0
                pvp_manager.refresh_arenas()
                return
            end
            if pvp_manager.is_player_in_map(tostring(pvp_attenders[pid2].name)) == false then
                notice_all(""..tostring(pvp_attenders[pid2].name).." adlı oyuncu oyunda olmadığından diskalifiye edildi.", pc.get_map_index())
                pvp_attenders[pid2].winner = false
                pvp_attenders[pid1].partner = nil
                arena[arena_id][3] = 0
                pvp_manager.refresh_arenas()
                return
            end
            
            notice_all(tostring(pvp_attenders[pid1].name).." ve "..tostring(pvp_attenders[pid2].name).." 'nın düellosu birazdan başlayacak!", pc.get_map_index())

            
            pvp_attenders[pid1].fight_mode = 1
            pvp_attenders[pid2].fight_mode = 1
            pvp_attenders[pid1].arena = arena_id
            pvp_attenders[pid2].arena = arena_id
            
            pvp_manager.local_pc_warp(tostring(pvp_attenders[pid1].name), arena[arena_id][1][1], arena[arena_id][1][2])
            pvp_manager.local_pc_warp(tostring(pvp_attenders[pid2].name), arena[arena_id][2][1], arena[arena_id][2][2])

        end
        
        when login with pc.get_map_index() == 28 and game.get_event_flag("pvp") == 2 and pvp_manager.get_fight_mode() == 1 begin
            affect.add(apply.MOV_SPEED, -10000, 30)
            affect.add_collect(apply.STUN_PCT, 20, 60)
            -- affect.add_collect(apply.HP_REGEN, 5000, 30)
            -- affect.add_collect(apply.SP_REGEN, 5000, 30)
            pvp_manager.set_fight_mode(2)
            if arena[pvp_manager.get_arena()][3] == 2 then
                arena[pvp_manager.get_arena()][5] = 30
                loop_timer("fight_start_countdown", 1)
            else
                timer("partner_timeout", 40)
            end
            arena[pvp_manager.get_arena()][3] = 2
        end       
        
        when partner_timeout.timer begin
            if pvp_manager.is_player_in_map(pvp_manager.get_duel_partner()) == true or game.get_event_flag("pvp") != 2 or pvp_manager.get_fight_mode() != 2 then
                return
            end
            pvp_manager.set_fight_mode(3)
            if arena[pvp_manager.get_arena()][3] == 3 then
                return
            end
            arena[pvp_manager.get_arena()][3] = 3
            notice_all(pc.getname().." , "..pvp_manager.get_duel_partner().." karşısındaki düelloyu kaybetti!", pc.get_map_index())
            pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3
            pvp_attenders[pvp_manager.get_my_attender_id()].winner = true
            pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = false
            pc.warp_local(pc.get_map_index(), 12600, 4000)
        end

        when fight_start_countdown.timer begin
            if arena[pvp_manager.get_arena()][5] == -1 then
                return
            end
            local partner_vid = find_pc_by_name(pvp_manager.get_duel_partner())
            local my_vid = pc.get_vid()
            if arena[pvp_manager.get_arena()][5] == 0 then
                arena[pvp_manager.get_arena()][5] = -1
                pc.select(partner_vid)
                command("pvp "..my_vid)
                pc.select(my_vid)
                command("pvp "..partner_vid)
                notice_all(""..pc.getname().."  ile "..pvp_manager.get_duel_partner().."  arasındaki düello başladı!", pc.get_map_index())
                timer("fight_start_countdown_shutdown", 1)
            else
                pc.select(partner_vid)
                if math.mod(arena[pvp_manager.get_arena()][5], 5) == 0 then
                    if tostring(arena[pvp_manager.get_arena()][5]) == "30" then
                        local f = "pvp"
                        pc.setf(f,"block_item",0)
                        if pc.get_job() == 2 or pc.get_job() == 6 then
                            pc.setf(f,"block_cozme",1)
                        end
                        notice_all("[ Dikkat ]30 Saniye Sonra item Değiştirme Kapanacaktır...")
                        syschat("")
                    elseif tostring(arena[pvp_manager.get_arena()][5]) == "15" then
                        local f = "pvp"
                        pc.setf(f,"block_item",1)
                        if pc.get_job() == 2 or pc.get_job() == 6 then
                            pc.setf(f,"block_cozme",0)
                        end
                        -- notice_all("[ Dikkat ]30 Saniye Sonra item Değiştirme Kapanacaktır...")
                    end
                    syschat("Düello "..tostring(arena[pvp_manager.get_arena()][5]).." saniye içinde başlayacak.")
                end
                affect.add(apply.MOV_SPEED, -10000, 2)
                affect.add_collect(apply.STUN_PCT, 20, 60)
                pc.select(my_vid)
                if math.mod(arena[pvp_manager.get_arena()][5], 5) == 0 then
                    if tostring(arena[pvp_manager.get_arena()][5]) == "30" then
                        local f = "pvp"
                        pc.setf(f,"block_item",0)
                        -- notice_all("[ Dikkat ]30 Saniye Sonra item Değiştirme Kapanacaktır...")
                        syschat("")
                    elseif tostring(arena[pvp_manager.get_arena()][5]) == "15" then
                        local f = "pvp"
                        pc.setf(f,"block_item",1)
                        -- notice_all("[ Dikkat ]30 Saniye Sonra item Değiştirme Kapanacaktır...")
                    end
                    syschat("Düello "..tostring(arena[pvp_manager.get_arena()][5]).." saniye içinde başlayacak.")

                end
                affect.add(apply.MOV_SPEED, -10000, 2)
                affect.add_collect(apply.STUN_PCT, 20, 60)
                arena[pvp_manager.get_arena()][5] = arena[pvp_manager.get_arena()][5] - 1
            end
        end
        
        when fight_start_countdown_shutdown.timer begin
            cleartimer("fight_start_countdown")
        end
        
        when logout with game.get_event_flag("pvp") == 2 and pc.get_map_index() == 28 and pvp_manager.get_fight_mode() == 2 begin
            pvp_manager.set_fight_mode(3)
            arena[pvp_manager.get_arena()][3] = 3
            notice_all(""..pvp_manager.get_duel_partner().." , "..pc.getname().." Karşısındaki düelloyu kazandı ", pc.get_map_index())
            pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3
            pvp_attenders[pvp_manager.get_my_attender_id()].winner = false
            pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = true
            
            pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), 126, 40)
        end
        
        when kill with game.get_event_flag("pvp") == 2 and pc.get_map_index() == 28 and npc.is_pc() and pvp_manager.get_fight_mode() == 2 begin
            pvp_manager.set_fight_mode(3)
            if arena[pvp_manager.get_arena()][3] == 3 then
                return
            end
            arena[pvp_manager.get_arena()][3] = 3
            notice_all(""..pc.getname().." , "..pvp_manager.get_duel_partner().." Karşısındaki düelloyu kazandı ", pc.get_map_index())
            pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].fight_mode = 3
            pvp_attenders[pvp_manager.get_my_attender_id()].winner = true
            pvp_attenders[pvp_manager.get_attender_id_by_name(pvp_manager.get_duel_partner())].winner = false
            
            timer("fight_end", 5)
        end
        
        when fight_end.timer begin
            pc.warp_local(pc.get_map_index(), 12600, 4000)
            pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), 126, 40)
        end
        
        when letter with pc.get_map_index() == 28 and game.get_event_flag("pvp") == 2 and pvp_manager.get_fight_mode() == 3 begin
            pvp_manager.set_fight_mode(0)
            
            if pvp_attenders[pvp_manager.get_my_attender_id()].winner == true then
                arena[pvp_manager.get_arena()][3] = 0
                pvp_manager.refresh_arenas()
            end
        end
        
        function fight_playerless()
            for aArena = 1, 4, 1 do
                if arena[aArena][3] != 0 then
                    return
                end
            end
            playerless_mode = true

            
            pvp_manager.make_duel_list()
            pvp_manager.refresh_arenas()
        end
        
        function init_next_round()
            for aArena = 1, 4, 1 do
                if arena[aArena][3] != 0 then
                    return
                end
            end
            playerless_mode = false
            
            local winner_count = 0
            winner_id = 0
            for ai = 1, attender_count, 1 do
                pvp_attenders[ai].partner = nil
                pvp_attenders[ai].fight_mode = 0
                if pvp_attenders[ai] != nil and pvp_attenders[ai].winner == true then
                    winner_count = winner_count + 1
                    winner_id = ai
                end
            end
            
            if winner_count == 1 then
                notice_all(""..pvp_attenders[winner_id].name.." |cff00ff00Tüm rakiplerini mağlup ederek turnuvayı kazanmıştır")
                notice_all(""..pvp_attenders[winner_id].name.." ,"..game.get_event_flag("pvp_price_count").." TL "..item_name(game.get_event_flag("pvp_price_vnum")).." kazandı.")
                local target = find_pc_by_name(pvp_attenders[winner_id].name)
                local t = pc.select(target)
                
                if achievement_manager != nil then
                    achievement_manager.on_winpvpevent()
                end
                
                pc.give_item2(game.get_event_flag("pvp_price_vnum"), game.get_event_flag("pvp_price_count"))
                pc.select(t)
                notice_all("|cffff0000PvP Turnuvası sona ermiştir katılım sağlayan tüm oyuncularımıza teşekkür ederiz.")
                game.set_event_flag("pvp", 0)
                if pvp_manager_callback != nil then
                    pvp_manager_callback()
                end
                return
            end
            
            
            pvp_manager.make_duel_list()
            duel_list_index = 0
            if winner_count == 2 then
                notice_all("Final roundu başlıyor.")
            elseif winner_count <= 4 then
                notice_all("Yarı final roundu başlıyor.")
            else
                notice_all("Round başlıyor.")
            end
            pvp_manager.refresh_arenas()
        end
        
        when login with pc.get_map_index() != 28 begin
            local f = "pvp"
            pc.setf(f,"block_item",0)
            if pc.get_job() == 2 or pc.get_job() == 6 then
                pc.setf(f,"block_cozme",0)
            end
        end
        
        when login with pc.get_map_index() == 28 begin
            if pc.get_job() == 2 or pc.get_job() == 6 then
                local f = "pvp"
                pc.setf(f,"block_cozme",0)
            end
            if party.is_party() then
                local krallik = pc.get_empire()
                if krallik == 1 then
                    pc.warp(469300, 964200)
                elseif krallik == 2 then
                    pc.warp(55700, 157900)
                elseif krallik == 3 then
                    pc.warp(969600, 278400)
                end
            end
        end
        
        function local_pc_warp(name, x, y)
            local target = find_pc_by_name(name)
            local t = pc.select(target)
            if x == 126 and y == 40 then
                local f = "pvp"
                pc.setf(f,"block_item",0)
            end
            pc.warp_local(pc.get_map_index(), x*100, y*100)
            pc.select(t)
            if x == 126 and y == 40 then
                local f = "pvp"
                pc.setf(f,"block_item",0)
            end
        end
        
        function setqf_by_name(name, flag, value)
            local target = find_pc_by_name(name)
            local t = pc.select(target)
            pc.setqf(flag, value)
            pc.select(t)
        end
        
        function getqf_by_name(name, flag)
            local target = find_pc_by_name(name)
            local t = pc.select(target)
            local rflag = pc.getqf(flag)
            pc.select(t)
            return rflag
        end
        
        function get_attender_id_by_name(name)
            for ai = 1, attender_count, 1 do
                if tostring(pvp_attenders[ai].name) == name then
                    return ai
                end
            end
            return 0
        end
        
        function get_my_attender_id()
            return pvp_manager.get_attender_id_by_name(pc.get_name())
        end
        
        function get_duel_partner()
            if pvp_attenders[pvp_manager.get_my_attender_id()] != nil and pvp_attenders[pvp_manager.get_my_attender_id()].partner != nil then
                return pvp_attenders[pvp_manager.get_my_attender_id()].partner
            else
                return nil
            end
        end
        
        function get_fight_mode()
            if pvp_attenders != nil and pvp_manager.get_my_attender_id() != 0 and pvp_attenders[pvp_manager.get_my_attender_id()] != nil and pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode != nil then
                return pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode
            else
                return 0
            end
        end
        
        function set_fight_mode(fmode)
            pvp_attenders[pvp_manager.get_my_attender_id()].fight_mode = fmode
        end
        
        function get_arena()
            return pvp_attenders[pvp_manager.get_my_attender_id()].arena
        end
        
        function set_arena(id)
            pvp_attenders[pvp_manager.get_my_attender_id()].arena = id
        end

        
        
    end
end
 
Geri
Üst