Geçenlerde bir arkadaşımın sunucusu için yazdığım ancak artık kullanılmayan, mysql üzerinden çalışan bir aile sistemini sizlerle paylaşmak istiyorum. Umarım faydalanabileceğiniz bölümler vardır içerisinde. Direk olarak kopyala/yapıştır mantığı ile kullanılmaması için mysql tablo oluşturma komutlarını paylaşmıyorum ancak scriptin kalan tüm bölümleri eksiksizdir. Gözünüze çarpan eksik veya hatalar olursa bildirebilirsiniz.
// writer: Slothere (**** V2 - Aile Sistemi)
// date: 30/04/2009
// version: 056b+
[function create_marriage_table]
[function f_create_family_table]
[chardef c_marriage_officer]
id = c_man
name = #names_humanmale
tspeech = spk_marriage
category = Civilized
subsection = Special Vendors
//Description = Marriage Officer
can = mt_nonmover
on=@Create
npc = brain_vendor
color = colors_skin
title = Officer
str = 100
dex = 25
int = 100
magery = 1000
meditation = 1000
magicresistance = 1000
itemnewbie = i_hair_long
color = colors_hair
itemnewbie = i_beard_long_med
color = match_hair
itemnewbie = i_robe
color = 0466
itemnewbie = i_staff_gnarled
itemnewbie = i_hat_wizards
color = 0466
itemnewbie = i_boots_calf
[speech spk_marriage]
on=*Evlenme*
if (<src.baseid> == c_elf_male) || (<src.baseid> == c_man)
if !(<src.tag0.family2>)
face
src.targetf f_purpose
src.sysmessage @1153 Evlenmek istediginiz kisiyi seciniz.
return 1
endif
endif
[function f_purpose]
if !(<argo.isplayer>) || (<argo.isgm>)
src.sysmessage @1153 Sadece insanlar uzerinde kullanabilirsiniz.
elif !((<argo.baseid> == c_woman) || (<argo.baseid> == c_elf_female))
src.sysmessage @1153 Sectiginiz kisinin cinsiyeti sizinle ayni olmamali.
elif (<argo.tag0.family2>)
src.sysmessage @1153 <argo.name> zaten birisi ile evli.
else
if !<db.connected>
db.connect
endif
db.query "select secuid from marriage where secuid = '<argo>'"
if <db.row.numrows>
src.sysmessage @1153 <argo.name> uzerinden yapilan bir aile basvurusu bulunuyor.
endif
db.close
trysrc <argo> sdialog d_marriage_query,0,<src>
endif
return 1
[dialog d_marriage_query]
0,0
obj = <argv[0]>
resizepic 50 150 5054 280 150
checkertrans 60 160 260 130
dhtmlgump 75 170 260 60 0 0 <def.bfont_white> <obj.name> sizinle evlenmek istiyor. Teklifi kabul ediyor musunuz?
button 75 250 0845 0846 1 0 1
dtext 95 247 1153 Evet
button 220 250 0845 0846 1 0 2
dtext 240 247 1153 Hayir
[dialog d_marriage_query button]
on = 1
if (<src.tag0.family2>)
src.sysmessage @1153 Bir aileniz bulundugundan kabul edemezsiniz.
else
trysrc <obj> sdialog d_marriage,0,<src>
endif
return 1
[dialog d_marriage]
0,0
nomove
obj = <argv[0]>
resizepic 225 125 5054 300 160
checkertrans 235 135 280 140
dtext 300 145 1153 <serv.name> Evlenme Menusu
resizepic 315 192 3000 105 20
dtext 250 190 1153 Soyadiniz:
//dtextentrylimited 320 190 100 20 1153 0 <var.empty> 15
dtextentry 320 190 100 20 0 1 Soyad
button 250 230 0845 0846 1 0 1
dtext 275 228 1153 Tamam
[dialog d_marriage button]
on = 1
for 0 <eval (strlen(<argtxt[1]>)) -1>
if !(strmatch('[a-z]','<strsub <dlocal._for> 1 <argtxt[1]>>')
src.sysmessage @1153 Soy isminizde sadece harf kullanabilirsiniz.
return 1
endif
endfor
if !(<db.connected>)
db.connect
endif
db.query "select surname from marriage where surname = '<addslashes <argtxt[1]>>'"
if (<db.row.numrows>)
src.sysmessage @1153 Bu aile onceden kayit edilmis, onay bekleniyor.
return 1
endif
db.query "select surname from marriage_staff where surname = '<addslashes <argtxt[1]>>'"
if (<db.row.numrows>)
src.sysmessage @1153 Bu aile onceden kayit edilmis.
return 1
endif
db.query "select firstname from marriage where firstuid = '<src>'"
if (<db.row.numrows>)
src.sysmessage @1153 Onceden yaptiniz bir basvurunuz bulunuyor.
return 1
endif
if (<src.gold> < 300000)
src.sysmessage @1153 Bankanizda yeterli miktarda altin bulunmuyor. (300.000 gp)
return 1
endif
src.gold -= 300000
db.execute "insert into marriage values(NULL,'<src>','<obj>','<addslashes <serv.rtime>>','<addslashes <argtxt[1]>>')"
src.sysmessage @1153 Basvurunuz yapildi. Yetkili kontrolunden sonra degerlendirilecek.
obj =
db.close
[plevel 5]
familycontrol
[function familycontrol]
if !(<db.connected>)
db.connect
endif
db.query "select * from marriage"
if !(<db.row.numrows>)
src.sysmessage @1153 Aile basvurusu yok.
db.close
return 1
endif
sdialog d_familycontrol
[dialog d_familycontrol]
0,0
nomove
if !(<db.connected>)
db.connect
endif
db.query "select * from marriage order by id limit 0, 20"
for 0 <eval <db.row.numrows>>
local.height += 20
endfor
resizepic 30 100 5054 600 <eval (<local.height> + 50>
checkertrans 40 110 580 <eval (<local.height> + 30)>
dtext 110 120 0466 Basvuru Yapan
dtext 265 120 0466 Esi
dtext 370 120 0466 Basvuru Tarihi
dtext 525 120 0466 Soy ismi
for 0 <eval <db.row.numrows> -1>
local.heigh = <eval (<local._for> * 20) + 150>
button 50 <dlocal.heigh> 0845 0846 1 0 <db.row.<dlocal._for>.id>
dtext 80 <dlocal.heigh> 1153 <db.row.<dlocal._for>.id>.
resizepic 100 <dlocal.heigh> 3000 115 20
dcroppedtext 105 <dlocal.heigh> 110 20 1153 <uid.<db.row.<dlocal._for>.firstuid>.name>
resizepic 220 <dlocal.heigh> 3000 115 20
dcroppedtext 225 <dlocal.heigh> 110 20 1153 <uid.<db.row.<dlocal._for>.secuid>.name>
resizepic 340 <dlocal.heigh> 3000 150 20
dcroppedtext 343 <dlocal.heigh> 145 20 1153 <db.row.<dlocal._for>.date>
resizepic 495 <dlocal.heigh> 3000 115 20
dcroppedtext 500 <dlocal.heigh> 110 20 1153 <db.row.<dlocal._for>.surname>
endif
endfor
[dialog d_familycontrol button]
on = 1 999
sdialog d_family_confirm,0,<dargn>
[dialog d_family_confirm]
0,0
nomove
resizepic 200 150 5054 300 180
checkertrans 210 160 280 160
if !(<db.connected>)
db.connect
endif
db.query "select * from marriage where id = '<dargv[0]>'"
dtext 230 240 1153 Basvuru Tarihi: <db.row.0.date>
dtext 230 180 1153 Basvuru Yapan: (<db.row.0.firstuid>) <uid.<db.row.0.firstuid>.name>
dtext 230 200 1153 Esi: (<db.row.0.secuid>) <uid.<db.row.0.secuid>.name>
dtext 230 220 1153 Soy ismi: <db.row.0.surname>
button 230 270 0845 0846 1 0 1
dtext 250 268 1153 Kabul Et
button 350 270 0845 0846 1 0 2
dtext 370 268 1153 Red Et
[dialog d_family_confirm button]
on = 1
ref1 = <db.row.0.firstuid>
ref2 = <db.row.0.secuid>
local.name1 = <strarg <ref1.name>>
local.name2 = <strarg <ref2.name>>
ref1.name <local.name1> <db.row.0.surname>
ref2.name <local.name2> <db.row.0.surname>
ref1.sysmessage @1153 Evlilik basvurunuz kabul edildi. Artik <ref2.name> ile evlisiniz.
ref2.sysmessage @1153 Evlilik basvurunuz kabul edildi. Artik <ref1.name> ile evlisiniz.
ref1.tag.family2 = <db.row.0.surname>
ref2.tag.family2 = <db.row.0.surname>
ref1.tag.realname2 = <local.name1>
ref2.tag.realname2 = <local.name2>
serv.newitem i_family_owner_necklace,1,<ref1>,1
new.tag.family2 = <db.row.0.surname>
new.link <ref1>
serv.newitem i_family_owner_necklace,1,<ref2>,1
new.tag.family2 = <db.row.0.surname>
new.link <ref2>
f_create_family_table <db.row.0.surname>
db.execute "insert into family_<db.row.0.surname> values(NULL, '<addslashes <ref1>>','<addslashes <ref1.name>>')"
db.execute "insert into family_<db.row.0.surname> values(NULL, '<addslashes <ref2>>','<addslashes <ref2.name>>')"
db.execute "insert into marriage_staff values(NULL,'<addslashes <ref1.name>>','<addslashes <ref2.name>>','<addslashes <serv.rtime>>','<addslashes <db.row.0.surname>>','<src>/<addslashes <src.name>>')"
db.execute "delete from marriage where id = '<db.row.0.id>'"
db.close
on = 2
ref1 = <db.row.0.firstuid>
ref1.gold += 300000
ref1.sysmessage @1153 Aile basvurunuz red edildi. Onceden odemis oldugunuz 300000 gp bankaniza aktarildi.
db.execute "delete from marriage where id = '<db.row.0.id>'"
db.close
[itemdef i_family_owner_necklace]
id = i_necklace_gold
type = t_jewelry
name = aile kolyesi
weight = 0.5
on=@Create
color = 06ef
attr = attr_newbie
on=@Click
message @1153 [<tag0.family2> Aile Reisi]
message @1153 [<link.name>]
return 1
on=@DClick
Equip
if !(<link> == <src>)
src.sysmessage @1153 Bu kolyeyi sadece sahibi kullanabilir.
return 1
endif
if !(strmatch('<src.tag0.family2>','<tag0.family2>')
src.sysmessage @1153 Bu kolyeyi sadece <tag0.family2> ailesine mensup birisi kullanabilir.
return 1
endif
src.ctag0.num = 0
src.sdialog d_family,0,<tag0.family2>
[dialog d_family]
0,0
nomove
if !(<db.connected>)
db.connect
endif
db.query "select * from family_<argv[0]> order by id limit <src.dctag0.num>, 20"
while !(<isempty <db.row.<dlocal._while>.id>>)
local.height += 25
endwhile
resizepic 50 150 5054 280 <eval (<local.height> + 120)>
checkertrans 60 160 260 <eval (<local.height> + 100)>
dtext 85 170 1153 <argv[0]> Ailesi
if (<db.row.0.memberuid> == <src.uid>) || (<db.row.1.memberuid> == <src.uid>)
button 85 200 0845 0846 1 0 1000
dtext 105 197 1153 Aileyi Dagit
button 200 200 0845 0846 1 0 1001
dtext 220 197 1153 Uye Al
else
button 85 200 0845 0846 1 0 1002
dtext 105 197 1153 Aileden Cik
endif
button 290 225 015e1 015e5 1 0 2000
button 270 225 015e3 015e7 1 0 2001
resizepic 60 220 5054 260 2
dtext 150 225 1153 Aile Uyeleri
while !(<isempty <db.row.<dlocal._while>.id>>)
local.heigh = <eval (<dlocal._while> * 20) + 250>
dtext 100 <dlocal.heigh> <qval (<uid.<db.row.<dlocal._while>.memberuid>.isonline>) ? 045 : 025> <db.row.<dlocal._while>.membername>
if (<db.row.0.memberuid> == <src.uid>) || (<db.row.1.memberuid> == <src.uid>)
button 70 <eval <dlocal.heigh> + 2> 0845 0846 1 0 <eval (<local._while> +1)>
endif
endwhile
[dialog d_family button]
on = 1 999
//sysmessage @1153 <eval <dargn> -1>
if (<eval <dargn> -1> == 0) || (<eval <dargn> -1> == 1)
src.sysmessage @1153 Aile reisleri aileden cikartilamaz.
return 1
endif
sdialog d_family_member_decal,0,<db.row.<eval <argn> -1>.memberuid>
on = 2000
src.ctag0.num += 20
sdialog d_family,0,<src.tag0.family2>
on = 2001
if (<src.dctag0.num> > 0)
src.ctag0.num -= 20
endif
sdialog d_family,0,<src.tag0.family2>
on = 1000
sdialog d_family_deployment
on = 1001
src.targetf f_invite_family
src.sysmessage @1153 Aileye uye olmasini istediginiz kisiyi seciniz.
return 1
on = 1002
sdialog d_family_member_leave
[dialog d_family_member_leave]
0,0
nomove
resizepic 50 150 5054 280 150
checkertrans 60 160 260 130
dhtmlgump 75 180 260 60 0 0 <def.bfont_white> <src.tag0.family2> isimli ailenizden ayrilmak istediginize emin misiniz?
button 75 230 0845 0846 1 0 1
dtext 95 227 1153 Evet
button 220 230 0845 0846 1 0 2
dtext 240 227 1153 Hayir
[dialog d_family_member_leave button]
on = 1
local.family2 = <src.tag0.family2>
if !(<db.connected>)
db.connect
endif
db.query "select * from family_<local.family2>"
src.name = <src.tag0.realname2>
src.findid(i_family_member_necklace).remove
db.execute "delete from family_<local.family2> where memberuid = '<src>'"
src.tag0.family2 =
src.tag0.realname2 =
ref1 = <db.row.0.memberuid>
ref1.sysmessage @1153 <src.name> isimli aile uyesi aileden ayrildi.
src.sysmessage @1153 Aileden ayrildiniz.
db.close
[dialog d_family_member_decal]
0,0
nomove
obj = <argv[0]>
resizepic 50 150 5054 280 150
checkertrans 60 160 260 130
dhtmlgump 75 180 260 60 0 0 <def.bfont_white> <obj.name> isimli aile uyesini aileden cikartmak istediginize emin misiniz?
button 75 230 0845 0846 1 0 1
dtext 95 227 1153 Evet
button 220 230 0845 0846 1 0 2
dtext 240 227 1153 Hayir
[dialog d_family_member_decal button]
on = 1
if !(<db.connected>)
db.connect
endif
db.query "select memberuid from family_<src.tag0.family2> where memberuid = '<obj>'"
if !(<db.row.numrows>)
src.sysmessage @1153 Boyle bir uye aileye kayitli degil?
return 1
endif
db.query "select * from family_<src.tag0.family2> where memberuid = '<obj>'"
obj.name = <obj.tag0.realname2>
obj.findid(i_family_member_necklace).remove
db.execute "delete from family_<src.tag0.family2> where memberuid = '<obj>'"
if (<obj.isonline>)
obj.sysmessage @1153 Ailenizden cikartildiniz.
endif
obj.tag.family2 =
obj.tag.realname2 =
src.sysmessage @1153 <obj.name> isimli aile uyesi aileden cikartildi.
db.close
[dialog d_family_deployment]
0,0
nomove
resizepic 50 150 5054 300 140
checkertrans 60 160 280 120
dhtmlgump 80 175 260 50 0 0 <def.bfont_white> Ailenizi dagitmak istediginize emin misiniz?
button 80 220 0845 0846 1 0 1
dtext 110 217 1153 Evet
button 220 220 0845 0846 1 0 2
dtext 240 217 1153 Hayir
[dialog d_family_deployment button]
on = 1
local.family2 = <src.tag0.family2>
if !(<db.connected>)
db.connect
endif
db.query "select * from family_<local.family2>"
while !(<isempty <db.row.<dlocal._while>.id>>)
obj = <db.row.<dlocal._while>.memberuid>
obj.name <obj.tag0.realname2>
obj.findid(i_family_member_necklace).remove
obj.findid(i_family_owner_necklace).remove
obj.tag.family2 =
obj.tag.realname2 =
if (<obj.isonline>) && (<obj> != <src>)
obj.sysmessage @1153 Aileniz, aile reisi tarafindan dagitildi.
endif
endwhile
src.findid(i_family_owner_necklace).remove
db.execute "drop table if exists family_<local.family2>"
db.execute "delete from marriage_staff where surname = '<local.family2>'"
src.sysmessage @1153 Ailenizi dagittiniz.
db.close
[function f_invite_family]
if !(<argo.isplayer>) || (<argo.isgm>)
sysmessage @1153 Sadece oyunculari secebilirsiniz.
return 1
elif (<argo.tag0.family2>)
sysmessage @1153 <argo.name> bir aileye kayitli durumda.
return 1
endif
if !(<db.connected>)
db.connect
endif
db.query "select firstuid from marriage where firstuid = '<argo>'"
if (<db.row.numrows>)
sysmessage @1153 <argo.name> bir aile kurmak icin basvuruda bulunmus.
return 1
endif
db.query "select secuid from marriage where secuid = '<argo>'"
if (<db.row.numrows>)
sysmessage @1153 <argo.name> uzerinden yapilan bir aile basvurusu bulunuyor.
return 1
endif
trysrc <argo> sdialog d_family_invitation,0,<src>
sysmessage @1153 Davetiniz <argo.name>'e iletildi.
[dialog d_family_invitation]
0,0
obj = <argv[0]>
resizepic 200 125 5054 310 160
checkertrans 210 135 290 140
dhtmlgump 225 150 260 40 0 0 <def.bfont_white> <obj.name> sizi <obj.tag0.family2> ailesine davet ediyor. Katilmak istiyor musunuz?
if (<src.gold> < 10000)
button 230 200 0845 0845 0 0 1
dhtmlgump 230 220 260 40 0 0 <def.bfont_lred> Kabul edebilmek icin bankanizda 10000gp bulunmali.
else
button 230 200 0845 0846 1 0 1
endif
dtext 250 196 1153 Evet
button 380 200 0845 0846 1 0 2
dtext 405 196 1153 Hayir
[dialog d_family_invitation button]
on = 2
obj.sysmessage @1153 <src.name> davetinizi red etti.
on = 1
if (<src.gold> < 10000)
obj.sysmessage @1153 <src.name>'in bankasinda 10000gp bulunmuyor.
src.sysmessage @1153 Bankanizda 10000gp bulunmuyor.
return 1
endif
src.gold -= 10000
local.name = <strarg <src.name>>
src.name <local.name> <obj.tag0.family2>
serv.newitem i_family_member_necklace,1,<src>,1
new.tag0.family2 = <obj.tag0.family2>
new.link = <src>
src.tag.realname2 = <local.name>
src.tag.family2 = <obj.tag0.family2>
if !(<db.connected>)
db.connect
endif
db.execute "insert into family_<obj.tag0.family2> values (NULL,'<addslashes <src>>','<addslashes <src.name>>')"
obj.sysmessage @1153 <src.name> basvurunuzu kabul etti.
db.close
[itemdef i_family_member_necklace]
id = i_necklace_gold
type = t_jewelry
name = aile kolyesi
weight = 0.5
on=@Create
color = 076ef
attr = attr_newbie
on=@Click
message @1153 [<tag0.family2> Aile Uyesi]
message @1153 [<link.name>]
return 1
on=@DClick
Equip
if !(<link> == <src>)
src.sysmessage @1153 Bu kolyeyi sadece sahibi kullanabilir.
return 1
endif
if !(strmatch('<src.tag0.family2>','<tag0.family2>')
src.sysmessage @1153 Bu kolyeyi sadece <tag0.family2> ailesine mensup birisi kullanabilir.
return 1
endif
src.ctag0.num = 0
src.sdialog d_family,0,<tag0.family2>
[eof]
Bu konu Slothere tarafından düzenlendi(2009-07-13 02:19, 15 yıl önce)