Added support for nemo's cashshop preview (#5896)

Fixes #5744

Credits to @4144
Thanks to @RagnaWay
This commit is contained in:
Lemongrass3110 2021-04-26 14:43:45 +02:00 committed by GitHub
parent 2c0283d0e0
commit e5f4e4058a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 116 additions and 0 deletions

View File

@ -81,6 +81,9 @@
// Do NOT create any issues or ask for help with these compilers.
//#define DEPRECATED_COMPILER_SUPPORT
/// Uncomment for use with Nemo patch ExtendCashShopPreview
//#define ENABLE_CASHSHOP_PREVIEW_PATCH
/**
* No settings past this point
**/

View File

@ -16807,6 +16807,17 @@ void clif_cashshop_list( struct map_session_data* sd ){
for( int i = 0; i < cash_shop_items[tab].count; i++ ){
p->items[i].itemId = client_nameid( cash_shop_items[tab].item[i]->nameid );
p->items[i].price = cash_shop_items[tab].item[i]->price;
#ifdef ENABLE_CASHSHOP_PREVIEW_PATCH
struct item_data* id = itemdb_search( cash_shop_items[tab].item[i]->nameid );
if( id == nullptr ){
p->items[i].location = 0;
p->items[i].viewSprite = 0;
}else{
p->items[i].location = pc_equippoint_sub( sd, id );
p->items[i].viewSprite = id->look;
}
#endif
}
WFIFOSET( fd, len );

View File

@ -2527,6 +2527,10 @@ struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub {
uint16 itemId;
#endif
uint32 price;
#ifdef ENABLE_CASHSHOP_PREVIEW_PATCH
uint16 viewSprite;
uint32 location;
#endif // ENABLE_CASHSHOP_PREVIEW_PATCH
} __attribute__((packed));
struct PACKET_ZC_ACK_SCHEDULER_CASHITEM {
@ -4028,6 +4032,104 @@ struct PACKET_ZC_PERSONAL_INFOMATION {
DEFINE_PACKET_HEADER(ZC_PERSONAL_INFOMATION, 0x097b);
#endif // PACKETVER_MAIN_NUM >= 20120503 || PACKETVER_RE_NUM >= 20120502 || defined(PACKETVER_ZERO)
struct PACKET_CZ_REQUEST_ACTNPC {
int16 packetType;
uint32 GID;
uint32 targetGID;
int8 action;
} __attribute__((packed));
#if PACKETVER < 3
struct PACKET_ZC_NOTIFY_SKILL {
int16 PacketType;
uint16 SKID;
uint32 AID;
uint32 targetID;
uint32 startTime;
int32 attackMT;
int32 attackedMT;
int16 damage;
int16 level;
int16 count;
int8 action;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_SKILL, 0x0114);
#else
struct PACKET_ZC_NOTIFY_SKILL {
int16 PacketType;
uint16 SKID;
uint32 AID;
uint32 targetID;
uint32 startTime;
int32 attackMT;
int32 attackedMT;
int32 damage;
int16 level;
int16 count;
int8 action;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_SKILL, 0x01de);
#endif
#if PACKETVER_MAIN_NUM >= 20130731 || PACKETVER_RE_NUM >= 20130724 || defined(PACKETVER_ZERO)
struct PACKET_ZC_USE_SKILL {
int16 PacketType;
uint16 SKID;
int32 level;
uint32 targetAID;
uint32 srcAID;
int8 result;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_USE_SKILL, 0x09cb);
#else
struct PACKET_ZC_USE_SKILL {
int16 PacketType;
uint16 SKID;
int16 level;
uint32 targetAID;
uint32 srcAID;
int8 result;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_USE_SKILL, 0x011a);
#endif
struct PACKET_ZC_NOTIFY_GROUNDSKILL {
int16 PacketType;
uint16 SKID;
uint32 AID;
int16 level;
int16 xPos;
int16 yPos;
uint32 startTime;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_GROUNDSKILL, 0x0117);
#if PACKETVER_MAIN_NUM >= 20081112 || PACKETVER_RE_NUM >= 20081111 || defined(PACKETVER_ZERO)
struct PACKET_ZC_SKILL_POSTDELAY {
int16 PacketType;
uint16 SKID;
uint32 DelayTM;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_SKILL_POSTDELAY, 0x043d);
#endif
struct PACKET_ZC_NOTIFY_SKILL_POSITION {
int16 PacketType;
uint16 SKID;
uint32 AID;
uint32 targetID;
uint32 startTime;
int32 attackMT;
int32 attackedMT;
int16 xPos;
int16 yPos;
int16 damage;
int16 level;
int16 count;
int8 action;
};
DEFINE_PACKET_HEADER(ZC_NOTIFY_SKILL_POSITION, 0x0115);
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris