
Metin2 PVP Turnuvası questi
İç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