Kurulum;
List fonksyonunun çalıştığı bir sphere versyonunu kullanmanız gerekmektedir.
Tüm evleri ve eşya seviyesini def olarak sphereye tanıtmanız gerekmektedir. Scriptte tower,castle ve plaster house tanıtılmıştır.
Evlerin multi kodlarına ev komutlarını aktif etmek için speech'in eklenmesi gerekiyor.

Özellikler;
>Ortak ve dostların hesabındaki diğer karakterlersde ortak ve dostlara dahil.
>Ev kiralama ve satış aktif.
>Evlerin eşya limiti evden eve değişyor.

Eksikler;
>Henüz aktif bir sunucuda test edilmedi ev sistemi gibi komplike sistemlerin stabil olarak oturması için biraz zaman geçmesi gerekmektedir. Scriptte bir çok hata olması muhtemel sorunları çözenler lütfen burda paylaşsınlarki daha sonra başkalarıda aynı sıkıntıyı yaşamasınlar.
>Tabela değiştirme.
>Ev ismi(evlere isim koymayı gereksiz bulduğum için eklemedim.
>Ostard egg limiti için gerekli sorgu.

Credits

Resimler



// Scripted by Eureka
// v0.56b+

[comment ChangeLog]
-Features
>Ortak ve dostların hesabındaki diğer karakterlersde ortak ve dostlara dahil.
>Ev kiralama ve satış aktif.
>Evlerin eşya limiti evden eve değişyor.

[defname setting_house_system]
house_refreshtime = "15"
house_refreshfee = "5000"
house_max_egg = "3"
house_max_box = "3"
house_limit_partner = "5"
house_limit_friend = "15"
///// ortak,sahip,dost

house_membeR_0 = "dost"
house_member_1 = "ortak"
house_member_2 = "sahip"

//// ev seviyeleri ve eşya limtileri ///


// ev seviyeleri
hi_multi_house_stone_plaster_smaill = "0"
hi_multi_tower = "2"
hi_multi_castle = "2"


//eşya limitleri
[function get_storage_limit]
DOSWITCH <ARGs>
RETURN 3 75
RETURN 5 150
RETURN 7 300
ENDDO

[DIALOG d_house_main]
0,0
page 0
resizepic 100 120 5054 400 265
alphablack 110 130 380 245

resizepic 200 70 5054 195 40
alphablack 210 80 175 20

dorigin 110 130

dtext +120 -50 63 <serv.servname> House Panel

dtext +20 +20 38 Ev Bilgileri
dhtmlgump +20 +50 170 150 0 0 <def.bfont_lyellow>Evin sahibi : <def.bfont_white><uid.<house_owner>.name><def.br><def.bfont_lyellow>Sabit eşya : <def.bfont_White><eval <strarg <house_lockeddown>>>/<streat <get_storage_limit <ddef.h<baseid>>>><def.br><def.bfont_lyellow>Kuluçka : <def.bfont_white><eval <streat <strarg <house_lockeddown>>>>/<strarg <get_storage_limit <ddef.h<baseid>>>><def.br><def.bfont_lyellow>Strongbox : <def.bfont_White><eval <streat <streat <house_lockeddown>>>>/<strarg <get_storage_limit <ddef.h<baseid>>>><def.bfont_white><def.br><def.br><def.bfont_lyellow>Ortaklar : <def.bfont_white><dhouse_membercount 1><def.br><def.bfont_lyellow>Dost sayısı : <def.bfont_white><dhouse_membercount 0> <def.br><def.bfont_lyellow>Kurulum : <def.bfont_White><strarg <tag.house_builddate>>
dhtmlgump +185 +30 160 50 0 0 <def.bfont_White>Bu ev <qval (<tag0.house_hatali>)?<def.bfont_red>hatalı:<def.bfont_lgreen>düzgün> <def.bfont_White>inşa edilmiş.<def.br>Bu ev halka <qval !(<tag0.house_public>)?<def.bfont_lred>kapalı:<def.bfont_lgreen>açık>.

button +185 +85 2714 2715 1 0 1
dhtmlgump +210 +85 150 25 0 0  <def.bfont_white>Ortak ekle/kaldir.

button +185 +105 2714 2715 1 0 2
dhtmlgump +210 +105 150 25 0 0  <def.bfont_lred>Dost ekle/kaldir.

button +185 +125 2714 2715 1 0 3
dhtmlgump +210 +125 150 25 0 0  <def.bfont_white>Evi kaldır.(re-deed)

button +185 +145 2714 2715 1 0 4
dhtmlgump +210 +145 150 25 0 0  <def.bfont_lred>Evi transfer et.

button +185 +165 2714 2715 1 0 5
dhtmlgump +210 +165 150 25 0 0  <def.bfont_white>Evi halka <qval (<tag0.house_public>)?kapat:aç>.

button +185 +185 2714 2715 1 0 6
dhtmlgump +210 +185 150 25 0 0  <def.bfont_lred>Evi satışa/kiraya çıkart.

if (<src.isgm>)
if (<tag0.house_onaylanmamis>)
button +105 +215 2714 2715 1 0 201
dhtmlgump +130 +215 150 25 0 0  <def.bfont_white>Evi hatasız olarak onayla.
else
button +105 +215 2714 2715 1 0 201
dhtmlgump +130 +215 150 25 0 0  <def.bfont_white><DEF.BIG>HATALI EV !!
endif

page 2


page 3
resizepic 100 400 5054 400 40
alphablack 110 410 380 20
dtext 120 410 54 Evi kaldırmak istediğinizden eminmisiniz ?

button 370 414 2103 2104 1 0 31
dtext 385 410 63 Evet.

button 420 414 2103 2104 1 0 0
dtext 435 410 38 Hayır.


page 4 
resizepic 510 120 5054 200 265
alphablack 520 130 180 245

dtext 550 140 63 <qval !(0<args>==0)?Ortak:Dost> Listesi

local.y = 140

if (0<args>==1)
	local.query = "> 0"
else
	local.query = "< 1"
endif


for <src.ctag0.page_limit> (<src.ctag0.page_limit>+9)
if 0<streat <list.house_<uid>.<dlocal._For>>>>
if <strarg <src.ishmember <uid>>> <local.query> 
 local.y +=20	
	    if (<house_owner>==<src.uid>) || (<src.account.plevel> > 4)
	   	 button 535 (<local.y>+4) 2103 2104 1 0 (50+<local._for>)
	    endif
ref15 = <streat <list.house_<uid>.<dlocal._For>>>>
 	    dcroppedtext 550 <local.y> 80 17 1153 <ref15.name>
	endif
endif
endfor

if (<house_owner> == <src.uid>) || (<src.account.plevel> > 4)
button 570 345 2714 2715 1 0 <qval !(0<args>==0)?33:34>
dtext 590 345 1153 <qval !(0<args>==0)?Ortak:Dost> ekle
endif

button 680 345 015e1 015e5 1 0 41
button 530 345 015e3 015e7 1 0 42

page 5
if (<src.ctag0.house_member>)
resizepic 100 400 5054 400 70
alphablack 110 410 380 50
dtext 120 410 54 <uid.<src.ctag0.house_member>.name> evinizin üye listesinden çıkartmak istediğinize eminmisiniz ?

dtext 135 430 63 Evet.
button 120 434 2103 2104 1 0 32

dtext 335 430 38 Hayır.
button 320 434 2103 2104 1 0 0

endif

page 6
resizepic 510 120 5054 200 265
alphablack 520 130 180 245

dtext 550 140 63 Satılık/Kiralik Işlemi

dtext 550 180 39 Fiyat : 
dtextentrylimited 593 180 120 20 1152 1 7 <var.blank>

radio 550 210 56 55 0 1
radio 550 230 56 55 0 2
dtext 570 210 1153 Kiralık
dtext 570 230 1153 Satılık

dhtmlgump 530 260 150 100 0 0 <def.bfont_white>Kira süresi : <def.bfont_yellow>1 haftadır.<def.bfont_white><def.br>Satış yapabilmek için evinizde sabit eşya bulunmamalı.
button 550 340 4005 4006 1 0 35
dtext 585 340 1153 Tamamla.

[DIALOG d_house_main button]
ON=1
sdialog d_house_main,4 1

ON=2
sdialog d_house_main,4 0

ON=3
sdialog D_house_main,3

ON=4

if <house_owner> != <src.uid>
   src.sysmessage @38,,1 bu işlemi sadece ev sahibi kullanabilir.
   return 1
endif

src.targetf transfer_house <uid>
src.sysmessage @1153,,1 Evi devretmek istediğiniz kişiyi seçin ?

ON=5
if <house_owner> != <src.uid>
   src.sysmessage @38,,1 bu işlemi sadece ev sahibi kullanabilir.
   return 1
endif

if (<tag0.house_public>)
   if (0<house_vendors>)
	src.sysmessage @38,,1 Evinizde vendor varken evinizi halka kapatamazsınız.
   	return 1
   endif

   tag.house_public =
   src.sysmessage @1153,,1 Evi halka kapattınız.

else
   tag.house_public =1
   src.sysmessage @1153,,1 Eviniz halka açılmıştır. 
   endif

ON=6
if <house_owner> != <src.uid>
  src.sysmessage @38,,1 Bu özelliği sadece ev sahibi kullanabilir.
  return 1
endif
sdialog d_house_main,6

ON=31 // redeed
if <house_owner> == <src.uid>
   serv.newitem i_deed,1,<src.uid>
   new.more1 = <baseid>
   new.name Deed To <name>
   src.tag.house =
   ref1 = <uid>
   forinstances i_key_copper
      if (<link.uid>==<ref1.uid>)
          remove
      endif
   endfor
   list.house_<uid>.clear
   remove
   src.sysmessage @1153,,1 Evi kaldırdınız.
else
   src.sysmessage @38,,1 Ev'i sadece evin sahibi kaldırabilir.
endif

ON=32
remove_hmember <src.ctag0.house_resignuid>

ON=33,34
// 33 ortak, 34 dost
targetf add_member <uid>,<qval <argn>==33)?1:0>
src.sysmessage @39,,1 <qval (<argn>==33)?Ortak:Dost> eklemek istediğiniz kişiyi seçin ?

ON=35
if (<eval <strarg <house_lockeddown>>> > 1)
   src.sysmessage @38,,1 Evi satışa/kiralığa çıkartabilmeniz için evinizde sabit eşya bulunmamalıdır.
elif (0<house_vendors> > 0)
  src.sysmessage @38,,1 Evinzide kurulu vendor varken evinizi sayılığa/kiralığa çıkartamazsınız.
elif !(<argchk[1]>) && !(<argchk[2]>)
  src.sysmessage @38,,1 Evi kiralık yada satılık olarak işaretlemelisiniz.
  sdialog d_house_main,6
elif !(<isnumeric <argtxt[1]>>)
  src.sysmessage @38,,1 fiyat kısmını hatalı girdiniz.
  sdialog d_house_main,6
elif (<argtxt[1]> < 10000)
  src.sysmessage @38,,1 Kira bedeli haftalık 10.000 altından daha düşük olamaz.
  sdialog d_house_main,6
else
   local.additionaltime = 10*60*60*24*15
   tag.4sale = <qval (<argchk[1]>)?1:2>
   tag.house_saleprice = <argtxt[1]>
   tag.house_saleclose_date = <serv.time> + <local.additionaltime>
   src.sysmessage @1153,,1 Evinizi <qval (<argchk[1]>)?kiralık:satılık> olarak işaretlediniz.(<bolukayir <dtag.house_saleprice>>gp)
endif
ON=20 // refreshhouse
if (<src.gold> < <def.house_Refreshfee>)
   src.sysmessage @38,,1 Evinizi yenileyebilmek için <bolukayir <ddef.house_refreshfee>> altın gereklidir.
else
   src.gold -=<def.house_Refreshfee>
   timer = <def.house_refreshtime>*60*60*24
   src.sysmessage @63,,1 Ev başarıyla yenilendi.
endif

ON=50,100
local.argn = (<argn>-50)
ref1 = <streat <list.house_<uid>.<dlocal.argn>>>
src.ctag.house_member = <ref1.uid>
src.ctag.house_resignuid = <dlocal.argn>
sdialog d_house_main,5

ON=201
tag.house_onaylanmamis = <qval (<tag0.house_onaylanmamis>)?0:1>
src.sysmessage @1153,,1 Evi <qval (<tag0.house_onaylanmamis>)?hatasız:hataslı> olarak işaretlediniz.

[function house_membercount]
for 0 <f_arraY_lenght <tag0.members>>
     if (<eval <strarg <f_array <tag0.members>,<dlocal._for>>>> == 1)
        local.members +=1
     elseif (<eval <strarg <f_array <tag0.members>,<dlocal._for>>>> < 1)
        local.friends +=1
      endif
endfor

return <qval (<argn>==1)?<local.members>:<local.friends>>
      

[function remove_hmember]
LIST.house_<uid>.<dargs>.REMOVE


[function house_vendors]
ref1 = <uid>
forchars 100
   if (<region.uid> == <ref1.uid>) && (<brain> == brain_vendor)
       local.vendors ++
   endif
endfor

[function house_lockeddown]
ref1 = <uid>
foritems 100
	if !(<type> == t_multi) && (<region.uid>) == <ref1.uid>) && (<attr>&attr_move_never)
		local.items ++
			if (<baseid>==i_kulucka)
				local.kulucka ++
			elif (<baseid>==i_house_Strongbox)
				local.strongbox ++
			elif (<type>==t_door) ||(<type>==t_door_locked)
			local.doors ++
		endif
	endif
endfor

return <eval <local.items>-<local.doors>> <local.kulucka> <local.strongbox>


[function house_owner]
local.a = <streat <list.house_<uid>.0>>>
local.b = <EVAL strlen(<local.a>)> 
return <strsub <local.b> <eval <local.b>-2> <streat <list.house_<uid>.0>>>

[function getuid_fromacc]
ref1 = <serv.account.<ARGS>.char.0>
for 0 (<ref1.account.chars>-1)
	ref2 = <ref1.account.char.<dlocal._for>>
		if (<ref2.tag.house>)
			return <ref2.uid>
		endif
endfor

[function ishmember]
ref1 = <args>
for list 0 2
if <list.house_<ref1.uid>.findelem "<dlocal.list> <uid>"> >= 0 
return <list.house_<ref1.uid>.<list.house_<ref1.uid>.findelem "<dlocal.list> <uid>">>
endif
endfor
return 0

[ITEMDEF 0bd1]
//brass sign
DEFNAME=i_sign_brass
TYPE=T_SIGN_GUMP
TDATA2=064
FLIP=1
RESOURCES=2 I_BOARD, 1 i_ingot_iron
CATEGORY=Decoration - Signs
SUBSECTION=Blank
DESCRIPTION=Brass Blank
DUPELIST=0bd2

ON=@create
timerf 1,link.timer = <def.house_refreshtime>*60*60*24
timerf 1,link.tag.house_builddate = <serv.rtime>
timerf 1,link.tag.house_onaylanmamis = 1
timerf 1,region.events +r_player_house


ON=@click
if (<link.tag0.4sale> == 1)
    message @1153,,1 [Kiralık]
elif (<link.tag0.4sale> == 2)
    message @1153,,1 [Satılık]
endif

message @07d4,,1 [<f_zamangoster <link.timer>>]
message @1153,,1 <link.name>
return 1

ON=@dclick
if !(0<list.house_<link.uid>.count>)
  serv.list.house_<link.uid>.add 2 <src.uid>
  src.tag.house = 1
  serv.allclients house_message <link.uid>
  src.sysmessage @53,,1 Ev artık size aittir. Yetkililer tarafından onaylandıktan sonra kullanabilirsiniz.
endif

if (<src.ishmember <link.uid>>)
link.sdialog d_house_main
else
if (<link.tag0.4sale>)
link.sdialog d_house_buy
endif

endif

return 1

ON=@timer
remove
return 1

[itemdef i_house_Strongbox]
id i_box_brass
name strongbox
tdata2 04b

ON=@create
timer -1
attr attr_move_never

ON=@click
message @07d4,,1 [<link.name>]

ON=@dclick
if (<src.uid> != <link.uid>) || (<src.account.plevel> < 5)
return 1
endif

ON=@destroy
if (<rescount> > 0)
serv.newitem i_backpack

forcont <uid>
	if (<type> != t_corpse)
		cont = <new.uid>
		local.items .=,<name>-<uid>
	endif
endfor

new.cont = <link.findlayer.layer_bankbox>
serv.log ## Strongbox silindi. sahibi : <link.uid> icindeki esyalar : <strsub 1 0 <local.items>>
endif

[itemdef i_kulucka]

[function add_member]
ref1 = <argv[0]>
ref2 = <argo>
if !(<argo.isplayer>)
  src.sysmessage @38,,1 Sadece oyuncuları evinize üye yapabilirsiniz.
elif (<argo.region.uid> != <ref1.uid>)
  src.sysmessage @38,,1 <argo.name> evin içinde değil.
elif (<argo> == <src>)
  src.sysmessage @38,,1 Kendinize teklif gönderemezsiniz.
elif (<argo.ishmember <ref1.uid>>)
  src.sysmessage @38,,1 <argo.name> bu eve zaten ortak yada dost.
elif (<list.house_<argo.region.uid>.count> == <def.house_limit_partner>)
  src.sysmessage @38,,1 Evin ortak/dost limiti dolu.
else
  serv.b <name>
  argo.ctag.house_offer = <ref1.uid> <argv[1]>
  trysrc <argo.uid> src.dialogclose d_house_offer_membership
  argo.timerf clear
  trysrc <argo.uid> src.sdialog d_house_offer_membership,0 <src.uid>
  src.sysmessage @1153,,1 <argo.name> adlı oyuncuya teklifiniz iletildi.
  argo.sysmessage @1153,,1 <src.name> adlı oyuncu sizi evine <qval (<argn>)?ortak:dost>) olarak eklemek istiyor.
endif

[dialog d_house_offer_membership]
0,0
page 0
resizepic 100 100 5054 400 70
alphablack 110 110 380 50
timerf 10,dialogclose d_house_offer_membership
dtext 120 110 54 <uid.<args>.name> sizi evine <qval (<streat <ctag0.house_offer>>==1)?ortak:dost> olarak eklemek istiyor ?

dtext 135 130 63 Evet, onaylıyorum.
button 120 134 2103 2104 1 0 1

dtext 305 130 38 Hayır, onaylamıyorum.
button 290 134 2103 2104 1 0 0
endif

[dialog d_house_offeR_membership button]
ON=0
src.sysmessage @1153,,1 Teklifi geri çevirdiniz.

ON=1
ref1 = <strarg <ctag0.house_offer>>

if (<src.ishmember <ref1.uid>>)
src.sysh_trk Bu eve zaten üyesiniz.
return 1
endif

list.house_<ref1.uid>.add=<streat <ctag0.house_offer>> <src.uid>
sysmessage @64,,1 Üyeliğiniz tamamlandı.
clearctags house

/// speech
[speech spk_house]
ON=i wish to lock this down
if !(<src.ishmember <uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif

targetf house_edit_item 1

ON=i wish to release this

if !(<src.ishmember <uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif

targetf house_edit_item 2

ON=item down

if !(<src.ishmember <uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif

targetf house_edit_item 4

ON=item up
if !(<src.ishmember <uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif

targetf house_edit_item 3

ON=i wish to remove this
if !(<src.ishmember <uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif


targetf house_edit_item 5

ON=i ban thee
if !(<src.ishmember <uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif

targetf house_edit_item 6

ON=remove thyself
if !(<src.ishmember <uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif

targetf house_edit_item 6

ON=i wish to place a strongbox
if (<strarg <src.ishmember <uid>>> < 1)
  src.sysmessage @38,,1 Strongbox koyabilmek için bu eve ortak olmalısınız.
elif (<streat <streat <house_lockeddown>>> == <strarg <get_storage_limit <def.h<baseid>>>>)
  src.sysmessage @38,,1 Evdeki strongbox sayısı <strarg <get_storage_limit <def.h<baseid>>>> dan fazla olamaz.
elif (<hasstrongbox <src.uid>>)
  src.sysmessage @38,,1 Bu evde zaten bir strongboxunuz var.
else
  serv.newitem i_house_Strongbox
  new.attr attr_move_never
  new.link = <src.uid>
  new.p = <src.p>
  link.say @1153,,1 <src.name> strongbox ekledi.
endif

[function hasstrongbox]
ref1 = <args>
foritems 100
if (<baseid>==i_house_Strongbox) && (<region.uid> == <src.region.uid>)
 if (<link.uid>==<ref1.uid>)
   return 1
endif
endif

return 0


[function house_edit_item]
if !(<src.ishmember <region.uid>>)
   src.sysmessage @38,,1 Bu eve ortak yada dost değilsiniz.
   return 1
endif
if (<args>==1)
ref7 = <region.uid>
serv.b 
if <eval <strarg <ref7.house_lockeddown>>> > <streat <get_storage_limit <ddef.h<ref7.baseid>>>>
  src.sysmessage @38,,1 Evdeki sabit eşya sayısı çok fazla.
  return 1
endif
	if <argo.isneartype t_sign_gump 2>
	   src.sysmessage @38,,1 Evin ban bolgesinin 3kare yakinina item sabitleyemezsiniz.
	   return 1	
	endif
if ((<argo.type> == t_stone_guild) || (<argo.type> == t_spell) || (<argo.baseid> == i_corpse) || (<argo.type> == t_blood) || (<argo.baseid> == i_sticks) || (<argo.baseid> == i_deed_dummyn) || (<argo.type> == T_WEAPON_MACE_STAFF))
		src.sysmessage @38,,1 Bunu evinize sabitleyemezsiniz.
	elseif (<argo.cont>)
		src.sysmessage @38,,1 Sabitlemek istediğiniz eşya yerde durmalı.
	elseif (<argo.attr>&attr_move_never)
		src.sysmessage @38,,1 Bu eşya zaten sabitlenmis.
	elseif (<argo.link.isitem>) || (<argo.link.ischar>) 
		src.sysmessage @38,,1 Bunu sabitleyemezsiniz.
	else
		argo.link <uid>
		argo.attr <argo.attr>&~attr_decay
		argo.attr <argo.attr>|attr_move_never
		argo.timer -1
		argo.message @07d4,,1 [sabit]     
		if ((<argo.type>) == t_book)
			argo.more 1
		endif
		argo.update
	endif
elif (<args>==2)

iF (<argo.baseid> == i_guildstone)
	src.sysmessage @38,,1 Lonca taşını kaldıramazsınız bu şekilde.
	return 1
ENDIF

if (<argo.baseid> == i_bones)
src.sysmessage @38,,1 Cesetler üzerinde bu işlemi yapamazsınız.
return 1
endif

if (<argo.baseid> == i_loom_upright)
local.act <argo.uid>
try uid.<uid.<args>.tag0.<local.act>part>.remove
try uid.<uid.<args>.tag0.<uid.<args>.tag0.<local.act>part>part>.remove
try uid.<args>.tag0.<local.act>part
try uid.<args>.tag0.<uid.<args>.tag0.<local.act>part>part
try serv.newitem i_deed_loom_n
try new.bounce
return 1
endif

if (<argo.baseid> == i_pentagram)
		if !(<argo.dispid> == 0fea)
			src.sysmessage @38,,1 Pentagramı kaldırmak için ortasını seçiniz.
                        return 1
		else
			local.act <argo.uid>
			argo.remove
                        for 1 8
			try uid.<uid.<args>.tag0.<local.act>part<dlocal._for>>.remove
			try uid.<args>.tag0.<local.act>part<dlocal._for>
                        endfor
			try serv.newitem i_deed_pentagram
			try new.bounce
                        return 1
		endif

endif

IF (<ARGO.ISITEM>)
   IF ((<ARGO.TYPE>==t_door_locked) || (<ARGO.TYPE>==t_door) || (<ARGO.TYPE>==t_sign_gump) || (<ARGO.TYPE>==t_stone_guild)) && !(<argo.baseid> == i_bar_door_ne)
    src.sysmessage @38,,1 Hatalı seçim.
    RETURN 1
   ENDIF
	
    if (strmatch('<argo.dispid>','i_nest_with_eggs'))
     src.sysmessage @38,,1 Yumurtayı çıkartmadan kuluçkayı kaldıramazsınız.Yumurtanız olgunlaşmışsa çift tıklayarak çıkartabilirsiniz.
     return 1
    endif 
  
    if (strmatch('<argo.baseid>','i_house_Strongbox'))
     src.sysmessage @38,,1 Remove komutuyla kaldırmalısınız.
     return 1
    endif  


IF !(<ARGO.CONT>)
      IF (<ARGO.REGION.UID>==<src.region.uid>)

IF (<ARGO.TYPE>==t_container)
	 LOCAL.RESCOUNT=<ARGO.RESCOUNT>
ENDIF

if  (<ARGO.ATTR> & attr_move_never)
	  TRY UID.<ARGO.UID>.LINK=0fffffff
	  TRY UID.<ARGO.UID>.ATTR=<ARGO.ATTR>-attr_move_never
	  TRY UID.<ARGO.UID>.ATTR=<ARGO.ATTR>+attr_decay
	  TRY UID.<ARGO.UID>.SAY=[Sabit degil]
	  TRY UID.<ARGO.UID>.EVENTS -t_locked_down
	  TRY UID.<ARGO.UID>.TIMER=<eval <SERV.DecayTimer>*60>
	  TRY UID.<ARGO.UID>.UPDATE
else
     src.sysmessage @38,,1 Bu eşya sabitlenmemiş.
endif

	else
     		src.sysmessage @38,,1 Bu eşya evde değil.
	endif
endif
endif

elif (<args>==3)
if !(<argo.isitem>)
src.sysmessage @38,,1 Sadece eşyaların pozisyonunu değiştirebilirsiniz.
return 1
endif

IF (<SRC.UID.<SRC.REGION.UID>.TYPE>==t_multi) || (<SRC.UID.<SRC.REGION.UID>.TYPE>==t_multi_custom)
 IF !(<argo.REGION.UID>==<REGION.uid>)
   src.sysmessage @38,,1 Bu eşya evde değil.
   return 1
 endif
endif

if !(<argo.attr>&attr_move_never)
src.sysmessage @38,,1 Önce eşyayı sabitlemelisiniz.
return 1
endif

if ((<argo.baseid> == i_house_Strongbox) || (<argo.type> == t_spell) || (<argo.baseid> == i_corpse) || (<argo.type> == t_blood) || (<argo.type> == t_door) || (<argo.type> == t_door_locked) || (<argo.type> == t_sign_gump) || (<argo.type> == t_stone_guild) || (<argo.baseid> == i_forge) || (<argo.baseid> == i_anvil) || (<argo.baseid> == i_training_dummy) || (<argo.baseid> == i_pickpocket_dip) || (<argo.baseid> == i_spinning_wheel) || (<argo.baseid> == i_loom_upright) || (<argo.baseid> == i_pentagram) || (<argo.type> == t_deed))
src.sysmessage @38,,1 Bu eşyanın pozisyonuyla oynayamazsınız.
return 1
endif

ref1 = <region.uid>
if ((<ref1.baseid> == i_multi_house_3room) || (<ref1.baseid> == i_multi_house_stone_plaster_small) || (<ref1.baseid> == i_multi_house_stone_small) || (<ref1.baseid> == i_multi_house_stone_brick_small) || (<ref1.baseid> == i_multi_house_stone_wood_small) || (<ref1.baseid> == i_multi_house_wood_plaster_small) || (<ref1.baseid> == i_multi_house_wood_thatched_small) || (<ref1.baseid> == i_multi_shop_blacksmithy_large))
		if (<argo.p.z> >= <eval (<p.z> + 25)>)
			src.sysmessage @38,,1 Bu eşyayı daha fazla yükseltemezsiniz.
		else
			argo.nudgeup
		endif
	elseif ((<ref1.baseid> == i_multi_keep) || (<ref1.baseid> == i_multi_castle) || (<ref1.baseid> == i_multi_house_patio_sand) || (<ref1.baseid> == i_multi_villa_2story) || (<ref1.baseid> == i_multi_cabin_log_2story) || (<ref1.baseid> == i_multi_house_wood_plaster_2story) || (<ref1.baseid> == i_multi_house_stone_plaster_2story))
		if (<argo.p.z> >= <eval (<p.z> + 45)>)
			src.sysmessage @38,,1 Bu eşyayı daha fazla yükseltemezsiniz.
		else
			argo.nudgeup
		endif
	elseif ((<ref1.baseid> == i_multi_shop_stone_small) || (<ref1.baseid> == i_multi_shop_marble_small) || (<ref1.baseid> == i_multi_house_patio_marble) || (<ref1.baseid> == i_multi_tower_wizard))
		if (<argo.p.z> >= <eval (<p.z> + 65)>)
			src.sysmessage @38,,1 Bu eşyayı daha fazla yükseltemezsiniz.
		else
			argo.nudgeup
		endif
	elseif (<ref1.baseid> == i_multi_tower)
		if (<argo.p.z> >= <eval (<ref1.p.z> + 85)>)
			src.sysmessage @38,,1 Bu eşyayı daha fazla yükseltemezsiniz.
		else
			argo.nudgeup
		endif
	else
		src.sysmessage @38,,1 Evinizin tipi bu komutu desteklemiyor.Anormal bir durumda bu uyarıyı alıyorsanız page atınız.
	endif
elif (<args>==4)
if !<argo.isitem>
src.sysmessage @38,,1 Sadece eşyaların pozisyonunu değiştirebilirsiniz.
return 1
endif

IF (<SRC.UID.<SRC.REGION.UID>.TYPE>==t_multi)// || (<SRC.UID.<SRC.REGION.UID>.TYPE>==t_multi_custom)
 IF !(<argo.REGION.UID>==<REGION.uid>)
   src.sysmessage @38,,1 Bu eşya evde değil.
   return 1
 endif
endif

if !(<argo.attr>&attr_move_never)
src.sysmessage @38,,1 Önce eşyayı sabitlemelisiniz.
return 1
endif

if ((<argo.baseid> == i_house_Strongbox) || (<argo.type> == t_spell) || (<argo.baseid> == i_corpse) || (<argo.type> == t_blood) || (<argo.type> == t_door) || (<argo.type> == t_door_locked) || (<argo.type> == t_sign_gump) || (<argo.type> == t_stone_guild) || (<argo.baseid> == i_forge) || (<argo.baseid> == i_anvil) || (<argo.baseid> == i_training_dummy) || (<argo.baseid> == i_pickpocket_dip) || (<argo.baseid> == i_spinning_wheel) || (<argo.baseid> == i_loom_upright) || (<argo.baseid> == i_pentagram) || (<argo.type> == t_deed))
src.sysmessage @38,,1 Bu eşyanın pozisyonuyla oynayamazsınız.
return 1
endif

if (<argo.p.z> < <ref1.p.z>)
src.sysmessage @38,,1 Bu itemi daha fazla indiremezsiniz.
return 1
endif

argo.nudgedown

elif (<args>==5)
 IF !(<argo.REGION.UID>==<REGION.uid>)
   src.sysmessage @38,,1 Bu eşya evde değil.
   return 1
 endif

if (<argo.baseid> != i_house_Strongbox)
  src.sysmessage @38,,1 Sadece strongbox'u kaldırabilirsiniz. 
  return 1
endif

if (<strarg <src.ishmember <argo.region.uid>>> < 2)
if (<argo.link> != <src.uid>)
src.sysmessage @38,,1 Bu strongbox size ait değil.
return 1
endif
endif

argo.remove
src.sysmessage @1153,,1 Strongbox kaldırıldı.

elif (<args>==6)

if (<src.action> == skill_magery)
src.sysmessage @38,,1 Büyü atarken konuşamazsınız.
return 1
endif
IF (<src.flags>&statf_dead)
	src.sysmessage @38,,1 Bu komutu ölüyken kullanamazsınız.
	return 1
ENDIF
IF (<SRC.UID.<SRC.REGION.UID>.TYPE>==t_multi) || (<SRC.UID.<SRC.REGION.UID>.TYPE>==t_multi_custom) 
 if (<src.isevent.e_ibantheeyok>)
src.sysmessage @38,,1 Biraz beklemelisiniz.
 return 1
 endif
else
src.sysmessage @38,,1 Sadece ev içinde kullanabilirsiniz
return 1
ENDIF

IF (<ARGO.ISPLAYER>)
  IF (<ARGO.REGION.UID>!=<src.REGION.UID>)
   src.sysmessage @38,,1 <ARGO.NAME> evde değil.
   RETURN 1
  ELIF (<ARGO.UID>==<SRC.UID>)
   src.sysmessage @38,,1 Kendini atamazsın.
   RETURN 1
  ELIF (<argo.account.plevel> > 1)
   src.sysmessage @38,,1 Yetkilileri evden atamazsın.
   RETURN 1
  ELIF <strarg <argo.ishmember <region.uid>>> 
   src.sysmessage @38,,1 <argo.name> eve dost yada ortak.
   RETURN 1
     endif
  ENDIF

 TRY UID.<ARGO.UID>.GO=<Uid.<region.uid>.link.p>
 TRY UID.<ARGO.UID>.FIX
 src.events +e_ibantheeyok
 src.timerf 1,events -e_ibantheeyok
 RETURN 1
elseIF (<ARGO.npc>)
  IF (<ARGO.REGION.UID>!=<UID.<ARGS>.REGION.UID>)
src.sysmessage @38,,1 <ARGO.NAME> evde değil.
   RETURN 1
  endif
 IF (<argo.barin> == brain_vendor)
src.sysmessage @38,,1 Vendoru evden atamazsın.
  RETURN 1
 endif
 TRY UID.<ARGO.UID>.GO=<UID.<ARGS>.P>
 TRY UID.<ARGO.UID>.FIX
 RETURN 1

ELSE
src.sysmessage @38,,1 Sadece oyuncuları seçebilirsiniz.
ENDIF

[function transfer_house]
ref1 = <args>
ref2 = <argo>

if !(<argo.isplayer>)
src.sysmessage @38,,1 evi sadece oyunculara devredebilirsiniz.
return 1
endif

 if (<strarg <ref2.ishmember <ref1.uid>>>)
  src.sysmessage @38,,1 <argo.name> eve dost yada ortak olduğu sürece evi <argo.name>'e devredemezsiniz.
  return 1
endif

if (<argo.tag0.house>)
  src.sysmessage @38,,1 <argo.name> zaten bir eve sahip. Her karakter max. 1 eve sahip olabilir.
  return 1
endif

if (0<ref1.house_vendors> > 0)
  src.sysmessage @38,,1 Evinzide kurulu vendor varken evi devredemezsiniz.
  return 1
endif

list.house_<ref1.uid>.clear
list.house_<ref1.uid>.add =2 <argo.uid>
argo.sysmessage @63,,1 <src.name> evini size devretmiştir. Tüm ortak ve dostlar temizlenmiştir.
src.sysmessage @1153,,1 Evi <argo.name>'e devrettiniz.
src.tag.house

//// events
[regiontype r_player_house]
ON=@enter
if (<src.isplayer>)
src.events +e_player_house
endif

if (<region.tag0.house_hatali>)
src.sysmessage @38,,1 Bu ev yetkililer tarafından hatalı olarak işaretlenmiş.
return 1
elif (<uid.<region.uid>.tag0.house_onaylanmamis>==1)
src.sysmessage @54,,1 Bu ev yetkililer tarafından henüz onaylanmamış.
return 1
endif

ON=@exit
src.events -e_player_house

[events e_player_house]
ON=@login
if !(<strarg <src.ishmember <region.uid>>>)
  src.p <uid.<region.uid>.link.p>
  src.fix
endif

[events e_ibantheeyok]

[typedef t_locked_down]
ON=@click
message @07d4,,1 [sabit]



////////////////////////// ev kiralama/satma işlemleri ///////////////////////
[dialog d_house_buy]
0,0
page 0

if (<tag0.4sale>==1)
	local.status = 0
elif (<tag0.4sale>==2)
	local.status = 1
endif

resizepic 100 100 5054 400 190
alphablack 110 110 380 170
dcroppedtext 120 110 370 20 54 <name> adlı evin <qval (<local.status>)?satış:kira> bilgilerini inceliyorsunuz.
dhtmlgump 160 140 300 100 0 1 <def.bfont_lred><def.center><qval (<local.status>)?Satış:Kira> Koşulları<def.centere><def.bfont_white>Bu evin <qval (<local.status>)?satış fiyatı:haftalık kirası> <def.bfont_lred><bolukayir <dtag.house_saleprice>>gp.<def.bfont_white><def.br>Burayı <qval (<local.status>)?satın almak:kiralamak> için bankanızda yeterli miktarda nakit olmalı.Kira süresi <def.bfont_lred>1 hafta<def.bfont_White>dır, her hafta yeniden uzatmanız gerekir.Yer sahibi kira bedelini kira kontratı bittiği anda güncelleme hakkına sahiptir>
dtext 135 250 63 Evet,<qval (<local.status>)?satın al:kirala>.
button 120 254 2103 2104 1 0 1

dtext 305 250 38 Hayır, <qval (<local.status>)?satın almıyorum:kiralamıyorum>.
button 290 254 2103 2104 1 0 0
endif

[dialog d_House_Buy button]
ON=1
ref1 = <house_owner>
	if (<src.gold> < <tag.house_saleprice>)
  	    src.sysmessage @38,,1 Bu evin satış fiyatı <bolukayir <dtag0.house_saleprice>>gp. Sizin <bolukayir <eval (<tag.house_saleprice>-<src.gold>)>>gp'ye daha ihtiyacınız var.
	elif (<src.tag0.house>)
  	    src.sysmessage @38,,1 Bu evi alabilmek için önce mevcut evinizi kaldırmalısınız.
	else
		if (<tag0.4sale>==1)
			serv.newitem i_control_rentedhouse,1,<src.uid>,1
			new.link = <uid>
			new.more1 = <ref1.uid>
		endif
  	   src.gold -=<dtag.house_saleprice>>
  	 
  	   ref1.gold +=<dtag.house_saleprice>>
  	   ref1.sysmessage @1153,,1 Sahip olduğunuz <name>, <src.name> adlı oyuncu tarafından <bolukayir <dtag.house_saleprice>>gp karşılığından satın alınmıştır.
  	   src.sysmessage @1153,,1 <bolukayir <dtag.house_saleprice>>gp ödendi. Ev artık size aittir.
	   list.house_<uid>.clear
	   list.house_<uid>.add =2 <src.uid>
  	   tag.house_saleprice =
  	   tag.4sale =
  	   tag.house_saleclose_date =
  	   more1 = <src.uid>
  	   ref2 = <uid>

  	   forinstances i_key_copper
  	   if <link.uid> == <ref2.uid>
      	       remove
  	   endif
  	   endfor

   	   serv.newitem i_key_copper,1,<src.findlayer.21>
   	   new.link = <ref2.uid>
	


endif

[itemdef i_control_Rentedhouse]
id = i_memory
name = house reng controll
type = t_eq_script

ON=@create
attr attr_newbie|attr_invis

ON=@equip
serv.b @1152 hebele
timer = 60*60*60*7

ON=@timer
list.house_<link.uid>.clear
list.house_<link.uid>.add =2 <uid.<more1>.uid>
link.tag.house_saleprice =
link.tag.4sale =
link.tag.house_saleclose_date =
link.more1 = <cont.uid>

if <strarg <link.house_lockeddown>> > 1
   link.send_house_items = <cont.uid>
endif

cont.sysmessage @1153,,1 <link.name> isimli kiralik evinizin kira süresi dolmuştur. Ev eski sahibine iade edilmiştir.

[function send_house_items]
ref1 = <args>
ref2 = <uid>

serv.newitem i_Backpack,1,<ref1.findlayer.layer_Bankbox>
local.new = <new.uid>
new.name = kiralik evdeki esyalariniz
new.attr = 00

foritems 100
	if (<region.uid>==<ref2.uid>)
 		if (<baseid>==i_house_strongbox)
			remove
		endif
if (<link> != <ref2.uid>

		if (<baseid> != i_kulucka) 
		     attr &~attr_move_never
		     attr |attr_decay
		     timer = <SERV.DecayTimer>*60
		     cont = <new.uid>
		else
		    serv.newitem i_ostard_egg,1,<local.new>
		    remove
                 endif
	endif
endif

	if (<uid.<local.new>.rescount> < 1)
		uid.<local.new.rescount>.remove
	endif
		
		

[ITEMDEF 0100e]
DEFNAME=i_key_copper
WEIGHT=0.1
VALUE=15
TYPE=T_KEY
CATEGORY=Provisions - Miscellaneous
SUBSECTION=Keys
DESCRIPTION=Copper Key

ON=@Create
attr attr_newbie

ON=@click
if (<more1>)
message @07d4,,1 [<uid.<more1>.name>]
endif

[function house_message]
if (<account.plevel> > 1)
  trysrc <uid> dialogclose d_house_Approve
  trysrc <uid> dialog d_house_Approve,0 <args>
endif
  
[dialog d_house_approve]
0,0
page 0
resizepic 0 0 9200 750 35
alphablack 10 10 730 15
ref1 = <args>
ref2 = <ref1.house_owner>
src.ctag0.house_p = <ref1.link.p>
dhtmlgump 12 8 495 23 0 0 <def.bfont_lyellow><uid.<ref1.house_owner>.name> <def.bfont_white>isimli oyuncu <def.bfont_lgreen><ref2.region.name><def.bfont_White>'de ev kurmuştur.<def.bfont_lyellow>  Onay bekleyen : <def.bfont_white> <dwaiting4approve>

button 500 10 2103 2104 1 0 1
dtext 515 7 1153 Tümüne bak.

button 600 10 2103 2104 1 0 2
dtext 615 7 1153 Ilgilen.
button 680 10 2103 2104 1 0 0
dtext 695 7 1153 Kapat.

[dialog d_house_approve button]
ON=1
src.evkontrol

ON=2
src.go <src.ctag0.house_p>



[function waiting4approve]
src.ctag0.house =

forinstances i_sign_Brass
   if <link.type>==t_multi
       if (<link.tag0.house_onaylanmamis>==1)
            src.ctag0.house ++
            src.ctag0.house_<dsrc.ctag.house> == <uid>
       endif
    endif
endfor

return <src.ctag0.house>

[DIALOG d_list_house_app]
0,0
page 0
resizepic 55 95 9200 450 300
alphablack 65 105 430 280
waiting4approve
dtext 143 111 54 Onay bekleyen ev listesi.(<dsrc.ctag0.house>)

local.x = 70
local.y = 150
for <src.ctag0.house_appage> (<src.ctag0.house_appage>+20)
if <src.ctag0.house_<dlocal._for>>
if (<local.y> > 350)
   local.x +=250
   local.y = 150
endif
ref1 = <src.ctag0.house_<dlocal._for>>
dhtmlgump (<local.x>+35) <local.y> 200 20 0 0 <def.bfont_white><ref1.link.name> - <def.bfont_lred>sahibi : <def.bfont_white><uid.<ref1.link.house_owner>.name>
button <local.x> <local.y> 4005 4006 1 0 (1+<dlocal._for>)
local.y +=20
endif
endfor

button 324 355 4005 4006 1 0 101
button 215 355 4014 4015 1 0 102
dtext 249 357 1153 Sayfa <eval (<src.ctag0.house_appage>/20)+1>/<eval (<src.ctag0.house>/20)+1>

[dialog d_list_house_App button]
ON=1,100
sayu go
src.go <uid.<src.ctag0.house_<eval <argn>-1>>.p>
ON=102
src.ctag.house_appage -=20

if (<src.ctag.house_appage> < 1)
src.ctag.house_appage 
endif

sdialog d_list_house_App
 

ON=101
src.ctag.house_appage +=20
ref1 = <src.ctag.item_<dlocal._For>>


if <eval <src.ctag.house_appage>/20> > <eval <src.ctag0.house>/20>
src.ctag.house_appage = 
endif

sdialog d_list_house_App

[function evkontrol]
waiting4approve
if (<src.ctag0.house> < 1)
  src.sysmessage @38,,1 Onay bekleyen yada hatalı ev yok.
else
  src.sdialog d_list_house_app
endif
src.clearctags house

[EOF]



Bu konu [Alcholic] tarafından düzenlendi(2010-09-23 17:34, 13 yıl önce)
Ah Mert ah paylaştın orjinal herşeyimizi.Sırada da banka hesap sistemi mi var?Banka hesabı paylaşacağın zaman söyle de art dosyalarını da ben paylaşayım bari :)
Expert
34.0001
UO bittiği için elde tutmanın anlamı yok.
kesinlikle ardanın mantığını izliyorum. Elimdeki şeyleri tutmanın anlamı yok boşa gitmesin bari.
Bende Esenyel için yaptığım evleri fln multi haline getirip de paylaşsam mı ne dersiniz?
Expert
34.0001
Bunları kullanabilecek kişiler zaten kendileride oluşturabilir, istediğini paylaş sorun yok.
@kell +5 :)
Bi ara sphere açarsam evleri tekrar yapıp multi olarak kullanmak isteyenlerin kullanabileceği şekilde(kodları da yazılmış olarak) ekleyim bari yaptıklarımız bi işe yarasın.

@Mert
Banka hesabı paylaşacağın zaman söyle banada.
Master
59.2997
yayınlama konusunda benimle aynı fikirde olanları görmek sevindirici :)
Ultima Strike'a yeni katıldım, Alholic'in paylaşmış olduğu ev sisteminde bazı sorunlar yaşıyorum.

Dost, ve ortak sayılarını yanlış, kuluçka sayısını hiç göstermiyor. Ayrıca kuluçka limit sorgusu yok ve evi kuran kişi ortak listesinde görünüyor. 

Rica etsem bunların çözümlerini sunabilir misiniz? Şimdiden İlginize teşekkürler.
@Alcholic eline sağlık.
Bazı kodları düzenlemek, yeniden yazmaktan daha zordur (:

Ayrıca yanlış anlamayın ama;

Sabit kaldir banka felan açılmıo :)
Kodlama olarak hoşuma gitti özellikle qval'lerin kullanımı falan çok yerinde olmuş.

Yalnız çok sorun ve eksik var sistemde.

Dost ekle dediğin zaman dostlar hanesine değil ortak olarak ekliyor.

Satın al ve kirala kısımlarına hiç girmeye gerek yok onlarda eklenmesi ve düzeltilmesi gereken bir çok şey var.

Geliştirilirse ve bazı eklentiler yapılırsa güzel bir sistem haline gelir

Üye Ol veya Giriş Yap

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