/*========================================== * ギルド倉庫へアイテム追加 *------------------------------------------ */ static int storage_guild_additem(struct map_session_data *sd,struct guild_storage *stor,struct item *item_data,int amount) { struct item_data *data; int i; nullpo_retr(1, sd); nullpo_retr(1, stor); nullpo_retr(1, item_data); if(item_data->nameid <= 0 || amount <= 0) return 1; nullpo_retr(1, data = itemdb_search(item_data->nameid)); if(!itemdb_isequip2(data)) { // 装備品ではないので、既所有品なら個数のみ変化させる for(i=0; i<MAX_GUILD_STORAGE; i++) { if(stor->store_item[i].nameid == item_data->nameid && stor->store_item[i].card[0] == item_data->card[0] && stor->store_item[i].card[1] == item_data->card[1] && stor->store_item[i].card[2] == item_data->card[2] && stor->store_item[i].card[3] == item_data->card[3] && stor->store_item[i].limit == item_data->limit) { if(stor->store_item[i].amount + amount > MAX_AMOUNT) return 1; stor->store_item[i].amount += amount; stor->dirty = 1; clif_guildstorageitemadded(sd,stor,i,amount); return 0; } } } else if(amount != 1) { return 1; } // 装備品か未所有品だったので空き欄へ追加 for(i=0; i<MAX_GUILD_STORAGE; i++) { if(stor->store_item[i].nameid == 0) { memcpy(&stor->store_item[i],item_data,sizeof(stor->store_item[0])); stor->store_item[i].id = ++stor->sortkey; stor->store_item[i].amount = amount; stor->storage_amount++; stor->dirty = 1; clif_guildstorageitemadded(sd,stor,i,amount); clif_updateguildstorageamount(sd,stor); return 0; } } return 1; }
int guild_storage_additem(struct map_session_data* sd, struct guild_storage* stor, struct item* item_data, int amount) { struct item_data *data; int i; nullpo_retr(1, sd); nullpo_retr(1, stor); nullpo_retr(1, item_data); nullpo_retr(1, data = itemdb_search(item_data->nameid)); if(item_data->nameid <= 0 || amount <= 0) return 1; if( !itemdb_canguildstore(item_data, pc_isGM(sd)) || item_data->expire_time ) { //Check if item is storable. [Skotlex] clif_displaymessage (sd->fd, msg_txt(264)); return 1; } if(itemdb_isstackable2(data)){ //Stackable for(i=0;i<MAX_GUILD_STORAGE;i++){ if(compare_item(&stor->storage_[i], item_data)) { if(stor->storage_[i].amount+amount > MAX_AMOUNT) return 1; stor->storage_[i].amount+=amount; clif_guildstorageitemadded(sd,&stor->storage_[i],i,amount); stor->dirty = 1; if(log_config.enable_logs&0x1000) log_pick_pc(sd, "G", item_data->nameid, -amount, item_data); return 0; } } } //Add item for(i=0;i<MAX_GUILD_STORAGE && stor->storage_[i].nameid;i++); if(i>=MAX_GUILD_STORAGE) return 1; memcpy(&stor->storage_[i],item_data,sizeof(stor->storage_[0])); stor->storage_[i].amount=amount; stor->storage_amount++; clif_guildstorageitemadded(sd,&stor->storage_[i],i,amount); clif_updateguildstorageamount(sd,stor->storage_amount); stor->dirty = 1; if(log_config.enable_logs&0x1000) log_pick_pc(sd, "G", item_data->nameid, -amount, item_data); return 0; }