private void ShowRecordData(uint PlayerObject, string Name)
{
//
// Run the database lookups in the query thread and respond in an
// asynchronous fashion.
//
GetDatabase().ACR_IncrementStatistic("SHOW_RECORD_DATA");
WorldManager.SignalQueryThreadAction(delegate(IALFADatabase Database)
{
int CharacterId = 0;
int PlayerId = 0;
string Message;
string PlayerName = null;
lock (WorldManager)
{
GamePlayer Player;
GameCharacter Character;
Player = WorldManager.ReferencePlayerByName(Name, Database);
if (Player == null)
{
Character = WorldManager.ReferenceCharacterByName(Name, Database);
if (Character != null)
{
Player = Character.Player;
CharacterId = Character.CharacterId;
}
}
if (Player == null)
{
WorldManager.EnqueueMessageToPlayer(PlayerObject, String.Format(
"{0} is not a recognized player or character name.", Name));
return;
}
PlayerId = Player.PlayerId;
PlayerName = Player.Name;
}
Database.ACR_SQLQuery(String.Format(
"SELECT `players`.`FirstLogin`, " +
"`players`.`LastLogin`, " +
"`players`.`LastLogout`, " +
"`players`.`Logins`, " +
"`players`.`TimeOnline`, " +
"`players`.`IsMember` " +
"FROM `players` WHERE `ID` = {0}",
PlayerId));
if (Database.ACR_SQLFetch() == false)
{
Message = "Internal error querying database.";
}
else
{
Message = String.Format(
"-- Recorddata for player {0} --\n" +
"ID: {1}\n" +
"First Login: {2}\n" +
"Last Login: {3}\n" +
"Last Logout: {4}\n" +
"Logins: {5}\n" +
"TimeOnline: {6}\n" +
"IsMember: {7}",
PlayerName,
PlayerId,
Database.ACR_SQLGetData(0),
Database.ACR_SQLGetData(1),
Database.ACR_SQLGetData(2),
Database.ACR_SQLGetData(3),
Database.ACR_SQLGetData(4),
Database.ACR_SQLGetData(5));
}
if (CharacterId != 0)
{
Database.ACR_SQLQuery(String.Format(
"SELECT " +
"`characters`.`IsDeleted`, " +
"`characters`.`CharacterFileName`, " +
"`characters`.`RetiredStatus`, " +
"`characters`.`AcrVersion` " +
"FROM `characters` WHERE `ID` = {0}",
CharacterId));
if (Database.ACR_SQLFetch() == false)
{
Message += "\nInternal error querying database.";
}
else
{
Message += String.Format(
"\n-- Recorddata for character {0} --\n" +
"ID: {1}\n" +
"IsDeleted: {2}\n" +
"CharacterFileName: {3}\n" +
"RetiredStatus: {4}\n" +
"AcrVersion: {5}\n",
Name,
CharacterId,
Database.ACR_SQLGetData(0),
Database.ACR_SQLGetData(1),
Database.ACR_SQLGetData(2),
Database.ACR_SQLGetData(3));
}
}
lock (WorldManager)
{
WorldManager.EnqueueMessageToPlayer(PlayerObject, Message);
}
});
WorldManager.SignalIPCEventWakeup();
}