diff options
author | codemaster <codemaster@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-01-01 00:35:25 +0000 |
---|---|---|
committer | codemaster <codemaster@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-01-01 00:35:25 +0000 |
commit | d80c8a047666856947981a91a4fbf401d87ec732 (patch) | |
tree | 18e549388b94069e8ebec6c67b78b4cb5a236ef2 | |
parent | 58387b80ea89b7f7662ec9ef3d865a6b77344223 (diff) | |
download | hercules-d80c8a047666856947981a91a4fbf401d87ec732.tar.gz hercules-d80c8a047666856947981a91a4fbf401d87ec732.tar.bz2 hercules-d80c8a047666856947981a91a4fbf401d87ec732.tar.xz hercules-d80c8a047666856947981a91a4fbf401d87ec732.zip |
* Added a char config that allows GMs that have a certain level or above to bypass the server's user limit [Codemaster] [SVN 885]
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@885 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | Changelog.txt | 2 | ||||
-rw-r--r-- | conf-tmpl/char_athena.conf | 3 | ||||
-rw-r--r-- | src/char/char.c | 9 | ||||
-rw-r--r-- | src/char_sql/char.c | 9 |
4 files changed, 23 insertions, 0 deletions
diff --git a/Changelog.txt b/Changelog.txt index c92f2491e..d13e44465 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 01/01 + * Added a char config that allows GMs that have a certain level or above to + bypass the server's user limit [Codemaster] * Changed some create arrow outputs for new kRO 12/21/04 patch [Aria] * Fixed some respawn delays of MVP/Miniboss monsters. Redo Umbala/Niflheim fields, added missing mobs, corrected monsters quantity. In Niflheim fixed wrong Lord of Death monster ID. [Lupus] diff --git a/conf-tmpl/char_athena.conf b/conf-tmpl/char_athena.conf index d50862e6b..221815c4a 100644 --- a/conf-tmpl/char_athena.conf +++ b/conf-tmpl/char_athena.conf @@ -59,6 +59,9 @@ char_new: 0 // Maximum users able to connect to the server. Set to 0 for unlimited. max_connect_user: 0 +// Minimum GM level that is allowed to bypass the server limit of users. +gm_allow_level: 99 + // It's to check IP of a player between char-server and other servers (part of anti-hacking system) // If player doesn't have same IP, connection is refused. // Set to 0/off/no to not check IP of player. diff --git a/src/char/char.c b/src/char/char.c index e812e1de1..f2d4b33d2 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -103,6 +103,7 @@ int char_id_count = 150000; struct mmo_charstatus *char_dat; int char_num, char_max; int max_connect_user = 0; +int gm_allow_level = 99; int autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; int start_zeny = 500; int start_weapon = 1201; @@ -1660,6 +1661,10 @@ int parse_tologin(int fd) { sd->connect_until_time = (time_t)RFIFOL(fd,47); // send characters to player mmo_char_send006b(i, sd); + } else if(isGM(sd->account_id) >= gm_allow_level) { + sd->connect_until_time = (time_t)RFIFOL(fd,47); + // send characters to player + mmo_char_send006b(i, sd); } else { // refuse connection: too much online players // printf("count_users(): %d < max_connect_use (%d) -> fail...\n", count_users(), max_connect_user); @@ -3216,6 +3221,10 @@ int char_config_read(const char *cfgName) { max_connect_user = atoi(w2); if (max_connect_user < 0) max_connect_user = 0; // unlimited online players + } else if(strcmpi(w1, "gm_allow_level") == 0) { + gm_allow_level = atoi(w2); + if(gm_allow_level < 0) + gm_allow_level = 99; } else if (strcmpi(w1, "check_ip_flag") == 0) { check_ip_flag = config_switch(w2); } else if (strcmpi(w1, "autosave_time") == 0) { diff --git a/src/char_sql/char.c b/src/char_sql/char.c index 6e982ac67..0eccfe537 100644 --- a/src/char_sql/char.c +++ b/src/char_sql/char.c @@ -136,6 +136,7 @@ int char_id_count = 150000; struct mmo_charstatus *char_dat; int char_num,char_max; int max_connect_user = 0; +int gm_allow_level = 99; int autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; int start_zeny = 500; int start_weapon = 1201; @@ -1525,6 +1526,10 @@ int parse_tologin(int fd) { sd->connect_until_time = (time_t)RFIFOL(fd,47); // send characters to player mmo_char_send006b(i, sd); + } else if(isGM(sd->account_id) >= gm_allow_level) { + sd->connect_until_time = (time_t)RFIFOL(fd,47); + // send characters to player + mmo_char_send006b(i, sd); } else { // refuse connection: too much online players // printf("count_users(): %d < max_connect_use (%d) -> fail...\n", count_users(), max_connect_user); @@ -3167,6 +3172,10 @@ int char_config_read(const char *cfgName) { max_connect_user = atoi(w2); if (max_connect_user < 0) max_connect_user = 0; // unlimited online players + } else if(strcmpi(w1, "gm_allow_level") == 0) { + gm_allow_level = atoi(w2); + if(gm_allow_level < 0) + gm_allow_level = 99; } else if (strcmpi(w1, "check_ip_flag") == 0) { check_ip_flag = config_switch(w2); } else if (strcmpi(w1, "autosave_time") == 0) { |