muddesigner/MudGame/Scripts/AdminCommands/CommandRestart.cs
Scionwest_cp eff71f38cd Moved CommandRestart, CommandLogin and CommandSaveWorld from the MudEngine project into the MudGame project within the Scripts directory.
Now 3rd party users can see how restarting the server takes place, saving the world and logging into the game world.

CommandEditRealm, EditRoom and EditZone was deleted.  They will be re-built at a later date.  For the time being, use the pre-built example scripts within the MudGame project.
2011-09-27 19:27:42 -07:00

37 lines
No EOL
1.6 KiB
C#

public class CommandRestart : BaseCommand
{
public CommandRestart()
{
Help.Add("Restarts the game server.");
}
public override void Execute(String command, BaseCharacter player)
{
if (player.Role == SecurityRoles.Admin)
{
String path = player.ActiveGame.DataPaths.Players;
for (Int32 i = 0; i < player.ActiveGame.GetPlayerCollection().Length; i++)
{
String filename = Path.Combine(path, player.ActiveGame.GetPlayerCollection()[i].Filename);
player.ActiveGame.GetPlayerCollection()[i].Save();
}
//player.ActiveGame.Server.EndServer(); //-Handled in Game.Shutdown() below.
player.ActiveGame.Shutdown();
player.ActiveGame.Start();
/* Game.Start() calls this, do we need a reference to the GetPlayerCollection()?
* They should be unloaded anyway and re-loaded during game.start to force a clean restart of all objects.
player.ActiveGame.Server.Initialize(555, ref player.ActiveGame.GetPlayerCollection());
*/
Log.Write("Server Restart Completed.");
//This is never printed as CommandResults is no longer outputted to the player console, player.Send is used
player.Send("Server Restarted.");
return;
}
player.Send("Access Denied.");
}
}
}