UO-Dev Arama


Skillclass ve NPC tagları konu anlatımı.

Yazar: xwerswoodx
Tarih: 14-01-2013 21:26





Bugünkü dersimizde size <skillclass> ve <mdex> gibi NPC taglarını anlatacağım.

Öncelikle skillclass ile başlayalım. sphere_skills.scp açtığımızda en altta bu satırları görürüz;

Kod:
[SKILLCLASS 0]
// undeclared class.
// max skills for players of this skill class.
// might want this to be all 50.0 to make people declare a class?
DEFNAME=Class_undeclared
NAME=undeclared
// EVENTS=e_ClassUndeclared
STATSUM=225
SKILLSUM=800.0
STR=100
INT=100
DEX=100
Alchemy=100.0
Anatomy=100.0
AnimalLore=100.0
ItemId=100.0
ArmsLore=100.0
Parrying=100.0
Begging=100.0
Blacksmithing=100.0
Bowcraft=100.0
Peacemaking=100.0
Camping=100.0
Carpentry=100.0
Cartography=100.0
Cooking=100.0
DetectingHidden=100.0
Enticement=100.0
EvaluatingIntel=100.0
Healing=100.0
Fishing=100.0
Forensics=100.0
Herding=100.0
Hiding=100.0
Provocation=100.0
Inscription=100.0
LockPicking=100.0
Magery=100.0
MagicResistance=100.0
Tactics=100.0
Snooping=100.0
Musicianship=100.0
Poisoning=100.0
Archery=100.0
SpiritSpeak=100.0
Stealing=100.0
Tailoring=100.0
Taming=100.0
TasteId=100.0
Tinkering=100.0
Tracking=100.0
Veterinary=100.0
Swordsmanship=100.0
Macefighting=100.0
Fencing=100.0
Wrestling=100.0
Lumberjacking=100.0
Mining=100.0
Meditation=100.0
Stealth=100.0
RemoveTrap=100.0
Necromancy=100.0
Focus=100.0
Chivalry=100.0
Bushido=100.0
Ninjitsu=100.0
Spellweaving=100.0


Buna biz kısaca oyuna giren her kişinin aldığı events diyebiliriz. Bunun altından On=@Login triggeri ile işlem yaparız. e_fix, e_staff_fix gibi eventleri veririz.

Peki bize ne yararı olur?
Çoğu kişi bunun sadece, 100.0 skill kasmaya veya stat, skill limiti koymaya yaradığını düşünür. Halbuki olay o kadar değildir. Yani bu class veya classlar bize çok şey gösterirler.

En basitinden bir örnek vermek gerekirse;
Bir stat yapımında
Kod:
<eval <src.int>+<src.str>+<src.dex>> == 225
diyoruz ve bu sorguyu yaklaşık 10 kere kullanıyoruz. Peki ya sonrada 225 değilde 250 yapmak isterseniz statları? sphere_skills.scp içinden değişmeniz yetmiyor tüm itemlerden tek tek değişeceksiniz. Eziyet değil mi?

Peki ya bunu bir de 60'dan fazla skill için düşünün. Ne kadar süre alır. 1 gününüzü ayırmanız bile yetmeyebilir.

İşte skillclass burada devreye giriyor.
Kod:
<eval <src.int>+<src.str>+<src.dex>> == <src.skillclass.statsum>

bu kod ile artık sadece sphere_skills.scp içindeki STATSUM a kaç yazarsanız direk olarak bu kod ona göre ayar yapar. Yani 300 yazarsanız, 300, 250 yazarsanız 250. 1 dakikada istediğiniz ayarı çekersiniz.

Peki teaching sisteminde bazı serverlerde bazı skiller 125.0 a kadar kasılırken bazıları 100.0 a kadar kasılıyor. Bu defa 125 e kadar kasılan skilleri tek tek sorgulamak bazen 100lerce satıra mal oluyor. Peki ya hiç 1 satırda yapmayı düşündünüz mü?

Kod:
if (<src.<serv.skill.<dargn>.name>> == <src.skillclass.<serv.skill.<dargn>.name>>) && (<eval <src.skilltotal>+300> < <src.skillclass.skillsum>)


Bütün sorgu bu kadar. Algoritma kurmak sanıldığı kadar basit bir işlem değildir. 2+2 nin 4 olduğunu herkes bilir bu nedenle birine kaç artı kaç 4 eder diye sorarsan, 2+2 der. Halbuki 3+1, 4+0, 1+3, 0+4 bunlar neden söylenmiyor. Algoritma denilen şey sadece farklı bakış açısı.

Bundan sonrası artık sizin kodlama yeteneğinize kalıyor. Gel gelelim NPC taglarına.

Kod:
STR - MODSTR
DEX - MODDEX
INT - MODINT
STAM - MAXSTAM
HITS - MAXHITS
MANA - MAXMANA


Şimdi bu yukarda gördüğünüz eşleşmelerdeki farkları anlatacağım.

MODSTAT - STAT
MODSTR=Genellikle büyü etkiliyken devreye girer. Örneğin STRENGTH büyüsünü attığınızda +15 str, MODSTR olarak kayıt edilir.

STR=Oyuncunun orjinal STR'sidir. (oSTR olarakta geçer.)
DEX ve INT için aynı mantık kullanılır.

MODSTR ile STR arasında pek fark olmasada. Bir itemi üzerine giydiğinde oyuncuya STR +=20 vermektense, MODSTR +=20 vermek daha mantıklıdır. Çünkü eğer bir moongate de üzerinde STR yi etkileyen bir item var mı diye kontrol ettireceksen, her itemi tek tek
Kod:
if <src.findid.i_item> && <src.findid.i_item2> && <src.findid.i_item3> && ....
gibi aratmak yerine,
Kod:
if <src.MODSTR> > 0
kullanmak çok daha kolaydır. MODSTR büyülerin etkisinide gösterdiğinden STRye yapılan etkiyi ölçmek bile mümkün.
Kod:
<eval <SRC.MODSTR>-<SRC.STR>>


Şimdi gelelim en önemli kısma.
STAT - MAXSTAT
MANA=Oyuncunun kendi manasını belirler.
MAXMANA=Oyuncunun mana limitini belirler.

HITS=Oyuncunun canını belirtir.
MAXHITS=Oyuncunun olabileceği en yüksek canı gösterir.

STAM=Oyuncunun kondisyonunu gösterir.
MAXSTAM=Oyuncunun maximum stamını gösterir.

Şimdi gelelim önemli noktaya. MAXSTAT neden önemlidir.
Çünkü bir oyuncuya DEX vermeden STAM sınırını arttırabiliriz. Yani bir item yapacağız ve stamı arttıracak diyorsak, MAXSTAM kullanırız. Buna ek olarak, Ben oyuncunun STRsi 100 olsun ama 1000 canı olsun istiyorum diyorsanız, MAXHITS tam size göre. Buna ek olarak artık sorgularda <src.str> kullanmak yerine <src.maxhits> kullanmak daha sağlıklıdır. Çünkü oyuncunun strsi 100 olabilir ama can limiti 150 olursa, bu defa 100 den sonra canını dolu görecektir sorgu.

Level - Exp
Level ve Exp taglarını kullanmak yerine insanlar sunuculrında yeni taglar oluşturuyorlar. Aslında farklı bir şey değil ama tag oluşturmak yerine var olanı kullanmak daha mantıklı değil midir?

Kod:
if <src.level> < 10
src.go Star
endif


Halbuki kendi yazdığımız tagları unutuyoruz çoğu zaman;

Kod:
if <src.tag0.oyuncunun_leveli> > 10
src.go Star
endif


Düşünün bir bu tagı kaç gün daha aklınızda tutabilirsiniz? Kodlamayı karıştırmayın, sadeleştirin.

Umarım akıllardaki soru işaretlerine bir nebze çözüm olup, kodlamalarınızı kolaylaştırabilmeniz için yardımcı olabilmişimdir.

Algoritma kullanımları hakkında bilgi almak için; Mac-Fusion'un kodlama teknikleri dersini incelemeyi unutmayınız.



Yorumlar

Henüz yorum yapılmamıştır.

Oylamalar

Oylama :
Üyelerin oylama ortalaması (10 dışında) : 9.33   
Oylar: 3 den itibaren 28-08-2013 17:42

Benzer Sayfalar

SayfalarYorumlarGönderenTarih


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ı,