UO-Dev Arama

 



İçerde : 1 misafir, 0 üye : --- Sayfalar: 1
Yazar

4s3d3


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 182
Oyun Tarzı: Rp
Emulatör: 0.56b
Tecrübe: Player
Yaş: 28
Mesaj #95438   17-04-2018 23:53 GMT    
        
Kod:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////                                  Sadece Script Bölümüne ekleyip keyfinize bakın.   ///
////// Scripter:4S3D3                                                                        ///
//////   ///
//////Not : Yeni evler eklediğiniz taktirde [Defname Evlistesi] kısmınada ekleyip for düzenini değiştirmeniz gerekir.   ///
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
[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 "ağaç"
Type_Isim_2 "ağaç"
Type_Isim_3 "duvar"
Type_Isim_4 "su"

[Defname StaticEngel]  // Ağaç 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_wooden_house"
Ev_2 "i_deed_field_stone_house"
Ev_3 "i_deed_castle"
Ev_4 "i_deed_tower"
Ev_5 "i_deed_two_story_villa"
Ev_6 "i_deed_small_marble_workshop"
Ev_7 "i_deed_small_stone_workshop"
Ev_8 "i_deed_two_story_log_cabin"
Ev_9 "i_deed_small_stone_tower"
Ev_10 "i_deed_marble_house_with_patio"
Ev_11 "i_deed_large_house_with_patio"
Ev_12 "i_deed_two_story_stone_and_plaster_house"
Ev_13 "i_deed_sandstone_house_with_patio"
Ev_14 "i_deed_thatched_roof_cottage"
Ev_15 "i_deed_small_stone_keep"
Ev_16 "i_deed_wood_and_plaster_house"
Ev_17 "i_deed_small_brick_house"
Ev_18 "i_deed_stone_and_plaster_house"
Ev_19 "i_deed_brick_house"
Ev_20 "i_deed_two_story_wood_and_plaster_house"

[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 Canlılar üzerinde bunu yapamazsınız.
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 Eşyalar üzerine ev kuramazsınız.
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 Ev kuracağınız alan ve çevresi <Local.AlanTuru> olmamalıdır.
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 Ev kuracağınız alan ve çevresi <Local.AlanTuru> olmamalıdır.
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 Ev kuracağınız alan ve çevresi <Local.AlanTuru> olmamalıdır.
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 Ev kuracağınız alan ve çevresi <Local.AlanTuru> olmamalıdır.
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 Ev kuracağınız alanın çevresinde <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 Ev kuracağınız alanın çevresinde <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 Ev kuracağınız alanın çevresinde <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 Ev kuracağınız alanın çevresinde <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 Ev kuracağınız alanın çevresinde 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 Ev kuracağınız alanın çevresinde 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 Ev Ev kuracağınız alanın çevresinde 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 Ev kuracağınız alanın çevresinde 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 Evler arasında en az <Eval <Def.CevresindekiMesafe>> kare olmalıdır.
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 Evler arasında en az <Eval <Def.CevresindekiMesafe>> kare olmalıdır.
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 Evler arasında en az <Eval <Def.CevresindekiMesafe>> kare olmalıdır.
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 Evler arasında en az <Eval <Def.CevresindekiMesafe>> kare olmalıdır.
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 Alan bu evi kurmak için 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 Alan bu evi kurmak için 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 Alan bu evi kurmak için 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 Alan bu evi kurmak için fazla engebeli.
Return 1
Endif
EndFor
EndFor
Endif
Endif
Endif
Endif
EndFor
[EOF]

Scriptin yazılış amacı adındanda belli olacağı üzere evlerin yanına önüne ev kurulabilmesi için gerekli şartlar vs vs

Eksikleri olabilir fazla test edememiş olabilirim genel itibari ile işinize yarayacağı düşüncesindeyim. Tabi scriptte for döngüsü çok fazla olduğundan dolayı bazı ayarları açmasanızda olur çok azda olsa kasma yapabilir.

Not : Scripti while kullanarakta yapabilirdim ama bu scripti yazdığım zaman olaya fazla yatkın değildim isteyen arkadaşlar değiştirerek düzenleyebilir.

Not 2: Bu arada tüm scriptleri 56d sürümü ile test ediyorum.


 Mac-Fusion, Tanthalas

Yazar

Mac-Fusion


UO-Dev Üyesi
Skill Title: Adept
Online durumu
Toplam Mesaj: 689
Oyun Tarzı: Pp
Emulatör: 0.56b
Tecrübe: Scripter
Yaş: 32
Mesaj #95483   20-04-2018 10:52 GMT    
        
Merhabalar, emeğiniz için teşekkür etmek istedim. İllaki kullanıcı tecrübesine göre ekleme/çıkarmalar ile güncelleyip daha kullanışlı ve stabil hale getireceksiniz ilerde. Bunun adına ilk bakışta farkettiğim şey def'lere atanan opsiyonlar oldu. Örneğin;
Engellenen_Alan_1
Engellenen_Alan_2

gibi opsiyonlar çoğaltılmak istendiğinde, kodun çalışması için ilgili sorgu alanından for döngüsünün 1-2 olan kısmına da müdahele etmek gerekiyor.
Bu döngüleri while ile yaparsanız böyle bir müdaheleye gerek duyulmadan opsiyonlar çalışacak ve amacına daha uygun olacaktır.

Edit:
Alıntı

Not : Scripti while kullanarakta yapabilirdim ama bu scripti yazdığım zaman olaya fazla yatkın değildim isteyen arkadaşlar değiştirerek düzenleyebilir.



Bunu görmedim ^^'


Son güncelleme: Mac-Fusion tarafından 20-04-2018 11:03 GMT, 158 Gün önce düzenlendi.


 4s3d3
Yazar

4s3d3


UO-Dev Üyesi
Skill Title: Journeyman
Online durumu
Toplam Mesaj: 182
Oyun Tarzı: Rp
Emulatör: 0.56b
Tecrübe: Player
Yaş: 28
Mesaj #95497   21-04-2018 00:33 GMT    
        
Merhaba dediğiniz gibi düzenlemek lazım aslında ama üşengeçlik var biraz yoksa kare taramasını 2 kare 2 kare yapmakta daha sağlıklı sphere açısından onuda düzeltirim diyorum da bakalım ne zaman bu arada yorumun için ben teşekkür ederim.


 Mac-Fusion

Sayfalar: 1



Benzer Konular

KonularMesajlarSon gönderenTarih
Kesyda Inc House Building29Kesyda14-06-2017
Custom House scripti olan sunucu arıyorum9xwerswoodx18-08-2016
House sistem5cemax05-04-2015
Customize House Expansion Problemi4System_Error16-03-2015
Yenı House Multi Static Yardım6Rheumon25-11-2014


Keywords:

ultima online, RunUO, ultima online download, sphere scripting, role play, uo grafik, second age ultima, uo loop, macroman, pvp server, server kurulumu, sphere, multool, ml mulls, 56b 55r 55i, htmlgumps, client 4x, client edit, sphere release, osi, rp server, sunucular, ghost mouse, inside uo, kingdom reborn, stygian abyss, uo nasıl oynanır, mondain's legacy, age of shadows, world build, grandmaster, ultima online pvp, player dosyaları, ultima online indir, frp game, RunUO 1.0.0, razor, uo rice, hue editör, skill tools, ultima online patch, axis, world build, verdata, verdata patcher, map editör, gump editör, mul patcher, aos mulls, scriptler, anim edit, anim publish, hues mul, hosting vps, event dialog, account sistemi, skill gain, static yapımı,