bu iki scriptin birini sphere okuyor digerini okumuyor ikisinden birinde işlem yapınca en son yaptıgımı okuyor nerde sorun var bunların ikisinde de ?
Kod:
[Defname House_Fix_Ayarlar]
YoneticiGecerlilik "1" // Fix yöneticilerde ev kurarken geçerli olsun mu (1=Evet / 0=Hayır)
PlevelAraligi "7" // Fix hangi plevelden düşükler için geçerli olsun
Engebetarama "0" // Engebeli alan taramasını açar/kapatır (1=Açık / 0=Kapalı)
MultiTarama "1" // Evler arasında ki mesafe taramasını açar/kapatır (1=Açık / 0=Kapalı)
TypeTarama "1" // Type taramasını (Ağaç,Su,Duvar vs) açar/kapatır (1=Açık / 0=Kapalı)
StaticsTarama "1" // Statics taramasını (Deserf of comp'daki static ağaçlar) açar/kapatır (1=Açık / 0=Kapalı)
BolgeTarama "0" // Bölge taramasını (Safe,Guard zone vs) açar/kapatır (1=Açık / 0=Kapalı)
OndekiEvleMesafe "2" // Evin önde ki engelle arasında ki mesafe (Kaç Kare)
CevresindekiMesafe "2" // Evin etrafında ki engellerle arasında ki mesafe (Kaç Kare)
EngebeFarki "2" // Ev kurulacak alan içerisindeki maksimum yükseklik farkı (Not : 1 - 2 İdeal)
[Defname Engellenenler]
Engellenen_Type_1 "T_Tree"
Engellenen_Type_2 "T_Foliage"
Engellenen_Type_3 "T_Wall"
Engellenen_Type_4 "T_Water"
[Defname EngellenenTypeIsim]
Type_Isim_1 "agac"
Type_Isim_2 "agac"
Type_Isim_3 "duvar"
Type_Isim_4 "su"
[Defname StaticEngel] // Agac olup Typesi t_tree olmayan nesneler
Engellenen_Statics_1 "i_plant_yucca"
Engellenen_Statics_2 "i_plant_cactus_8"
[Defname EngellenenAlanlar]
Engellenen_Alan_1 "Region.Guarded"
Engellenen_Alan_2 "Region.Safe"
[Defname EngellenenAlanTuru]
Alan_Turu_1 "guard zone"
Alan_Turu_2 "safe alan"
[Defname EvListesi]
Ev_1 "i_deed_house_stone_small"
Ev_2 "i_deed_house_stone_plaster_small"
Ev_3 "i_deed_House_stone_brick_small"
Ev_4 "i_deed_House_wood_plaster_small"
Ev_5 "i_deed_House_wood_thatched_small"
Ev_6 "i_deed_shop_marble_small"
Ev_7 "i_deed_tower_wizard"
Ev_8 "i_deed_house_patio_sand"
Ev_9 "i_deed_villa_2story"
Ev_10 "i_deed_keep"
[Function TamSayi]
If (StrMatch('<StrSub 0 1 <Args>>','-'))
Local.TamSayi <StrSub 1 0 <Args>>
Else
Local.TamSayi <Args>
Endif
Return <dLocal.TamSayi>
[TYPEDEF t_deed]
On=@TargOn_Char
For 1 20 // EvListesinde bulunan Ev_ilk rakam(1) ve Ev_Son rakam(20)
If (<BaseID> == <Def.Ev_<dLocal._For>>)
Src.Sysmessage @38,,1 Hata: Canlilar uzerinde bunu yapamazsiniz.
Return 1
Endif
EndFor
On=@TargOn_Item
For 1 20 // EvListesinde bulunan Ev_ilk rakam(1) ve Ev_Son rakam(20)
If (<BaseID> == <Def.Ev_<dLocal._For>>)
Src.Sysmessage @38,,1 Hata: Esyalar Uzerine ev Kuramassiniz.
Return 1
Endif
EndFor
ON=@Targon_Ground
For 1 20 // EvListesinde bulunan Ev_ilk rakam(1) ve Ev_Son rakam(20)
//If (<BaseID> == <Def.Ev_<dLocal._For>>)
Local.Multi <Serv.Itemdef.<More1>.MultiRegion>
If (<Def.YoneticiGecerlilik>)
If (<Src.Account.Plevel> < <Def.PlevelAraligi>)
If (<Def.BolgeTarama>)
For 1 2 /// Toplam Engellenen Alan Sayısı Kadar Çeviriyor
Local.EngellenenAlan <Def.Engellenen_Alan_<dLocal._For>>
Local.AlanTuru <Def.Alan_Turu_<dLocal._For>>
For 0 <Eval <Def.OndekiEvleMesafe>> // Girişin Önüne Doğru
Local.Pozitif=<Eval <Src.TargP.Y> + <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>> // Sağ Tarafını Tarar
IF (<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Pozitif>).<Local.EngellenenAlan>>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alan ve cevresi <Local.AlanTuru> olmamalidir.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>> /// Sol Tarafını Tarar
IF (<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Pozitif>).<Local.EngellenenAlan>>)
Src.Sysmessage @38,,1 Hata: Ev kuaracaginiz alan ve cevresi <Local.AlanTuru> olmalidir.
Return 1
Endif
EndFor
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Streat <Local.Multi>>>> + <Strarg <Streat <Streat <Streat <Local.Multi>>>>> + <Def.CevresindekiMesafe>> // Arka Tarafına Doğru
Local.Negatif =<Eval <Src.TargP.Y> - <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>> // Sağ Tarafını Tarar
IF (<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Negatif>).<Local.EngellenenAlan>>)
Src.Sysmessage @38,,1 Hata: Ev kuaracaginiz alan ve cevresi <Local.AlanTuru> olmalidir.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>> /// Sol Tarafını Tarar
IF (<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Negatif>).<Local.EngellenenAlan>>)
Src.Sysmessage @38,,1 Hata: Ev kuaracaginiz alan ve cevresi <Local.AlanTuru> olmalidir.
Return 1
Endif
EndFor
EndFor
EndFor
Endif
If (<Def.TypeTarama>)
For 1 4 /// Not: Buradaki "4" [Defname Engellenenler] Listesinin Toplamı Kadar Çeviriyoruz.
Local.T_Type <Def.Engellenen_Type_<dLocal._For>>
Local.Engellendi <Def.Type_Isim_<dLocal._For>>
For 0 <Eval <Def.OndekiEvleMesafe>>
Local.Pozitif=<Eval <Src.TargP.Y> + <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Pozitif>).ISNearType <Local.T_Type> 0>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde <Local.Engellendi> bulunuyor.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Pozitif>).ISNearType <Local.T_Type> 0>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde <Local.Engellendi> bulunuyor.
Return 1
Endif
EndFor
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Streat <Local.Multi>>>> + <Strarg <Streat <Streat <Streat <Local.Multi>>>>> + <Def.CevresindekiMesafe>>
Local.Negatif =<Eval <Src.TargP.Y> - <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Negatif>).ISNearType <Local.T_Type> 0>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde <Local.Engellendi> bulunuyor.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Negatif>).ISNearType <Local.T_Type> 0>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde <Local.Engellendi> bulunuyor.
Return 1
Endif
EndFor
EndFor
EndFor
Endif
If (<Def.StaticsTarama>)
For 1 2 /// Not: Buradaki "4" [Defname Statics] Listesinin Toplamı Kadar Çeviriyoruz.
Local.Statics <Def.Engellenen_Statics_<dLocal._For>>
For 0 <Eval <Def.OndekiEvleMesafe>>
Local.Pozitif=<Eval <Src.TargP.Y> + <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Pozitif>).Statics.0.BaseID> == <Local.Statics>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde static nesne bulunuyor.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Pozitif>).Statics.0.BaseID> == <Local.Statics>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde static nesne bulunuyor.
Return 1
Endif
EndFor
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Streat <Local.Multi>>>> + <Strarg <Streat <Streat <Streat <Local.Multi>>>>> + <Def.CevresindekiMesafe>>
Local.Negatif =<Eval <Src.TargP.Y> - <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Negatif>).Statics.0.BaseID> == <Local.Statics>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde static nesne bulunuyor.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>>
IF (<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Negatif>).Statics.0.BaseID> == <Local.Statics>)
Src.Sysmessage @38,,1 Hata: Ev kuracaginiz alanin cevresinde static nesne bulunuyor.
Return 1
Endif
EndFor
EndFor
EndFor
Endif
If (<Def.MultiTarama>)
For 0 <Eval <Def.OndekiEvleMesafe>>
Local.Pozitif=<Eval <Src.TargP.Y> + <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>>
IF (<UID.<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Pozitif>).Region.UID>.More1>)
Src.Sysmessage @38,,1 Hata: Evler arasinda en az <Eval <Def.CevresindekiMesafe>> kare olmalidir.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>>
IF (<UID.<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Pozitif>).Region.UID>.More1>)
Src.Sysmessage @38,,1 Hata: Evler arasinda en az <Eval <Def.CevresindekiMesafe>> kare olmalidir.
Return 1
Endif
EndFor
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Streat <Local.Multi>>>> + <Strarg <Streat <Streat <Streat <Local.Multi>>>>> + <Def.CevresindekiMesafe>>
Local.Negatif =<Eval <Src.TargP.Y> - <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>>
IF (<UID.<Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Negatif>).Region.UID>.More1>)
Src.Sysmessage @38,,1 Hata: Evler arasinda en az <Eval <Def.CevresindekiMesafe>> kare olmalidir.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Local.Multi>>> + <Def.CevresindekiMesafe>>
IF (<UID.<Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Negatif>).Region.UID>.More1>)
Src.Sysmessage @38,,1 Hata: Evler arasinda en az <Eval <Def.CevresindekiMesafe>> kare olmalidir.
Return 1
Endif
EndFor
EndFor
Endif
If (<Def.EngebeTarama>)
For 0 <Strarg <Streat <Streat <Local.Multi>>>>
IF (<TamSayi <Eval <Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<Src.TargP.Y>).Terrain.Z> - <Src.TargP.Z>>> > <Def.EngebeFarki>)
Src.Sysmessage @38,,1 Hata: Alan bu evi kurmak icin fazla engebeli.
Return 1
Endif
EndFor
For 0 <StrSub 1 0 <StrArg <Local.Multi>>>
IF (<TamSayi <Eval <Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<Src.TargP.Y>).Terrain.Z> - <Src.TargP.Z>>> > <Def.EngebeFarki>)
Src.Sysmessage @38,,1 Hata: Alan bu evi kurmak icin fazla engebeli.
Return 1
Endif
EndFor
For 0 <Eval <StrSub 1 0 <StrArg <Streat <Local.Multi>>>> + <Strarg <Streat <Streat <Streat <Local.Multi>>>>>>
Local.Negatif =<Eval <Src.TargP.Y> - <dLocal._For>>
For 0 <Eval <Strarg <Streat <Streat <Local.Multi>>>> + <Def.CevresindekiMesafe>>
IF (<TamSayi <Eval <Serv.Map(<Eval <Src.TargP.X> + <dLocal._For>>,<dLocal.Negatif>).Terrain.Z> - <Src.TargP.Z>>> > <Def.EngebeFarki>)
Src.Sysmessage @38,,1 Hata: Alan bu evi kurmak icin fazla engebeli.
Return 1
Endif
EndFor
For 0 <StrSub 1 0 <StrArg <Local.Multi>>>
IF (<TamSayi <Eval <Serv.Map(<Eval <Src.TargP.X> - <dLocal._For>>,<dLocal.Negatif>).Terrain.Z> - <Src.TargP.Z>>> > <Def.EngebeFarki>)
Src.Sysmessage @38,,1 Hata: Alan bu evi kurmak icin fazla engebeli.
Return 1
Endif
EndFor
EndFor
Endif
Endif
Endif
Endif
EndFor
[EOF]
Buda Bir gieri;
Kod:
[itemdef i_kurulmazz]
id 8900
name Ev Kurulmaz
type t_deed
on=@create
color 0
attr 08010
on=@click
message @44,6,1 Bu Alana Ev kurulumu Yasaklanmistir.
return 1
on=@timer
return 1
[function evkurulmazz]
serv.newitem i_kurulmazz
new.drop
[function is_tabelaya_yakin]
foritems 2
if (strmatch('<baseid>','i_sign_brass'))
local.kurulmazz +=1
endif
endfor
return <dlocal.kurulmazz>
[function isevkurulmazz]
foritems 20
if (strmatch('<baseid>','i_kurulmazz'))
local.kurulmazz +=1
endif
endfor
return <dlocal.kurulmazz>
[TYPEDEF t_deed]
ON=@DClick
if ((<src.isevkurulmazz>) || (<src.region.guarded> == 15))
src.sysmessage @38,,1 Hata: Bu alana ev kuramazsiniz. 15 kare uygun alan arayin..
return 1
endif
endif
ON=@TargOn_Ground
if ((<src.isevkurulmazz>) || (<src.region.guarded> == 15))
src.sysmessage @38,,1 Hata: Bu alana ev kuramazsiniz. 15 kare uygun alan arayin..
return 1
endif
ON=@TargOn_Char
src.sysmessage @38,,1 Hata: Hatali secim.
return 1
ON=@TargOn_Item
src.sysmessage @38,,1 Hata: Hatali secim.
return 1
[EOF]