Kod:
#define WIZ_LOGIN 0x01 // Account Login
#define WIZ_NEW_CHAR 0x02 // Create Character DB
#define WIZ_DEL_CHAR 0x03 // Delete Character DB
#define WIZ_SEL_CHAR 0x04 // Select Character
#define WIZ_SEL_NATION 0x05 // Select Nation
#define WIZ_MOVE 0x06 // Move ( 1 Second )
#define WIZ_USER_INOUT 0x07 // User Info Insert, delete
#define WIZ_ATTACK 0x08 // General Attack
#define WIZ_ROTATE 0x09 // Rotate
#define WIZ_NPC_INOUT 0x0A // Npc Info Insert, delete
#define WIZ_NPC_MOVE 0x0B // Npc Move ( 1 Second )
#define WIZ_ALLCHAR_INFO_REQ 0x0C // Account All Character Info Request
#define WIZ_GAMESTART 0x0D // Request Other User, Npc Info
#define WIZ_MYINFO 0x0E // User Detail Data Download
#define WIZ_LOGOUT 0x0F // Request Logout
#define WIZ_CHAT 0x10 // User Chatting..
#define WIZ_DEAD 0x11 // User Dead
#define WIZ_REGENE 0x12 // User Regeneration
#define WIZ_TIME 0x13 // Game Timer
#define WIZ_WEATHER 0x14 // Game Weather
#define WIZ_REGIONCHANGE 0x15 // Region UserInfo Receive
Evet arkadaşlar paketler Ebenezer ile Clientin haberleşmesini charınızın yürümesini hp'sinin dolmasını ve aklınıza gelebilcek yüzlerce olayı gerçekleştirmek için kullandığımız kod tanımlarıdır. Siz bunlar sayesinde oyun oynayabiliryorsunuz. Bu paketlerin ek*** veya yanlış olması sizin gelitşrmekte olduğunuz dosyaların client ile uyumsuz biçimde çalışmasına sebep olacaktır. Bu yüzden ilk işiniz bu paketleri doğru bir şekilde düzenleyip tamamlamanız olacaktır
En basitinden :
#define WIZ_WEATHER 0x14 // Game Weather.
WEATHER ingilizcede hava anlamına gelmektedir bu bize hava değişimi ile ilgili olayların paket başının 14 olduğunu göstermektedir. Yani 14036400 gibi bir paket gördüğünüzde hava değişiminin olduğunu anlayabilirsiniz. Sistem bu şekilde işlemektedir.
Item Seal :
Kod:
case 0x01: // Item Seal
itemaq = GetShort( pBuf, index );
itemid = GetDWORD( pBuf, index );
itemsl = GetByte( pBuf, index );
pwlen = GetShort( pBuf, index );
if(pwlen == 0 || pwlen < 0) {
SetByte( send_buff, 0x04, send_index );}
else {
SetByte( send_buff, 0x01, send_index );
Send( send_buff, send_index );
break;}
burada arkadaşlar item seal paketini case yapısı ile ayırmış yani itemi kitleme,itemi kitlemek için paranın yeterli olamamsı,item kitleme şifresinin yanlış olması gibi ihtimallerde mevcut bu yüzden bunları ayırmış biz item kitlemeyi inceliyoruz yani : case 0x01
Şimdi açıklamaya geçelim :
itemid = GetDWORD( pBuf, index ); burda kullanıcıdan itemid'sini alıyor ki gelen pakette bu mevcut zaten.
itemsl = GetByte( pBuf, index ); burada item kitli mi değil mi alıyor sl yani 'seal' durumu seal yada unseal olarak döner
pwlen = GetShort( pBuf, index ); burada da şifreyi alıyor kullanıcıdan kitlemek
if(pwlen == 0 || pwlen < 0) // burada şifre boş mu kontrol diyor.
SetByte( send_buff, 0x04, send_index );} // Eğer boş işse 0x04 paketi ile olumsuz paket gönderiyor
NeronlineWorld Yönetimi..!