Master
59.2997
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, 14 yıl önce)
Eline sağlık.
eline sağlık : )
Arkadaşlar bakın her zaman bu şansı bulamazsınız bence bunu alın bir yerlere kaydedin çok işinize yarayacaktır...
Slothere acaba sistemini kullanabilirmiyim?
Master
59.2997
Tabi kullanabilirsin.

Üye Ol veya Giriş Yap

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