Cleaned up ZC_INVENTORY_TAB (#8217)
Co-authored-by: Atemo <Atemo@users.noreply.github.com>
This commit is contained in:
parent
4f82aff8fd
commit
8745391ad4
@ -86,6 +86,7 @@ unsigned long color_table[COLOR_MAX];
|
|||||||
#include "clif_obfuscation.hpp"
|
#include "clif_obfuscation.hpp"
|
||||||
static bool clif_session_isValid(map_session_data *sd);
|
static bool clif_session_isValid(map_session_data *sd);
|
||||||
static void clif_loadConfirm( map_session_data *sd );
|
static void clif_loadConfirm( map_session_data *sd );
|
||||||
|
static void clif_favorite_item( map_session_data& sd, uint16 index );
|
||||||
|
|
||||||
#if PACKETVER >= 20150513
|
#if PACKETVER >= 20150513
|
||||||
enum mail_type {
|
enum mail_type {
|
||||||
@ -3007,7 +3008,6 @@ static void clif_inventoryEnd( map_session_data *sd, e_inventory_type type ){
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void clif_favorite_item(map_session_data* sd, unsigned short index);
|
|
||||||
//Unified inventory function which sends all of the inventory (requires two packets, one for equipable items and one for stackable ones. [Skotlex]
|
//Unified inventory function which sends all of the inventory (requires two packets, one for equipable items and one for stackable ones. [Skotlex]
|
||||||
void clif_inventorylist( map_session_data *sd ){
|
void clif_inventorylist( map_session_data *sd ){
|
||||||
nullpo_retv( sd );
|
nullpo_retv( sd );
|
||||||
@ -3093,7 +3093,7 @@ void clif_inventorylist( map_session_data *sd ){
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( sd->inventory.u.items_inventory[i].favorite )
|
if ( sd->inventory.u.items_inventory[i].favorite )
|
||||||
clif_favorite_item(sd, i);
|
clif_favorite_item( *sd, i );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -19730,49 +19730,52 @@ void clif_spiritcharm(map_session_data *sd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Move Item from or to Personal Tab (CZ_WHATSOEVER) [FE]
|
/// Move Item from or to Personal Tab
|
||||||
/// 0907 <index>.W
|
/// 0907 <index>.W <type>.B (CZ_INVENTORY_TAB)
|
||||||
///
|
|
||||||
/// R 0908 <index>.w <type>.b
|
|
||||||
/// type:
|
/// type:
|
||||||
/// 0 = move item to personal tab
|
/// 0 = move item to personal tab
|
||||||
/// 1 = move item to normal tab
|
/// 1 = move item to normal tab
|
||||||
void clif_parse_MoveItem(int fd, map_session_data *sd) {
|
void clif_parse_MoveItem( int fd, map_session_data* sd ){
|
||||||
#if PACKETVER >= 20111122
|
// TODO: Check for correct packet version
|
||||||
struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
|
#if PACKETVER >= 20120410
|
||||||
int index = RFIFOW(fd,info->pos[0]) - 2;
|
|
||||||
int type = RFIFOB(fd, info->pos[1]);
|
|
||||||
|
|
||||||
/* can't move while dead. */
|
/* can't move while dead. */
|
||||||
if(pc_isdead(sd)) {
|
if(pc_isdead(sd)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index < 0 || index >= MAX_INVENTORY)
|
PACKET_CZ_INVENTORY_TAB* p = (PACKET_CZ_INVENTORY_TAB*)RFIFOP( fd, 0 );
|
||||||
return;
|
|
||||||
|
|
||||||
if ( sd->inventory.u.items_inventory[index].favorite && type == 1 )
|
uint16 index = server_index( p->index );
|
||||||
|
|
||||||
|
if( index >= MAX_INVENTORY ){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( sd->inventory.u.items_inventory[index].favorite && p->favorite == true )
|
||||||
sd->inventory.u.items_inventory[index].favorite = 0;
|
sd->inventory.u.items_inventory[index].favorite = 0;
|
||||||
else if( type == 0 )
|
else if( p->favorite == false )
|
||||||
sd->inventory.u.items_inventory[index].favorite = 1;
|
sd->inventory.u.items_inventory[index].favorite = 1;
|
||||||
else
|
else
|
||||||
return;/* nothing to do. */
|
return;/* nothing to do. */
|
||||||
|
|
||||||
clif_favorite_item(sd, index);
|
clif_favorite_item( *sd, index );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Items that are in favorite tab of inventory (ZC_ITEM_FAVORITE).
|
/// Items that are in favorite tab of inventory.
|
||||||
/// 0900 <index>.W <favorite>.B
|
/// 0908 <index>.W <favorite>.B (ZC_INVENTORY_TAB)
|
||||||
void clif_favorite_item(map_session_data* sd, unsigned short index) {
|
static void clif_favorite_item( map_session_data& sd, uint16 index ){
|
||||||
int fd = sd->fd;
|
// TODO: Check for correct packet version
|
||||||
|
#if PACKETVER >= 20111122
|
||||||
|
PACKET_ZC_INVENTORY_TAB p = {};
|
||||||
|
|
||||||
WFIFOHEAD(fd,packet_len(0x908));
|
p.packetType = HEADER_ZC_INVENTORY_TAB;
|
||||||
WFIFOW(fd,0) = 0x908;
|
p.index = client_index( index );
|
||||||
WFIFOW(fd,2) = index+2;
|
p.favorite = ( sd.inventory.u.items_inventory[index].favorite == true ) ? false : true;
|
||||||
WFIFOL(fd,4) = (sd->inventory.u.items_inventory[index].favorite == 1) ? 0 : 1;
|
|
||||||
WFIFOSET(fd,packet_len(0x908));
|
clif_send( &p, sizeof( p ), &sd.bl, SELF );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1896,8 +1896,7 @@
|
|||||||
packet(0x08f9,6);
|
packet(0x08f9,6);
|
||||||
packet(0x08fa,6);
|
packet(0x08fa,6);
|
||||||
parseable_packet(0x08fb,6,NULL,2);
|
parseable_packet(0x08fb,6,NULL,2);
|
||||||
parseable_packet(0x0907,5,clif_parse_MoveItem,2,4);
|
parseable_packet( HEADER_CZ_INVENTORY_TAB, sizeof( PACKET_CZ_INVENTORY_TAB ), clif_parse_MoveItem, 0 );
|
||||||
packet(0x0908,5);
|
|
||||||
parseable_packet(0x08D7,28,clif_parse_bg_queue_apply_request,2,4);
|
parseable_packet(0x08D7,28,clif_parse_bg_queue_apply_request,2,4);
|
||||||
packet(0x08D8,27);
|
packet(0x08D8,27);
|
||||||
packet(0x08D9,30);
|
packet(0x08D9,30);
|
||||||
@ -2005,8 +2004,6 @@
|
|||||||
parseable_packet(0x08c9,2,clif_parse_cashshop_list_request,0);
|
parseable_packet(0x08c9,2,clif_parse_cashshop_list_request,0);
|
||||||
packet(0x08cf,10); //Amulet spirits
|
packet(0x08cf,10); //Amulet spirits
|
||||||
packet(0x08d2,10);
|
packet(0x08d2,10);
|
||||||
parseable_packet(0x0907,5,clif_parse_MoveItem,2,4);
|
|
||||||
packet(0x0908,5);
|
|
||||||
parseable_packet(0x0922,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
|
parseable_packet(0x0922,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
|
||||||
//parseable_packet(0x092e,2,clif_parse_SearchStoreInfoNextPage,0);
|
//parseable_packet(0x092e,2,clif_parse_SearchStoreInfoNextPage,0);
|
||||||
parseable_packet(0x0933,6,clif_parse_TakeItem,2);
|
parseable_packet(0x0933,6,clif_parse_TakeItem,2);
|
||||||
|
@ -415,6 +415,18 @@ struct PACKET_ZC_BOSS_INFO{
|
|||||||
char name[51];
|
char name[51];
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
struct PACKET_CZ_INVENTORY_TAB{
|
||||||
|
int16 packetType;
|
||||||
|
int16 index;
|
||||||
|
bool favorite;
|
||||||
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
struct PACKET_ZC_INVENTORY_TAB{
|
||||||
|
int16 packetType;
|
||||||
|
int16 index;
|
||||||
|
bool favorite;
|
||||||
|
} __attribute__((packed));
|
||||||
|
|
||||||
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
|
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
|
||||||
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
|
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
|
||||||
#pragma pack( pop )
|
#pragma pack( pop )
|
||||||
@ -452,6 +464,8 @@ DEFINE_PACKET_HEADER(CZ_REQ_SE_CASH_TAB_CODE, 0x846)
|
|||||||
DEFINE_PACKET_HEADER(ZC_ACK_SE_CASH_ITEM_LIST2, 0x8c0)
|
DEFINE_PACKET_HEADER(ZC_ACK_SE_CASH_ITEM_LIST2, 0x8c0)
|
||||||
DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)
|
DEFINE_PACKET_HEADER(ZC_ACK_SCHEDULER_CASHITEM, 0x8ca)
|
||||||
DEFINE_PACKET_HEADER(ZC_CLEAR_DIALOG, 0x8d6)
|
DEFINE_PACKET_HEADER(ZC_CLEAR_DIALOG, 0x8d6)
|
||||||
|
DEFINE_PACKET_HEADER(CZ_INVENTORY_TAB, 0x907)
|
||||||
|
DEFINE_PACKET_HEADER(ZC_INVENTORY_TAB, 0x908)
|
||||||
DEFINE_PACKET_HEADER(ZC_ENTRY_QUEUE_INIT, 0x90e)
|
DEFINE_PACKET_HEADER(ZC_ENTRY_QUEUE_INIT, 0x90e)
|
||||||
DEFINE_PACKET_HEADER(CZ_REQ_MERGE_ITEM, 0x96e)
|
DEFINE_PACKET_HEADER(CZ_REQ_MERGE_ITEM, 0x96e)
|
||||||
DEFINE_PACKET_HEADER(ZC_BANKING_CHECK, 0x9a6)
|
DEFINE_PACKET_HEADER(ZC_BANKING_CHECK, 0x9a6)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user