Yapılan alanları tanıtmayı unutmayın.

[AREADEF a_pvp_bekleme]
NAME=Bekleme Salonu(PvP)
EVENTS=r_default,r_default_rock,r_default_water,r_default_tree,r_default_grass
FLAGS=region_flag_nobuilding|region_flag_safe|region_antimagic_all
GROUP=pvp alani 1
P=1829,1817,-5
RECT=1860,1812,1811,1819

[AREADEF a_alan_pvp_1]
NAME=pvp alani 1
EVENTS=r_default,r_default_rock,r_default_water,r_default_tree,r_default_grass
GROUP=pvp alani 2
P=1813,1853,-5
RECT=1821,1845,1804,1860
TAG.PLAYER_1_P = 1820,1853,-5
TAG.PLAYER_2_P = 1806,1853,-5

[AREADEF a_alan_pvp_2]
NAME=pvp alani 2
EVENTS=r_default,r_default_rock,r_default_water,r_default_tree,r_default_grass
GROUP=pvp alani 3
P=1813,1833,-5
RECT=1804,1840,1821,1825
TAG.PLAYER_1_P = 1820,1833,-5
TAG.PLAYER_2_P = 1806,1833,-5

[AREADEF a_alan_pvp_3]
NAME=pvp alani 3
EVENTS=r_default,r_default_rock,r_default_water,r_default_tree,r_default_grass
GROUP=pvp alani 4
P=1835,1853,-5
RECT=1826,1860,1843,1845
TAG.PLAYER_1_P = 1842,1853,-5
TAG.PLAYER_2_P = 1828,1853,-5

[AREADEF a_alan_pvp_4]
NAME=pvp alani 4
EVENTS=r_default,r_default_rock,r_default_water,r_default_tree,r_default_grass
GROUP=pvp alani 5
P=1835,1833,-5
RECT=1826,1840,1843,1825
TAG.PLAYER_1_P = 1842,1833,-5
TAG.PLAYER_2_P = 1828,1833,-5

[AREADEF a_alan_pvp_5]
NAME=pvp alani 5
EVENTS=r_default,r_default_rock,r_default_water,r_default_tree,r_default_grass
GROUP=pvp alani
P=1857,1853,-5
RECT=1848,1860,1865,1845
TAG.PLAYER_1_P = 1864,1853,-5
TAG.PLAYER_2_P = 1850,1853,-5

[AREADEF a_alan_pvp_6]
NAME=pvp alani 6
EVENTS=r_default,r_default_rock,r_default_water,r_default_tree,r_default_grass
GROUP=pvp alani 6
P=1857,1833,-5
RECT=1848,1840,1865,1825
TAG.PLAYER_1_P = 1864,1833,-5
TAG.PLAYER_2_P = 1850,1833,-5

6 farklı alan ve her birinin ortasında i_oto_pvp_alan_kontrol // iteminin bulunması

[defname oto_pvp]
pvp_max_katilim		50
pvp_min_katilim		20
etkinlik_gate_timer		63
etkinlik_duyuru_tekrar_zamani	0,20,40,60
etkinlik_gate_koord		britain,moonglow,delucia,pazar
etkinlik_cikis			etkinlik cikisi // ortak etkinlik cikis alani.

[function f_baslat_pvp]
for 4
timerf <getargvx <dlocal._for>,<def.etkinlik_duyuru_tekrar_zamani>>,serv.b @34,,1 etkinlik: [pvp turnuvasi] başlamıştır. katılmak isteyenler şehir bankalarında bulunan etkinlik noktasındaki kapıdan geçiş yapabilirler.
	serv.newitem = i_gate_pvp
		new.p = <getargvx <dlocal._for>,<def.etknilik_gate_koord>>
			new.timer = <eval <ddef.etkinlik_gate_timer>-<dlocal._for>>
endfor

[itemdef i_gate_pvp]
id = i_moongate_blue

on=@click
message @030,,1 Etkinlik: PVP
message @050,,1 Katılım Sayısı: <dserv.list.oto_pvp.count>/<ddef.pvp_max_katilim>
message @060,,1 Kalan Süre: <f_zamangoster <timer>>
return 1

on=@create
attr=attr_move_never|attr_decay
color = 0481

on=@step
dclick
return 1

on=@dclick
if <distance <src>> < 5
src.go 18<r1,5><r1,8>,181<r2,9>,-5		// oyuncuların üst üste düşmemesi için los onlemi.
src.events +e_oto_pvp
serv.list.oto_pvp.add = <src>
src.f_no_horse				// at fonksiyonu size özel olanı ekleyin.
else
src.sysmessage @34,,1 Uzaksınız.
return 1
endif
if (<dserv.list.oto_pvp.count> == <ddef.pvp_max_katilim>)
serv.b @044,,1 Pvp turnuvası etkinliği maximum katılım sayısına ulaştığı için kapılar kapatılmıştır, tüm yarışmacılara başarılar.
f_pvp_basladi
f_pvp_gate_sil
endif

on=@timer
f_gate_pvp_sil
if (<dserv.list.oto_pvp.count> >= <ddef.pvp_min_katilim>)
serv.b @044,,1 Pvp turnuvası kapı süresi dolduğu için kapılar kapanmıştır, tüm yarışmacılara başarılar.
f_pvp_basladi
else
serv.b @044,,1 PvP turnuvası etkinliği yetersiz oyuncu durumundan dolayı iptal edilmiştir.
for 0 <eval <dserv.list.oto_pvp.count>-1>
ref1 = <serv.list.oto_pvp.<dlocal._for>>
ref1.events -e_oto_pvp
ref1.go = <def.etkinlik_cikis>
serv.list.oto_pvp.<dlocal._for>.remove
endfor
endif
return 1

[events e_oto_pvp]
on=@death
local._asd = <serv.list.oto_pvp.findelem <src>>				// kaybedenin uidini listede arar.
	ref1 = <serv.list.oto_pvp.<dlocal._asd>>			// kaybedeni ref1'e bağlar.
		ref1.go = <def.etkinlik_cikisi>
			ref1.resurrect = 1
				ref1.message @05e Elendiniz!
					ref1.events -e_oto_pvp
serv.list.oto_pvp.<dlocal._asd>.remove
act.region.player_count	= 			// alandaki player sayısı her seferinde 0 lanmalı.
act.go = bekleme salonu(pvp)						// turu atlayan için hits,mana,stam yenilemesi ve poi, bleed etkilerinin kaldırılması
act.hits = <act.maxhits>
	act.mana = <act.maxmana>
		act.stam = <act.maxstam>
			act.findid.i_bleeding.remove
				act.findid.i_rune_poison.remove
	if (<dserv.list.oto_pvp.count> == 1)				// kazanan için işlemler
		ref1 = <serv.list.oto_pvp.0>
			ref1.say @,,1 Kazandın :)
serv.b @044,,1 PVP turnuvası etkinliğinin kazananı <ref1.name> olmuştur, kendisini tebrik ediyoruz.
	ref1.go <def.etkinlik_cikisi>
		ref1.events -e_oto_pvp
serv.newitem = i_gold_pvp,<ddef.oto_pvp_gold>,<ref1>			// kazananın ödülü.
	serv.list.oto_pvp.clear
else
act.timerf 2,f_oto_pvp_eslemesmeler			// 1.nci yoksa 2 saniye sonra tekrar dan eşleşme
	endif

[itemdef i_oto_pvp_alan_kontrol]
id = i_gold
on=@create
	attr=attr_move_never|attr_invis|attr_decay
on=@destroy // silinemez
	message @34,,1 silinemez!
return 1

[function f_oto_pvp_eslemesmeler]
if !(<f_oto_pvp_bekleme_salonu_sayisi> < 1)
	forinstances i_oto_pvp_alan_kontrol
		ref1 = <uid>
if (<ref1.region.dtag0.player_count> != 2)
	for 0 <eval <dserv.list.oto_pvp.count>-1>
		ref2 = <serv.list.oto_pvp.<dlocal._for>>
if (<ref2.dtag0.pvp> != 1)
	local._asd ++
		ref2.tag.pvp = 1
			ref1.region.tag.player_count ++
	ref2.go = <ref1.region.tag0.player_<dlocal._asd>_p>		// seçilen oyuncunun pvp alanına gönderilmesi
		ref2.f_pvp_kafes 		// alan'a alınan oyuncular için 10 saniye hazırlanma durumu
if (<dlocal._asd> == 2)
	serv.newnpc = c_pvp_hakem					// 10 saniyelik geri sayım hakemi
		new.p = <ref1.p>
			new.update
return 1
endif
	endif
		endfor
			endif
				endfor
					endif

[function f_oto_pvp_bekleme_salonu_sayisi]
for 0 <eval (<dserv.list.oto_pvp.count>-1>)
ref1 = <serv.list.oto_pvp.<dlocal._for>>
 if (<ref1.dtag0.pvp> !=1)
  local._asd ++
 endif
endfor
	return <dlocal._asd>

[function f_pvp_basladi]
for 6
f_oto_pvp_eslesmeler
endfor

[function f_pvp_gate_sil]
forinstances i_gate_pvp
remove
endfor

[function f_gerisayim]
for 10
timerf <dlocal._for>,say @,,1 <eval 11-<dlocal._for>>
timerf <dlocal._for>,anim 9
endfor
timerf 10,remove

[function f_pvp_kafes]
serv.newitem = i_multi_cage
new.color = 0794
new.p = <p>
new.multicreate
new.timerf 10,remove

[chardef c_pvp_hakem]
id = c_man
name = Hakem

on=@create
hits = 1
invul = 1
flags |= statf_freeze
f_gerisayim

on=@npcrestock
	ITEM=i_platemail_chest
	ITEM=i_platemail_leggings
	ITEM=i_platemail_arms
	ITEM=i_helm_closed
	ITEM=i_halberd

[EOF]

Not: Test Edilmedi! Çok büyük sorunlar çıkartacağını sanmıyorum gözden kaçan ufak tefek bir şeyler olabilir.
Yazarsanız düzeltilir. Olmadı ben test ettikçe kendim düzenlerim.

Düzenlemeler: 22 Ekim
Eşleştirilen oyuncuların hazırlanmaları için 10 saniyelik kafeslenme durumu eklendi.
10 dan geriye doğru sayan duello hakemi eklendi.

Düzenlemeler: 23 Ekim
Oyuncuların alan'a çekilmeden önce kafeslenmesi düzeltildi.

Düzenlemeler: 27 Ekim
f_oto_pvp_eslesmeleler fonksiyonunda local._asd sorgusunun teke düşürülmesi.
Kaybeden oyuncunun ölü şekilde alandan gönderilmesi.

Bu konu MirroR_ tarafından düzenlendi(2016-10-27 19:15, 2 yıl önce)
Eline sağlık.

Shovel : Eline sağlık.


sonrasında deneyen oldumu acaba bu script i ?



Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.