Merhabalar;

Birkaç arama yapmıştım geçtiğimiz haftalarda. Özellikle "Derleme Scriptler" diye adlandırılan sistem scriptlerinin bulunduğu bölümde genel olarak kullanıcıların istediği, oyunculara belli başlı köy kurma sistemi yani genel adıyla Köy Sistemi isteklerinin olduğunu farkettim. Ancak bu konuda aynı derecede kullanıcıların ya eski sistemlere ulaştığını yada bir sonuca varamadığını gördüm.

Ek olaraksa geçtiğimiz günlerde bir arkadaşımın sunucusu için o arkadaşımında bunu istemesi sonucu vaktim olduğu sürece özellikle gece saatlerinde elimden geldiğince bu sistemi en kullanışlı ve kolay ayarlanabilir yoldan faaliyete geçirmeye çalıştım. Şuanda aktif rolde bir sunucuda kendiside kullanıyor.

Uzun bir aradan sonra paylaştığım bir diğer sistem olacak bu sanırım, açıkçası kabul etmeyliyim ki, gerçekten heyecan verici! Öncelerinde paylaştığımız sistemlerin, makelast olsun, craft defs panoları olsun görev sistemi olsun, başarıları oldukça ve çoğu sunucuda da tercih edilerek aktif olarak fayda sağladığını görünce, dahada paylaşımda bulunma isteğimi arttırdı. Umarım işinize yarar.

Şimdi tanıyan dostlarım diyorlarki "Berkay gene fazla uzatmadan ön yazısını yazdı, bakalım tanıtım ne kadar uzun olacak eyvah!" Korkmayın sistem için birkaç uyarım dışında ve işleyişi dışında başka söyleyeceğim birşey yok. Sadece uyarılarımı dikkate alırsanız iyi olacaktır.


Evet köy sistemimi tahmin ettiğiniz ve arayanlarında arzuları doğrultusunda düşündükleri gibi,

*bir kişiye ait bir köy bulunur.
*kişi bu köye dostlarını, arkadaşlarını dahil edebilir.
*köye muhtarın dahil ettikleri dışındaki oyuncular giriş yapamaz.
*muhtar üyeleri yönetebilir, görebilir, atabilir, alabilir.
*köy içerisinde sadece muhtar ve köy ahali barınabilir.

tarzında şeyler mevcuttur. Aslında kolay ama üşenilesi birşeydir belkide.

Unutmamamız gereken, köyün nerede olacağı, kaç adet olacağı ve köy içinde neler yaşanıp neler bitebileceği, nelerin dahil olabileceği gibi bilgiler her sunucuya göre büyük büyük farklılıklar gösterebileceği için, ben sadece sistemi olabilecek en kolay şekilde bunların tümünü düşünerek uyarlamaya çalıştım. Ancak tabiki köyü kendisi seçmeyecektir sistem, bunu yansıtmak imkansız binlerce sosaria koordinatı var yahu.

Gelelim sistemi nasıl kullanmanız gerektiğine ve uyarılarımıza;

*öncelikle tabiki köy veya köyler kurmanız, bunun regionlarını ayarlamanız ve bu regionlardaki kuralları sizin belirlemeniz önemli. Kafanızı karıştırmamak için, sisteme hiç örnek bir region veya koordinat dahil etmedim. Köyde eşya sabitleme, köyde yapılan alışverişlerde muhtara vergi verme gibi örnek geliştirmeleri siz kendi sphere'nizde sorgulatarak ayarlayabilirsiniz.

*köylerinizi ve ayarlarınızı yaptıktan sonra, ilgili belgeyi (i_koy_kurucu), köy muhtarı olacak kişiye teslim ediyorsunuz ve o kişiye şu uyarıları yapıyorsunuz.

-lütfen kurulumu önünüzde gördüğünüz kalenin 5 ila 7 kare dışında yapınız.
-kurulumu yaptıktan sonra bana haber veriniz.


*bu uyarılara uyarak köyünü kuran muhtar yetkiliye haber verir. [bknz: resim 1]

resim 1


*sonrasında aşağıdaki scriptte "01" diye aratın, o uid'yi köy kurulumundan sorumlu olan kişinin uid'si ile değiştirin.
çünkü köy kurulduğunda bu uid'ye sahip kişinin çantasına 1 tane teleporter düşecek, bu teleportlar kişi tarafından çoğaltılıp, kendi kurdukları köyün önüne dizilecektir. Bu teleportlar o köyün muhtarı ve üyelerine geçiş izni verip, diğer köy üyelerine izin vermemesi için kilit noktamızdır elbette.

*teleporterlar hangi köy verilecekse oraya boşluk kalmayacak şekilde dizilir ve yetkilinin kurulumdaki işi biter. Ancak yetkili 1 tane bile teleporter'ı çantasında bırakmamalıdır.

Kısaca ^^' muhtar kontrollerindende söz edelim;

*muhtar köyünü kurduktan sonra artık o köy ona ait olur ve o kapıdan o ve üyeleri dışında kimse geçemez.
*.koy yazarak ana menüye ulaşır. [bknz: resim 2]

resim 2


*sonrasında bu menüden köye dahil etmek istediği kişilere davet gönderebilir.[bknz: resim 3]

resim 3


*köy muhtarı ve üyeler köye dahil ettiği üyeleri listeleyerek görebilir. [bknz: resim 4]
*köy muhtarı ve üyeler, her üyenin karakter bilgilerini görebilir. [bknz: resim 5]
*köy muhtarı dilediği üyeyi, üyenin bilgilerini görme bölümünden köy mensupluğundan atabilir. [bknz: resim 5]
*köy muhtarı köyünü yıkabilir ve köy tamamen ortadan kalkar, bu eylemi köy yakınlarında gerçekleştirebilir.[bknz: resim 2]
*köy muhtarı ve üyeleri ölü durumdayken köylerine koşulsuz erişebilirler. [bknz: resim 2]
*köy muhtarı ve üyeleri tek bir köye mensup olabilirler.
*köy mensupları birbirleriyle ".kc" ile iletişim kurabilir.

resim 4


resim 5


Muhtar köyü yıktığında, köye giriş teleporterları ortadan kalkar, bu nedenden köye giriş serbestleşir.

Umarım işinize yarar, daha uzun yazarak sizlerin kafasını şişirmek istemiyorum. Dialoglarlada oynamaya kalkmayın zaten tek bir dialog üzerinden işlem görüyor ve functiondan resizepic ve diğer ayarları çekiyor, daha sadece kullanışlı şekline erişmek zor olabilir.

Gerisi dediğim gibi regionları ayarlayan yetkili arkadaşa kalmış. Al sana altyapı, gerisini eğlencene göre ayarla ^^'

Teşekkür ederim, mübarek Ramazan ayınızın ve sonrasının hayırlara vesli olmasını dilerim.


dipnot: sistem geliştirilmeye açıktır. aklımda bir sürü şey var ama zamanla ekleyip güncelleyebilirim.

ve scriptimiz;
scripter: buxiun
script name: köy sistemi 
for all uo servers ^^'
start 17.07.2012 03:56
finish 18.07.2012 23:11
------------------------------

"Bismillahirrahmanirrahim"

[function rohanbg]
resizepic <eval <argv[0]>-10> <eval <argv[1]>-10> 5120 <eval <argv[2]>+20> <eval <argv[3]>+20>
resizepic <argv[0]> <argv[1]> 9300 <argv[2]> <argv[3]>

[function dialogcloseall]
if (<dialoglist.count> > 0)
  for 0 <eval(<dialoglist.count>-1)>
    try dialogclose <dialoglist.<dlocal._for>.id>
  endfor
endif

[ITEMDEF i_koy_kurucu]
id=i_deed
type=t_script
name=Koy Kurucu
value=375000

on=@create
color 0845
attr 04

On=@Click
message @0722,,1 <name>
return 1

on=@dclick
obj <src.tag.koyum>
if <obj>
	src.sysmessage @0845,,1 Sizin zaten bir koyunuz var.
	return 1
else
	src.dialogclose d_koykur
	src.dialog d_koykur
	return 1
endif.

[DIALOG d_koykur]
80,0
nomove
rohanbg 65,85,350,150

resizepic 85 120 02486 100 20
dhtmlgump 100 120 150 30 0 0 <def.bfont_dred>Koyun Adi

resizepic 85 150 2620 200 30
dtextentry 90 156 195 35 1153 1 ??
button 300 156 4005 4007 1 0 1

[dialog d_koykur button]

on 1

local.argtxt <argtxt[1]>

serv.newitem i_koy_hafiza
new.equip
src.tag0.asist 1
src.tag.koyismi <local.argtxt>
new.tag.koyismi <local.argtxt>
src.tag.koyum <new.uid>
new.tag.muhtar <src.uid>
new.tag.koykoordinat <src.p>
new.tag0.uyesayisi +=1
new.tag0.uye<dnew.tag0.uyesayisi> <src.uid>
		src.sysmessage @845,,1 Köy başarıyla kuruldu, yetkiliye bildiriniz.
		src.s Köy kuruldu kaleye telepadleri koy.
		serv.newitem i_gecis_kontrol
		new.cont 01
		new.tag.koyuid <src.tag.koyum>
		new.tag.koymuhtari <src.uid>
		new.tag.burayaat <src.p>
		src.consume 1 i_koy_kurucu
		
[itemdef i_koy_hafiza]
name Koy hafiza
id i_memory
weight 0
type t_eq_script
layer layer_special

ON=@Create
ATTR=attr_invis|attr_decay

ON=@Equip
timer -1

ON=@timer
timer -1
return 1

[itemdef i_gecis_kontrol]
id i_teleporter
defname i_gecis_kontrol
type t_telepad
name Gecis Kontrol

on @click
message @0845,,1 <name>
return 1

on @create
attr 010
color 0455
dispid 017d3

on @step
if (<tag.koyuid> = <src.tag.koyum>)
	src.sysmessage @0845,,1 Koyunuze hosgeldiniz. // bu mesaj kalkacak. unutma.
else
	src.sysmessage @0845,,1 Koye uye degilsiniz, uzaklastirildiniz.
	src.go <tag.burayaat>
endif

[plevel 1]
koy
kc

[function koy]
obj <src.tag.koyum>
if (<obj>)
	dialogcloseall
	sdialog d_koy_buxiun
else
	src.sysmessage @0845,,1 Sizin bir koyunuz yok.
endif

[dialog d_koy_buxiun]
100,200
page 0
nomove
rohanbg 65,65,400,90
rohanbg 490,65,170,90

resizepic 85 85 02486 110 20
dhtmlgump 100 85 150 30 0 0 <def.bfont_dred>Koyunuzun Adi:

resizepic 210 85 02486 102 20
dhtmlgump 225 85 150 30 0 0 <def.bfont_dred>Konumunuz

resizepic 335 85 02486 102 20
dhtmlgump 350 85 150 30 0 0 <def.bfont_dred>Uye Sayisi:

obj <src.tag.koyum>

dhtmlgump 105 110 100 30 0 0 <obj.tag.koyismi> 
dhtmlgump 220 110 100 30 0 0 <qval (<obj.tag.muhtar> == <src.uid>)?Koy Muhtari:Koy Mensubu>
dhtmlgump 365 110 100 30 0 0 <eval <obj.tag.uyesayisi>> uye

dhtmlgump 515 68 150 20 0 0 <def.bfont_black>Koy uyeleri
button 495 70 2117 2118 1 0 101
dhtmlgump 515 88 150 20 0 0 <def.bfont_dgreen>Koye uye al.
button 495 90 2117 2118 1 0 102
dhtmlgump 515 108 150 20 0 0 <def.bfont_blue>Koye git. <def.bfont_dgray>[Oluyseniz.]
button 495 110 2117 2118 1 0 103

if (<obj.tag.muhtar> = <src.uid>)
	dhtmlgump 515 128 150 20 0 0 <def.bfont_red>Koyu yik.
	button 495 130 2117 2118 1 0 104
else
	dhtmlgump 515 128 150 20 0 0 <def.bfont_red>Koy uyeliginden ayril.
	button 495 130 2117 2118 1 0 105
endif

page 2
rohanbg 65,180,400,200
ref1 <src.tag.koyum>

resizepic 85 190 02486 100 20
dhtmlgump 100 190 150 30 0 0 <def.bfont_dred>Koy uyeleri

resizepic 290 190 02486 83 20
dhtmlgump 305 190 150 30 0 0 <def.bfont_dred>Konumlari

if !(<dsrc.ctag0.buxisayfa> == 1)
button 425 340 5601 5605 1 0 112
endif

local.az <dref1.tag0.uyesayisi>
local.a <eval <dsrc.ctag.buxisayfa>*7>
if (<dlocal.az> > <dlocal.a>)
button 425 340 5601 5605 1 0 111
local.te 1
endif

local.awe <eval <dsrc.ctag.buxisayfa> -1>
local.awe <eval <dlocal.awe>*7>
local.abc <eval <dlocal.az> - <dlocal.awe>>
local.satir 215

for <eval <qval (<dlocal.te> == 1)?7:<dlocal.abc>>>
local.aa <eval <dsrc.ctag0.buxisayfa> -1>
local.aa <eval <dlocal.aa>*3>
local.aa +=<dlocal._for>
obj=<dref1.tag0.uye<dlocal.aa>>
if !(<obj> == 00)
dhtmlgump 300 <eval <eval <dlocal.satir>+0.1>-3> 200 30 0 0 <qval (<obj.isonline>)?<qval (<obj.region.guarded> == 1)?<def.bfont_dgreen> <obj.region.name>:<def.bfont_red> <obj.region.name>>:<def.bfont_red> Offline>
dhtmlgump 100 <eval <eval <dlocal.satir>+0.1>-3> 200 30 0 0 <qval (<obj.isonline> == 1)?<def.bfont_dgreen> <obj.name>:<def.bfont_red> <obj.name>> <qval (<ref1.tag0.muhtar> == <obj.uid>)?<def.bfont_black>[Koy Muhtari]>
button 85 <dlocal.satir> 2117 2118 1 0 <dlocal._for>
local.satir +=19
endif
endfor

page 3
rohanbg 490,180,170,200

ref1=<src.tag.koyum>
obj=<dref1.tag0.uye<dsrc.ctag.hangiuye>>

resizepic 500 190 02486 60 20
dhtmlgump 507 190 150 30 0 0 <def.bfont_dred>Uye Adi
dhtmlgump 505 210 150 30 0 0 <obj.name>
resizepic 570 190 02486 80 20
dhtmlgump 577 190 150 30 0 0 <def.bfont_dred>Kill/Deaths
dhtmlgump 590 210 150 30 0 0 <obj.kills>/<obj.deaths>
resizepic 500 240 02486 60 20
dhtmlgump 515 240 150 30 0 0 <def.bfont_dred>Online
dhtmlgump 505 260 150 30 0 0 <obj.account.totalconnecttime> dk
resizepic 570 240 02486 80 20
dhtmlgump 575 240 150 30 0 0 <def.bfont_dred>Skill Toplami
dhtmlgump 590 260 150 30 0 0 <fval <obj.skilltotal>>
resizepic 500 290 02486 60 20
dhtmlgump 515 290 150 30 0 0 <def.bfont_dred>Birlik
if <obj.guild>
	dhtmlgump 500 310 150 30 0 0 <obj.guild>
else
	dhtmlgump 505 310 150 30 0 0 Yok
endif
resizepic 570 290 02486 80 20
dhtmlgump 577 290 150 30 0 0 <def.bfont_dred>Aile Uyeligi
if <obj.tag0.ailem>
	dhtmlgump 590 310 150 30 0 0 <obj.tag0.aileisim>
else
	dhtmlgump 590 310 150 30 0 0 Yok
endif

if (<ref1.tag.muhtar> == <src.uid>)
	button 500 350 4005 4007 1 0 109
	dhtmlgump 535 350 150 30 0 0 <def.bfont_red>Koyden kov!
	resizepic 490 335 3600 170 5
endif

[dialog d_koy_buxiun button]

on 0
dialogcloseall

on 1 7
local.aa <eval <dsrc.ctag.buxisayfa> -1>
local.aa <dlocal.aa>*7
local.aa +=<eval <argn>>
src.ctag0.hangiuye <dlocal.aa>
src.dialog d_koy_buxiun 2
src.dialog d_koy_buxiun 3

on 101
obj <src.tag.koyum>

if (<obj.tag0.uyesayisi>)
	src.ctag.buxisayfa 1
	src.dialog d_koy_buxiun 2
	return 1
elif !<obj>
	src.sysmessage @0845,,1 Sizin bir koyunuz yok.
	return 1
endif
         sys_error Koyunuze mensup uye bulunmamaktadir.
return 1

on 102
obj <src.tag.koyum>
if !<obj>
	src.sysmessage @0845,,1 Sizin bir koyunuz yok.
	return 1
endif
if (<obj.tag.muhtar> = <src.uid>)
		src.targetf f_buxiuyeal
         sys_normal Koye mensubu yapmak istediginiz kisiyi seciniz.
			return 1
else
		sysmessage @0845,,1 Koye uye alma yetkiniz yok.
		src.koy
		return 1
endif

on 103
obj <src.tag.koyum>
if !<obj>
	src.sysmessage @0845,,1 Sizin bir koyunuz yok.
	return 1
elif (<src.hits> > 0)
	src.sysmessage @0845,,1 Sadece oluyken koyunuze isinlanabilirsiniz.
	return 1
else
	src.go <obj.tag.koykoordinat>
	src.sysmessage @0845,,1 Koyunuze hosgeldiniz.
	src.resurrect
	return 1
endif

on 109
ref1=<src.tag.koyum>
if (<ref1.tag.muhtar> == <obj.uid>)
         sysmessage @0845,,1 Kendi kendinizi koyden kovamazsiniz.
return 1
endif

for <dsrc.ctag.hangiuye> <ref1.tag.uyesayisi>
if !(<dlocal._for> == <ref1.tag.uyesayisi>)
ref1.tag.uye<dlocal._for> <ref1.tag.uye<eval <dlocal._for>+1>>
endif
endfor
obj.tag.koyum=
obj.tag.koyismi
dialogcloseall
         sysmessage @0845,,1 <obj.name> isimli kisi koyden kovuldu.
ref1.tag.uyesayisi -= 1
return 1

on 104
obj <src.tag.koyum>
foritems 10
if (<obj.tag.muhtar> = <tag.koymuhtari>)
forinstances i_gecis_kontrol
if (<obj> = <tag.koyuid>)
remove
endif
endfor
remove
ref1 <src.tag.koyum>
for <ref1.tag.uyesayisi>
obj <ref1.tag.uye<dlocal._for>>
obj.tag.koyum=
obj.cleartags koyismi
obj.sysmessage @0845,,1 <ref1.tag.koyismi> koyu yikilmistir.
endfor
serv.b @38,,1 <ref1.tag.koyismi> isimli koy yikilmistir.
ref1.remove
return 1
endif
endfor
if <obj>
src.sysmessage @0845,,1 Sadece koyunuzun yakininda koyunuzu yıkabileceginizi unutmayiniz.
return 1
endif

on 105
obj <src.tag.koyum>
if !(<src.tag0.koyum> == <obj>)
src.sysmessage @0845,,1 Siz zaten bu koye mensup degilsiniz.
return 1
elif !<obj>
src.sysmessage @0845,,1 Sizin bir koyunuz yok.
dialogcloseall
return 1
elif <src.findid.i_rune_incognito>
src.sysmessage @0845,,1 Isminiz gizli halde koyden ayrilamazsiniz.
return 1
endif
for 1 <obj.tag.uyesayisi>
if (<obj.tag0.uye<dlocal._for>> == <src.uid>)
local.kacinciuye <dlocal._for>
endif
endfor
for <dlocal.kacinciuye> <obj.tag.uyesayisi>
if !(<dlocal._for> == <obj.tag.uyesayisi>)
obj.tag.uye<dlocal._for> <obj.tag.uye<eval <dlocal._for>+1>>
endif
endfor
try uid.<obj.tag.muhtar>.sysmessage @0845,,1 <src.name> isimli oyuncu koyunuzden ayrildi..
src.sysmessage @0845,,1 <obj.tag.koyismi> koyunden ayrildiniz.
obj.tag.uyesayisi -= 1
src.tag.koyum=
cleartags koyismi
return 1

on 111
src.ctag.buxisayfa +=1
src.sdialog d_koy_buxiun 2

on 112
src.ctag.buxisayfa -=1
src.sdialog d_koy_buxiun 2

[DIALOG d_koy_teklif]
100,100
page 0 
rohanbg 20,40,280,110
rohanbg 325,40,150,70

dhtmlgump 70 120 200 30 0 0 <def.bfont_dred> Koye uyelik teklifi aldiniz.

resizepic 45 55 02486 110 20
dhtmlgump 50 55 150 30 0 0   Teklifi Gonderen
dhtmlgump 80 80 150 30 0 0  <name> 

ref1 <tag.koyum>

resizepic 185 55 02486 75 20
dhtmlgump 195 55 150 30 0 0 Koy Adi
dhtmlgump 190 80 150 30 0 0 <ref1.tag.koyismi>

button 345 54 2117 2118 1 0 1
button 345 74 2117 2118 1 0 2

dhtmlgump 363 52 150 30 0 0 <def.bfont_dgreen>Teklifi kabul et<def.br>
dhtmlgump 363 72 150 30 0 0 <def.bfont_red>Teklifi reddet !<def.br>

[dialog d_koy_teklif button]
on 1
if (<src.tag0.koyum>)
         sysmessage @0845,,1 Sizin zaten bir koye mensuplugunuz var.
         sysmessage @0845,,1 <src.name> isimli kisinin zaten bir koye mensuplugu var.
return 1
elif <src.findid.i_rune_incognito>
         sysmessage @0845,,1 Isminiz gizlenmis sekilde koye dahil olamazsiniz.
return 1
endif
src.tag.koyum <tag.koyum>
ref1 <src.tag.koyum>
src.tag.koyismi <ref1.tag.koyismi>
ref1.tag0.uyesayisi += 1
ref1.tag0.uye<dref1.tag0.uyesayisi> <src.uid>
src.sysmessage @0845,,1 Tebrikler, <ref1.tag.koyismi> isimli koye mensup oldunuz.
return 1

on 2
         sysmessage @0845,,1 <src.name> davetinizi kabul etmedi.
src.say @0845,,1 * Koy teklifini reddeder *
return 1

[function f_buxiuyeal]
obj  <argo>
ref1 <src.tag.koyum>
if (<obj.tag0.koyum>)
src.sysmessage @0845,,1 Bu kisi zaten bir koye mensup.
return 1
elseif !(<obj.isplayer>)
src.sysmessage @0845,,1 Sadece oyunculari koye dahil edebilirsiniz.
return 1
elseif (<obj.hits> < 1)
src.sysmessage @0845,,1 Oluleri koye davet edemezsiniz.
return 1
elif <obj.findid.i_rune_incognito>
obj.sysmessage @0845,,1 Isminiz gizlenmis sekilde koye dahil olamazsiniz.
return 1
endif
         sysmessage @0845,,1 <obj.name> isimli kisiye davetiniz iletildi.
TRYSRC <obj.uid> dialogclose d_koy_teklif
TRYSRC <obj.uid> dialog d_koy_teklif
return 1

[function kc]
if !(strmatch('<src.tag0.koyismi>','0')
serv.allclients koychat <args>
endif

[function koychat]
if (strmatch('<src.tag0.koyismi>','<tag0.koyismi>')
sysmessage @045,,1 [<src.name>]: <args>
endif


Bu konu Buxiun tarafından düzenlendi(2012-07-21 01:52, 11 yıl önce)
Ellerine sağlık gayet başarılı. Bu arada herkese hayırlı ramazanlar :)
Teşekkürler başarılı bir şey olmuş devamının olması dileğyile hayırlı ramazanlar.
Novice
12.5
Tebrikler Berkay basit ama güzel script =)

Yalnız Guild ve Aile kısımları biraz küçük gibi geldi.Oyuncu tayfası 15-16 kaç karakter varsa sonuna kadar zorlar bilirsin =)
Master
59.2997
Şu obj, ref, return olaylarını bi kestiremedin onca zamandır :)
İzninle biraz geliştirip kendi top10 sistemime entegre edicem haftalık 1. olana otomatik köy muhtarlığı :) veya 2.
çokta iyi güzel olmuş. lakinki buna köy hasilatida eklenebilir direk muhtarin cebine gider vs.
kafanıza göre geliştirin ekleyin çıkartın yapın bozun size kalmış :bagirma

@slothere
anlamadım kestirilemeyecek ne varki kısaltma kullanıyorum, ama senin kullanış tarzın farklı boyutlardaysa onu bilmiyorum hacuu :D

Bu konu Buxiun tarafından düzenlendi(2012-07-21 18:38, 11 yıl önce)

Üye Ol veya Giriş Yap

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