diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/map.c | 12 | ||||
-rw-r--r-- | src/map/map.h | 1 | ||||
-rw-r--r-- | src/map/pc.c | 8 | ||||
-rw-r--r-- | src/map/storage.c | 11 |
4 files changed, 17 insertions, 15 deletions
diff --git a/src/map/map.c b/src/map/map.c index 0150926d7..55718a37d 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2476,3 +2476,15 @@ int do_init(int argc, char *argv[]) { return 0; } + +int compare_item(struct item *a, struct item *b) { + return ( + (a->nameid == b->nameid) && + (a->identify == b->identify) && + (a->refine == b->refine) && + (a->attribute == b->attribute) && + (a->card[0] == b->card[0]) && + (a->card[1] == b->card[1]) && + (a->card[2] == b->card[2]) && + (a->card[3] == b->card[3])); +} diff --git a/src/map/map.h b/src/map/map.h index 1c9565341..9d8a0b194 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -695,6 +695,7 @@ void map_deliddb(struct block_list *bl); int map_foreachiddb(int (*)(void*,void*,va_list),...); void map_addnickdb(struct map_session_data *); struct map_session_data * map_nick2sd(char*); +int compare_item(struct item *a, struct item *b); // gat関連 int map_getcell(int,int,int); diff --git a/src/map/pc.c b/src/map/pc.c index 896a905fb..897b96861 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3213,9 +3213,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount) if(!itemdb_isequip2(data)){ // ? 備品ではないので、?所有品なら個?のみ?化させる for(i=0;i<MAX_INVENTORY;i++) - if(sd->status.inventory[i].nameid == item_data->nameid && - sd->status.inventory[i].card[0] == item_data->card[0] && sd->status.inventory[i].card[1] == item_data->card[1] && - sd->status.inventory[i].card[2] == item_data->card[2] && sd->status.inventory[i].card[3] == item_data->card[3]) { + if(compare_item(&sd->status.inventory[i], item_data)) { if(sd->status.inventory[i].amount+amount > MAX_AMOUNT) return 5; sd->status.inventory[i].amount+=amount; @@ -3450,9 +3448,7 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun if(!itemdb_isequip2(data)){ // ? 備品ではないので、?所有品なら個?のみ?化させる for(i=0;i<MAX_CART;i++){ - if(sd->status.cart[i].nameid==item_data->nameid && - sd->status.cart[i].card[0] == item_data->card[0] && sd->status.cart[i].card[1] == item_data->card[1] && - sd->status.cart[i].card[2] == item_data->card[2] && sd->status.cart[i].card[3] == item_data->card[3]){ + if(compare_item(&sd->status.cart[i], item_data)) { if(sd->status.cart[i].amount+amount > MAX_AMOUNT) return 1; sd->status.cart[i].amount+=amount; diff --git a/src/map/storage.c b/src/map/storage.c index eb9da1539..bc97b1390 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -144,12 +144,7 @@ int storage_additem(struct map_session_data *sd,struct storage *stor,struct item if(!itemdb_isequip2(data)){ // 装備品ではないので、既所有品なら個数のみ変化させる for(i=0;i<MAX_STORAGE;i++){ - if( stor->storage[i].nameid == item_data->nameid && - stor->storage[i].identify == item_data->identify && - stor->storage[i].refine == item_data->refine && - stor->storage[i].attribute == item_data->attribute && - stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] && - stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){ + if( compare_item (&stor->storage[i], item_data)) { if(stor->storage[i].amount+amount > MAX_AMOUNT) return 1; stor->storage[i].amount+=amount; @@ -434,9 +429,7 @@ int guild_storage_additem(struct map_session_data *sd,struct guild_storage *stor if(!itemdb_isequip2(data)){ // 装備品ではないので、既所有品なら個数のみ変化させる for(i=0;i<MAX_GUILD_STORAGE;i++){ - if(stor->storage[i].nameid == item_data->nameid && - stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] && - stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){ + if(compare_item(&stor->storage[i], item_data)) { if(stor->storage[i].amount+amount > MAX_AMOUNT) return 1; stor->storage[i].amount+=amount; |