From 2c1b05e983bc4b1ee565c375c71db8f5a8f19b9c Mon Sep 17 00:00:00 2001 From: ai4rei Date: Sat, 17 Sep 2011 12:44:33 +0000 Subject: * Rental items no longer expire in cart and storage. The packet does not support this and rentals cannot be put in on official either (since r14082, related r14083). - Corrected packet 0x299 (ZC_CASH_ITEM_DELETE) missing inventory index field (since r13370). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14958 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 4 +++- src/map/clif.c | 7 +++++-- src/map/clif.h | 2 +- src/map/pc.c | 46 ++-------------------------------------------- 4 files changed, 11 insertions(+), 48 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 864dc4119..949d95cfb 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -1,7 +1,9 @@ Date Added 2011/09/17 - * Fixed missing edits for cash shop support for clients 2007-07-10aSakexe and older (follow up to r14932). + * Rental items no longer expire in cart and storage. The packet does not support this and rentals cannot be put in on official either (since r14082, related r14083). [Ai4rei] + - Corrected packet 0x299 (ZC_CASH_ITEM_DELETE) missing inventory index field (since r13370). + * Fixed missing edits for cash shop support for clients 2007-07-10aSakexe and older (follow up to r14932). [Ai4rei] 2011/09/08 * Fix C++ compilation issues. [FlavioJS] 2011/09/05 diff --git a/src/map/clif.c b/src/map/clif.c index f81675d69..d986e8700 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -13865,11 +13865,14 @@ void clif_rental_time(int fd, int nameid, int seconds) WFIFOSET(fd,8); } -void clif_rental_expired(int fd, int nameid) + +/// Deletes a rental item from client's inventory (ZC_CASH_ITEM_DELETE). +/// 0299 .W .W +void clif_rental_expired(int fd, int index, int nameid) { // '' item has been deleted from the Inventory WFIFOHEAD(fd,6); WFIFOW(fd,0) = 0x0299; - WFIFOW(fd,2) = 0; + WFIFOW(fd,2) = index+2; WFIFOW(fd,4) = nameid; WFIFOSET(fd,6); } diff --git a/src/map/clif.h b/src/map/clif.h index fe7603905..620ba0668 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -585,7 +585,7 @@ void clif_mercenary_updatestatus(struct map_session_data *sd, int type); // RENTAL SYSTEM void clif_rental_time(int fd, int nameid, int seconds); -void clif_rental_expired(int fd, int nameid); +void clif_rental_expired(int fd, int index, int nameid); // BOOK READING void clif_readbook(int fd, int book_id, int page); diff --git a/src/map/pc.c b/src/map/pc.c index 2de4c28de..23605409a 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -335,8 +335,8 @@ void pc_inventory_rentals(struct map_session_data *sd) if( sd->status.inventory[i].expire_time <= time(NULL) ) { - clif_rental_expired(sd->fd, sd->status.inventory[i].nameid); - pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0); + clif_rental_expired(sd->fd, i, sd->status.inventory[i].nameid); + pc_delitem(sd, i, sd->status.inventory[i].amount, 1, 0); } else { @@ -347,48 +347,6 @@ void pc_inventory_rentals(struct map_session_data *sd) } } - for( i = 0; i < MAX_CART; i++ ) - { // Check for Rentals on Cart - if( sd->status.cart[i].nameid == 0 ) - continue; // Nothing here - if( sd->status.cart[i].expire_time == 0 ) - continue; - - if( sd->status.cart[i].expire_time <= time(NULL) ) - { - clif_rental_expired(sd->fd, sd->status.cart[i].nameid); - pc_cart_delitem(sd, i, 1, 0); - } - else - { - expire_tick = (unsigned int)(sd->status.cart[i].expire_time - time(NULL)) * 1000; - clif_rental_time(sd->fd, sd->status.cart[i].nameid, (int)(expire_tick / 1000)); - next_tick = min(expire_tick, next_tick); - c++; - } - } - - for( i = 0; i < MAX_STORAGE; i++ ) - { // Check for Rentals on Storage - if( sd->status.storage.items[i].nameid == 0 ) - continue; - if( sd->status.storage.items[i].expire_time == 0 ) - continue; - - if( sd->status.storage.items[i].expire_time <= time(NULL) ) - { - clif_rental_expired(sd->fd, sd->status.storage.items[i].nameid); - storage_delitem(sd, i, 1); - } - else - { - expire_tick = (unsigned int)(sd->status.storage.items[i].expire_time - time(NULL)) * 1000; - clif_rental_time(sd->fd, sd->status.storage.items[i].nameid, (int)(expire_tick / 1000)); - next_tick = min(expire_tick, next_tick); - c++; - } - } - if( c > 0 ) // min(next_tick,3600000) 1 hour each timer to keep announcing to the owner, and to avoid a but with rental time > 15 days sd->rental_timer = add_timer(gettick() + min(next_tick,3600000), pc_inventory_rental_end, sd->bl.id, 0); else -- cgit v1.2.3-70-g09d2