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:
@@ -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
10
src/map/vending.c
Normal file → Executable 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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user