/** * Add an item to the storage from the inventory. * @param sd : player * @param stor : Storage data * @param index : inventory index to take the item from * @param amount : number of item to take * @return 0:fail, 1:success */ void storage_storageadd(struct map_session_data* sd, struct s_storage *stor, int index, int amount) { enum e_storage_add result; nullpo_retv(sd); result = storage_canAddItem(stor, index, sd->inventory.u.items_inventory, amount, MAX_INVENTORY); if (result == STORAGE_ADD_INVALID) return; else if (result == STORAGE_ADD_OK) { switch( storage_additem(sd, stor, &sd->inventory.u.items_inventory[index], amount) ){ case 0: pc_delitem(sd,index,amount,0,4,LOG_TYPE_STORAGE); return; case 1: break; case 2: result = STORAGE_ADD_NOROOM; break; } } clif_storageitemremoved(sd,index,0); clif_dropitem(sd,index,0); }
/** * Move an item from cart to storage. * @param sd : player * @param stor : Storage data * @param index : cart index to take the item from * @param amount : number of item to take * @return 0:fail, 1:success */ void storage_storageaddfromcart(struct map_session_data *sd, struct s_storage *stor, int index, int amount) { enum e_storage_add result; nullpo_retv(sd); result = storage_canAddItem(stor, index, sd->cart.u.items_inventory, amount, MAX_INVENTORY); if (result == STORAGE_ADD_INVALID) return; else if (result == STORAGE_ADD_OK && storage_additem(sd,stor,&sd->cart.u.items_cart[index],amount) == 0) { pc_cart_delitem(sd,index,amount,0,LOG_TYPE_STORAGE); return; } clif_storageitemremoved(sd,index,0); clif_dropitem(sd,index,0); }