# 1860 Soruce Açıklamaları

- CNpc* pMon = NULL
- CUser* pTUser = NULL,
- _MAGIC_TYPE8* pType = NULL,
- _MAGIC_TABLE* pTable = NULL

Yukarıdakiler ve bunlara benzer tanımlamalar bir sınıf yerine bir isim atamasının yapılmasıdır.
İlk satırda CNpc (Class Npc) Npc Sınıfını,
İkinci satırdaki pTUser (Class User) Kullanıcı sınıfının atamasıdır.
Başında kullandığı p ise bir "Pointer" anlamına gelmektedir.

- char send_buff[128];
Char türünde yeni bir dizi değişkeni tanımlamış uzunluğu 128 büyük ihtimalle 128 Byte olarak geçiyor

- memset(send_buff, NULL, 128)
Memset fonksiyonu hafızadaki değişkene bir değer atamaya veya üzerindeki değeri silmeye yarar.
send_buff değerine NULL atamış yani değeri boşaltmış

- SetByte, SetShort, SetDWORD nedir?
#SetByte 2 Haneli bir değeri gönderilecek olan pakete eklemek için kullanılır.
#SetShort 4 Haneli bir değeri gönderilecek olan pakete eklemek için kullanılır.
SetDWORD 8 Haneli bir değeri gönderilecek olan pakete eklemek için kullanılır.

Neden SetByte, SetShort, SetDWORD kullanılıyor?
Öncelikle :
Ebenezerdeki ana case yapısında kullanıcının ne iş yaptığını yani gelen paketin türünü belirleyen bir yapı var,
Daha sonra gelen paket türüne göre işlemler yapılmakta, Ebenezer her kullanıcının yaptığı her işe karşılık vermek zorunda ve bu yüzden kullanıcının isteğini yorumlayıp geri dönecek paketi hazırlaması gerekiyor bunun içinde,
SetByte, SetShort, SetDWORD Fonksiyonları kullanılıyor.

SetByte( send_buff, WIZ_MAGIC_PROCESS, send_index );
Burada kullanıcı skill kullanmış ki kullanan kullanıcıya geri dönecek değere "WIZ_MAGIC_PROCESS" eklemiş.
PacketDefine.h üzerinde tanımlanmış paketler SetByte ile pakete eklenir.
Bu 3 fonksiyon pakete değer eklemeye kullanıcıya vereceğiniz cevabı hazırlamakta kullanılır.

SetByte( send_buff, MAGIC_FAIL, send_index );
Yukarıda "MAGIC_FAIL" sub paketinin kullanıldığını görüyoruz. Sub paket nedir?
WIZ_MAGIC_PROCESS + MAGIC_FAIL / MAGIC_EFFECTING olarak iki ana alt paket var aslında fazla ama şimdilik bunlar yeter örnek için ;

Eğer kullanıcının kullandığı skill başarısız ise,
Alt paket olan "MAGIC_FAIL" kullanıcıya kullandığı skillin başarısız olduğunu anlatır ve ana pakete eklenir.

Eğer skill başarılı ise "MAGIC_EFFECTING" kullanıcıya kullandığı skillin başarılı olduğunu anlatır ve ana pakete eklenir.
SetByte( send_buff, MAGIC_EFFECTING, send_index );

Yani alt paketler genellikle anapakette yapılan işlemin sonucunu veya türünü belirlemeye yarıyan değerlerdir.

Konu altına "dosyaların mantığı" ile ilgili sorularınızı sorabilirsiniz, elimden geldiğince size anlatmaya çalışırım