summaryrefslogtreecommitdiff
path: root/src/map/pc.h
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/pc.h
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/pc.h')
-rw-r--r--src/map/pc.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/map/pc.h b/src/map/pc.h
index 482e30c41..af52f8946 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -94,6 +94,14 @@ enum pc_resetskill_flag {
PCRESETSKILL_CHSEX = 0x4, // just reset the skills if the player class is a bard/dancer type (for changesex.)
};
+enum pc_checkitem_types {
+ PCCHECKITEM_NONE = 0x0,
+ PCCHECKITEM_INVENTORY = 0x1,
+ PCCHECKITEM_CART = 0x2,
+ PCCHECKITEM_STORAGE = 0x4,
+ PCCHECKITEM_GSTORAGE = 0x8
+};
+
struct weapon_data {
int atkmods[3];
BEGIN_ZEROED_BLOCK; // all the variables within this block get zero'ed in each call of status_calc_pc
@@ -225,7 +233,6 @@ struct map_session_data {
unsigned int hold_recalc : 1;
unsigned int snovice_call_flag : 3; //Summon Angel (stage 1~3)
unsigned int hpmeter_visible : 1;
- unsigned int itemcheck : 1;
unsigned int standalone : 1;/* [Ind/Hercules <3] */
unsigned int loggingout : 1;
unsigned int warp_clean : 1;
@@ -251,7 +258,9 @@ struct map_session_data {
unsigned int extra_temp_permissions; /* permissions from @addperm */
struct mmo_charstatus status;
- struct item_data* inventory_data[MAX_INVENTORY]; // direct pointers to itemdb entries (faster than doing item_id lookups)
+ struct item_data *inventory_data[MAX_INVENTORY]; // direct pointers to itemdb entries (faster than doing item_id lookups)
+ struct storage_data storage; ///< Account Storage
+ enum pc_checkitem_types itemcheck;
short equip_index[EQI_MAX];
unsigned int weight,max_weight;
int cart_weight,cart_num,cart_weight_max;