Merge pull request #50 from Baalberith6/master

Fixed vending items not saving with the correct cart ID and not allow players to log back in. Thanks to @Baalberith6.
This commit is contained in:
aleos89
2014-04-24 15:28:02 -04:00
2 changed files with 13 additions and 0 deletions

View File

@@ -4633,6 +4633,9 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
if( (w = data->weight*amount) + sd->cart_weight > sd->cart_weight_max )
return 1;
//id no longer points to inventory/kafra id, while we get a new one, we don't want to mess up vending creation
item_data->id = 0;
i = MAX_CART;
if( itemdb_isstackable2(data) && !item_data->expire_time )
{

10
src/map/vending.c Normal file → Executable file
View File

@@ -345,6 +345,16 @@ bool vending_openvending(struct map_session_data* sd, const char* message, const
sd->vending[i].amount = amount;
sd->vending[i].value = min(value, (unsigned int)battle_config.vending_max_value);
//player just moved item to cart and we don't have the correct cart ID yet
if (sd->status.cart[sd->vending[i].index].id == 0) {
struct item_data *idb = itemdb_search(sd->status.cart[index].nameid);
char msg[256];
snprintf(msg, 256, "Item %s is not yet saved. Please re-log in order to correctly save your vending.", idb->jname);
clif_displaymessage(sd->fd, msg);
clif_skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0);
return false;
}
i++; // item successfully added
}