raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı PVP MANAGER VURUŞ SORUNU

  • Konuyu başlatan Konuyu başlatan Oğuzhan Aggul
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 68

Oğuzhan Aggul

Level 1
Üye
Katılım
21 Nis 2025
Konular
3
Mesajlar
7
Online süresi
9d 15h
Reaksiyon Skoru
0
Altın Konu
0
TM Yaşı
1 Yıl 1 Ay 14 Gün
Başarım Puanı
22
MmoLira
655
DevLira
3
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

[CODE title="ARENA DUELLO QUEST"]quest pvp_manager begin
state start begin
when 20087.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 == 1 then
pc.warp(844800,0)
end
end
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() != 26 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() != 26 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 20087.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 == 1 then
pc.warp(844800,0)
else return
end
end

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 == 1 then
--warp_to_village()
pc.warp(956300, 258600)
end
end
when 20078.chat."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 == 1 then
warp_all_to_village(112,10)
end
end
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 == 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 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 ", "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 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
{
{ 145, 85 },
{ 145, 113 },
0,
"SLEEPING",
0,
},
-- arena 2
{
{ 145, 130 },
{ 145, 158 },
0,
"SLEEPING",
0,
},
-- arena 3
{
{ 105, 159 },
{ 105, 129 },
0,
"SLEEPING",
0,
},
-- arena 4
{
{ 105, 114 },
{ 105, 85 },
0,
"SLEEPING",
0,
},
}


notice_all("PvP Turnuvası başlamıştır.")
notice_all("Girişler için "..mob_name(20087).."'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 = "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() == 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
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("Budokana 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.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() < 15000000 then
say_title("PvP Turnuvası ")
say("")
say(15000000-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(-15000000)
pc.remove_item(50027,1)

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() == 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() == 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 = {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 = {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

-- not working
--[[
when 20078.chat."GM: Düelloyu bitir " with pc.is_gm() and game.get_event_flag("pvp") == 2 begin
say_title("Düelloyu bitir:")
say("Hangi arenadaki düelloyu bitireceksin?")
local s = select("Arena 1", "Arena 2", "Arena 3", "Arena 4", "Kapat")

if s == 5 then
return
end

local fighter1 = nil
local fighter2 = nil
for ai = 1, attender_count, 1 do
if pvp_attenders[ai].arena == s and pvp_attenders[ai].fight_mode != 0 then
if fighter1 == nil then
fighter1 = ai
else
fighter2 = ai
end
end
end

if fighter1 == nil then
say_title("Düelloyu bitir:")
say("Bu arenada şuan düello yok.")
say("")
return
end

say_title(" Düelloyu bitir:")
say("Düelloyu bitirirsen ")
say(""..s..". Arenadaki düelloyu kim kazanacak?")
local w = select(tostring(pvp_attenders[fighter1].name), tostring(pvp_attenders[fighter1].name), " Kapat ")
if w == 3 then
return
end

if w == 1 then
pvp_attenders[fighter2].winner = false
notice_in_map(tostring(pvp_attenders[fighter1].name).." , "..tostring(pvp_attenders[fighter2].name).." karşısındaki düelloyu kazandı!", pc.get_map_index())
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 40))
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 40))
else
pvp_attenders[fighter1].winner = false
notice_in_map(tostring(pvp_attenders[fighter2].name).." , "..tostring(pvp_attenders[fighter1].name).." karşısındaki düelloyu kazandı!", pc.get_map_index())
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 40))
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 40))
end

pvp_attenders[fighter1].fight_mode = 0
pvp_attenders[fighter2].fight_mode = 0


arena[3] = 0
pvp_manager.refresh_arenas()

say_title(" Düelloyu bitir: ")
say(" Düello bitti. ")
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())

--[[
local f1_accept = ask_fight(tostring(pvp_attenders[pid1].name), tostring(pvp_attenders[pid2].name))
if f1_accept != CONFIRM_OK then
notice_in_map(" "..tostring(pvp_attenders[pid1].name).." has not took on the fight against "..tostring(pvp_attenders[pid2].name)..". ", pc.get_map_index())
pvp_attenders[pid1] = nil
pvp_attenders[pid2].partner = nil
pvp_manager.refresh_arenas()
return
end

local f2_accept = confirm(find_pc_by_name(tostring(pvp_attenders[pid2].name)), "Trittst du den Kampf gegen "..tostring(pvp_attenders[pid1].name).. " an?", 15)
if f2_accept != CONFIRM_OK then
notice_in_map(" "..tostring(pvp_attenders[pid2].name).." has not took on the fight against "..tostring(pvp_attenders[pid1].name)..". ", pc.get_map_index())
pvp_attenders[pid2] = nil
pvp_attenders[pid1].partner = nil
pvp_manager.refresh_arenas()
return
end
]]

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() == 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", 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_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
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_manager "..my_vid)
pc.select(my_vid)
command("pvp_manager "..partner_vid)
notice_in_map(""..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,"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() == 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

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() == 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
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() == 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ı kazandı!")
notice_all(""..pvp_attenders[winner_id].name.." ,"..game.get_event_flag("pvp_price_count").." tane "..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("PvP Turnuvası bitti.")
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.")
else
notice_all("Round başlıyor.")
end
pvp_manager.refresh_arenas()
end

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() == 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 == 126 and y == 40 then
local f = "pvp"
pc.setf(f,"item_block",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,"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
end
[/CODE]



Duello başlayana kadar speed - 10000 olarak ayarlanmış burada Hareket etmiyor sorun yok ama boşluk tuşuyla vuruş yapınca karektere doğru gidiyor vurarak vuruşu nasıl engelleyebiliriz ve nereye ekleme yapmalıyız acaba
 
Son düzenleme:
[CODE title="ARENA DUELLO QUEST"]quest pvp_manager begin
state start begin
when 20087.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 == 1 then
pc.warp(844800,0)
end
end
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() != 26 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() != 26 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 20087.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 == 1 then
pc.warp(844800,0)
else return
end
end

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 == 1 then
--warp_to_village()
pc.warp(956300, 258600)
end
end
when 20078.chat."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 == 1 then
warp_all_to_village(112,10)
end
end
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 == 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 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 ", "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 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
{
{ 145, 85 },
{ 145, 113 },
0,
"SLEEPING",
0,
},
-- arena 2
{
{ 145, 130 },
{ 145, 158 },
0,
"SLEEPING",
0,
},
-- arena 3
{
{ 105, 159 },
{ 105, 129 },
0,
"SLEEPING",
0,
},
-- arena 4
{
{ 105, 114 },
{ 105, 85 },
0,
"SLEEPING",
0,
},
}


notice_all("PvP Turnuvası başlamıştır.")
notice_all("Girişler için "..mob_name(20087).."'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 = "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() == 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
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("Budokana 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.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() < 15000000 then
say_title("PvP Turnuvası ")
say("")
say(15000000-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(-15000000)
pc.remove_item(50027,1)

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() == 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() == 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 = {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 = {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

-- not working
--[[
when 20078.chat."GM: Düelloyu bitir " with pc.is_gm() and game.get_event_flag("pvp") == 2 begin
say_title("Düelloyu bitir:")
say("Hangi arenadaki düelloyu bitireceksin?")
local s = select("Arena 1", "Arena 2", "Arena 3", "Arena 4", "Kapat")

if s == 5 then
return
end

local fighter1 = nil
local fighter2 = nil
for ai = 1, attender_count, 1 do
if pvp_attenders[ai].arena == s and pvp_attenders[ai].fight_mode != 0 then
if fighter1 == nil then
fighter1 = ai
else
fighter2 = ai
end
end
end

if fighter1 == nil then
say_title("Düelloyu bitir:")
say("Bu arenada şuan düello yok.")
say("")
return
end

say_title(" Düelloyu bitir:")
say("Düelloyu bitirirsen ")
say(""..s..". Arenadaki düelloyu kim kazanacak?")
local w = select(tostring(pvp_attenders[fighter1].name), tostring(pvp_attenders[fighter1].name), " Kapat ")
if w == 3 then
return
end

if w == 1 then
pvp_attenders[fighter2].winner = false
notice_in_map(tostring(pvp_attenders[fighter1].name).." , "..tostring(pvp_attenders[fighter2].name).." karşısındaki düelloyu kazandı!", pc.get_map_index())
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 40))
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 40))
else
pvp_attenders[fighter1].winner = false
notice_in_map(tostring(pvp_attenders[fighter2].name).." , "..tostring(pvp_attenders[fighter1].name).." karşısındaki düelloyu kazandı!", pc.get_map_index())
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter1].name, 126, 40))
pvp_manager.local_pc_warp(tostring(pvp_attenders[fighter2].name, 126, 40))
end

pvp_attenders[fighter1].fight_mode = 0
pvp_attenders[fighter2].fight_mode = 0


arena[3] = 0
pvp_manager.refresh_arenas()

say_title(" Düelloyu bitir: ")
say(" Düello bitti. ")
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())

--[[
local f1_accept = ask_fight(tostring(pvp_attenders[pid1].name), tostring(pvp_attenders[pid2].name))
if f1_accept != CONFIRM_OK then
notice_in_map(" "..tostring(pvp_attenders[pid1].name).." has not took on the fight against "..tostring(pvp_attenders[pid2].name)..". ", pc.get_map_index())
pvp_attenders[pid1] = nil
pvp_attenders[pid2].partner = nil
pvp_manager.refresh_arenas()
return
end

local f2_accept = confirm(find_pc_by_name(tostring(pvp_attenders[pid2].name)), "Trittst du den Kampf gegen "..tostring(pvp_attenders[pid1].name).. " an?", 15)
if f2_accept != CONFIRM_OK then
notice_in_map(" "..tostring(pvp_attenders[pid2].name).." has not took on the fight against "..tostring(pvp_attenders[pid1].name)..". ", pc.get_map_index())
pvp_attenders[pid2] = nil
pvp_attenders[pid1].partner = nil
pvp_manager.refresh_arenas()
return
end
]]

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() == 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", 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_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
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_manager "..my_vid)
pc.select(my_vid)
command("pvp_manager "..partner_vid)
notice_in_map(""..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,"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() == 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

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() == 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
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() == 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ı kazandı!")
notice_all(""..pvp_attenders[winner_id].name.." ,"..game.get_event_flag("pvp_price_count").." tane "..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("PvP Turnuvası bitti.")
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.")
else
notice_all("Round başlıyor.")
end
pvp_manager.refresh_arenas()
end

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() == 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 == 126 and y == 40 then
local f = "pvp"
pc.setf(f,"item_block",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,"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
end
[/CODE]



Duello başlayana kadar speed - 10000 olarak ayarlanmış burada Hareket etmiyor sorun yok ama boşluk tuşuyla vuruş yapınca karektere doğru gidiyor vurarak vuruşu nasıl engelleyebiliriz ve nereye ekleme yapmalıyız acaba

PythonCharacterModule.cpp olması gerekli yanlış hatırlamıyorsam yada Move hareket taraflarını yöneten bi kod bloğu olmalı oradan makrosuyla beraber düzenleme yapacaksın
 
PythonCharacterModule.cpp
PythonCharacterModule.cpp olması gerekli yanlış hatırlamıyorsam yada Move hareket taraflarını yöneten bi kod bloğu olmalı oradan makrosuyla beraber düzenleme yapacaksın
hocam hareket etmesi questten ayarlı düşürülmüş yani ben queste vuruş engelide koymak istiyorum boşluk tuşunu düello başlayana kadar durdurmam gerek src taraflı işlem yok yani
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst