İçindekiler

    state start begin
    when 30122.chat."GM:PvP Turnuvasına Işınlan " with pc.is_gm() begin
    say("Haritaya gitmek istiyor musun?")
    say("")
    local a = select(locale.yes,locale.no)
    if a == 2 then return end
    pc.warp(95700,28500)
    --pc.warp(844800,00)
    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
    --when login with pc.get_map_index() == 112 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() != 28 then return end
    --if pc.get_map_index() != 112 then return end
    pvp_manager.guard_check_position()
    timer("pvp_guard_2", 10)
    end
    when pvp_guard_2.timer begin
    if pc.get_map_index() != 28 then return end
    --if pc.get_map_index() != 112 then return end
    pvp_manager.guard_check_position()
    timer("pvp_guard_1", 10)
    end
    function guard_check_position()
    if pc.get_local_x() >= 84 and pc.get_local_y() >= 84 and pc.get_local_x() <= 116 and pc.get_local_y() <= 116 then --arena 1
    pvp_manager.guard_reset()
    end
    if pc.get_local_x() >= 84 and pc.get_local_y() >= 136 and pc.get_local_x() <= 116 and pc.get_local_y() <= 168 then --arena 2
    pvp_manager.guard_reset()
    end
    if pc.get_local_x() >= 136 and pc.get_local_y() >= 84 and pc.get_local_x() <= 168 and pc.get_local_y() <= 116 then --arena 3
    pvp_manager.guard_reset()
    end
    if pc.get_local_x() >= 136 and pc.get_local_y() >= 136 and pc.get_local_x() <= 168 and pc.get_local_y() <= 168 then --arena 4
    pvp_manager.guard_reset()
    end
    end

    function guard_reset()
    notice_in_map(""..pc.get_name().." Arenadan uzaklaştırıldı!")
    pc.warp(344000,502500)
    end

    when 30122.chat."PvP Turnuvasına Katıl " with game.get_event_flag("pvp") == 1 begin
    say_title("PvP Turnuvasına Katıl:")
    say("Ne yapmak istiyorsun?")
    local s = select("PvP Arenasına Işınlan ", "Kapat " )
    if s == 2 then return end
    if party.is_party() then
    say_title("PvP Turnuvasına Katıl:")
    say("Bir grup üyesiyken içeriye giriş yapamazsın.")
    else
    pc.warp(95700,28500)
    end
    end

    when 20078.chat."Şehre Dön " with pc.get_map_index() == 28 begin
    --when 20078.chat."Şehre Dön " with pc.get_map_index() == 112 begin
    say_title("Savaş Ustası: ")
    say("")
    say("Arenadan ayrılıp şehre dönmek istiyormusun?")
    say("")
    local s = select("Evet ", "Hayır ")
    if s == 2 then return end
    warp_to_village()
    end
    when 20078.chat."GM: Turnuva Bölgesini Temizle " with pc.get_map_index() == 28 and pc.is_gm() begin
    --when 20078.chat."GM: Turnuva Bölgesini Temizle " with pc.get_map_index() == 112 and pc.is_gm() begin
    say_title("PvP Turnuvası : ")
    say("")
    say("Bölgeyi temizlemek istiyor musun?")
    say("")
    local temizle = select(locale.yes, locale.no)
    if temizle == 2 then return end
    warp_all_to_village(28,10)
    end
    when 20078.chat."GM: PvP Turnuvası İptal Et " with pc.get_map_index() == 28 and pc.is_gm() and game.get_event_flag("pvp") != 0 begin
    --when 20078.chat."GM: PvP Turnuvası İptal Et " with pc.get_map_index() == 112 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 == 2 then return end
    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

    when 20078.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
    --when 20078.chat."GM: Sınıf Seçimi " with pc.get_map_index() == 112 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 ", "Lycan ", "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("Lycan sınıfı seçildi.")
    elseif sinif == 6 then
    game.set_event_flag("pvp_sinif",6)
    say("Karışık seçildi.")
    end
    end

    when 20078.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
    --when 20078.chat."GM: PvP Turnuvasını Başlat " with pc.get_map_index() == 112 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
    {
    { 113, 100 },
    { 88, 100 },
    0,
    "SLEEPING",
    0,
    },
    -- arena 2
    {
    { 113, 152 },
    { 88, 152 },
    0,
    "SLEEPING",
    0,
    },
    -- arena 3
    {
    { 140, 152 },
    { 164, 152 },
    0,
    "SLEEPING",
    0,
    },
    -- arena 4
    {
    { 164, 100 },
    { 140, 100 },
    0,
    "SLEEPING",
    0,
    },
    }

    balan = {
    -- kazanan 1
    {
    { 67, 98 },
    },
    -- kazanan 2
    {
    { 184, 100 },
    },
    -- kaybeden 1
    {
    { 68, 151 },
    },
    -- kaybeden 2
    {
    { 185, 152 },
    },
    }

    notice_all("PvP Turnuvası başlamıştır.")
    notice_all("Girişler için "..mob_name(30122).."'e gidin.")
    local sinif = game.get_event_flag("pvp_sinif")
    local siniff = ""
    if sinif == 1 then
    siniff = "Savaşçı "
    notice_all(siniff.."Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
    elseif sinif == 2 then
    siniff = "Ninja "
    notice_all(siniff.."Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
    elseif sinif == 3 then
    siniff = "Sura "
    notice_all(siniff.."Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
    elseif sinif == 4 then
    siniff = "Şaman "
    notice_all(siniff.."Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
    elseif sinif == 5 then
    siniff = "Lycan "
    notice_all(siniff.."Arası Turnuva Başladı. Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
    elseif sinif == 6 then
    siniff = "Karışık "
    notice_all("Level limiti: "..game.get_event_flag("pvp_minlevel").." - "..game.get_event_flag("pvp_maxlevel").."")
    end

    end
    when 20078.chat."Turnuvaya Katıl " with pc.get_map_index() == 28 and game.get_event_flag("pvp") == 1 begin
    --when 20078.chat."Turnuvaya Katıl " with pc.get_map_index() == 112 and game.get_event_flag("pvp") == 1 begin
    say_title(mob_name(20078)..":")
    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
    elseif sinif == 5 then
    if pc.get_job() != 4 then
    say("Sadece lycanlar girebilir.")
    return
    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
    say("Vs turnuvasına hoşgeldin. Turnuvada senin gibi ")
    say("oyuncularla savaşacaksın.")
    say("")
    say("Karşına çıkan her oyuncuyu öldür.")
    say("")
    say("Bu turnuvaya katılmak istiyormusun?")
    say("")
    say_reward("Kayıt Ücreti : 15.000 Yang ")
    say("")
    local s = select("Evet, katılmak istiyorum ", "Hayır, ben bir korkağım ")
    say_title(mob_name(20078)..":")
    if s == 1 then
    if pc.get_gold() < 15000 then
    say_title("PvP Turnuvası ")
    say("")
    say(15000-pc.get_gold().." yang eksiğin var.")
    say("Paranı tamamlayınca turnuvaya girebilirsin.")
    return
    end
    say("Turnuva başladığı zaman seni çağıracağım.")
    say("")
    say("İyi şanslar evlat!")
    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(-15000)

    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 20078.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
    --when 20078.chat." PvP Turnuvası için yapılmış kayıtlar " with pc.get_map_index() == 112 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 20078.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
    --when 20078.chat."Şimdi kiminle düello yapacağım?" with pc.get_map_index() == 112 and game.get_event_flag("pvp") == 2 and game.get_event_flag("pvp_tournament") == pc.getqf("pvp_tournament") begin
    say_title(mob_name(20078)..":")
    if pvp_manager.get_duel_partner() == nil then
    say("Şuanda sana uygun aday yok.")
    say("")
    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 20078.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 20078.chat."GM: PvP Turnuva Ödülü " with pc.is_gm() 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_in_map(""..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_in_map(""..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_in_map(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_kural_uygula(pvp_attenders[pid1].name)
    pvp_kural_uygula(pvp_attenders[pid2].name)

    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
    --when login with pc.get_map_index() == 112 and game.get_event_flag("pvp") == 2 and pvp_manager.get_fight_mode() == 1 begin
    affect.add(apply.MOV_SPEED, -10000, 2)
    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", 30)
    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_in_map(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
    saybakim = math.random(1,10)
    if saybakim >= 5 then
    pc.warp_local(pc.get_map_index(), balan[3][1][1], balan[3][1][2], 0)
    else
    pc.warp_local(pc.get_map_index(), balan[4][1][1], balan[4][1][2], 0)
    end
    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_in_map(""..pvp_manager.get_duel_partner().." ile "..pc.getname().." 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,"item_block",0)
    if pc.get_job() == 2 or pc.get_job() == 6 then
    pc.setf(f,"block_cozme",1)
    end
    syschat("İtemlerini değiştirmek için 15 saniyen var.")
    syschat("15 saniye sonunda item değiştiremeyeceksin.")
    elseif tostring(arena[pvp_manager.get_arena()][5]) == "15" then
    local f = "pvp"
    pc.setf(f,"item_block",1)
    if pc.get_job() == 2 or pc.get_job() == 6 then
    pc.setf(f,"block_cozme",0)
    end
    syschat("İtem değiştirme süresi sona erdi.")
    end
    syschat("Düello "..tostring(arena[pvp_manager.get_arena()][5]).." saniye içinde başlayacak.")
    end
    affect.add(apply.MOV_SPEED, -10000, 2)
    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,"item_block",0)
    syschat("İtemlerini değiştirmek için 15 saniyen var.")
    syschat("15 saniye sonunda item değiştiremeyeceksin.")
    elseif tostring(arena[pvp_manager.get_arena()][5]) == "15" then
    local f = "pvp"
    pc.setf(f,"item_block",1)
    syschat("İtem değiştirme süresi sona erdi.")
    end
    syschat("Düello "..tostring(arena[pvp_manager.get_arena()][5]).." saniye içinde başlayacak.")

    end
    affect.add(apply.MOV_SPEED, -10000, 2)
    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
    --when logout with game.get_event_flag("pvp") == 2 and pc.get_map_index() == 112 and pvp_manager.get_fight_mode() == 2 begin
    pvp_manager.set_fight_mode(3)
    arena[pvp_manager.get_arena()][3] = 3
    notice_in_map(""..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

    saybakim = math.random(1,10)
    if saybakim >= 5 then
    pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), balan[1][1][1], balan[1][1][2])
    else
    pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), balan[2][1][1], balan[2][1][2])
    end
    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
    --when kill with game.get_event_flag("pvp") == 2 and pc.get_map_index() == 112 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_in_map(""..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
    kazanansay2 = math.random(1,100)
    if kazanansay2 >= 50 then
    pvp_manager.local_pc_warp(pc.getname(), balan[1][1][1], balan[1][1][2])
    else
    pvp_manager.local_pc_warp(pc.getname(), balan[2][1][1], balan[2][1][2])
    end
    saybakim2 = math.random(1,10)
    if saybakim2 >= 5 then
    pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), balan[3][1][1], balan[3][1][2])
    else
    pvp_manager.local_pc_warp(pvp_manager.get_duel_partner(), balan[4][1][1], balan[4][1][2])
    end
    end

    when letter with pc.get_map_index() == 28 and game.get_event_flag("pvp") == 2 and pvp_manager.get_fight_mode() == 3 begin
    --when letter with pc.get_map_index() == 112 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
    --[[local]] 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.." turnuvayı kazanıp ödülünde sahibi oldu!")
    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("PvP Turnuvası bitti.")
    warp_all_to_village(28,28)
    game.set_event_flag("pvp", 0)
    --pvp_attenders = nil
    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.")
    elseif winner_count <= 8 then
    notice_all("Çeyrek 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
    --when login with pc.get_map_index() != 112 begin
    local f = "pvp"
    pc.setf(f,"item_block",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
    --when login with pc.get_map_index() == 112 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 == 67 and y == 98 then
    local f = "pvp"
    pc.setf(f,"item_block",0)
    elseif x == 68 and y == 151 then
    local f = "pvp"
    pc.setf(f,"item_block",0)
    elseif x == 184 and y == 100 then
    local f = "pvp"
    pc.setf(f,"item_block",0)
    elseif x == 185 and y == 152 then
    local f = "pvp"
    pc.setf(f,"item_block",0)
    end
    pc.warp_local(pc.get_map_index(), x*100, y*100, 0)
    pc.select(t)
    if x == 67 and y == 98 then
    local f = "pvp"
    pc.setf(f,"item_block",0)
    elseif x == 68 and y == 151 then
    local f = "pvp"
    pc.setf(f,"item_block",0)
    elseif x == 184 and y == 100 then
    local f = "pvp"
    pc.setf(f,"item_block",0)
    elseif x == 185 and y == 152 then
    local f = "pvp"
    pc.setf(f,"item_block",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

    function ask_fight(asker, target)
    return confirm(find_pc_by_name(target), "Trittst du den Kampf gegen "..asker.. " an?", 15)
    end
    end