Added support for 2013-12-23 client.
This commit is contained in:
parent
c046668034
commit
912b644499
140
db/packet_db.txt
140
db/packet_db.txt
@ -33,7 +33,7 @@
|
||||
// Main packet version of the DB to use (default = max available version)
|
||||
// Client detection is faster when all clients use this version.
|
||||
// Version 23 is the latest Sakexe (above versions are for Renewal clients)
|
||||
//packet_db_ver: 45
|
||||
//packet_db_ver: 46
|
||||
packet_db_ver: default
|
||||
|
||||
packet_ver: 5
|
||||
@ -1045,7 +1045,7 @@ packet_ver: 22
|
||||
0x02c5,30
|
||||
0x02c6,30
|
||||
0x02c7,7,replypartyinvite2,2:6
|
||||
0x02c8,3
|
||||
0x02c8,3,partytick,2
|
||||
0x02c9,3
|
||||
0x02ca,3
|
||||
0x02cb,20
|
||||
@ -1311,7 +1311,7 @@ packet_ver: 23
|
||||
//2009-04-08aSakexe
|
||||
0x02a6,-1
|
||||
0x02a7,-1
|
||||
0x044a,6
|
||||
0x044a,6,clientversion,2
|
||||
|
||||
//Renewal Clients
|
||||
//2008-08-27aRagexeRE
|
||||
@ -1481,7 +1481,7 @@ packet_ver: 25
|
||||
0x0803,4
|
||||
0x0804,8 // Booking System
|
||||
0x0805,-1
|
||||
0x0806,2,bookingdelreq,0 // Booking System
|
||||
0x0806,4,bookingdelreq,2 // Booking System
|
||||
//0x0807,2
|
||||
0x0808,4 // Booking System
|
||||
//0x0809,14
|
||||
@ -1604,7 +1604,7 @@ packet_ver: 25
|
||||
//0x0841,19
|
||||
|
||||
//2010-07-14aRagexeRE
|
||||
//0x841,4
|
||||
//0x0841,4
|
||||
|
||||
//2010-08-03aRagexeRE
|
||||
0x0839,66
|
||||
@ -1613,7 +1613,7 @@ packet_ver: 25
|
||||
|
||||
//2010-11-24aRagexeRE
|
||||
packet_ver: 26
|
||||
0x0288,-1,cashshopbuy,2:4:6:10
|
||||
0x0288,-1,cashshopbuy,2:4:8:10
|
||||
0x0436,19,wanttoconnection,2:6:10:14:18
|
||||
0x035f,5,walktoxy,2
|
||||
0x0360,6,ticksend,2
|
||||
@ -1648,7 +1648,7 @@ packet_ver: 27
|
||||
0x0439,8,useitem,2:4
|
||||
0x08d2,10
|
||||
0x08d1,7
|
||||
0x846,4,cashshopreqtab,2 //2011-07-18
|
||||
0x0846,4,cashshopreqtab,2 //2011-07-18
|
||||
|
||||
// 2011-11-02aRagexe
|
||||
packet_ver: 28
|
||||
@ -1660,7 +1660,7 @@ packet_ver: 28
|
||||
0x08aa,7,actionrequest,2:6
|
||||
0x02c4,10,useskilltoid,2:4:6
|
||||
0x0811,-1,itemlistwindowselected,2:4:8:12
|
||||
0x890,8
|
||||
0x0890,8
|
||||
0x08a5,18,bookingregreq,2:4:6
|
||||
0x0835,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x089b,2,reqclosebuyingstore,0
|
||||
@ -1669,6 +1669,7 @@ packet_ver: 28
|
||||
0x08ab,-1,searchstoreinfo,2:4:5:9:13:14:15
|
||||
0x088b,2,searchstoreinfonextpage,0
|
||||
0x08a2,12,searchstoreinfolistitemclick,2:6:10
|
||||
0x08cf,10 //Amulet spirits
|
||||
|
||||
//2012-03-07fRagexeRE
|
||||
packet_ver:29
|
||||
@ -1691,7 +1692,7 @@ packet_ver:29
|
||||
0x0885,7,actionrequest,2:6
|
||||
0x0889,10,useskilltoid,2:4:6
|
||||
0x0870,-1,itemlistwindowselected,2:4:8:12
|
||||
//0x0926,18,bookingregreq,2:4:6
|
||||
//0x0926,41,bookingregreq,2:4:6
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0360,6,reqclickbuyingstore,2
|
||||
@ -1700,7 +1701,7 @@ packet_ver:29
|
||||
0x0835,2,searchstoreinfonextpage,0
|
||||
0x0838,12,searchstoreinfolistitemclick,2:6:10
|
||||
0x0439,8,useitem,2:4
|
||||
0x0365,18,bookingregreq,2:4:6
|
||||
0x0365,41,bookingregreq,2:4:6
|
||||
|
||||
//2012-04-10aRagexeRE
|
||||
packet_ver: 30
|
||||
@ -1757,15 +1758,14 @@ packet_ver: 30
|
||||
0x08fb,6,bookingcanceljoinparty,2
|
||||
0x0907,5,moveitem,2:4
|
||||
0x0908,5
|
||||
0x08d7,28,battlegroundreg,2:4 //Added to prevent disconnections
|
||||
0x08cf,10 //Amulet spirits
|
||||
0x08d7,28,battlegroundreg,2:4
|
||||
0x0977,14 //Monster HP Bar
|
||||
0x0916,26,guildinvite2,2
|
||||
0x091d,18,bookingregreq,2:4:6
|
||||
0x091d,41,bookingregreq,2:4:6
|
||||
0x08cb,10,ZC_PERSONAL_INFOMATION,2:4:6:8:10:11:13:15 //Still need further information
|
||||
|
||||
//2012-04-18aRagexeRE [Special Thanks to Judas!]
|
||||
packet_ver:31
|
||||
packet_ver: 31
|
||||
0x023B,26,friendslistadd,2
|
||||
0x0361,5,hommenu,2:4
|
||||
0x08A8,36,storagepassword,2:4:20
|
||||
@ -1786,7 +1786,7 @@ packet_ver:31
|
||||
//2012-06-18
|
||||
packet_ver: 32
|
||||
0x0983,29
|
||||
0x0861,18,bookingregreq,2:4:6 //actually 12-05-03
|
||||
0x0861,41,bookingregreq,2:4:6 //actually 12-05-03
|
||||
|
||||
//2012-07-02aRagexeRE (unstable)
|
||||
packet_ver: 33
|
||||
@ -1804,7 +1804,7 @@ packet_ver: 33
|
||||
0x094a,6,getcharnamerequest,2
|
||||
0x0953,5,walktoxy,2
|
||||
0x0960,5,changedir,2:4
|
||||
0x0879,18,bookingregreq,2:4:6
|
||||
0x0879,41,bookingregreq,2:4:6
|
||||
|
||||
//2013-03-20Ragexe (Judas)
|
||||
packet_ver: 34
|
||||
@ -1872,7 +1872,7 @@ packet_ver: 34
|
||||
0x099a,9 // take_off_equipv5
|
||||
0x099b,8 //maptypeproperty2
|
||||
|
||||
//2013-05-15a Ragexe (Yommy)
|
||||
//2013-05-15aRagexe (Yommy)
|
||||
packet_ver: 35
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
@ -1904,7 +1904,7 @@ packet_ver: 35
|
||||
0x0931,5,hommenu,2:4
|
||||
0x093e,36,storagepassword,2:4:20
|
||||
|
||||
//2013-05-22 Ragexe (Yommy)
|
||||
//2013-05-22Ragexe (Yommy)
|
||||
packet_ver: 36
|
||||
0x08A2,7,actionrequest,2:6
|
||||
0x095C,10,useskilltoid,2:4:6
|
||||
@ -1936,7 +1936,7 @@ packet_ver: 36
|
||||
0x0926,5,hommenu,2:4
|
||||
0x088e,36,storagepassword,2:4:20
|
||||
|
||||
//2013-05-29 Ragexe (Shakto)
|
||||
//2013-05-29Ragexe (Shakto)
|
||||
packet_ver: 37
|
||||
0x0890,7,actionrequest,2:6
|
||||
0x0438,10,useskilltoid,2:4:6
|
||||
@ -1958,17 +1958,17 @@ packet_ver: 37
|
||||
0x0892,6,reqclickbuyingstore,2
|
||||
0x0964,2,reqclosebuyingstore,0
|
||||
0x0869,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0874,41,bookingregreq,2,4:6
|
||||
// 0x088E,8); // CZ_JOIN_BATTLE_FIELD
|
||||
0x0874,18,bookingregreq,2,4:6
|
||||
//0x088E,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0958,-1,itemlistwindowselected,2:4:8:12
|
||||
0x0919,19,wanttoconnection,2:6:10:14:18
|
||||
0x08A8,26,partyinvite2,2
|
||||
// 0x0888,4); // CZ_GANGSI_RANK
|
||||
//0x0888,4 // CZ_GANGSI_RANK
|
||||
0x0877,26,friendslistadd,2
|
||||
0x023B,5,hommenu,2:4
|
||||
0x0956,36,storagepassword,2:4:20
|
||||
|
||||
//2013-06-05 Ragexe (Shakto)
|
||||
//2013-06-05Ragexe (Shakto)
|
||||
packet_ver: 38
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
@ -1990,17 +1990,18 @@ packet_ver: 38
|
||||
0x0360,6,reqclickbuyingstore,2
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0365,41,bookingregreq,2:4:6
|
||||
// 0x0363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0365,18,bookingregreq,2:4:6
|
||||
//0x0363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0281,-1,itemlistwindowselected,2:4:8:12
|
||||
0x022D,19,wanttoconnection,2:6:10:14:18
|
||||
0x0802,26,partyinvite2,2
|
||||
// 0x0436,4 // CZ_GANGSI_RANK
|
||||
//0x0436,4 // CZ_GANGSI_RANK
|
||||
0x023B,26,friendslistadd,2
|
||||
0x0361,5,hommenu,2,4
|
||||
0x0883,36,storagepassword,2:4:20
|
||||
0x097C,4,ranklist,2
|
||||
|
||||
//2013-06-12 Ragexe (Shakto)
|
||||
//2013-06-12Ragexe (Shakto)
|
||||
packet_ver: 39
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
@ -2023,16 +2024,16 @@ packet_ver: 39
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0365,18,bookingregreq,2:4:6
|
||||
// 0x0363,8 CZ_JOIN_BATTLE_FIELD
|
||||
//0x0363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0281,-1,itemlistwindowselected,2:4:8:12
|
||||
0x0919,19,wanttoconnection,2:6:10:14:18
|
||||
0x0802,26,partyinvite2,2
|
||||
// 0x0436,4 CZ_GANGSI_RANK
|
||||
//0x0436,4 // CZ_GANGSI_RANK
|
||||
0x0940,26,friendslistadd,2
|
||||
0x093A,5,hommenu,2:4
|
||||
0x0964,36,storagepassword,2:4:20
|
||||
|
||||
//2013-06-18 Ragexe (Shakto)
|
||||
//2013-06-18Ragexe (Shakto)
|
||||
packet_ver: 40
|
||||
0x0889,7,actionrequest,2:6
|
||||
0x0951,10,useskilltoid,2:4:6
|
||||
@ -2055,16 +2056,16 @@ packet_ver: 40
|
||||
0x085A,2,reqclosebuyingstore,0
|
||||
0x0932,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x08A7,18,bookingregreq,2:4:6
|
||||
// 0x087A,8 CZ_JOIN_BATTLE_FIELD
|
||||
//0x087A,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0942,-1,itemlistwindowselected,2:4:8:12
|
||||
0x095B,19,wanttoconnection,2:6:10:14:18
|
||||
0x0887,26,partyinvite2,2
|
||||
// 0x0878,4 CZ_GANGSI_RANK
|
||||
//0x0878,4 // CZ_GANGSI_RANK
|
||||
0x0953,26,friendslistadd,2
|
||||
0x02C4,5,hommenu,2:4
|
||||
0x0864,36,storagepassword,2:4:20
|
||||
|
||||
//2013-06-26 Ragexe
|
||||
//2013-06-26Ragexe
|
||||
packet_ver: 41
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
@ -2087,16 +2088,16 @@ packet_ver: 41
|
||||
0x0365,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0894,18,bookingregreq,2:4:6
|
||||
// 0x0860,8 CZ_JOIN_BATTLE_FIELD
|
||||
//0x0860,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x08A5,-1,itemlistwindowselected,2:4:8:12
|
||||
0x088C,19,wanttoconnection,2:6:10:14:18
|
||||
0x0895,26,partyinvite2,2
|
||||
// 0x088F,4 CZ_GANGSI_RANK
|
||||
//0x088F,4 // CZ_GANGSI_RANK
|
||||
0x08AB,26,friendslistadd,2
|
||||
0x0960,5,hommenu,2:4
|
||||
0x0930,36,storagepassword,2:4:20
|
||||
|
||||
//2013-07-03 Ragexe
|
||||
//2013-07-03Ragexe
|
||||
packet_ver: 42
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
@ -2119,17 +2120,16 @@ packet_ver: 42
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0365,18,bookingregreq,2:4:6
|
||||
// 0x0363,8 CZ_JOIN_BATTLE_FIELD
|
||||
//0x0363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0281,-1,itemlistwindowselected,2:4:8:12
|
||||
0x022D,19,wanttoconnection,2:6:10:14:18
|
||||
0x0802,26,partyinvite2,2
|
||||
// 0x0436,4 CZ_GANGSI_RANK
|
||||
//0x0436,4 // CZ_GANGSI_RANK
|
||||
0x0360,26,friendslistadd,2
|
||||
0x094A,5,hommenu,2:4
|
||||
0x0873,36,storagepassword,2:4:20
|
||||
0x097C,4,ranklist,2
|
||||
|
||||
//2013-07-10 Ragexe
|
||||
//2013-07-10Ragexe
|
||||
packet_ver: 43
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
@ -2152,18 +2152,18 @@ packet_ver: 43
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0365,18,bookingregreq,2:4:6
|
||||
// 0x0363,8 CZ_JOIN_BATTLE_FIELD
|
||||
//0x0363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0281,-1,itemlistwindowselected,2:4:8:12
|
||||
0x022D,19,wanttoconnection,2:6:10:14:18
|
||||
0x0802,26,partyinvite2,2
|
||||
// 0x0436,4 CZ_GANGSI_RANK
|
||||
//0x0436,4 // CZ_GANGSI_RANK
|
||||
0x023B,26,friendslistadd,2
|
||||
0x0361,5,hommenu,2:4
|
||||
0x0880,36,storagepassword,2:4:20
|
||||
0x0848,-1,cashshopbuy,2:6:4:10
|
||||
0x97D,288 //ZC_ACK_RANKING
|
||||
0x097D,288 //ZC_ACK_RANKING
|
||||
|
||||
//2013-07-17 Ragexe
|
||||
//2013-07-17Ragexe
|
||||
packet_ver: 44
|
||||
0x0918,7,actionrequest,2:6
|
||||
0x091E,10,useskilltoid,2:4:6
|
||||
@ -2186,11 +2186,11 @@ packet_ver: 44
|
||||
0x096A,2,reqclosebuyingstore,0
|
||||
0x08AA,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0862,18,bookingregreq,2:4:6
|
||||
// 0x08A6,8 CZ_JOIN_BATTLE_FIELD
|
||||
//0x08A6,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0897,-1,itemlistwindowselected,2:4:8:12
|
||||
0x091D,19,wanttoconnection,2:6:10:14:18
|
||||
0x092F,26,partyinvite2,2
|
||||
// 0x086C,4 CZ_GANGSI_RANK
|
||||
//0x086C,4 // CZ_GANGSI_RANK
|
||||
0x0863,26,friendslistadd,2
|
||||
0x088A,5,hommenu,2:4
|
||||
0x095B,36,storagepassword,2:4:20
|
||||
@ -2205,7 +2205,7 @@ packet_ver: 44
|
||||
0x09B8,6,bankclose,2
|
||||
0x09B9,4,ZC_ACK_CLOSE_BANKING,2
|
||||
|
||||
//2013-08-07Ragexe (Shakto)
|
||||
//2013-08-07Ragexe
|
||||
packet_ver: 45
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
@ -2228,11 +2228,53 @@ packet_ver: 45
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0365,18,bookingregreq,2:4:6
|
||||
// 0x363,8 CZ_JOIN_BATTLE_FIELD
|
||||
//0x363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0281,-1,itemlistwindowselected,2:4:8:12
|
||||
0x022D,19,wanttoconnection,2:6:10:14:18
|
||||
0x0802,26,partyinvite2,2
|
||||
// 0x436,4 CZ_GANGSI_RANK
|
||||
//0x436,4 // CZ_GANGSI_RANK
|
||||
0x023B,26,friendslistadd,2
|
||||
0x0361,5,hommenu,2:4
|
||||
0x0887,36,storagepassword,2:4:20
|
||||
|
||||
//2013-12-23Ragexe
|
||||
packet_ver: 46
|
||||
0x0369,7,actionrequest,2:6
|
||||
0x083C,10,useskilltoid,2:4:6
|
||||
0x0437,5,walktoxy,2
|
||||
0x035F,6,ticksend,2
|
||||
0x0202,5,changedir,2:4
|
||||
0x07E4,6,takeitem,2
|
||||
0x0362,6,dropitem,2:4
|
||||
0x07EC,8,movetokafra,2:4
|
||||
0x0364,8,movefromkafra,2:4
|
||||
0x0438,10,useskilltopos,2:4:6:8
|
||||
0x0366,90,useskilltoposinfo,2:4:6:8:10
|
||||
0x096A,6,getcharnamerequest,2
|
||||
0x0368,6,solvecharname,2
|
||||
0x0838,12,searchstoreinfolistitemclick,2:6:10
|
||||
0x0835,2,searchstoreinfonextpage,0
|
||||
0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15
|
||||
0x0811,-1,reqtradebuyingstore,2:4:8:12
|
||||
0x0360,6,reqclickbuyingstore,2
|
||||
0x0817,2,reqclosebuyingstore,0
|
||||
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
|
||||
0x0365,18,bookingregreq,2:4:6
|
||||
//0x363,8 // CZ_JOIN_BATTLE_FIELD
|
||||
0x0281,-1,itemlistwindowselected,2:4:8:12
|
||||
0x022D,19,wanttoconnection,2:6:10:14:18
|
||||
0x0802,26,partyinvite2,2
|
||||
//0x436,4 // CZ_GANGSI_RANK
|
||||
0x023B,26,friendslistadd,2
|
||||
0x0361,5,hommenu,2:4
|
||||
0x08A4,36,storagepassword,2:4:20
|
||||
//New Packets
|
||||
0x09D4,2,dull,0 //npcshopclosed
|
||||
0x09CE,102,itemmonster,2
|
||||
//NPC Market
|
||||
0x09D8,2,dull,0 //npcmarketclosed
|
||||
0x09D6,-1,dull,0 //npcmarketpurchase
|
||||
0x09DF,7
|
||||
|
||||
//Add new packets here
|
||||
//packet_ver: 47
|
||||
|
@ -201,6 +201,12 @@ enum e_skill_flag
|
||||
//...
|
||||
};
|
||||
|
||||
enum e_mmo_charstatus_opt {
|
||||
OPT_NONE = 0x0,
|
||||
OPT_SHOW_EQUIP = 0x1,
|
||||
OPT_ALLOW_PARTY = 0x2,
|
||||
};
|
||||
|
||||
struct s_skill {
|
||||
unsigned short id;
|
||||
unsigned char lv;
|
||||
@ -374,7 +380,7 @@ struct mmo_charstatus {
|
||||
#ifdef HOTKEY_SAVING
|
||||
struct hotkey hotkeys[MAX_HOTKEYS];
|
||||
#endif
|
||||
bool show_equip;
|
||||
bool show_equip,allow_party;
|
||||
short rename;
|
||||
|
||||
time_t delete_date;
|
||||
|
@ -259,7 +259,7 @@ uint32 MakeDWord(uint16 word0, uint16 word1)
|
||||
( (uint32)(word1 << 0x10) );
|
||||
}
|
||||
|
||||
uint32 date2version(int date){
|
||||
uint32 date2version(int date) {
|
||||
if(date < 20040906) return 5;
|
||||
else if(date < 20040920) return 10;
|
||||
else if(date < 20041005) return 11;
|
||||
@ -298,7 +298,8 @@ uint32 date2version(int date){
|
||||
else if(date < 20130710) return 42;
|
||||
else if(date < 20130717) return 43;
|
||||
else if(date < 20130807) return 44;
|
||||
else if(date >= 20130807) return 45;
|
||||
else if(date < 20131223) return 45;
|
||||
else if(date >= 20131223) return 46;
|
||||
|
||||
else return 30; //default
|
||||
}
|
||||
|
140
src/map/clif.c
140
src/map/clif.c
@ -5898,12 +5898,25 @@ void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len)
|
||||
/// 1 = target character is not loged in
|
||||
/// 2 = ignored by target
|
||||
/// 3 = everyone ignored by target
|
||||
void clif_wis_end(int fd, int flag)
|
||||
void clif_wis_end(int fd, int result)
|
||||
{
|
||||
struct map_session_data *sd = (session_isValid(fd) ? session[fd]->session_data : NULL);
|
||||
|
||||
if (!sd)
|
||||
return;
|
||||
|
||||
#if PACKETVER >= 20131223
|
||||
WFIFOHEAD(fd,packet_len(0x9df));
|
||||
WFIFOW(fd,0) = 0x9df;
|
||||
WFIFOB(fd,2) = (char)result;
|
||||
WFIFOL(fd,3) = 0;
|
||||
WFIFOSET(fd,packet_len(0x9df));
|
||||
#else
|
||||
WFIFOHEAD(fd,packet_len(0x98));
|
||||
WFIFOW(fd,0) = 0x98;
|
||||
WFIFOW(fd,2) = flag;
|
||||
WFIFOB(fd,2) = (char)result;
|
||||
WFIFOSET(fd,packet_len(0x98));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -13081,30 +13094,64 @@ void clif_parse_GMRecall2(int fd, struct map_session_data* sd)
|
||||
|
||||
|
||||
/// /item /monster (CZ_ITEM_CREATE).
|
||||
/// Request to make items or spawn monsters.
|
||||
/// Request to execute GM commands.
|
||||
/// Usage:
|
||||
/// /item n - summon n monster or acquire n item/s
|
||||
/// /item money - grants 2147483647 zenies
|
||||
/// /item whereisboss - locate boss mob in current map.(not yet implemented)
|
||||
/// /item regenboss_n t - regenerate n boss monster by t millisecond.(not yet implemented)
|
||||
/// /item onekillmonster - toggle an ability to kill mobs in one hit.(not yet implemented)
|
||||
/// /item bossinfo - display the information of a boss monster in current map.(not yet implemented)
|
||||
/// /item cap_n - capture n monster as pet.(not yet implemented)
|
||||
/// /item agitinvest - reset current global agit investments.(not yet implemented)
|
||||
/// 013f <item/mob name>.24B
|
||||
void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd)
|
||||
/// 09ce <item/mob name>.100B [Ind/Yommy]
|
||||
void clif_parse_GM_Item_Monster(int fd, struct map_session_data *sd)
|
||||
{
|
||||
char *monster_item_name;
|
||||
char command[NAME_LENGTH+10];
|
||||
int i, count;
|
||||
char *item_monster_name;
|
||||
struct item_data *item_array[10];
|
||||
struct mob_db *mob_array[10];
|
||||
char command[256];
|
||||
#if PACKETVER >= 20131218
|
||||
char str[100];
|
||||
#else
|
||||
char str[24];
|
||||
#endif
|
||||
|
||||
monster_item_name = (char*)RFIFOP(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]);
|
||||
monster_item_name[NAME_LENGTH-1] = '\0';
|
||||
item_monster_name = str;
|
||||
item_monster_name[(sizeof(str) - 2) - 1] = '\0';
|
||||
|
||||
// FIXME: Should look for item first, then for monster.
|
||||
// FIXME: /monster takes mob_db Sprite_Name as argument
|
||||
if( mobdb_searchname(monster_item_name) ) {
|
||||
safesnprintf(command, sizeof(command)-1, "%cmonster %s", atcommand_symbol, monster_item_name);
|
||||
if( (count = itemdb_searchname_array(item_array, 10, item_monster_name)) > 0 ) {
|
||||
for( i = 0; i < count; i++ )
|
||||
if( !item_array[i] )
|
||||
continue;
|
||||
|
||||
if( i < count ) {
|
||||
if( item_array[i]->type == IT_WEAPON || item_array[i]->type == IT_ARMOR ) //Nonstackable
|
||||
safesnprintf(command, sizeof(command) - 1, "%citem2 %d 1 0 0 0 0 0 0 0", atcommand_symbol, item_array[i]->nameid);
|
||||
else
|
||||
safesnprintf(command, sizeof(command) - 1, "%citem %d 20", atcommand_symbol, item_array[i]->nameid);
|
||||
is_atcommand(fd, sd, command, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if( strcmp(item_monster_name, "money") == 0 ) {
|
||||
safesnprintf(command, sizeof(command) - 1, "%czeny %d", atcommand_symbol, INT_MAX);
|
||||
is_atcommand(fd, sd, command, 1);
|
||||
return;
|
||||
}
|
||||
// FIXME: Stackables have a quantity of 20.
|
||||
// FIXME: Equips are supposed to be unidentified.
|
||||
|
||||
if( itemdb_searchname(monster_item_name) ) {
|
||||
safesnprintf(command, sizeof(command)-1, "%citem %s", atcommand_symbol, monster_item_name);
|
||||
is_atcommand(fd, sd, command, 1);
|
||||
return;
|
||||
if( (count = mobdb_searchname_array(mob_array, 10, item_monster_name)) > 0 ) {
|
||||
for( i = 0; i < count; i++ )
|
||||
if( !mob_array[i] )
|
||||
continue;
|
||||
|
||||
if( i < count ) {
|
||||
safesnprintf(command, sizeof(command) - 1, "%cmonster %s", atcommand_symbol, mob_array[i]->sprite);
|
||||
is_atcommand(fd, sd, command, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -15033,7 +15080,7 @@ void clif_cashshop_result( struct map_session_data *sd, uint16 item_id, uint16 r
|
||||
/// 0288 <name id>.W <amount>.W <kafra points>.L (PACKETVER >= 20070711)
|
||||
/// 0288 <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W }.4B*count (PACKETVER >= 20100803)
|
||||
/// 0848 <packet len>.W <count>.W <packet len>.W <kafra points>.L <count>.W { <amount>.W <name id>.W <tab>.W }.6B*count (PACKETVER >= 20130000)
|
||||
void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){
|
||||
void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) {
|
||||
struct s_packet_db* info;
|
||||
int cmd = RFIFOW(fd,0);
|
||||
|
||||
@ -15044,8 +15091,7 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){
|
||||
if( sd->state.trading || !sd->npc_shopid ) {
|
||||
clif_cashshop_ack(sd,1);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
#if PACKETVER < 20101116
|
||||
short nameid = RFIFOW(fd,info->pos[0]);
|
||||
short amount = RFIFOW(fd,info->pos[1]);
|
||||
@ -15059,11 +15105,11 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd){
|
||||
int count = RFIFOW(fd,info->pos[2]);
|
||||
unsigned short* item_list = (unsigned short*)RFIFOP(fd,info->pos[3]);
|
||||
|
||||
if( len < 10 || len != 10 + count * s_itl){
|
||||
if( len < 10 || len != 10 + count * s_itl) {
|
||||
ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, len, 10 + count * s_itl);
|
||||
return;
|
||||
}
|
||||
if(cmd==0x848){
|
||||
if(cmd == 0x848) {
|
||||
if (cashshop_buylist( sd, points, count, item_list))
|
||||
clif_cashshop_ack(sd,0);
|
||||
return;
|
||||
@ -15228,6 +15274,16 @@ void clif_parse_EquipTick(int fd, struct map_session_data* sd)
|
||||
clif_equiptickack(sd, flag);
|
||||
}
|
||||
|
||||
/// Request to change party invitation tick.
|
||||
/// value:
|
||||
/// 0 = disabled
|
||||
/// 1 = enabled
|
||||
void clif_parse_PartyTick(int fd, struct map_session_data* sd)
|
||||
{
|
||||
bool flag = RFIFOB(fd,6) ? true : false;
|
||||
sd->status.allow_party = flag;
|
||||
clif_partytickack(sd, flag);
|
||||
}
|
||||
|
||||
/// Questlog System [Kevin] [Inkfish]
|
||||
///
|
||||
@ -16922,6 +16978,18 @@ void clif_monster_hp_bar( struct mob_data* md, int fd ) {
|
||||
#endif
|
||||
}
|
||||
|
||||
/* [Ind] placeholder for unsupported incoming packets (avoids server disconnecting client) */
|
||||
void __attribute__ ((unused)) clif_parse_dull(int fd, struct map_session_data *sd) {
|
||||
return;
|
||||
}
|
||||
|
||||
void clif_partytickack(struct map_session_data* sd, bool flag) {
|
||||
WFIFOHEAD(sd->fd, packet_len(0x2c9));
|
||||
WFIFOW(sd->fd,0) = 0x2c9;
|
||||
WFIFOB(sd->fd,2) = flag;
|
||||
WFIFOSET(sd->fd, packet_len(0x2c9));
|
||||
}
|
||||
|
||||
/// Ack world info (ZC_ACK_BEFORE_WORLD_INFO)
|
||||
/// 0979 <world name>.24B <char name>.24B
|
||||
void clif_ackworldinfo(struct map_session_data* sd) {
|
||||
@ -16954,7 +17022,7 @@ void clif_parse_blocking_playcancel(int fd,struct map_session_data *sd){
|
||||
|
||||
/// req world info (CZ_CLIENT_VERSION)
|
||||
/// 044A <version>.L
|
||||
void clif_parse_client_version(int fd,struct map_session_data *sd){
|
||||
void clif_parse_client_version(int fd, struct map_session_data *sd) {
|
||||
//if(sd)
|
||||
;
|
||||
}
|
||||
@ -17001,9 +17069,9 @@ void clif_sub_ranklist(unsigned char *buf,int idx,struct map_session_data* sd, i
|
||||
}
|
||||
|
||||
/// 097d <RankingType>.W {<CharName>.24B <point>L}*10 <mypoint>L (ZC_ACK_RANKING)
|
||||
void clif_ranklist(struct map_session_data *sd, int16 rankingType){
|
||||
void clif_ranklist(struct map_session_data *sd, int16 rankingType) {
|
||||
unsigned char buf[MAX_FAME_LIST * sizeof(struct fame_list)];
|
||||
int mypoint=0;
|
||||
int mypoint = 0;
|
||||
|
||||
WBUFW(buf,0) = 0x97d;
|
||||
WBUFW(buf,2) = rankingType;
|
||||
@ -17027,14 +17095,14 @@ void clif_ranklist(struct map_session_data *sd, int16 rankingType){
|
||||
* 2: /taekwon
|
||||
* 3: /pk
|
||||
* */
|
||||
void clif_parse_ranklist(int fd,struct map_session_data *sd){
|
||||
void clif_parse_ranklist(int fd,struct map_session_data *sd) {
|
||||
struct s_packet_db* info = &packet_db[sd->packet_ver][RFIFOW(fd,0)];
|
||||
int16 rankingtype = RFIFOW(fd,info->pos[0]); //type
|
||||
if(rankingtype != 3) clif_ranklist(sd,rankingtype); // pk_list unsuported atm
|
||||
}
|
||||
|
||||
// 097e <RankingType>.W <point>.L <TotalPoint>.L (ZC_UPDATE_RANKING_POINT)
|
||||
void clif_update_rankingpoint(struct map_session_data *sd, int rankingtype, int point){
|
||||
void clif_update_rankingpoint(struct map_session_data *sd, int rankingtype, int point) {
|
||||
#if PACKETVER < 20130710
|
||||
switch(rankingtype){
|
||||
case 0: clif_fame_blacksmith(sd,point); break; // Blacksmith
|
||||
@ -17644,7 +17712,7 @@ void packetdb_readdb(void)
|
||||
#if PACKETVER < 20130000
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
#else
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 19, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 19, 0, 0, 0, 0,
|
||||
#endif
|
||||
0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@ -17674,7 +17742,11 @@ void packetdb_readdb(void)
|
||||
31, 0, 0, 0, 0, 0, 0, -1, 8, 11, 9, 8, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 12, 10, 14, 10, 14, 6, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 6, 4, 6, 4, 0, 0, 0, 0, 0, 0,
|
||||
|
||||
//#0x09C0
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102, 0,
|
||||
0, 0, 0, 0, 2, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 7,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
struct {
|
||||
void (*func)(int, struct map_session_data *);
|
||||
@ -17797,7 +17869,7 @@ void packetdb_readdb(void)
|
||||
{clif_parse_GMKickAll,"killall"},
|
||||
{clif_parse_GMRecall,"recall"},
|
||||
{clif_parse_GMRecall,"summon"},
|
||||
{clif_parse_GM_Monster_Item,"itemmonster"},
|
||||
{clif_parse_GM_Item_Monster,"itemmonster"},
|
||||
{clif_parse_GMShift,"remove"},
|
||||
{clif_parse_GMShift,"shift"},
|
||||
{clif_parse_GMChangeMapType,"changemaptype"},
|
||||
@ -17890,6 +17962,8 @@ void packetdb_readdb(void)
|
||||
{ clif_parse_CashShopReqTab, "cashshopreqtab"},
|
||||
/* */
|
||||
{ clif_parse_MoveItem , "moveitem" },
|
||||
{ clif_parse_PartyTick, "partytick" },
|
||||
{ clif_parse_dull, "dull" },
|
||||
{ clif_parse_GuildInvite2 , "guildinvite2" },
|
||||
{ clif_parse_reqworldinfo, "reqworldinfo"},
|
||||
{ clif_parse_client_version, "clientversion"},
|
||||
@ -17917,7 +17991,7 @@ void packetdb_readdb(void)
|
||||
memset(packet_db,0,sizeof(packet_db));
|
||||
for( i = 0; i < ARRAYLENGTH(packet_len_table); ++i )
|
||||
packet_len(i) = packet_len_table[i];
|
||||
|
||||
|
||||
clif_config.packet_db_ver = MAX_PACKET_VER;
|
||||
for(f = 0; f<ARRAYLENGTH(filename); f++){
|
||||
entries = 0;
|
||||
@ -17939,7 +18013,7 @@ void packetdb_readdb(void)
|
||||
{
|
||||
if(strcmpi(w1,"packet_ver")==0) {
|
||||
int prev_ver = packet_ver;
|
||||
skip_ver = 0;
|
||||
skip_ver = false;
|
||||
packet_ver = atoi(w2);
|
||||
if ( packet_ver > MAX_PACKET_VER )
|
||||
{ //Check to avoid overflowing. [Skotlex]
|
||||
|
@ -6,8 +6,8 @@
|
||||
|
||||
#include "../common/cbasetypes.h"
|
||||
#include "../common/db.h" //dbmap
|
||||
|
||||
//#include "../common/mmo.h"
|
||||
|
||||
struct Channel;
|
||||
struct item;
|
||||
struct storage_data;
|
||||
@ -32,10 +32,9 @@ struct quest;
|
||||
struct party_booking_ad_info;
|
||||
#include <stdarg.h>
|
||||
|
||||
enum
|
||||
{// packet DB
|
||||
enum { // packet DB
|
||||
MAX_PACKET_DB = 0xf00,
|
||||
MAX_PACKET_VER = 45,
|
||||
MAX_PACKET_VER = 46,
|
||||
MAX_PACKET_POS = 20,
|
||||
};
|
||||
|
||||
@ -523,7 +522,7 @@ void clif_status_change(struct block_list *bl, int type, int flag, int tick, int
|
||||
void clif_status_change2(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3);
|
||||
|
||||
void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len);
|
||||
void clif_wis_end(int fd, int flag);
|
||||
void clif_wis_end(int fd, int result);
|
||||
|
||||
void clif_solved_charname(int fd, int charid, const char* name);
|
||||
void clif_charnameack(int fd, struct block_list *bl);
|
||||
@ -693,6 +692,7 @@ int clif_hom_food(struct map_session_data *sd,int foodid,int fail); //[orn]
|
||||
void clif_send_homdata(struct map_session_data *sd, int state, int param); //[orn]
|
||||
|
||||
void clif_equiptickack(struct map_session_data* sd, int flag);
|
||||
void clif_partytickack(struct map_session_data* sd, bool flag);
|
||||
void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* tsd);
|
||||
void clif_equipcheckbox(struct map_session_data* sd);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user