summaryrefslogtreecommitdiff
path: root/src/map/script.c
diff options
context:
space:
mode:
authorSmokexyz <sagunkho@hotmail.com>2017-04-28 05:57:39 +0800
committerSmokexyz <sagunkho@hotmail.com>2017-05-22 17:55:49 +0800
commite8affc41f106503b530abaa7faa20d6e63b727b8 (patch)
tree4e4418da2e850e9ae89f357d8b396da5ec739ac4 /src/map/script.c
parent109661e3d5fb4cc6ddde9b32f8c99012c8d17bce (diff)
downloadhercules-e8affc41f106503b530abaa7faa20d6e63b727b8.tar.gz
hercules-e8affc41f106503b530abaa7faa20d6e63b727b8.tar.bz2
hercules-e8affc41f106503b530abaa7faa20d6e63b727b8.tar.xz
hercules-e8affc41f106503b530abaa7faa20d6e63b727b8.zip
Add storage_data reception, parsing and sending to/from the map-server.
Remove loading and saving of storage_data through char.c Re-declaration of structure storage_data as a vector. Re-code of portions in the map-server using storage_data. A new approach is taken by saving the loaded storage data from sql into memory for the duration of the session, thereby removing the need of querying the database to re-load all items everytime a storage save routine is issued from the map-server. Saving of storage items is done through a new function that significantly reduces the number of queries compared to char_memitemdata_tosql(), and therefore run-time speed. This method potentially reduces the number of update and delete queries from MAX_STORAGE (which could be >= 600) times to literally 1. Storage items are stored in a dynamically allocated array and handled accordingly. struct mmo_charstatus size reduces by 34,800 bytes. Update pc_checkitem() with masks for item checks. `sd->state.itemcheck` has been changed to `sd->itemcheck` of type `enum pc_checkitem_types` `battle/items.conf` has been updated to reflect configuration changes. Further updates to assert a successful reception of storage data in related functions.
Diffstat (limited to 'src/map/script.c')
-rw-r--r--src/map/script.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/map/script.c b/src/map/script.c
index fb9f2aa02..7f3b3f9a2 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -10423,9 +10423,17 @@ BUILDIN(openstorage)
{
struct map_session_data *sd = script->rid2sd(st);
if (sd == NULL)
- return true;
+ return false;
+
+ if (sd->storage.received == false) {
+ script_pushint(st, 0);
+ ShowWarning("buildin_openstorage: Storage data for AID %d has not been loaded.\n", sd->bl.id);
+ return false;
+ }
storage->open(sd);
+
+ script_pushint(st, 1); // success flag.
return true;
}