/** * Attempt to retrieve an item from guild storage to cart, then refresh it * @param sd : player * @param index : index of item in storage * @param amount : number of item to transfert * @return 1:fail, 0:success */ void storage_guild_storagegettocart(struct map_session_data* sd, int index, int amount) { short flag; struct guild_storage *stor; nullpo_retv(sd); nullpo_retv(stor=guild2storage2(sd->status.guild_id)); if(!stor->storage_status) return; if(index < 0 || index >= MAX_GUILD_STORAGE) return; if(stor->items[index].nameid == 0) return; if(amount < 1 || amount > stor->items[index].amount) return; if((flag = pc_cart_additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)) == 0) guild_storage_delitem(sd,stor,index,amount); else { clif_storageitemremoved(sd,index,0); clif_cart_additem_ack(sd,(flag == 1) ? ADDITEM_TO_CART_FAIL_WEIGHT:ADDITEM_TO_CART_FAIL_COUNT); } }
/*========================================== * Attempt to retrieve an item from guild storage to inventory, then refresh it * @index : storage idx * return * 0 : fail * 1 : succes *------------------------------------------*/ int storage_guild_storageget(struct map_session_data* sd, int index, int amount) { struct guild_storage *stor; int flag; nullpo_ret(sd); nullpo_ret(stor=guild2storage2(sd->status.guild_id)); if(!stor->storage_status) return 0; if(index<0 || index>=MAX_GUILD_STORAGE) return 0; if(stor->items[index].nameid <= 0) return 0; if(amount < 1 || amount > stor->items[index].amount) return 0; if( stor->lock ) { storage_guild_storageclose(sd); return 0; } if((flag = pc_additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)) == 0) guild_storage_delitem(sd,stor,index,amount); else //inform fail clif_additem(sd,0,0,flag); // log_fromstorage(sd, index, 1); return 0; }
/** * Attempt to retrieve an item from guild storage to inventory, then refresh it * @param sd : player * @param index : index of item in storage * @param amount : number of item to get * @return 1:success, 0:fail */ void storage_guild_storageget(struct map_session_data* sd, int index, int amount) { struct guild_storage *stor; unsigned char flag = 0; nullpo_retv(sd); nullpo_retv(stor=guild2storage2(sd->status.guild_id)); if(!stor->storage_status) return; if(index < 0 || index >= MAX_GUILD_STORAGE) return; if(stor->items[index].nameid == 0) return; if(amount < 1 || amount > stor->items[index].amount) return; if( stor->lock ) { storage_guild_storageclose(sd); return; } if((flag = pc_additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)) == 0) guild_storage_delitem(sd,stor,index,amount); else {//inform fail clif_storageitemremoved(sd,index,0); clif_additem(sd,0,0,flag); } }
/*========================================== * Attempt to retrieve an item from guild storage to cart, then refresh it * @index : storage idx * return * 0 : fail * 1 : succes *------------------------------------------*/ int storage_guild_storagegettocart(struct map_session_data* sd, int index, int amount) { struct guild_storage *stor; nullpo_ret(sd); nullpo_ret(stor=guild2storage2(sd->status.guild_id)); if(!stor->storage_status) return 0; if(index<0 || index>=MAX_GUILD_STORAGE) return 0; if(stor->items[index].nameid<=0) return 0; if(amount < 1 || amount > stor->items[index].amount) return 0; if(pc_cart_additem(sd,&stor->items[index],amount,LOG_TYPE_GSTORAGE)==0) guild_storage_delitem(sd,stor,index,amount); return 1; }