diff options
author | wizputer <wizputer@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-12-03 04:00:12 +0000 |
---|---|---|
committer | wizputer <wizputer@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-12-03 04:00:12 +0000 |
commit | cf5a6282cace4f9b4d788909a00f6c6e0057acfe (patch) | |
tree | 123235f66ba69762a54fb001c44171b0c161dcc5 /src | |
parent | 04aec6e754983665d18cb54d2c5a219a9c37cfbb (diff) | |
download | hercules-cf5a6282cace4f9b4d788909a00f6c6e0057acfe.tar.gz hercules-cf5a6282cace4f9b4d788909a00f6c6e0057acfe.tar.bz2 hercules-cf5a6282cace4f9b4d788909a00f6c6e0057acfe.tar.xz hercules-cf5a6282cace4f9b4d788909a00f6c6e0057acfe.zip |
* Moved init of send_users_tologin timer to when char connects to login [Wizputer]
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@440 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/char_sql/char.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 571495a31..382c654b9 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -68,6 +68,8 @@ char login_db_level[32] = "level"; int lowest_gm_level = 1; +int user_count_timer; + unsigned char *SQL_CONF_NAME = "conf/inter_athena.conf"; struct mmo_map_server server[MAX_MAP_SERVERS]; @@ -1072,6 +1074,24 @@ int count_users(void) { return 0; } +int send_users_tologin(int tid, unsigned int tick, int id, int data) { + int users = count_users(); + char buf[16]; + + if (login_fd > 0 && session[login_fd]) { + // send number of user to login server + WFIFOW(login_fd,0) = 0x2714; + WFIFOL(login_fd,2) = users; + WFIFOSET(login_fd,6); + } + // send number of players to all map-servers + WBUFW(buf,0) = 0x2b00; + WBUFL(buf,2) = users; + mapif_sendall(buf, 6); + + return 0; +} + int mmo_char_send006b(int fd, struct char_session_data *sd) { int i, j, found_num = 0; struct mmo_charstatus *p = NULL; @@ -1180,6 +1200,7 @@ int parse_tologin(int fd) { if(session[fd]->eof) { if (fd == login_fd) { printf("Char-server can't connect to login-server (connection #%d).\n", fd); + delete_timer(user_count_timer,send_users_tologin); login_fd = -1; } close(fd); @@ -1214,6 +1235,10 @@ int parse_tologin(int fd) { break; if (i == MAX_MAP_SERVERS) printf("Awaiting maps from map-server.\n"); + + // send USER COUNT PING to login server. + printf("add interval tic (send_users_tologin)....\n"); + user_count_timer = add_timer_interval(gettick() + 10, send_users_tologin, 0, 0, 5 * 1000); } RFIFOSKIP(fd, 3); break; @@ -2580,24 +2605,6 @@ int mapif_send(int fd, unsigned char *buf, unsigned int len) { return 0; } -int send_users_tologin(int tid, unsigned int tick, int id, int data) { - int users = count_users(); - char buf[16]; - - if (login_fd > 0 && session[login_fd]) { - // send number of user to login server - WFIFOW(login_fd,0) = 0x2714; - WFIFOL(login_fd,2) = users; - WFIFOSET(login_fd,6); - } - // send number of players to all map-servers - WBUFW(buf,0) = 0x2b00; - WBUFL(buf,2) = users; - mapif_sendall(buf, 6); - - return 0; -} - int check_connect_login_server(int tid, unsigned int tick, int id, int data) { if (login_fd <= 0 || session[login_fd] == NULL) { printf("Attempt to connect to login-server...\n"); @@ -3004,10 +3011,6 @@ int do_init(int argc, char **argv){ printf("add interval tic (check_connect_login_server)....\n"); i = add_timer_interval(gettick() + 10, check_connect_login_server, 0, 0, 10 * 1000); - // send USER COUNT PING to login server. - printf("add interval tic (send_users_tologin)....\n"); - i = add_timer_interval(gettick() + 10, send_users_tologin, 0, 0, 5 * 1000); - //no need to set sync timer on SQL version. //printf("add interval tic (mmo_char_sync_timer)....\n"); //i = add_timer_interval(gettick() + 10, mmo_char_sync_timer, 0, 0, autosave_interval); |