diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-07-26 20:45:57 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-07-26 20:45:57 +0000 |
commit | 1624d1d57db3cfde3b4f42a55580f5a1e742f28e (patch) | |
tree | aedd8d2afa77616e61bf8f50249575294b06a528 /src/map/pc.c | |
parent | e3879120d578c07cc6ca2dfeeec577e8461a6c52 (diff) | |
download | hercules-1624d1d57db3cfde3b4f42a55580f5a1e742f28e.tar.gz hercules-1624d1d57db3cfde3b4f42a55580f5a1e742f28e.tar.bz2 hercules-1624d1d57db3cfde3b4f42a55580f5a1e742f28e.tar.xz hercules-1624d1d57db3cfde3b4f42a55580f5a1e742f28e.zip |
Merged the /loginmerge branch (topic:192754)
* the login server storage, ipban and logging systems have been abstracted and now provide a common interface; the rest has been merged into a single login server core (no more login/login_sql duplicity)
* storage systems are now added via compiler options (WITH_SQL / WITH_TXT)
* multiple storage engines can be compiled in at the same time, and the config option account.engine defines which one will be used.
* due to MySQL autoincrement limitations, accounts with id '0' will not be supported; account IDs from this point on should start from '1'.
* login_log() functions now again record IP addresses in dotted format, not as 4-byte integers (undo from r6868).
* removed config options that defined column names in the login table
* removed `memo` and `error message` columns from login db/savefile
* moved `loginlog` table to the logs database
* added sql files upgrade_svn12975.sql and upgrade_svn12975_log.sql
* due to changes to the login table layout, I added an !optional! sql file (upgrade_svn12975_view.sql) that will provide a certain degree of backwards compatibility with existing software; read the instructions inside carefully!
* moved third-party includes/libs to a separate directory
* updated project files / makefiles
Changed the way GM levels are handled
* removed conf/gm_account.txt
* added the gm level column to the txt savefile (after 'email' column)
* gm level information is now transferred along with account data
For open problems see bugreport:1889.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13000 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/pc.c')
-rw-r--r-- | src/map/pc.c | 54 |
1 files changed, 4 insertions, 50 deletions
diff --git a/src/map/pc.c b/src/map/pc.c index 3c9d5756a..bb24b097a 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6,7 +6,7 @@ #include "../common/malloc.h" #include "../common/nullpo.h" #include "../common/showmsg.h" -#include "../common/socket.h" // RFIFO*() +#include "../common/socket.h" // session[] #include "../common/strlib.h" // safestrncpy() #include "../common/timer.h" #include "../common/utils.h" @@ -58,9 +58,6 @@ struct fame_list taekwon_fame_list[MAX_FAME_LIST]; static unsigned short equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARMENT,EQP_HEAD_LOW,EQP_HEAD_MID,EQP_HEAD_TOP,EQP_ARMOR,EQP_HAND_L,EQP_HAND_R,EQP_AMMO}; -static struct gm_account *gm_account = NULL; -static int GM_num = 0; - #define MOTD_LINE_SIZE 128 char motd_text[MOTD_LINE_SIZE][256]; // Message of the day buffer [Valaris] @@ -85,34 +82,7 @@ int pc_class2idx(int class_) { int pc_isGM(struct map_session_data* sd) { - int i; - nullpo_retr(0, sd); - - if( sd->bl.type != BL_PC ) - return 99; - - ARR_FIND( 0, GM_num, i, gm_account[i].account_id == sd->status.account_id ); - return ( i < GM_num ) ? gm_account[i].level : 0; -} - -int pc_set_gm_level(int account_id, int level) -{ - int i; - - ARR_FIND( 0, GM_num, i, account_id == gm_account[i].account_id ); - if( i < GM_num ) - { - gm_account[i].level = level; - } - else - { - gm_account = (struct gm_account *) aRealloc(gm_account, (GM_num + 1) * sizeof(struct gm_account)); - gm_account[GM_num].account_id = account_id; - gm_account[GM_num].level = level; - GM_num++; - } - - return 0; + return sd->gmlevel; } static int pc_invincible_timer(int tid, unsigned int tick, int id, intptr data) @@ -709,12 +679,13 @@ int pc_isequip(struct map_session_data *sd,int n) * session idに問題無し * char鯖から送られてきたステ?タスを設定 *------------------------------------------*/ -bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, struct mmo_charstatus *st) +bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_time, int gmlevel, struct mmo_charstatus *st) { int i; unsigned long tick = gettick(); sd->login_id2 = login_id2; + sd->gmlevel = gmlevel; memcpy(&sd->status, st, sizeof(*st)); if (st->sex != sd->status.sex) { @@ -6925,21 +6896,6 @@ int pc_autosave(int tid, unsigned int tick, int id, intptr data) return 0; } -int pc_read_gm_account(int fd) -{ - //FIXME: this implementation is a total failure (direct reading from RFIFO) [ultramage] - int i = 0; - if (gm_account != NULL) - aFree(gm_account); - GM_num = 0; - gm_account = (struct gm_account *) aMallocA(((RFIFOW(fd,2) - 4) / 5)*sizeof(struct gm_account)); - for (i = 4; i < RFIFOW(fd,2); i += 5) { - gm_account[GM_num].account_id = RFIFOL(fd,i); - gm_account[GM_num].level = (int)RFIFOB(fd,i+4); - GM_num++; - } - return GM_num; -} static int pc_daynight_timer_sub(struct map_session_data *sd,va_list ap) { if (sd->state.night != night_flag && map[sd->bl.m].flag.nightenabled) @@ -7487,8 +7443,6 @@ int pc_read_motd(void) *------------------------------------------*/ void do_final_pc(void) { - if (gm_account) - aFree(gm_account); return; } |