Anasayfa
UO Sunucular
Forumlar
Profilim
UO-Developer.COM
Tag Kullanımı

Öğeler MORE, MORE2 vb. ile sınırlıdır. Bu zavallı karakterler, sırt çantalarının değişkenleri hakkında bilgi depolamaya başvurmaya başlamadan önce bir şeyler depolamak için yalnızca PLOT2'ye sahiptir.

Bu yüzden SPHERE geliştiricileri bize uzun zamandır beklenen bir özellik verdi:

TAG.

Önemli TAG da bir numaralı ilke, nasıl kullanılacağını bilmeden önce bile:

TÜM TAGLAR STRINGS'dir.

Onlar aynı zamanda SPHERE'in şimdiye kadar kullanacağınız en basit parçasıdır. İşte bir TAG örneği:
SRC.TAG.JOE = 1
Az önce ne yaptık? Bu betiğin SRC'sinde bir değişken oluştuduk. Bu değişken TAG olarak adlandırılır. JOE ve 01 değerine sahiptir. (Bunun 01 sayısı değil, 01 dizesi olduğunu unutmayın.) Karakterle birlikte kaydedilecek ve içine istediğimiz her şeyi koyabiliriz.

Aşağıda TAGlarla ilgili birkaç örnek daha verilmiştir:
ON=@DClick
SRC.TAG.CLICKS += 1
RETURN 1

ON=@Equip
SRC.TAG.GOOFYTAG = // Bu gerçekten aptalca bir tag.
SRC.SYSMESSAGE <SRC.TAG.GOOFYTAG> // “Bu gerçekten aptalca bir etiket.”
RETURN 0 // Ekipmanlara izin verir

ON=@UnEquip
SRC.TAG.GOOFYTAG = // tagı siler
RETURN 0 // Ekipmanlarını çıkarmalarına izin verin
Bu üç örnekte, bir TAG'ıkullanmanın üç yolunu bulabilirsiniz.

1. Bir TAG, ilk örnekte olduğu gibi bir sayı saklayabilir. Ne yazık ki, bu sayıyı bir dize olarak saklar, bu nedenle bu sayıyı her kullanmak istediğimizde EVAL kullanmalıyız.

2. Bir TAG, ikinci örnekte olduğu gibi bir dize saklayabilir. Aslında TAG'lar her zaman dizeleri saklar, ancak bu açıkça bir dizedir.

3. Bir TAG'ı silebilirsiniz. Bunu, TAG'ın adını ve ardından ardından hiçbir şey olmayan eşit bir işaret yazarak yaparız. Neden bir TAG'ı silmek isteyelim ki? TAG'lar diğer her şey gibi belleği kullanır. Ne kadar çok bellek kullanırsanız, sunucunuzda o kadar fazla gecikme olur.

TAG'da iki numaralı ilke:

KULLANMAYI BİTİRDİĞİNİZ BİR TAGI HER ZAMAN SİLİN.

Bir script dosyasının sonunda bir TAG kullanmayı bitirmemiş olabilirsiniz. Ya da sunucu kapandığında bile. Aslında sonsuza kadar karakterin üzerinde kalmak isteyeceğiniz bazı TAG'lar var. Ancak, herhangi bir nedenle bir TAG'ı kullanmayı bitirirseniz, silin. Belleği korur ve genel olarak iyi bir script dosyası uygulamasıdır.

İşte bir başka önemli TAG ilkesi. TAG çok güçlü bir özellik olsa da, sınırları vardır. Bir TAG yalnızca aşağıdaki nesnelerde kullanılabilir:

1. Characters.
2. Items.
3. Regions. Evet, regions TAG'lar olabilir.

Karmaşık bir sisteme girmeden TAG'ların kullanımına örnek vermek çok zor. Çoğu karmaşık sistem iki, üç veya daha fazla kalıcı tag kullanır. Örneğin, deneyim puanları içeren bir sistem, sayıları TAG'da saklayabilir TAG.CURRENT_EXPERIENCE_POINTS ve TAG.CURRENT_LEVEL. Giderek daha karmaşık sceipt dosyaları sunduğu için, bundan sonraki bölümlerde TAG'ları ne zaman avantajınıza kullanacağınıza dair iyi bir örnek bulacaksınız. Bu arada, TAG'larla uğraşırken, bazen bir TAG'ın var olup olmadığını veya bir değeri olup olmadığını kontrol etmeniz gerekir. Eğer yoksa, SPHERE konsold bir hata verir. Bunu önlemek için, TAG yoksa TAG yerine TAG0 kullanarak TAG'ı varsayılan olarak 0 yaparız. İsterseniz güvende olmak için her zaman TAG yerine TAG0 kullanabilirsiniz.

Diyelim ki bu kod satırını yazdınız:
EMORE = <EVAL <TAG.JOE>>
Eğer TAG.JOE değer içermiyor veya henüz tanımlanmadı ise konsolda şuna benzer bir hata alırsınız:

Tanımsız değer ' '. İşleri karmaşıklaştırmak için, MORE'un değeri değişmeyecek ve bu da senaryonuzu ciddi şekilde mahvedecektir.

Bunu önlemek için aşağıdaki yöntemi kullanın:
MORE = <EVAL <TAG0.JOE>>
Bu durumda TAG değerine erişmek için TAG0'ı kullandık. TAG'a bu şekilde erişmek, TAG dışında değeri normal şekilde döndürür. JOE tanımsız, bir komut dosyası hatası oluşması yerine "0" döndürülür.

Aynı numara, bir TAG'nin değerini ayarlarken de kullanılabilir.

Örneğin:
TAG0.JOE = <MORE>
Tahmin edebileceğiniz gibi, bu TAG değerini ayarlar. JOE, MORE'da tutulan değer ne olursa olsun. Ancak aradaki fark, değeri ayarlarken TAG0 kullandığımız için, MORE değeri sıfır ise TAG olmasıdır. JOE aslında temizlenecek. Bu başlangıçta istenmeyen bir şey gibi görünebilir, ancak nesne üzerinde depolanan TAG sayısını azaltma avantajını sunar. Bir TAG olmadığında sıfır değerini almak için TAG0'ı kullanabildiğimizden, tümü sıfır değerine sahip çok sayıda TAG depolayarak belleği boşa harcıyor olabilirsiniz. Elbette bir TAG'ın değerini ayarlarken TAG0 kullanmaya karar verirseniz, bu değeri geri okurken de TAG0 kullandığınızdan emin olmalısınız, aksi takdirde hızlı bir şekilde yukarıda bahsedilen "Tanımsız değer" sphere konsol hatasıyla karşılaşırsınız.

UO-Dev SPONSOR

Paylaş

XFacebook

Faydalı mı?

Bu içerik size yardımcı oldu mu?

UO-Dev SPONSOR

Henüz yorum yapılmamış. Yorum yazabilmek için giriş yapmanız gerekir.

Üyelerin oylama ortalaması (10 dışında) :

Henüz Oylanmamış

Oylar: 0

Paylaş

XFacebook

Faydalı mı?

Bu içerik size yardımcı oldu mu?