[comment aile_sistemi]
yazan: Slothere
tarih: 29/07/2009
version: 056b+
-------------------------
Kullanımı:
- Sistemin kullanımda ihtiyaç duyduğu tek ve en önemli şey karakterlerin başlangıçta bir soy ismi olmamasıdır. Bunu engellemek için "f_onchar_create" altında kullanmanız amaçlı f_isim_duzenle isimli fonksiyon da size sistem ile birlikte verilmiştir.
- def.maxuye bölümünden ailenin alacağı max. üye sayısını belirleyebilirsiniz.
- sistem aile isimlerini tesciller. tekrar alınan soy ismi bir daha alınamaz.
- şu an default olarak üye alım ücreti 50.000gp olarak belirlendi. scriptte ilgili kısımlar değiştirilecek güncellenebilir.
-------------------------


[defname aile_sistemi]
maxuye 50 // ailenin alabilecegi max. üye sayısı.

// * fonksiyonlar

[function f_isim_duzenle]
local.isim = <strarg <strtoupper(<strsub 0 1 <src.name>>)><strtolower(<strsub 1 15 <src.name>>)>>
src.name <local.isim>
src.sysmessage @1153 isminiz <local.isim> olarak tekrar duzenlendi.

[function f_isim_kontrolu]
local.num = 0
for 0 <eval (strlen(<args>)) -1>
if !strmatch('[abcdefghijklmnoprstuvyz']','<strsub <dlocal._for> 1 <args>>')
local.num ++
endif
endfor
return <local.num>

[function f_soyadi_kontrolu]
for 0 <eval (<serv.accounts>) -1>
if (<serv.account.<dlocal._for>>)
for x 0 <eval (<serv.account.<dlocal._for>.chars>) -1>
local.soyad = <streat <serv.account.<dlocal._for>.char.<dlocal.x>.name>>
if !strcmpi('<local.soyad>','<args>')
local.return ++
endif
endfor
endif
endfor
return <dlocal.return>

[function f_yeniuye]
ref1 = <args>
if (<argo> == <src>)
src.sysmessage @1153 kendinizi secemezsiniz.
elif !(<argo.isplayer>) || (<argo.isgm>) || (<argo.isitem>)
src.sysmessage @1153 sadece oyunculari secebilirsiniz.
elif strcmpi('<argo.tag.soyad>','')
src.sysmessage @1153 <argo.name>, <argo.tag0.soyad> ailesine kayitli
elif (<argo.isdialogopen d_uye_kayidi>)
src.sysmessage @1153 <argo.name> baska bir aile teklifi almis.
elif (<argo.gold> < 50000)
src.sysmessage @1153 <argo.name>'in uzerinde yeterli altin bulunmuyor (50.000gp)
elif (<eval <ref1.f_uyesayisi_kontrolu>> < 1)
src.sysmessage @1153 ailenizde bos yer kalmamis.
else
trysrc <argo> sdialog d_uye_kayidi,0,<args>,<src>
src.sysmessage @1153 teklif yapildi, cevap bekleniyor.
endif
return 1

[function f_uyesayisi_kontrolu]
for <eval <def.maxuye>> 0
if !strcmpi('<tag.uye<dlocal._for>>','')
local.bos = <dlocal._for>
endif
endif
return <dlocal.bos>

// * //


// * eşyalar

[itemdef i_aile_belgesi]
id = i_deed
type = t_script
value = 52356
name = aile belgesi
weight = 2

on=@create
color = 0455
attr = attr_newbie

on=@dclick
if (<topobj> != <src>)
src.sysmessage @1153 bunu sadece uzerinizdeyken kullanabilirsiniz.
elif strcmpi('<src.tag.soyad>','')
src.sysmessage @1153 <src.tag0.soyad> ailesine kayitlisiniz.
elif (<src.isdialogopen d_aile_kurulum>)
src.sysmessage @1153 aktif islemi bitirmeden kullanamazsiniz.
else
sdialog d_aile_kurulum
endif
return 1

[dialog d_aile_kurulum]
0,0
nomove

resizepic 50 50 5054 300 150
dtext 132 75 1152 Aile Kurulum Menusu
resizepic 100 110 3000 200 22
dtextentry 110 110 170 20 1152 0 <var.blank>
button 100 150 4005 4007 1 0 1
dtext 132 150 1152 Tamam

[dialog d_aile_kurulum button]
on = 1
if strlen(<argtxt[0]>) < 3 || strlen(<argtxt[0]>) > 15
src.sysmessage @1153 soy ismi en az 3, en fazla 15 karakterden olusmalidir.
elif (<f_isim_kontrolu <argtxt[0]>> > 0)
src.sysmessage @1153 soy isminizde gecersiz karakterler bulunuyor.
elif (<f_soyadi_kontrolu <argtxt[0]>> > 0)
src.sysmessage @1153 <argtxt[0]> ailesi kayitli durumda.
else
local.isim <strarg <src.name>>
local.soyisim <strtoupper(<strsub 0 1 <argtxt[0]>>)><strtolower(<strsub 1 15 <argtxt[0]>>)>
src.name <local.isim> <local.soyisim>
src.tag.soyad <argtxt[0]>
serv.newitem i_reis_kolyesi,1,<src>
new.link <src>
new.tag.uye0 <src>
new.tag.uyeler 1
src.equip <new>
src.tag.kolye = <new>
serv.b @1153,1,1 <local.soyisim> ailesi, <local.isim> tarafindan kuruldu.
remove
endif
return 1

[itemdef i_reis_kolyesi]
id = i_necklace_gold
type = t_jewelry
value = 0
weight = 0
name = aile kolyesi

on=@create
color = 1153
attr = attr_newbie

on=@click
message @1153 [<link.tag0.soyad> Aile Reisi]
message @1153 <link.name>
return 1

on=@dclick
if (<link> == <src>) && (<topobj> == <src>)
sdialog d_aile_kontrolu,0,0
endif

[itemdef i_uye_kolyesi]
id = i_necklace_gold
type = t_jewelry
value = 0
weight = 0
name = aile kolyesi

on=@create
color = 1153
attr = attr_newbie

on=@click
message @1153 [<link.tag0.soyad> Aile Uyesi]
message @1153 <link.name>
return 1

on=@dclick
if (<link> == <src>) && (<topobj> == <src>)
ref1 = <more1>
ref1.sdialog d_uye_menusu,0,0
endif

// * //

[dialog d_uye_menusu]
0,0

src.ctag.siralama = <argv[0]>
resizepic 20 50 5054 250 300
resizepic 30 60 3000 230 280
button 240 315 015e1 015e5 1 0 1
button 210 315 015e3 015e7 1 0 2
resizepic 20 350 5054 250 70
resizepic 30 360 3000 230 50
button 65 375 4005 4007 1 0 3
dtext 100 375 1000 Aileden Ayril
dorigin 60 60
for <eval (<src.ctag0.siralama>)> <eval (<src.ctag0.siralama> + 10)>
if strcmpi('<tag.uye<dlocal._for>>','')
ref2 = <tag.uye<dlocal._for>>
dtext +0 *20 <qval (<ref2.isonline>) ? 040 : 025> <ref2.name>
endif
endfor

[dialog d_uye_menusu button]
on = 0
src.ctag0.siralama =

on = 1 2
ref1 = <uid>
if <dargn> == 1
src.ctag.siralama +=10
else
if (<src.dctag0.siralama> > 0)
src.ctag.siralama -=10
endif
endif
ref1.sdialog d_uye_menusu,0,<src.dctag0.siralama>,<src.ctag0.aile>
return 1

on = 3
ref1 = <uid>
ref1.sdialog d_cikart,3,0
return 1

[dialog d_aile_kontrolu]
0,0
nomove

src.ctag.siralama = <dargv[0]>
page 0
resizepic 20 50 5054 250 170
resizepic 30 60 3000 230 150
dhtmlgump 50 70 200 20 0 0 <link.tag0.soyad> Aile Menusu (<dtag0.uyeler>/<eval <def.maxuye>> uye)
button 65 100 4005 4007 0 2 0
dtext 105 100 1000 Uyeleri Yonet
button 65 120 4005 4006 1 0 902
dtext 105 120 1000 Yeni Uye Al
button 65 140 4005 4006 1 0 904
dtext 105 140 1000 Aileyi Dagit

page 2
resizepic 20 220 5054 250 300
resizepic 30 230 3000 230 280
button 240 490 015e1 015e5 1 0 900
button 210 490 015e3 015e7 1 0 901
dorigin 100 220
for <eval (<src.ctag0.siralama>)> <eval (<src.ctag0.siralama> + 10)>
if strcmpi('<tag.uye<dlocal._for>>','')
ref1 = <tag.uye<dlocal._for>>
dtext +0 *20 <qval (<ref1.isonline>) ? 040 : 025> <ref1.name>
button -35 *0 0FA2 0FA4 1 0 <eval <local._for> + 1>
endif
endfor

[dialog d_aile_kontrolu button]
on = 0
src.ctag.siralama =

on = 1 899
ref1 = <uid>
if (<tag.uye<eval <argn> -1>> == <src>)
src.sysmessage @1153 kendi kendinizi aileden cikartamazsiniz.
else
ref1.sdialog d_cikart,1,<eval <argn> -1>
endif
return 1

on = 900 901
ref1 = <uid>
if <dargn> == 900
src.ctag.siralama +=10
else
if (<src.dctag0.siralama> > 0)
src.ctag.siralama -=10
endif
endif
ref1.sdialog d_aile_kontrolu,2,<src.dctag0.siralama>
return 1

on = 902
if !((<src.flags> & statf_dead) || (<src.flags> & statf_freeze))
src.targetf f_yeniuye <uid>
endif
return 1

on = 904
ref1 = <uid>
ref1.sdialog d_cikart,2,0
return 1


[dialog d_cikart]
0,0
nomove

resizepic 50 50 5054 300 150
resizepic 60 60 3000 280 130

page 1
src.ctag.uye = <tag.uye<dargv[0]>>
src.ctag.numara = <dargv[0]>
ref1 = <src.ctag0.uye>
dhtmlgump 95 70 230 50 0 0 <ref1.name> isimli aile uyesini aileden cikartmak istediginize emin misiniz?
button 90 150 4005 4007 1 0 1
dtext 125 150 1000 Evet

page 2
dhtmlgump 95 70 230 50 0 0 <src.tag0.soyad> isimli ailenizi dagitmak istediginize emin misiniz?
button 90 150 4005 4007 1 0 2
dtext 125 150 1000 Evet

page 3
dhtmlgump 95 70 230 50 0 0 <link.tag0.soyad> isimli ailenizden ayrilmak istediğinize emin misiniz?
button 90 150 4005 4007 1 0 3
dtext 125 150 1000 Evet

[dialog d_cikart button]
on = 0
src.ctag.uye =

on = 1
ref1 = <src.ctag0.uye>
ref1.tag.soyad =
ref1.name <strarg <ref1.name>>
try uid.<ref1.tag0.kolye>.remove
ref1.tag.kolye =
tag.uye<src.dctag0.numara> =
tag.uyeler --
src.sysmessage @1153 <ref1.name> isimli kisiyi ailenizden cikarttiniz.
if (<ref1.isonline>)
ref1.sysmessage @1153 Ailenizden cikartildiniz.
endif
src.ctag.uye =
src.ctag.numara =
return 1

on = 2
for <eval <def.maxuye>> 1
if strcmpi('<tag.uye<dlocal._for>>','') && (<tag.uye<dlocal._for>> != <src>)
ref6 = <tag.uye<dlocal._for>>
ref6.name <strarg <ref6.name>>
ref6.tag.soyad =
try uid.<ref6.tag0.kolye>.remove
ref6.tag.kolye =
tag.uye<dlocal._for>> =
endif
endfor
src.name <strarg <src.name>>
serv.b @1153,1,1 <src.tag0.soyad> ailesi, <src.name> tarafından dagitildi.
src.tag.soyad =
try uid.<src.tag0.kolye>.remove
src.tag.kolye =
return 1

on = 3
src.name <strarg <src.name>>
src.tag.soyad =
try uid.<tag0.kolye>.remove
src.tag.kolye =
for <eval <def.maxuye>> 1
if strcmpi('<tag.uye<dlocal._for>>','') && (<tag0.uye<dlocal._for>> == <src>)
tag0.uye<dlocal._for> =
tag0.uyeler --
endif
endfor
ref1 = <link>
ref1.sysmessage @1153 <src.name> isimli uye ailenizden ayrildi.
src.sysmessage @1153 Ailenizden ayrildiniz.
return 1


[dialog d_uye_kayidi]
0,0
nomove

src.ctag0.aile = <argv[0]>
src.ctag0.reis = <argv[1]>
resizepic 50 50 5054 320 150
resizepic 60 60 3000 300 130
dhtmlgump 100 75 250 60 0 0 <uid.<argv[1]>.name> sizi, <uid.<argv[1]>.tag0.soyad> ailesine davet ediyor. Kabul ediyor musunuz? (Giris 50.000gp)
button 90 150 4005 4007 1 0 1
dtext 125 150 1000 Evet
button 250 150 4005 4007 1 0 2
dtext 285 150 1000 Hayir

[dialog d_uye_kayidi button]
on = 0
ref1 = <src.ctag0.reis>
ref1.sysmessage @1153 <src.name> teklifinizi red etti.
src.ctag0.aile =
src.ctag0.reis =

on = 1
ref1 = <src.ctag0.aile>
ref2 = <src.ctag0.reis>
local.bos = <eval <ref1.f_uyesayisi_kontrolu>>
if !(<dlocal.bos>)
src.sysmessage @1153 <ref2.tag0.soyad> ailesinde bos yer kalmamis.
ref2.sysmessage @1153 ailenizde bos yer kalmamis.
elif (<src.gold> < 50000)
src.sysmessage @1153 Karakterinizde yeterli altin bulunmuyor (50.000gp)
ref2.sysmessage @1153 <src.name> uzerinde yeterli altin bulunmuyor (50.000gp)
else
local.isim <strarg <src.name>>
src.name <local.isim> <ref2.tag0.soyad>
src.tag.soyad <ref2.tag0.soyad>
ref1.tag.uyeler ++
ref1.tag.uye<dlocal.bos> = <src>
serv.newitem i_uye_kolyesi,1,<src>
new.link <src>
new.more1 = <ref1>
src.equip <new>
src.tag.kolye = <new>
src.gold -=50000
src.sysmessage <ref2.tag0.soyad> ailesine katildiniz.
for <eval <def.maxuye>> 0
if strcmpi('<ref1.tag.uye<dlocal._for>>','')
ref3 = <ref1.tag.uye<dlocal._for>>
if (<ref3> != <src>)
ref3.sysmessage @1153 <src.name> ailenize katildi.
endif
endif
endfor
src.ctag0.aile =
src.ctag0.reis =
endif
return 1

on = 2
ref1 = <src.ctag0.reis>
ref1.sysmessage @1153 <src.name> teklifinizi red etti.
src.ctag0.aile =
src.ctag0.reis =

[eof]

Slotherenin yazmış olduğu sistemi kullanıyorum herhangi bir sorun yok ancak aile chat fonksiyonunu bir türlü yapamadım saatlerdir uğraşıyorum yardımcı olursanız çok sevinirim. :asik2

Bu konu Zynex tarafından düzenlendi(2011-02-15 16:00, 13 yıl önce)
[plevel 1]
fc

[function fc]
if !(strmatch('<src.tag0.soyad>','0')
serv.allclients ffc <args>
endif

[function ffc]
if (strmatch('<src.tag0.soyad>','<tag0.soyad>')
sysmessage @1153 <src.name>: <args>
endif
çok teşekkür ederim nexiel :)

Üye Ol veya Giriş Yap

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