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

CHARDEF

Diyelim ki bir Liche'den DAM özelliğini almak istediniz. DAM bir karakter özelliği olmadığı için özelliği yalnızca CHARDEF'ten alabiliriz. (Teknik olarak, karakterler için bir DAM özelliği var, ancak aradığımız şey bu değil.)
[FUNCTION f_return_char_prop]
LOCAL.DAM = <SERV.CHARDEF.<ARGS>.DAM>
Yukarıdaki örnekte, Sphere iletilen bağımsız değişkeni (ARGS) alacak ve ardından DAM özelliğini karşılık gelen CHARDEF'ten LOCAL'a depolamaya çalışacaktır.

Oldukça basit, değil mi?

ITEMDEF

Bu, SERV'e benzer şekilde çalışır. CHARDEF, yalnızca ITEMDEF'lerde çalışır. Diyelim ki bir karakterin kuşandığı silahtan BECERİ özelliğini almak istediniz.

İşte bir örnek:

code] [FUNCTION f_return_wep_skill]
LOCAL.WEP_SKILL = <SERV.ITEMDEF.<ARGS>.SKILL> [/code]

Bu, ITEMDEF'in (ARGS) LOCAL'a geçirdiği her şeyin SKILL özelliğini depolar. WEP_SKILL. Ve bu çok daha karmaşık hale gelebilir. Örnek olarak, yakın zamanda aşağıdakileri yapan bir komut dosyası yazdım:

• Kuşanılmış silahı bulmak için QVAL'i kullanın.
• REF1'de bulunan silahı saklayın.
• REF1'in bir silah UID'si döndürüp döndürmediğini kontrol edin.
• Silahın DAM özelliğini LOCAL'da saklayın. WEP_DAM.

[code] [FUNCTION f_weapon_dam]
REF1 = <QVAL <FINDLAYER.1.UID> ? <FINDLAYER.1.UID> : <FINDLAYER.2.UID>>
IF (<REF1&gt // REF1 is true; weapon found.****
LOCAL.WEP_DAM = <SERV.ITEMDEF.<REF1.BASEID>.DAM>
ENDIF
RETURN <LOCAL.WEP_DAM> [/code]

LOG

Bir oyuncunun ne zaman bir şey yaptığını veya bir şey söylediğini görmek istiyorsanız veya script dosyalarınızdaki formüllerin sonucunu bilmek istediğinizde bu function çok iyidir. Bu, konsola (ve günlüklere) mesaj yazmak içindir.

Kullanımı gerçekten çok basit:

SERV. LOG Merhaba dünya

Ve konsola baktığınızda şöyle bir şey gösteriyor:

[code]21:56YourScript.scp,2)Merhaba dünya[/code]

Kolay ve kullanışlı.

Not: Herhangi bir nedenle script dosyası adının günlükte görünmesini istemiyorsanız, günlük iletinizin önüne '@' karakterini ekleyin (iletiyi gerçekten @ simgesiyle başlatmak istiyorsanız iletinin önüne iki '@' karakteri (@@) ekleyin).

MAP

SERV. MAP işlevi, bir harita üzerinde belirli bir noktanın özelliklerini okumanıza olanak tanır.

Kullanılabilecek iki sözdizimi vardır:

1. <SERV.MAP(x,y,map)>.KEY
2. <SERV.MAP(x,y,z,map)>.KEY

Bu sözdizimlerinde hafif bir 'tuhaflık' fark edebilirsiniz ve sizi yakalamamaları için bunların farkında olmalısınız: Verilen 3 parametre olduğunda, erişilecek harita numarası olarak üçüncü parametre kullanılır. 4 parametre verildiğinde üçüncü parametre yükseklik (Z), dördüncüsü ise harita numarası olur.

KEY birkaç şey olabilir:

ISNEARTYPE type distance checkmulti <distance> Döşemeler</distance> içindeki noktanın yakınında bir öğe varsa 1 döndürür. <checkmulti> 1 ise, çoklu bileşenler de kontrol edilecektir.</checkmulti>

REGION
Harita noktasından BÖLGE'ye erişin.

ROOM
Harita noktasından ODA'ya erişin.

SECTOR Harita noktasından SECTOR'e erişin.

STATICS Harita noktasındaki statik öğelerin sayısı.

STATICS.n.ID
Harita noktasındaki n'inci statik öğenin kimliği (n 0'dan başlar)

STATICS.n.COLOR
Harita noktasındaki n'inci statik öğenin RENGİ (n 0'dan başlar)

STATICS.n.Z
Harita noktasındaki n'inci statik öğenin Z düzeyi (n 0'dan başlar)

STATICS.n.*
STATICS.n.KEY yukarıdaki özelliklerden hiçbiriyle eşleşmezse, değer komut dosyalarındaki statiğin ITEMDEF değerinden alınır.

TERRAIN
Harita noktasındaki arazinin kimliği.

TYPE
Harita noktasındaki arazi türü.

X, Y, Z, M, MAP
Harita noktasındaki X/Y/Z/MAP değerlerine erişin.

COMPONENTS
Harita noktasındaki bileşen öğelerinin sayısı.

COMPONENTS.n.ID
Harita noktasındaki n'inci bileşen öğesinin kimliği (n 0'dan başlar)

COMPONENTS.n.Z
Harita noktasındaki n'inci bileşen öğesinin Z seviyesi (n 0'dan başlar)

NEWDUPE
Kullandığınızda DUPE komutuyla, hedeflenen bir öğenin 'klonunu' oluşturabilirsiniz. NEWDUPE işlevi, bu işlevin komut dosyaları içinde yeniden oluşturulmasına olanak tanır.

İşlevin sözdizimi NEWDUPE uid'dir, burada uid, klonlamak istediğiniz nesnenin UID'sidir. Bu işlevi çalıştırdıktan sonra, SERV. YENİ referans, yeni klonlanan öğeye ayarlanacaktır. 'Aldatılan' öğeyi tam olarak hedeflenen öğenin bulunduğu noktada oluşturduğunu bilmelisiniz. Bu yüzden onu başka bir yere taşımanız gerekebilir veya belki de yığınınızı ezebilir.

İşte bir örnek, aşağıdaki senaryo karakterin silahını klonlayacak ve sırt çantasına yerleştirecektir:

[code] [FUNCTION f_dupeweapon]
IF (<WEAPON.UID&gt
SERV.NEWDUPE <WEAPON>
BOUNCE <NEW.UID>
ENDIF [/code]

NEWITEM
Bu, öğeler oluşturmak için kullanılan kolay bir işlevdir. Birçoğunuz 55i eğitimlerinde NEWITEM formatını öğrendiniz, bu 56b'de değişti ve bu esas olarak bu değişikliği açıklamak için.

Şimdi, bu işlevi bazı oynatıcılarda kullanamazsınız, onu SERV'de oluşturmanız gerekir.

[code] SERV.NEWITEM i_example
NEW.COLOR 9 [/code]

Ayrıca, yeni öğeye yapılan başvuru SRC değildir. New olarak değişti, bu yüzden 9 renginde bir öğe oluşturmak istersem şöyle görünecek:

Gördüğünüz gibi, kullanımı gerçekten çok kolay. İsteğe bağlı olarak NEWITEM'a geçirilebilecek ek parametreler de vardır:

NEWITEM id, amount, cont, triggerEquip

Yani SRC'nin sırt çantasında 3 i_test oluşturmak istersem yapmalıyım:

[code]SERV.NEWITEM i_test, 3, <SRC.FINDLAYER.21.UID>,1</SRC.FINDLAYER.21.UID>[/code]

NEWNPC
Bu işlev, dünyada NPC'ler oluşturmak için kullanılabilir. Sözdizimi NEWNPC id'dir, burada id, oluşturmak istediğiniz karakterin BASEID'sidir. Yeni oluşturulan karaktere YENİ referans üzerinden erişilebilir.

Aşağıdaki function bir headless oluşturur ve bunu varsayılan nesnenin 10 kutucuğu içine taşır.

Not: Yeni karakteri oluşturduktan sonra ACCOUNT özelliğini ayarlayarak oyuncu

[code] [FUNCTION f_createnpc]
SERV.NEWNPC c_headless
NEW.MOVENEAR <UID> 10 [/code]

karakterlerini bu şekilde oluşturmak da mümkündür.

NEWSUMMON

Bu işlev NEWNPC'ye benzer ancak çağrılara özgüdür. Bu, belirli bir süre için yeni bir çağrılmış yaratık oluşturmanıza izin verecektir.

[code] [FUNCTION f_createsummon]
SERV.NEWSUMMON=c_ogre,15
NEW.P=<p> [/code]

Bu örnek, mevcut konumunuzda 15 saniye boyunca Ogre çağıracak ve Ogre yapacaktır.

SKILL
Bu, diğerleri gibi kolay bir işlevdir. Bu, SKILL bölümüne atıfta bulunur.

Skill özelliklerini sphere_skills.scp dosyasında görebilirsiniz. Nasıl çalıştığını açıklayacağım:

[code]LOCAL.SKILL = <SERV.SKILL.<ACTION>.KEY>
[/code]
Bu satırla skill key (alchemy, ör.) elde edersiniz.

SERV'i kullanmanın 3 yolu vardır. SKILL: Key, Defname, number.

Bunlardan herhangi biri kabul edilir ve görürseniz, çoğu durumda insanlar Anahtarı almak ve oyuncu skill miktarını almak için Eylem'i kullanır.

Bunun için birçok kullanım alanı bulabilirsiniz, tek ihtiyacınız olan biraz hayal gücü.

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?