diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-07-13 16:14:32 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-07-13 16:14:32 +0000 |
commit | fb45ace1b19f98add7e1d0a0fc6fe45bc1ebac63 (patch) | |
tree | 52b66f102c20e6b47e060efe0e7ceabd36d5aa29 /src/char_sql/char.c | |
parent | 2e7ba13554118cdc78c9bfa5a6f0e5e8e58baf7b (diff) | |
download | hercules-fb45ace1b19f98add7e1d0a0fc6fe45bc1ebac63.tar.gz hercules-fb45ace1b19f98add7e1d0a0fc6fe45bc1ebac63.tar.bz2 hercules-fb45ace1b19f98add7e1d0a0fc6fe45bc1ebac63.tar.xz hercules-fb45ace1b19f98add7e1d0a0fc6fe45bc1ebac63.zip |
Modified storage data loading
* storage is now loaded/saved along with character status
* as a consequence, a lot of storage handling code was removed
* there is no more locking done within storage data
* mapservers no longer cache the data (solves muiltimapserver exploit)
* loading storage on char select may decrease charserver performance
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12950 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/char_sql/char.c')
-rw-r--r-- | src/char_sql/char.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 50a1a7ba9..0ce2aecf6 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -17,6 +17,7 @@ #include "int_guild.h" #include "int_homun.h" #include "int_party.h" +#include "int_storage.h" #include "char.h" #include <sys/types.h> @@ -483,6 +484,13 @@ int mmo_char_tosql(int char_id, struct mmo_charstatus* p) strcat(save_status, " cart"); } + //map storage data + if( memcmp(p->storage.items, cp->storage.items, sizeof(p->storage.items)) ) + { + memitemdata_to_sql(p->storage.items, MAX_STORAGE, p->account_id, TABLE_STORAGE); + strcat(save_status, " storage"); + } + #ifdef TXT_SQL_CONVERT { //Insert the barebones to then update the rest. char esc_name[NAME_LENGTH*2+1]; @@ -1102,6 +1110,10 @@ int mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_everything memcpy(&p->cart[i], &tmp_item, sizeof(tmp_item)); strcat(t_msg, " cart"); + //read storage + storage_fromsql(p->account_id, &p->storage); + strcat(t_msg, " storage"); + //read skill //`skill` (`char_id`, `id`, `lv`) if( SQL_ERROR == SqlStmt_Prepare(stmt, "SELECT `id`, `lv` FROM `%s` WHERE `char_id`=? LIMIT %d", skill_db, MAX_SKILL) |