UO-Dev Arama


Script Kodlamaları

Yazar: RasmuS
Tarih: 22-06-2015 10:09





Merhaba arkadaşlar,
İlk dökümanımı yazmanın verdiği sevinç ile bundan sonra forumlarda gördüğüm genel kodlama sorunlarını ele alarak ufak tefekte olsa sizlere yardımcı olmaya çalışacağım.

İlk dersimizde bence uzunca yazılan kodlamaların olmazsa olmazları arasında gördüğüm " debug " yapmanın size kazandırdığı kolaylıklardan bahsedeceğim.

Öncelikle debug kelimesini incelemek gerekirse kelimenin karşılığı olarak " hata bulmak, hata ayıklamak " gibi anlamlara ulaşabiliriz.

Hepimizin de işe ilk başladığında mevcut yazılı kodlamalar üzerinde oynamalar yaparak öğrenmeye başladığını varsayarsak eğer elde ettiğiniz kodlamaların birçoğunun tamamen sorunsuz olmadığını görmekteyiz. Fakat sorunun kaynağının neresi olduğunu bulmakta ise zorlanmaktayız. İşte tamda bu sırada devreye debug yapmak giriyor. Örnek üzerinde anlatmak gerekirse ;

Kod:
[ITEMDEF i_runebook]
ID=7716
TYPE=T_script
NAME=Runebook
RESOURCES=100 i_scroll_blank
SKILLMAKE=INSCRIPTION 99.0, MAGERY 99.9

ON=@DClick
IF !((<src.inscription>>=99.9) && (<src.magery> >= 99.9))
src.sysmessage Bunu yapmak için 99.9 Inscription ve Magery becerisine ihtiyacınız var.
return 1
ELSEIF !(<SRC.RESTEST 1 i_runebook>)
src.sysmessage Çantanızda runebook bulunmuyor.
return 1
ELSE
DIALOG d_RUNEBOOK
return 1
endif


Örnek kodumuzda gördüğünüz gibi i_runebook id'li bir runebook kodumuz olsun. Buna iki kere tıkladığımızda ( @DClick ) bir kaç if ( Eğer ) sorgusundan geçtiğini görüyoruz.

İlk sorguda ;
Kod:
IF !((<src.inscription>>=99.9) && (<src.magery> >= 99.9))
src.sysmessage Bunu yapmak için 99.9 Inscription ve Magery becerisine ihtiyacınız var.
return 1

Eğer runebook'a çift tıklayan kişinin inscription ve magery yetenekleri 99.9 ve üzerinde değilse bize uyarı vermesini istiyoruz. Aslında bu kodda farkında olmadan debug yapmaktayız. Çünkü bu tarzda bir if sorgusundan sonra mesaj verdirmez isek inscription ve magery yeteneği 99.9'dan düşük olan kişiye herhangi bir bilgilendirme yapmamış oluyoruz. Ve sorunun nereden kaynaklandığını öğrenemiyoruz.

İkinci sorguda da benzer bir bilgilendirme mesajı veriyoruz.

Kodumuzu biraz değiştirdiğimizde şu halde de olabilir ;

Kod:
ON=@DClick
IF (<src.inscription>>=99.9) && (<src.magery> >= 99.9)
IF (<SRC.RESTEST 1 i_runebook>)
DIALOG d_RUNEBOOK
return 1
endif
endif


Bu kodda gördüğünüz üzere herhangi bir bilgilendirme yer almamaktadır. Inscription veya magery yeteneğinizden herhangi 99.9 seviyesinde altında ise veya çantanızda i_runebook eşyası bulunmuyorsa d_runebook dialog'u ile karşılaşamayacaksınız ve sorunun nerede olduğu konusunda düşünüp duracaksınız.

Bu tarz sorunları öncelemek için kodu şu hale getirdiğimizde sorunun nerede olduğu konusunda bilgi sahibi olabileceksiniz.

Kod:
ON=@DClick
IF (<src.inscription>>=99.9) && (<src.magery> >= 99.9)
src.sysmessage inscription ve magery yetenekleri 99.9 ve üstü
IF (<SRC.RESTEST 1 i_runebook>)
src.sysmessage çantasında i_runebook id'li item var
DIALOG d_RUNEBOOK
return 1
else
src.sysmessage çantada i_runebook id'li item yok
return 1
endif
endif


Basit örneklemeler olmuş olabilir fakat unutulmamalıdır ki bu anlatım başlangıç seviyesinde yer alan kişilere bir nebze olsun ışık tutabileceği düşünülerek yazılmıştır.

Büyük küçük demeden herkes bir konuda bildiği şeyleri anlatırsa forumda karşılaştığınız, okuduğunuzda bunu da mı yapamıyor dediğiniz cümlelerinizin azaldığını görüceksiniz.

Unutmayın ki sizlerde bugünkü bilgi seviyelerinize buralardan başlayarak geldiniz.



Yorumlar

1.   Gönderen Naphy   03-07-2015 21:37    

Genelde ilkkez kullancağınız trigglerlerin altına
act.say 1
src.say 2
argo.say 3

gibi şeyler eklerseniz triggerde kim hangi kod ile çağrılıyor daha rahat bulursunuz ve asla ters ten mantık yapmayın ve bir if döngüsüne 10 sorgu sokmayın.Yani if xxx elseif yyy endif yapmayında if xx endif if yyy endif yaparsanız daha kısa sorgular içerisinde daha sağlıklı kodlar olur ve sonradan değiştirmenizde basit olur ...

2.   Gönderen Culum   09-08-2015 00:00    

@Naphy
Genel olarak söylemek gerekirse if & elseif aynı şeyler değildir.
Elseif bloğuna bir verinin girebilmesi için ondan önce ki if sorgusunun başarısız olması gerekir. Fakat alt alta iki tane if kullanırsanız eğer iki sorgu da doğru ise iki if'e de girecektir.

Not: script olarak değil genel programlama mantığı olarak belirtiyorum.

Örnek: X = 5
if(x =5)
src.say x 5dir.
elseif(x > 3)
src.say x 3den büyüktür
end if
Bu sonuç bize x 5dir döndürecektir.

if(x = 5)
src.say x 5dir.
end if
if(x > 5)
src.say x 3den büyüktür
end if

Burada ise her iki src.say'da belirtilen bilgiyi döndürecetir.

Programlama mantığı bu şekildedir, scriptte farklı işliyorsa o zaman birşey diyemeyeceğim.

3.   Gönderen hodor   21-08-2015 13:18    

debug nası yapılmaz onun anlatımımı bu?

girinti verin öncede yazdığınızı okuyun.

if elseif vs. bilmeyen adam zaten kod yazmamalı yazıosa bi yanlışlık vardır

Oylamalar

Oylama :
Üyelerin oylama ortalaması (10 dışında) : Henüz Oylanmamış   
Oylar: 0

Benzer Sayfalar

SayfalarYorumlarGönderenTarih
Uo Ders .Mul Konu Verdata.Mul (Animasyonlu Eşya...0stylez04-06-2017
Uo Ders .Mul Konu Animdata.mul0stylez30-01-2017
Uo Ders .Mul Konu Fonts.mul0stylez30-01-2017
Uo Ders .Mul Konu Anim.mul0stylez30-01-2017
Uo Ders .Mul Konu Multi.Mul0stylez19-12-2016


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