Output DB/ScriptLib versions in ".server info" command.

Required support by used scripting library.
This commit is contained in:
VladimirMangos 2008-10-26 16:17:33 +03:00
parent 24549669a9
commit 6f190fedd4
15 changed files with 62 additions and 17 deletions

View file

@ -2158,6 +2158,8 @@ INSERT INTO `mangos_string` VALUES
(54,'The new passwords do not match',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (54,'The new passwords do not match',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(55,'Your password can\'t be longer than 16 characters (client limit), password not changed!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (55,'Your password can\'t be longer than 16 characters (client limit), password not changed!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(56,'Current Message of the day: \r\n%s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (56,'Current Message of the day: \r\n%s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(57,'Using World DB: %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(58,'Using script library: %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(100,'Global notify: ',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (100,'Global notify: ',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(101,'Map: %u (%s) Zone: %u (%s) Area: %u (%s)\nX: %f Y: %f Z: %f Orientation: %f\ngrid[%u,%u]cell[%u,%u] InstanceID: %u\n ZoneX: %f ZoneY: %f\nGroundZ: %f FloorZ: %f Have height data (Map: %u VMap: %u)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (101,'Map: %u (%s) Zone: %u (%s) Area: %u (%s)\nX: %f Y: %f Z: %f Orientation: %f\ngrid[%u,%u]cell[%u,%u] InstanceID: %u\n ZoneX: %f ZoneY: %f\nGroundZ: %f FloorZ: %f Have height data (Map: %u VMap: %u)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(102,'%s is already being teleported.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (102,'%s is already being teleported.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),

View file

@ -0,0 +1,5 @@
DELETE FROM mangos_string WHERE entry IN (57,58);
INSERT INTO mangos_string VALUES
(57,'Using World DB: %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(58,'Using script library: %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

View file

@ -106,6 +106,7 @@ pkgdata_DATA = \
2008_10_23_03_mangos_mangos_string.sql \ 2008_10_23_03_mangos_mangos_string.sql \
2008_10_23_04_mangos_command.sql \ 2008_10_23_04_mangos_command.sql \
2008_10_23_05_mangos_command.sql \ 2008_10_23_05_mangos_command.sql \
2008_10_26_01_mangos_mangos_string.sql \
README README
## Additional files to include when running 'make dist' ## Additional files to include when running 'make dist'
@ -193,4 +194,5 @@ EXTRA_DIST = \
2008_10_23_03_mangos_mangos_string.sql \ 2008_10_23_03_mangos_mangos_string.sql \
2008_10_23_04_mangos_command.sql \ 2008_10_23_04_mangos_command.sql \
2008_10_23_05_mangos_command.sql \ 2008_10_23_05_mangos_command.sql \
2008_10_26_01_mangos_mangos_string.sql \
README README

View file

@ -64,6 +64,12 @@ void ScriptsInit()
} }
MANGOS_DLL_EXPORT
char const* ScriptsVersion()
{
return "Default MaNGOS scripting library";
}
Script* GetScriptByName(std::string Name) Script* GetScriptByName(std::string Name)
{ {
if(Name.empty()) if(Name.empty())

View file

@ -67,7 +67,7 @@ ChatCommand * ChatHandler::getCommandTable()
{ "exit", SEC_CONSOLE, true, &ChatHandler::HandleServerExitCommand, "", NULL }, { "exit", SEC_CONSOLE, true, &ChatHandler::HandleServerExitCommand, "", NULL },
{ "idlerestart", SEC_ADMINISTRATOR, true, &ChatHandler::HandleIdleRestartCommand, "", NULL }, { "idlerestart", SEC_ADMINISTRATOR, true, &ChatHandler::HandleIdleRestartCommand, "", NULL },
{ "idleshutdown", SEC_ADMINISTRATOR, true, &ChatHandler::HandleIdleShutDownCommand, "", NULL }, { "idleshutdown", SEC_ADMINISTRATOR, true, &ChatHandler::HandleIdleShutDownCommand, "", NULL },
{ "info", SEC_PLAYER, true, &ChatHandler::HandleInfoCommand, "", NULL }, { "info", SEC_PLAYER, true, &ChatHandler::HandleServerInfoCommand, "", NULL },
{ "motd", SEC_PLAYER, true, &ChatHandler::HandleServerMotdCommand, "", NULL }, { "motd", SEC_PLAYER, true, &ChatHandler::HandleServerMotdCommand, "", NULL },
{ "restart", SEC_ADMINISTRATOR, true, &ChatHandler::HandleRestartCommand, "", NULL }, { "restart", SEC_ADMINISTRATOR, true, &ChatHandler::HandleRestartCommand, "", NULL },
{ "shutdown", SEC_ADMINISTRATOR, true, &ChatHandler::HandleShutDownCommand, "", NULL }, { "shutdown", SEC_ADMINISTRATOR, true, &ChatHandler::HandleShutDownCommand, "", NULL },

View file

@ -95,7 +95,6 @@ class ChatHandler
bool HandleHelpCommand(const char* args); bool HandleHelpCommand(const char* args);
bool HandleCommandsCommand(const char* args); bool HandleCommandsCommand(const char* args);
bool HandleStartCommand(const char* args); bool HandleStartCommand(const char* args);
bool HandleInfoCommand(const char* args);
bool HandleDismountCommand(const char* args); bool HandleDismountCommand(const char* args);
bool HandleSaveCommand(const char* args); bool HandleSaveCommand(const char* args);
bool HandleGMListIngameCommand(const char* args); bool HandleGMListIngameCommand(const char* args);
@ -220,6 +219,7 @@ class ChatHandler
bool HandleServerCorpsesCommand(const char* args); bool HandleServerCorpsesCommand(const char* args);
bool HandleServerExitCommand(const char* args); bool HandleServerExitCommand(const char* args);
bool HandleServerInfoCommand(const char* args);
bool HandleServerMotdCommand(const char* args); bool HandleServerMotdCommand(const char* args);
bool HandleServerSetMotdCommand(const char* args); bool HandleServerSetMotdCommand(const char* args);
bool HandleServerSetLogLevelCommand(const char* args); bool HandleServerSetLogLevelCommand(const char* args);

View file

@ -80,7 +80,9 @@ enum MangosStrings
LANG_NEW_PASSWORDS_NOT_MATCH = 54, LANG_NEW_PASSWORDS_NOT_MATCH = 54,
LANG_PASSWORD_TOO_LONG = 55, LANG_PASSWORD_TOO_LONG = 55,
LANG_MOTD_CURRENT = 56, LANG_MOTD_CURRENT = 56,
// Room for more level 0 57-99 not used LANG_USING_WORLD_DB = 57,
LANG_USING_SCRIPT_LIB = 58,
// Room for more level 0 59-99 not used
// level 1 chat // level 1 chat
LANG_GLOBAL_NOTIFY = 100, LANG_GLOBAL_NOTIFY = 100,

View file

@ -85,7 +85,7 @@ bool ChatHandler::HandleStartCommand(const char* /*args*/)
return true; return true;
} }
bool ChatHandler::HandleInfoCommand(const char* /*args*/) bool ChatHandler::HandleServerInfoCommand(const char* /*args*/)
{ {
uint32 activeClientsNum = sWorld.GetActiveSessionCount(); uint32 activeClientsNum = sWorld.GetActiveSessionCount();
uint32 queuedClientsNum = sWorld.GetQueuedSessionCount(); uint32 queuedClientsNum = sWorld.GetQueuedSessionCount();
@ -99,7 +99,9 @@ bool ChatHandler::HandleInfoCommand(const char* /*args*/)
else else
full = _FULLVERSION(REVISION_DATE,REVISION_TIME,REVISION_ID); full = _FULLVERSION(REVISION_DATE,REVISION_TIME,REVISION_ID);
PSendSysMessage(full); SendSysMessage(full);
PSendSysMessage(LANG_USING_SCRIPT_LIB,sWorld.GetScriptsVersion());
PSendSysMessage(LANG_USING_WORLD_DB,sWorld.GetDBVersion());
PSendSysMessage(LANG_CONNECTED_USERS, activeClientsNum, maxActiveClientsNum, queuedClientsNum, maxQueuedClientsNum); PSendSysMessage(LANG_CONNECTED_USERS, activeClientsNum, maxActiveClientsNum, queuedClientsNum, maxQueuedClientsNum);
PSendSysMessage(LANG_UPTIME, str.c_str()); PSendSysMessage(LANG_UPTIME, str.c_str());

View file

@ -739,6 +739,7 @@ class ObjectMgr
void AddVendorItem(uint32 entry,uint32 item, uint32 maxcount, uint32 incrtime, uint32 ExtendedCost); void AddVendorItem(uint32 entry,uint32 item, uint32 maxcount, uint32 incrtime, uint32 ExtendedCost);
bool RemoveVendorItem(uint32 entry,uint32 item); bool RemoveVendorItem(uint32 entry,uint32 item);
bool IsVendorItemValid( uint32 vendor_entry, uint32 item, uint32 maxcount, uint32 ptime, uint32 ExtendedCost, Player* pl = NULL, std::set<uint32>* skip_vendors = NULL ) const; bool IsVendorItemValid( uint32 vendor_entry, uint32 item, uint32 maxcount, uint32 ptime, uint32 ExtendedCost, Player* pl = NULL, std::set<uint32>* skip_vendors = NULL ) const;
protected: protected:
uint32 m_auctionid; uint32 m_auctionid;
uint32 m_mailid; uint32 m_mailid;

View file

@ -22,6 +22,7 @@
#include "Platform/Define.h" #include "Platform/Define.h"
#include "ScriptCalls.h" #include "ScriptCalls.h"
#include "World.h"
ScriptsSet Script=NULL; ScriptsSet Script=NULL;
@ -55,6 +56,7 @@ bool LoadScriptingModule(char const* libName)
if( !(testScript->ScriptsInit =(scriptCallScriptsInit )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"ScriptsInit" )) if( !(testScript->ScriptsInit =(scriptCallScriptsInit )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"ScriptsInit" ))
||!(testScript->ScriptsFree =(scriptCallScriptsFree )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"ScriptsFree" )) ||!(testScript->ScriptsFree =(scriptCallScriptsFree )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"ScriptsFree" ))
||!(testScript->ScriptsVersion =(scriptCallScriptsVersion )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"ScriptsVersion" ))
||!(testScript->GossipHello =(scriptCallGossipHello )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"GossipHello" )) ||!(testScript->GossipHello =(scriptCallGossipHello )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"GossipHello" ))
||!(testScript->GOChooseReward =(scriptCallGOChooseReward )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"GOChooseReward" )) ||!(testScript->GOChooseReward =(scriptCallGOChooseReward )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"GOChooseReward" ))
||!(testScript->QuestAccept =(scriptCallQuestAccept )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"QuestAccept" )) ||!(testScript->QuestAccept =(scriptCallQuestAccept )MANGOS_GET_PROC_ADDR(testScript->hScriptsLib,"QuestAccept" ))
@ -91,5 +93,7 @@ bool LoadScriptingModule(char const* libName)
Script=testScript; Script=testScript;
Script->ScriptsInit(); Script->ScriptsInit();
sWorld.SetScriptsVersion(Script->ScriptsVersion());
return true; return true;
} }

View file

@ -37,6 +37,7 @@ void UnloadScriptingModule();
typedef void(MANGOS_IMPORT * scriptCallScriptsInit) (); typedef void(MANGOS_IMPORT * scriptCallScriptsInit) ();
typedef void(MANGOS_IMPORT * scriptCallScriptsFree) (); typedef void(MANGOS_IMPORT * scriptCallScriptsFree) ();
typedef char const* (MANGOS_IMPORT * scriptCallScriptsVersion) ();
typedef bool(MANGOS_IMPORT * scriptCallGossipHello) (Player *player, Creature *_Creature ); typedef bool(MANGOS_IMPORT * scriptCallGossipHello) (Player *player, Creature *_Creature );
typedef bool(MANGOS_IMPORT * scriptCallQuestAccept) (Player *player, Creature *_Creature, Quest const *); typedef bool(MANGOS_IMPORT * scriptCallQuestAccept) (Player *player, Creature *_Creature, Quest const *);
@ -62,6 +63,7 @@ typedef struct
{ {
scriptCallScriptsInit ScriptsInit; scriptCallScriptsInit ScriptsInit;
scriptCallScriptsFree ScriptsFree; scriptCallScriptsFree ScriptsFree;
scriptCallScriptsVersion ScriptsVersion;
scriptCallGossipHello GossipHello; scriptCallGossipHello GossipHello;
scriptCallGOChooseReward GOChooseReward; scriptCallGOChooseReward GOChooseReward;

View file

@ -2551,3 +2551,17 @@ void World::UpdateMaxSessionCounters()
m_maxActiveSessionCount = std::max(m_maxActiveSessionCount,uint32(m_sessions.size()-m_QueuedPlayer.size())); m_maxActiveSessionCount = std::max(m_maxActiveSessionCount,uint32(m_sessions.size()-m_QueuedPlayer.size()));
m_maxQueuedSessionCount = std::max(m_maxQueuedSessionCount,uint32(m_QueuedPlayer.size())); m_maxQueuedSessionCount = std::max(m_maxQueuedSessionCount,uint32(m_QueuedPlayer.size()));
} }
void World::LoadDBVersion()
{
QueryResult* result = WorldDatabase.Query("SELECT version FROM db_version LIMIT 1");
if(result)
{
Field* fields = result->Fetch();
m_DBVersion = fields[0].GetString();
delete result;
}
else
m_DBVersion = "unknown world database";
}

View file

@ -449,6 +449,15 @@ class World
void UpdateRealmCharCount(uint32 accid); void UpdateRealmCharCount(uint32 accid);
LocaleConstant GetAvailableDbcLocale(LocaleConstant locale) const { if(m_availableDbcLocaleMask & (1 << locale)) return locale; else return m_defaultDbcLocale; } LocaleConstant GetAvailableDbcLocale(LocaleConstant locale) const { if(m_availableDbcLocaleMask & (1 << locale)) return locale; else return m_defaultDbcLocale; }
//used World DB version
void LoadDBVersion();
char const* GetDBVersion() { return m_DBVersion.c_str(); }
//used Script version
void SetScriptsVersion(char const* version) { m_ScriptsVersion = version ? version : "unknown scripting library"; }
char const* GetScriptsVersion() { return m_ScriptsVersion.c_str(); }
protected: protected:
void _UpdateGameTime(); void _UpdateGameTime();
void ScriptsProcess(); void ScriptsProcess();
@ -508,6 +517,10 @@ class World
//sessions that are added async //sessions that are added async
void AddSession_(WorldSession* s); void AddSession_(WorldSession* s);
ZThread::LockedQueue<WorldSession*, ZThread::FastMutex> addSessQueue; ZThread::LockedQueue<WorldSession*, ZThread::FastMutex> addSessQueue;
//used versions
std::string m_DBVersion;
std::string m_ScriptsVersion;
}; };
extern uint32 realmID; extern uint32 realmID;

View file

@ -458,17 +458,9 @@ bool Master::_StartDB()
///- Clean the database before starting ///- Clean the database before starting
clearOnlineAccounts(); clearOnlineAccounts();
QueryResult* result = WorldDatabase.Query("SELECT version FROM db_version LIMIT 1"); sWorld.LoadDBVersion();
if(result)
{
Field* fields = result->Fetch();
sLog.outString("Using %s", fields[0].GetString());
delete result;
}
else
sLog.outString("Using unknown world database.");
sLog.outString("Using %s", sWorld.GetDBVersion());
return true; return true;
} }