summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/intif.c7
-rw-r--r--src/map/storage.c14
2 files changed, 15 insertions, 6 deletions
diff --git a/src/map/intif.c b/src/map/intif.c
index 379589556..8e0267781 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -734,6 +734,13 @@ int intif_parse_LoadStorage(int fd) {
struct map_session_data *sd;
stor = account2storage( RFIFOL(fd,4));
+
+ if (stor->storage_status == 1) { // Already open.. lets ignore this update
+ if (battle_config.error_log)
+ printf("intif_parse_LoadStorage: storage received for a client already open\n");
+ return 0;
+ }
+
if (RFIFOW(fd,2)-8 != sizeof(struct storage)) {
if (battle_config.error_log)
printf("intif_parse_LoadStorage: data size error %d %d\n", RFIFOW(fd,2)-8, sizeof(struct storage));
diff --git a/src/map/storage.c b/src/map/storage.c
index 501a16709..3944f1ac1 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -110,12 +110,14 @@ int storage_storageopen(struct map_session_data *sd)
nullpo_retr(0, sd);
if((stor = numdb_search(storage_db,sd->status.account_id)) != NULL) {
- stor->storage_status = 1;
- sd->state.storage_flag = 0;
- clif_storageitemlist(sd,stor);
- clif_storageequiplist(sd,stor);
- clif_updatestorageamount(sd,stor);
- return 0;
+ if (stor->storage_status == 0) {
+ stor->storage_status = 1;
+ sd->state.storage_flag = 0;
+ clif_storageitemlist(sd,stor);
+ clif_storageequiplist(sd,stor);
+ clif_updatestorageamount(sd,stor);
+ return 0;
+ }
} else
intif_request_storage(sd->status.account_id);