mirror of
https://github.com/mangosfour/server.git
synced 2025-12-22 04:37:01 +00:00
[9886] Implement new commands for account search
* .lookup account email, .lookup account ip, .lookup account name * For new commands and for .lookup player versions use first arg as part of email/ip/name search * Use similar output format for player/account lists.
This commit is contained in:
parent
a3e61dc560
commit
080727cbfa
12 changed files with 249 additions and 113 deletions
|
|
@ -285,16 +285,25 @@ ChatCommand * ChatHandler::getCommandTable()
|
|||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
|
||||
static ChatCommand lookupAccountCommandTable[] =
|
||||
{
|
||||
{ "email", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupAccountEmailCommand, "", NULL },
|
||||
{ "ip", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupAccountIpCommand, "", NULL },
|
||||
{ "name", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupAccountNameCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
|
||||
static ChatCommand lookupPlayerCommandTable[] =
|
||||
{
|
||||
{ "ip", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupPlayerIpCommand, "", NULL },
|
||||
{ "account", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupPlayerAccountCommand, "", NULL },
|
||||
{ "email", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupPlayerEmailCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
{ "account", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupPlayerAccountCommand, "", NULL },
|
||||
{ "email", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupPlayerEmailCommand, "", NULL },
|
||||
{ "ip", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupPlayerIpCommand, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
|
||||
static ChatCommand lookupCommandTable[] =
|
||||
{
|
||||
{ "account", SEC_GAMEMASTER, true, NULL, "", lookupAccountCommandTable },
|
||||
{ "area", SEC_MODERATOR, true, &ChatHandler::HandleLookupAreaCommand, "", NULL },
|
||||
{ "creature", SEC_ADMINISTRATOR, true, &ChatHandler::HandleLookupCreatureCommand, "", NULL },
|
||||
{ "event", SEC_GAMEMASTER, true, &ChatHandler::HandleLookupEventCommand, "", NULL },
|
||||
|
|
|
|||
|
|
@ -233,6 +233,9 @@ class ChatHandler
|
|||
bool HandleListObjectCommand(const char* args);
|
||||
bool HandleListTalentsCommand(const char * args);
|
||||
|
||||
bool HandleLookupAccountEmailCommand(const char* args);
|
||||
bool HandleLookupAccountIpCommand(const char* args);
|
||||
bool HandleLookupAccountNameCommand(const char* args);
|
||||
bool HandleLookupAreaCommand(const char* args);
|
||||
bool HandleLookupCreatureCommand(const char* args);
|
||||
bool HandleLookupEventCommand(const char* args);
|
||||
|
|
@ -544,7 +547,9 @@ class ChatHandler
|
|||
|
||||
// Utility methods for commands
|
||||
void ShowTicket(uint64 guid, char const* text, char const* time);
|
||||
bool LookupPlayerSearchCommand(QueryResult* result, int32 limit);
|
||||
bool ShowAccountListHelper(QueryResult* result, uint32* limit = NULL, bool title = true, bool error = true);
|
||||
bool ShowPlayerListHelper(QueryResult* result, uint32* limit = NULL, bool title = true, bool error = true);
|
||||
bool LookupPlayerSearchCommand(QueryResult* result, uint32* limit = NULL);
|
||||
bool HandleBanListHelper(QueryResult* result);
|
||||
bool HandleBanHelper(BanMode mode,char const* args);
|
||||
bool HandleBanInfoHelper(uint32 accountid, char const* accountname);
|
||||
|
|
|
|||
|
|
@ -776,9 +776,9 @@ enum MangosStrings
|
|||
LANG_ACCOUNT_NOT_CREATED = 1008,
|
||||
LANG_CHARACTER_DELETED = 1009,
|
||||
LANG_ACCOUNT_LIST_HEADER = 1010,
|
||||
LANG_ACCOUNT_LIST_ERROR = 1011,
|
||||
// = 1011, not used
|
||||
LANG_ACCOUNT_LIST_BAR = 1012,
|
||||
LANG_ACCOUNT_LIST_LINE = 1013,
|
||||
LANG_ACCOUNT_LIST_LINE_CONSOLE = 1013,
|
||||
LANG_ACCOUNT_LIST_EMPTY = 1014,
|
||||
LANG_QUIT_WRONG_USE_ERROR = 1015,
|
||||
LANG_CHARACTER_DELETED_LIST_HEADER = 1016,
|
||||
|
|
@ -833,11 +833,12 @@ enum MangosStrings
|
|||
LANG_LIST_TALENTS_TITLE = 1135,
|
||||
LANG_LIST_TALENTS_COUNT = 1136,
|
||||
LANG_GO_LIST_CHAT = 1137,
|
||||
LANG_ACCOUNT_CHARACTERS_LIST_BAR = 1138,
|
||||
LANG_ACCOUNT_CHARACTERS_LIST_HEADER = 1139,
|
||||
LANG_ACCOUNT_CHARACTERS_LIST_LINE_CONSOLE = 1140,
|
||||
LANG_ACCOUNT_CHARACTERS_LIST_LINE_CHAT = 1141,
|
||||
// Room for more level 3 1142-1199 not used
|
||||
LANG_CHARACTERS_LIST_BAR = 1138,
|
||||
LANG_CHARACTERS_LIST_HEADER = 1139,
|
||||
LANG_CHARACTERS_LIST_LINE_CONSOLE = 1140,
|
||||
LANG_CHARACTERS_LIST_LINE_CHAT = 1141,
|
||||
LANG_ACCOUNT_LIST_LINE_CHAT = 1142,
|
||||
// Room for more level 3 1143-1199 not used
|
||||
|
||||
// Debug commands
|
||||
LANG_CINEMATIC_NOT_EXIST = 1200,
|
||||
|
|
|
|||
|
|
@ -4092,6 +4092,112 @@ bool ChatHandler::HandleLearnAllRecipesCommand(const char* args)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleLookupAccountEmailCommand(const char* args)
|
||||
{
|
||||
|
||||
if (!*args)
|
||||
return false;
|
||||
|
||||
std::string email = strtok ((char*)args, " ");
|
||||
char* limit_str = strtok (NULL, " ");
|
||||
uint32 limit = limit_str ? atoi (limit_str) : 100;
|
||||
|
||||
loginDatabase.escape_string (email);
|
||||
// 0 1 2 3 4
|
||||
QueryResult *result = loginDatabase.PQuery("SELECT id, username, last_ip, gmlevel, expansion FROM account WHERE email "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'"), email.c_str ());
|
||||
|
||||
return ShowAccountListHelper(result,&limit);
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleLookupAccountIpCommand(const char* args)
|
||||
{
|
||||
|
||||
if (!*args)
|
||||
return false;
|
||||
|
||||
std::string ip = strtok ((char*)args, " ");
|
||||
char* limit_str = strtok (NULL, " ");
|
||||
uint32 limit = limit_str ? atoi (limit_str) : 100;
|
||||
|
||||
loginDatabase.escape_string (ip);
|
||||
|
||||
// 0 1 2 3 4
|
||||
QueryResult *result = loginDatabase.PQuery("SELECT id, username, last_ip, gmlevel, expansion FROM account WHERE last_ip "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'"), ip.c_str ());
|
||||
|
||||
return ShowAccountListHelper(result,&limit);
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleLookupAccountNameCommand(const char* args)
|
||||
{
|
||||
if (!*args)
|
||||
return false;
|
||||
|
||||
std::string account = strtok ((char*)args, " ");
|
||||
char* limit_str = strtok (NULL, " ");
|
||||
uint32 limit = limit_str ? atoi (limit_str) : 100;
|
||||
|
||||
if (!AccountMgr::normalizeString (account))
|
||||
return false;
|
||||
|
||||
loginDatabase.escape_string (account);
|
||||
// 0 1 2 3 4
|
||||
QueryResult *result = loginDatabase.PQuery("SELECT id, username, last_ip, gmlevel, expansion FROM account WHERE username "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'"), account.c_str ());
|
||||
|
||||
return ShowAccountListHelper(result,&limit);
|
||||
}
|
||||
|
||||
bool ChatHandler::ShowAccountListHelper(QueryResult* result, uint32* limit, bool title, bool error)
|
||||
{
|
||||
if (!result)
|
||||
{
|
||||
if (error)
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_EMPTY);
|
||||
return true;
|
||||
}
|
||||
|
||||
///- Display the list of account/characters online
|
||||
if (!m_session && title) // not output header for online case
|
||||
{
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_BAR);
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_HEADER);
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_BAR);
|
||||
}
|
||||
|
||||
///- Circle through accounts
|
||||
do
|
||||
{
|
||||
// check limit
|
||||
if (limit)
|
||||
{
|
||||
if(*limit == 0)
|
||||
break;
|
||||
--*limit;
|
||||
}
|
||||
|
||||
Field *fields = result->Fetch();
|
||||
uint32 account = fields[0].GetUInt32();
|
||||
|
||||
WorldSession* session = sWorld.FindSession(account);
|
||||
Player* player = session ? session->GetPlayer() : NULL;
|
||||
char const* char_name = player ? player->GetName() : " - ";
|
||||
|
||||
if(m_session)
|
||||
PSendSysMessage(LANG_ACCOUNT_LIST_LINE_CHAT,
|
||||
account,fields[1].GetString(),char_name,fields[2].GetString(),fields[3].GetUInt32(),fields[4].GetUInt32());
|
||||
else
|
||||
PSendSysMessage(LANG_ACCOUNT_LIST_LINE_CONSOLE,
|
||||
account,fields[1].GetString(),char_name,fields[2].GetString(),fields[3].GetUInt32(),fields[4].GetUInt32());
|
||||
|
||||
}while(result->NextRow());
|
||||
|
||||
delete result;
|
||||
|
||||
if (!m_session) // not output header for online case
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_BAR);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleLookupPlayerIpCommand(const char* args)
|
||||
{
|
||||
|
||||
|
|
@ -4100,13 +4206,13 @@ bool ChatHandler::HandleLookupPlayerIpCommand(const char* args)
|
|||
|
||||
std::string ip = strtok ((char*)args, " ");
|
||||
char* limit_str = strtok (NULL, " ");
|
||||
int32 limit = limit_str ? atoi (limit_str) : -1;
|
||||
uint32 limit = limit_str ? atoi (limit_str) : 100;
|
||||
|
||||
loginDatabase.escape_string (ip);
|
||||
|
||||
QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE last_ip = '%s'", ip.c_str ());
|
||||
QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE last_ip "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'"), ip.c_str ());
|
||||
|
||||
return LookupPlayerSearchCommand (result,limit);
|
||||
return LookupPlayerSearchCommand (result,&limit);
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleLookupPlayerAccountCommand(const char* args)
|
||||
|
|
@ -4116,16 +4222,16 @@ bool ChatHandler::HandleLookupPlayerAccountCommand(const char* args)
|
|||
|
||||
std::string account = strtok ((char*)args, " ");
|
||||
char* limit_str = strtok (NULL, " ");
|
||||
int32 limit = limit_str ? atoi (limit_str) : -1;
|
||||
uint32 limit = limit_str ? atoi (limit_str) : 100;
|
||||
|
||||
if (!AccountMgr::normalizeString (account))
|
||||
return false;
|
||||
|
||||
loginDatabase.escape_string (account);
|
||||
|
||||
QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE username = '%s'", account.c_str ());
|
||||
QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE username "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'"), account.c_str ());
|
||||
|
||||
return LookupPlayerSearchCommand (result,limit);
|
||||
return LookupPlayerSearchCommand (result,&limit);
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleLookupPlayerEmailCommand(const char* args)
|
||||
|
|
@ -4136,57 +4242,57 @@ bool ChatHandler::HandleLookupPlayerEmailCommand(const char* args)
|
|||
|
||||
std::string email = strtok ((char*)args, " ");
|
||||
char* limit_str = strtok (NULL, " ");
|
||||
int32 limit = limit_str ? atoi (limit_str) : -1;
|
||||
uint32 limit = limit_str ? atoi (limit_str) : 100;
|
||||
|
||||
loginDatabase.escape_string (email);
|
||||
|
||||
QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE email = '%s'", email.c_str ());
|
||||
QueryResult* result = loginDatabase.PQuery ("SELECT id,username FROM account WHERE email "_LIKE_" "_CONCAT3_("'%%'","'%s'","'%%'"), email.c_str ());
|
||||
|
||||
return LookupPlayerSearchCommand (result,limit);
|
||||
return LookupPlayerSearchCommand (result,&limit);
|
||||
}
|
||||
|
||||
bool ChatHandler::LookupPlayerSearchCommand(QueryResult* result, int32 limit)
|
||||
bool ChatHandler::LookupPlayerSearchCommand(QueryResult* result, uint32* limit)
|
||||
{
|
||||
if(!result)
|
||||
if (!result)
|
||||
{
|
||||
PSendSysMessage(LANG_NO_PLAYERS_FOUND);
|
||||
SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
int i =0;
|
||||
uint32 limit_original = limit ? *limit : 100;
|
||||
|
||||
uint32 limit_local = limit_original;
|
||||
|
||||
if (!limit)
|
||||
limit = &limit_local;
|
||||
|
||||
do
|
||||
{
|
||||
if (limit && *limit == 0)
|
||||
break;
|
||||
|
||||
Field* fields = result->Fetch();
|
||||
uint32 acc_id = fields[0].GetUInt32();
|
||||
std::string acc_name = fields[1].GetCppString();
|
||||
|
||||
QueryResult* chars = CharacterDatabase.PQuery("SELECT guid,name FROM characters WHERE account = '%u'", acc_id);
|
||||
if(chars)
|
||||
///- Get the characters for account id
|
||||
QueryResult *chars = CharacterDatabase.PQuery( "SELECT guid, name, race, class, level FROM characters WHERE account = %u", acc_id);
|
||||
if (chars)
|
||||
{
|
||||
PSendSysMessage(LANG_LOOKUP_PLAYER_ACCOUNT,acc_name.c_str(),acc_id);
|
||||
|
||||
uint64 guid = 0;
|
||||
std::string name;
|
||||
|
||||
do
|
||||
if (chars->GetRowCount())
|
||||
{
|
||||
Field* charfields = chars->Fetch();
|
||||
guid = charfields[0].GetUInt64();
|
||||
name = charfields[1].GetCppString();
|
||||
|
||||
PSendSysMessage(LANG_LOOKUP_PLAYER_CHARACTER,name.c_str(),guid);
|
||||
++i;
|
||||
|
||||
} while( chars->NextRow() && ( limit == -1 || i < limit ) );
|
||||
|
||||
delete chars;
|
||||
PSendSysMessage(LANG_LOOKUP_PLAYER_ACCOUNT,acc_name.c_str(),acc_id);
|
||||
ShowPlayerListHelper(chars,limit,true,false);
|
||||
}
|
||||
else
|
||||
delete chars;
|
||||
}
|
||||
} while(result->NextRow());
|
||||
|
||||
delete result;
|
||||
|
||||
if(i==0) // empty accounts only
|
||||
if (*limit==limit_original) // empty accounts only
|
||||
{
|
||||
PSendSysMessage(LANG_NO_PLAYERS_FOUND);
|
||||
SetSentErrorMessage(true);
|
||||
|
|
|
|||
|
|
@ -6136,24 +6136,23 @@ bool ChatHandler::HandleServerSetMotdCommand(const char* args)
|
|||
return true;
|
||||
}
|
||||
|
||||
/// Output list of character for account
|
||||
bool ChatHandler::HandleAccountCharactersCommand(const char* args)
|
||||
bool ChatHandler::ShowPlayerListHelper(QueryResult* result, uint32* limit, bool title, bool error)
|
||||
{
|
||||
///- Get the command line arguments
|
||||
std::string account_name;
|
||||
Player* target = NULL; // only for triggering use targeted player account
|
||||
uint32 account_id = extractAccountId((char*)args, &account_name, &target);
|
||||
if (!account_id )
|
||||
return false;
|
||||
|
||||
///- Get the characters for account id
|
||||
QueryResult *result = CharacterDatabase.PQuery( "SELECT guid, name, race, class, level FROM characters WHERE account = %u", account_id);
|
||||
|
||||
if (!m_session)
|
||||
if (!result)
|
||||
{
|
||||
SendSysMessage(LANG_ACCOUNT_CHARACTERS_LIST_BAR);
|
||||
SendSysMessage(LANG_ACCOUNT_CHARACTERS_LIST_HEADER);
|
||||
SendSysMessage(LANG_ACCOUNT_CHARACTERS_LIST_BAR);
|
||||
if (error)
|
||||
{
|
||||
PSendSysMessage(LANG_NO_PLAYERS_FOUND);
|
||||
SetSentErrorMessage(true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!m_session && title)
|
||||
{
|
||||
SendSysMessage(LANG_CHARACTERS_LIST_BAR);
|
||||
SendSysMessage(LANG_CHARACTERS_LIST_HEADER);
|
||||
SendSysMessage(LANG_CHARACTERS_LIST_BAR);
|
||||
}
|
||||
|
||||
if (result)
|
||||
|
|
@ -6161,6 +6160,14 @@ bool ChatHandler::HandleAccountCharactersCommand(const char* args)
|
|||
///- Circle through them. Display username and GM level
|
||||
do
|
||||
{
|
||||
// check limit
|
||||
if (limit)
|
||||
{
|
||||
if(*limit == 0)
|
||||
break;
|
||||
--*limit;
|
||||
}
|
||||
|
||||
Field *fields = result->Fetch();
|
||||
uint32 guid = fields[0].GetUInt32();
|
||||
std::string name = fields[1].GetCppString();
|
||||
|
|
@ -6175,9 +6182,9 @@ bool ChatHandler::HandleAccountCharactersCommand(const char* args)
|
|||
char const* class_name = classEntry ? classEntry->name[GetSessionDbcLocale()] : "<?>";
|
||||
|
||||
if (!m_session)
|
||||
PSendSysMessage(LANG_ACCOUNT_CHARACTERS_LIST_LINE_CONSOLE, guid, name.c_str(), race_name, class_name, level);
|
||||
PSendSysMessage(LANG_CHARACTERS_LIST_LINE_CONSOLE, guid, name.c_str(), race_name, class_name, level);
|
||||
else
|
||||
PSendSysMessage(LANG_ACCOUNT_CHARACTERS_LIST_LINE_CHAT, guid, name.c_str(), name.c_str(), race_name, class_name, level);
|
||||
PSendSysMessage(LANG_CHARACTERS_LIST_LINE_CHAT, guid, name.c_str(), name.c_str(), race_name, class_name, level);
|
||||
|
||||
}while( result->NextRow() );
|
||||
|
||||
|
|
@ -6185,11 +6192,28 @@ bool ChatHandler::HandleAccountCharactersCommand(const char* args)
|
|||
}
|
||||
|
||||
if (!m_session)
|
||||
SendSysMessage(LANG_ACCOUNT_CHARACTERS_LIST_BAR);
|
||||
SendSysMessage(LANG_CHARACTERS_LIST_BAR);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/// Output list of character for account
|
||||
bool ChatHandler::HandleAccountCharactersCommand(const char* args)
|
||||
{
|
||||
///- Get the command line arguments
|
||||
std::string account_name;
|
||||
Player* target = NULL; // only for triggering use targeted player account
|
||||
uint32 account_id = extractAccountId((char*)args, &account_name, &target);
|
||||
if (!account_id )
|
||||
return false;
|
||||
|
||||
///- Get the characters for account id
|
||||
QueryResult *result = CharacterDatabase.PQuery( "SELECT guid, name, race, class, level FROM characters WHERE account = %u", account_id);
|
||||
|
||||
return ShowPlayerListHelper(result);
|
||||
}
|
||||
|
||||
/// Set/Unset the expansion level for an account
|
||||
bool ChatHandler::HandleAccountSetAddonCommand(const char* args)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -476,50 +476,16 @@ bool ChatHandler::HandleServerExitCommand(const char* /*args*/)
|
|||
}
|
||||
|
||||
/// Display info on users currently in the realm
|
||||
bool ChatHandler::HandleAccountOnlineListCommand(const char* /*args*/)
|
||||
bool ChatHandler::HandleAccountOnlineListCommand(const char* args)
|
||||
{
|
||||
char* limit_str = *args ? strtok((char*)args, " ") : NULL;
|
||||
uint32 limit = limit_str ? atoi (limit_str) : 100;
|
||||
|
||||
///- Get the list of accounts ID logged to the realm
|
||||
QueryResult *resultDB = CharacterDatabase.Query("SELECT name,account FROM characters WHERE online > 0");
|
||||
if (!resultDB)
|
||||
{
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_EMPTY);
|
||||
return true;
|
||||
}
|
||||
// 0 1 2 3 4
|
||||
QueryResult *result = loginDatabase.PQuery("SELECT id, username, last_ip, gmlevel, expansion FROM account WHERE realm = %u", realmID);
|
||||
|
||||
///- Display the list of account/characters online
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_BAR);
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_HEADER);
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_BAR);
|
||||
|
||||
///- Circle through accounts
|
||||
do
|
||||
{
|
||||
Field *fieldsDB = resultDB->Fetch();
|
||||
std::string name = fieldsDB[0].GetCppString();
|
||||
uint32 account = fieldsDB[1].GetUInt32();
|
||||
|
||||
///- Get the username, last IP and GM level of each account
|
||||
// No SQL injection. account is uint32.
|
||||
// 0 1 2 3
|
||||
QueryResult *resultLogin = loginDatabase.PQuery("SELECT username, last_ip, gmlevel, expansion FROM account WHERE id = '%u'",account);
|
||||
|
||||
if(resultLogin)
|
||||
{
|
||||
Field *fieldsLogin = resultLogin->Fetch();
|
||||
PSendSysMessage(LANG_ACCOUNT_LIST_LINE,
|
||||
fieldsLogin[0].GetString(),name.c_str(),fieldsLogin[1].GetString(),fieldsLogin[2].GetUInt32(),fieldsLogin[3].GetUInt32());
|
||||
|
||||
delete resultLogin;
|
||||
}
|
||||
else
|
||||
PSendSysMessage(LANG_ACCOUNT_LIST_ERROR,name.c_str());
|
||||
|
||||
}while(resultDB->NextRow());
|
||||
|
||||
delete resultDB;
|
||||
|
||||
SendSysMessage(LANG_ACCOUNT_LIST_BAR);
|
||||
return true;
|
||||
return ShowAccountListHelper(result,&limit);
|
||||
}
|
||||
|
||||
/// Create an account
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "9885"
|
||||
#define REVISION_NR "9886"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef __REVISION_SQL_H__
|
||||
#define __REVISION_SQL_H__
|
||||
#define REVISION_DB_CHARACTERS "required_9849_01_characters_saved_variables"
|
||||
#define REVISION_DB_MANGOS "required_9883_01_mangos_scripts"
|
||||
#define REVISION_DB_MANGOS "required_9886_02_mangos_command"
|
||||
#define REVISION_DB_REALMD "required_9748_01_realmd_realmlist"
|
||||
#endif // __REVISION_SQL_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue