private void ShowLastLoginTime(uint PlayerObject, string Name)
{
//
// Run the database lookups in the query thread and respond in an
// asynchronous fashion.
//
GetDatabase().ACR_IncrementStatistic("SHOW_LAST_LOGIN_TIME");
WorldManager.SignalQueryThreadAction(delegate(IALFADatabase Database)
{
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;
}
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`.`LastLogin` FROM `players` WHERE `ID` = {0}",
PlayerId));
if (Database.ACR_SQLFetch() == false)
{
Message = "Internal error querying database.";
}
else
{
Message = String.Format("{0} last logged in at {1}.", PlayerName, Database.ACR_SQLGetData(0));
}
lock (WorldManager)
{
WorldManager.EnqueueMessageToPlayer(PlayerObject, Message);
}
});
WorldManager.SignalIPCEventWakeup();
}