* Added support for cash shop packets without kafra points for clients 2007-07-10aSakexe and older (bugreport:4701, related r10888 and r11548).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14932 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
ai4rei 2011-08-11 02:56:17 +00:00
parent ac41a46e44
commit d162c70ef5
2 changed files with 33 additions and 8 deletions

View File

@ -1,6 +1,7 @@
Date Added Date Added
2011/08/10 2011/08/10
* Added support for cash shop packets without kafra points for clients 2007-07-10aSakexe and older (bugreport:4701, related r10888 and r11548). [Ai4rei]
* Added sending a dummy 0x08b9 packet (PIN auth system) in the char-server, required to support clients from this year. [Skotlex] * Added sending a dummy 0x08b9 packet (PIN auth system) in the char-server, required to support clients from this year. [Skotlex]
* Updated unitwarp so that an id of "0" causes the script's rid to be warped. This allows OnTouchNPC scripts to warp the monster. [Skotlex] * Updated unitwarp so that an id of "0" causes the script's rid to be warped. This allows OnTouchNPC scripts to warp the monster. [Skotlex]
* Updated @warp/@jump commands so that when an invalid tile is specified, a nearby cell is chosen. * Updated @warp/@jump commands so that when an invalid tile is specified, a nearby cell is chosen.

View File

@ -13246,34 +13246,46 @@ void clif_parse_Auction_buysell(int fd, struct map_session_data* sd)
/*========================================== /*==========================================
* CASH/POINT SHOP * CASH/POINT SHOP
*==========================================*/ *==========================================*/
/// List of items offered in a cash shop (ZC_PC_CASH_POINT_ITEMLIST)
/// 0287 <packet len>.W <cash point>.L { <sell price>.L <discount price>.L <item type>.B <name id>.W }*
/// 0287 <packet len>.W <cash point>.L <kafra point>.L { <sell price>.L <discount price>.L <item type>.B <name id>.W }* (PACKETVER >= 20070711)
void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd)
{ {
int fd,i; int fd,i;
#if PACKETVER < 20070711
const int offset = 8;
#else
const int offset = 12;
#endif
nullpo_retv(sd); nullpo_retv(sd);
nullpo_retv(nd); nullpo_retv(nd);
fd = sd->fd; fd = sd->fd;
sd->npc_shopid = nd->bl.id; sd->npc_shopid = nd->bl.id;
WFIFOHEAD(fd, 200 * 11 + 12); WFIFOHEAD(fd,offset+nd->u.shop.count*11);
WFIFOW(fd,0) = 0x287; WFIFOW(fd,0) = 0x287;
WFIFOW(fd,2) = 12 + nd->u.shop.count*11; WFIFOW(fd,2) = offset+nd->u.shop.count*11;
WFIFOL(fd,4) = sd->cashPoints; // Cash Points WFIFOL(fd,4) = sd->cashPoints; // Cash Points
#if PACKETVER >= 20070711
WFIFOL(fd,8) = sd->kafraPoints; // Kafra Points WFIFOL(fd,8) = sd->kafraPoints; // Kafra Points
#endif
for( i = 0; i < nd->u.shop.count; i++ ) for( i = 0; i < nd->u.shop.count; i++ )
{ {
struct item_data* id = itemdb_search(nd->u.shop.shop_item[i].nameid); struct item_data* id = itemdb_search(nd->u.shop.shop_item[i].nameid);
WFIFOL(fd,12+i*11) = nd->u.shop.shop_item[i].value; WFIFOL(fd,offset+0+i*11) = nd->u.shop.shop_item[i].value;
WFIFOL(fd,16+i*11) = nd->u.shop.shop_item[i].value; // Discount Price? Maybe a Discount item WFIFOL(fd,offset+4+i*11) = nd->u.shop.shop_item[i].value; // Discount Price
WFIFOB(fd,20+i*11) = itemtype(id->type); WFIFOB(fd,offset+8+i*11) = itemtype(id->type);
WFIFOW(fd,21+i*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid; WFIFOW(fd,offset+9+i*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid;
} }
WFIFOSET(fd,WFIFOW(fd,2)); WFIFOSET(fd,WFIFOW(fd,2));
} }
/// Cashshop Buy Ack (ZC_PC_CASH_POINT_UPDATE) /// Cashshop Buy Ack (ZC_PC_CASH_POINT_UPDATE)
/// S 0289 <cash point>.L <kafra point>.L <error>.W /// S 0289 <cash point>.L <error>.W
/// S 0289 <cash point>.L <kafra point>.L <error>.W (PACKETVER >= 20070711)
/// ///
/// @param error /// @param error
/// 0: The deal has successfully completed. (ERROR_TYPE_NONE) /// 0: The deal has successfully completed. (ERROR_TYPE_NONE)
@ -13292,11 +13304,19 @@ void clif_cashshop_ack(struct map_session_data* sd, int error)
WFIFOHEAD(fd, packet_len(0x289)); WFIFOHEAD(fd, packet_len(0x289));
WFIFOW(fd,0) = 0x289; WFIFOW(fd,0) = 0x289;
WFIFOL(fd,2) = sd->cashPoints; WFIFOL(fd,2) = sd->cashPoints;
#if PACKETVER < 20070711
WFIFOW(fd,6) = TOW(error);
#else
WFIFOL(fd,6) = sd->kafraPoints; WFIFOL(fd,6) = sd->kafraPoints;
WFIFOW(fd,10) = TOW(error); WFIFOW(fd,10) = TOW(error);
#endif
WFIFOSET(fd, packet_len(0x289)); WFIFOSET(fd, packet_len(0x289));
} }
/// Request to buy item(s) from cash shop (CZ_PC_BUY_CASH_POINT_ITEM).
/// 0288 <name id>.W <amount>.W
/// 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)
void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
{ {
int fail = 0, amount, points; int fail = 0, amount, points;
@ -14951,7 +14971,11 @@ static int packetdb_readdb(void)
6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
//#0x0280 //#0x0280
0, 0, 0, 6, 0, 0, 0, 0, 0, 12, 18, 0, 0, 0, 0, 0, #if PACKETVER < 20070711
0, 0, 0, 6, 0, 0, 0, -1, 6, 8, 18, 0, 0, 0, 0, 0,
#else
0, 0, 0, 6, 0, 0, 0, -1, 10, 12, 18, 0, 0, 0, 0, 0, // 0x288, 0x289 increase by 4 (kafra points)
#endif
0, 4, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 70, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85, -1, -1,107, 6, -1, 7, 7, 22,191, 0, 0, 0, 0, 0, 0, 85, -1, -1,107, 6, -1, 7, 7, 22,191, 0, 0, 0, 0, 0, 0,