Anasayfa
UO Sunucular
Forumlar
Profilim
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.

SPONSOR

SPONSOR

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 ...
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.
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

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

BENZER SAYFALAR

Bu bölüm sayfalarda aradığınıza daha kolay ulaşabilmek ve bulmak adına rehber niteliğinde olacaktır.

Sosyal Ağ ile Giriş Yap