Jump to content

Unik2psc

Members
  • Posts

    29
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by Unik2psc

  1. Kero, what system?. On debian lenny does not work 5. I have the AMD processor - 2x quad core. Nice -20 make-j8 - often jumping compilation errors, then they do not. I installed the package libtbbl-dev - package found, but problems like before.
  2. Hey all. I made a small patch. Players limit (number) retrieving from the database. Advantages: - command "server plimit" change limit permanently. - automatic statistics world (If you are maintaining webpage server stats based on database (like online players, realm uptime, etc.) you can now easly include also player limit); Waiting for criticism. I did it for their needs, I wanted to share with you http://gist.github.com/298341 diff --git a/sql/mangos.sql b/sql/mangos.sql index c26a0d2..15ad515 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -2920,7 +2920,7 @@ INSERT INTO `mangos_string` VALUES (9,'Commands available to you:',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (10,'Incorrect syntax.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (11,'Your account level is: %i',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), -(12,'Online players: %u (max: %u) Queued players: %u (max: %u)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(12,'Online players: %u (max: %u) Queued players: %u (max: %u) Player Limit: %u',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (13,'Server uptime: %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (14,'Player saved.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (15,'All players saved.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), diff --git a/sql/new.sql b/sql/new.sql index 16f56a6..5aada8e 100644 --- a/sql/new.sql +++ b/sql/new.sql @@ -1 +1,2 @@ -ALTER TABLE `realmlist` ADD `plimit` INT( 32 ) NOT NULL DEFAULT '200'; \\ No newline at end of file +ALTER TABLE `realmlist` ADD `plimit` INT( 32 ) NOT NULL DEFAULT '200'; +UPDATE `mangos_string` SET `content_default` = 'Online players: %u (max: %u) Queued players: %u (max: %u) Player Limit: %u' WHERE `entry` = 12; \\ No newline at end of file diff --git a/sql/realmd.sql b/sql/realmd.sql index 267b882..2f9004e 100644 --- a/sql/realmd.sql +++ b/sql/realmd.sql @@ -162,6 +162,7 @@ CREATE TABLE `realmlist` ( `allowedSecurityLevel` tinyint(3) unsigned NOT NULL default '0', `population` float unsigned NOT NULL default '0', `realmbuilds` varchar(64) NOT NULL default '', + `plimit` int(32) NOT NULL DEFAULT '200', PRIMARY KEY (`id`), UNIQUE KEY `idx_name` (`name`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Realm System'; diff --git a/src/game/Level0.cpp b/src/game/Level0.cpp index 178ae48..61e8e6b 100644 --- a/src/game/Level0.cpp +++ b/src/game/Level0.cpp @@ -102,7 +102,7 @@ bool ChatHandler::HandleServerInfoCommand(const char* /*args*/) PSendSysMessage(LANG_USING_SCRIPT_LIB,sWorld.GetScriptsVersion()); PSendSysMessage(LANG_USING_WORLD_DB,sWorld.GetDBVersion()); PSendSysMessage(LANG_USING_EVENT_AI,sWorld.GetCreatureEventAIVersion()); - PSendSysMessage(LANG_CONNECTED_USERS, activeClientsNum, maxActiveClientsNum, queuedClientsNum, maxQueuedClientsNum); + PSendSysMessage(LANG_CONNECTED_USERS, activeClientsNum, maxActiveClientsNum, queuedClientsNum, maxQueuedClientsNum, sWorld.GetRealmLimit()); PSendSysMessage(LANG_UPTIME, str.c_str()); return true; diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 71203fc..0ea2af8 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -5691,7 +5691,7 @@ bool ChatHandler::HandleServerPLimitCommand(const char *args) else if(strncmp(param,"administrator",l) == 0 ) sWorld.SetPlayerLimit(-SEC_ADMINISTRATOR); else if(strncmp(param,"reset",l) == 0 ) - sWorld.SetPlayerLimit( sConfig.GetIntDefault("PlayerLimit", DEFAULT_PLAYER_LIMIT) ); + sWorld.SetPlayerLimit(DEFAULT_PLAYER_LIMIT); else { int val = atoi(param); @@ -5718,6 +5718,7 @@ bool ChatHandler::HandleServerPLimitCommand(const char *args) } PSendSysMessage("Player limits: amount %u, min. security level %s.",pLimit,secName); + loginDatabase.PQuery("UPDATE realmlist SET plimit = '%d' WHERE id = '%d'", pLimit, realmID); return true; } diff --git a/src/game/World.cpp b/src/game/World.cpp index 1dddef0..f8811d2 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -427,8 +427,6 @@ void World::LoadConfigSettings(bool reload) } } - ///- Read the player limit and the Message of the day from the config file - SetPlayerLimit( sConfig.GetIntDefault("PlayerLimit", DEFAULT_PLAYER_LIMIT), true ); SetMotd( sConfig.GetStringDefault("Motd", "Welcome to the Massive Network Game Object Server." ) ); ///- Read all rates from the config file @@ -1146,6 +1144,11 @@ void World::SetInitialWorldSettings() ///- Update the realm entry in the database with the realm type from the config file //No SQL injection as values are treated as integers + + // Load realm limit player from realmlist table + sLog.outString("Load realm player limit..."); + LoadRealmLimit(); + // not send custom type REALM_FFA_PVP to realm list uint32 server_type = IsFFAPvPRealm() ? REALM_TYPE_PVP : getConfig(CONFIG_GAME_TYPE); uint32 realm_zone = getConfig(CONFIG_REALM_ZONE); @@ -2257,6 +2260,28 @@ void World::SetPlayerLimit( int32 limit, bool needUpdate ) loginDatabase.PExecute("UPDATE realmlist SET allowedSecurityLevel = '%u' WHERE id = '%d'",uint8(GetPlayerSecurityLimit()),realmID); } +void World::LoadRealmLimit() +{ + QueryResult* result = loginDatabase.PQuery("SELECT plimit FROM realmlist WHERE id = '%d' LIMIT 1", realmID); + + if(result) + { + Field* fields = result->Fetch(); + uint32 plimit = fields[0].GetInt32(); + + SetPlayerLimit(limit); + }else{ + SetPlayerLimit(DEFAULT_PLAYER_LIMIT); + } + + delete result; +} + +void World::GetRealmLimit() +{ + return m_playerLimit; +} + void World::UpdateMaxSessionCounters() { m_maxActiveSessionCount = std::max(m_maxActiveSessionCount,uint32(m_sessions.size()-m_QueuedPlayer.size())); diff --git a/src/game/World.h b/src/game/World.h index a0e2507..67f60f2 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -408,6 +408,8 @@ class World /// Set the active session server limit (or security level limitation) void SetPlayerLimit(int32 limit, bool needUpdate = false); + void LoadRealmLimit(); + void GetRealmLimit(); //player Queue typedef std::list<WorldSession*> Queue; diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index 030d8f5..99feaf9 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -74,14 +74,6 @@ BindIP = "0.0.0.0" # Default: 1 (speed) # 9 (best compression) # -# PlayerLimit -# Maximum number of players in the world. Excluding Mods, GM's and Admins -# Default: 100 -# 0 (for infinite players) -# -1 (for Mods, GM's and Admins only) -# -2 (for GM's and Admins only) -# -3 (for Admins only) -# # SaveRespawnTimeImmediately # Save respawn time for creatures at death and for gameobjects at use/open # Default: 1 (save creature/gameobject respawn time without waiting grid unload) @@ -164,7 +156,6 @@ BindIP = "0.0.0.0" UseProcessors = 0 ProcessPriority = 1 Compression = 1 -PlayerLimit = 100 SaveRespawnTimeImmediately = 1 MaxOverspeedPings = 2 GridUnload = 1
  3. small fix. reset column active_realmd_id at shutdown http://gist.github.com/274545 May be useful to someone. Unik2psc = Emtec_GM, lost password
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use