Bir Trigger Problemini Anlamak
Yani bir senaryoyla ilgili bir sorununuz var ve nereye başvuracağınızı bilmiyor musunuz? Ya da konuştuğunuz herkes aradığınız cevaplara sahip değil mi? Saçınızı yolmaya başlamak üzeresiniz, kendinizi yalnız ve kaybolmuş hissediyorsunuz ve kimse size yardım edemiyor gibi görünüyor. Artık endişelenme, kendine yardım etmek üzeresin! Komut dosyanızda hata ayıklama hakkında konuşalım
Onları çözümlerine yönlendirecek yararlı bilgileri nasıl elde edebileceklerini açıklamak için burada bazı örnekleri inceleyeceğiz. Her durumun, sorunu çözmek için elinizdeki araçları kullanmanıza yardımcı olacak veya daha yararlı bilgiler bulmanız için size rehberlik edecek kendine özgü yöntemleri olacaktır.
MalucoBeleza'nın işaret ettiği gibi, bu uygulama bir tetikleyici ile çalışmak için uygun bilgiyi elde etmek için gereklidir
Sizin için yeni olan bir tetikleyici ile uğraşırken Wiki'yi kontrol etmek ve bunun gibi testler yapmak çok önemlidir:
ON=@Kill
SERV.LOG NAME: <NAME>
SERV.LOG I.NAME: <I.NAME>
SERV.LOG SRC.NAME: <SRC.NAME>
SERV.LOG ARGO.NAME: <ARGO.NAME>
SERV.LOG <NAME> (<UID>) HAVE JUST KILLED <ARGO.NAME> (<ARGO>) Bir Tetikleyiciyi Sorunlarını Anlamak Bir tetikleyicinin nasıl çalıştığından emin değil misiniz?
Bu, bir tetikleyicinin hangi nesnelere başvurduğuna dair daha fazla bilgi edinmek için sonuçlarınızı konsola kapatma kavramını gösteren MalucoBeleza'dan harika bir örnektir. Bu, oyunda doğru nesneye atıfta bulunduğunuzdan ve ardından gelen her şeyin beklendiği gibi davranacağından emin olmanıza yardımcı olabilir.
Diyelim ki birini öldürdüğünüzde ateşleyecek bir tetik kullanmak istiyorsunuz ve o kişiyi öldürdüğünüzde katile bazı deneyim puanları vermek istiyorsunuz. Hem öldürülen kişiye hem de onu öldüren kişiye atıfta bulunmanız gerekir.
Bu örnekteki tetikleyici @Kill'dir. Katil olarak varsayılan nesne I'i kullanacakları ve öldürülen kişinin SRC olacağı düşünülebilir. ya da ACT'nin öldürülen kişi olacağını. Ancak, bu tetikleyicilerden herhangi birinin herhangi bir nesne referansını diğeriyle aynı, hatta benzer bir tetikleyiciyle aynı şekilde kullanacağını varsaymamak en iyisidir. En iyi uygulama, kendinizi Spherewiki'ye götürmek (zaten sahip olduğunuz gibi) ve Nesneler > Karakterler > Referans Özeti altında aradığınız tetiği çekmektir, bu size o tetikleyicide hangi referansları yapabileceğiniz konusunda çok iyi bir fikir verecektir. Bu bilgilere sahip olduğunuzda, neyle çalışabileceğinizi ve bunlarla nasıl çalışabileceğinizi görmeye başlayabilirsiniz.
Hata ayıklama, hesaplamalar yaparken de harika bir araçtır. Diyelim ki kendi savaş sisteminizi oluşturmak istiyorsunuz, örneğin:
ON=@Hit
SERV.LOG <NAME> HAVE JUST HIT <SRC.NAME>
IF (<WEAPON>)
SERV.LOG A WEAPON WAS USED: <WEAPON.NAME>
SERV.LOG <WEAPON.NAME>'S DAMAGE IS <WEAPON.DAM.LO> - <WEAPON.DAM.HI>
ELSE
SERV.LOG NO WEAPON WAS USED.
SERV.LOG <NAME>'S DAMAGE IS <DAM>
ENDIF
SERV.LOG DAMAGE STARTED AS <ARGN1>
SERV.LOG THE SKILL USED IN THIS ATTACK IS <ACTION>
IF (<ACTION> == WRESTLING) || (<ACTION> == MACEFIGHTING)
ARGN1 = <EVAL <ARGN1> + (<STR>/8)> // FORMÜLÜNÜZÜ BURAYA GİRİN
ELIF (<ACTION> == ARCHERY) || (<ACTION> == FENCING)
ARGN1 = <EVAL <ARGN1> + (<DEX>/8)>
ELIF (<ACTION> == SWORDSMANSHIP)
ARGN1 = <EVAL <ARGN1> + (<DEX>/16) + (<STR>/16)>
ENDIF
SERV.LOG DAMAGE AFTER STATS BONUS ACCORDING TO THE SKILL IS <ARGN1>
IF (<SRC.ISPLAYER>) // OYUNCU BAŞKA BIR OYUNCUYA VURUR
SERV.LOG THE ARMOR OF THE DEFENDANT IS <SRC.ARMOR>
LOCAL.DAMAGE_REDUCTION = <EVAL <SRC.ARMOR>/20> // FORMÜLÜNÜZÜ BURAYA UYGULAYIN
ELSE // OYUNCU BIR NPC'YE VURUR
SERV.LOG THE ARMOR OF THE DEFENDANT IS <SRC.AC>
LOCAL.DAMAGE_REDUCTION = <EVAL <SRC.AC>/20> // FORMÜLÜNÜZÜ BURAYA UYGULAYIN
ENDIF
ARGN1 -= <LOCAL.DAMAGE_REDUCTION>
SERV.LOG AFTER DAMAGE REDUCTION OF <LOCAL.DAMAGE_REDUCTION>, DAMAGE IS <ARGN1>Komut Dosyalarıyla İlgili Konsol HatalarıKonsolunuzda hatalar alıyorsunuz ve size bir komut dosyası hakkında bilgi veriyor ancak ne yapacağınızdan tam olarak emin değilsiniz. Örnek olarak bir tane görelim:
00:17:ERROR:(i_dye_tubs.scp,52)Range isn't closed by a '}' character.Tamam, bu hatadan 'i_dye_tubs' dosya adını görebiliriz ve satır numarası 52'dir. Hata şu ki, 'Aralık bir '}' karakteriyle kapatılmadı.' öyleyse bu satırın neye benzediğini ve uygun satır düzeltmesinin ne olduğunu görelim:İşte i_dye_tubs.scp'den 52. satır şöyle görünüyor:
[code] color={047e 049a [code]
Yukarıda, tıpkı konsol hatasının bize bildirdiği gibi, sonunda bir } eksik olduğunu görebiliriz. Düzeltme, eksik } değerini eklemektir.
Bu çok temel bir örnektir, ancak bu, bir konsol hatasını parçalama sürecini açıklar. Bu komut dosyası hataları için her zaman aynıdır: "dosya adı, satır numarası, hata açıklaması". Büyük, karmaşık sistemlerde, konsol hatanızın tam doğasına dikkat etmek, hatayı nasıl düzelteceğinizi anlamanıza yardımcı olacaktır.[/code][/code]

