diff --git a/src/map/pc.c b/src/map/pc.c index 9a567f98e3..3a0b4c7e99 100755 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4604,6 +4604,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 ) { diff --git a/src/map/vending.c b/src/map/vending.c old mode 100644 new mode 100755 index 2050943711..778fefc3eb --- a/src/map/vending.c +++ b/src/map/vending.c @@ -345,6 +345,14 @@ 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) { + 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 }