90 lines
3.5 KiB
C#
90 lines
3.5 KiB
C#
using System;
|
|
|
|
namespace MSCO
|
|
{
|
|
/// <summary>
|
|
/// Alle MSCO-Befehle an einer Stelle - genutzt von der eigenen F8-Konsole (ohne "mp" davor)
|
|
/// und von der MSCLoader-Konsole ("mp ...").
|
|
/// </summary>
|
|
public static class Commands
|
|
{
|
|
public const string Help =
|
|
"connect <host[:port]> - join a dedicated server\n" +
|
|
"disconnect - leave the server / game\n" +
|
|
"host [port] / join <ip> [port] - LAN test session\n" +
|
|
"save - save the game (host / singleplayer)\n" +
|
|
"/admin - admin menu (kick / ban)\n" +
|
|
"vehicles | rig - debug info about vehicles / player models\n" +
|
|
"debug - toggle sync debug output\n" +
|
|
"master [url] - show / change the server list address\n" +
|
|
"clear - clear this console";
|
|
|
|
public static void Execute(string[] args, Action<string> print)
|
|
{
|
|
var mp = MultiplayerManager.Instance;
|
|
if (mp == null) { print("Not ready yet"); return; }
|
|
if (args.Length == 0) { print(Help); return; }
|
|
|
|
int port = MultiplayerManager.DefaultPort;
|
|
switch (args[0].ToLower())
|
|
{
|
|
case "help":
|
|
case "?":
|
|
print(Help);
|
|
break;
|
|
case "host":
|
|
if (args.Length > 1) int.TryParse(args[1], out port);
|
|
mp.Host(port);
|
|
break;
|
|
case "join":
|
|
if (args.Length < 2) { print("join <ip> [port]"); return; }
|
|
if (args.Length > 2) int.TryParse(args[2], out port);
|
|
mp.Join(args[1], port);
|
|
break;
|
|
case "stop":
|
|
case "disconnect":
|
|
case "quit":
|
|
mp.Disconnect();
|
|
print("Disconnected.");
|
|
break;
|
|
case "connect":
|
|
{
|
|
string host;
|
|
int serverPort;
|
|
if (args.Length < 2 || !ServerBrowser.TryParseAddress(args[1], out host, out serverPort))
|
|
{
|
|
print("connect <host[:port]>");
|
|
return;
|
|
}
|
|
mp.JoinServer(host, serverPort);
|
|
break;
|
|
}
|
|
case "master":
|
|
if (args.Length > 1) ServerBrowser.MasterUrl = args[1];
|
|
print("Master server: " + ServerBrowser.MasterUrl);
|
|
break;
|
|
case "save":
|
|
mp.SaveGame();
|
|
break;
|
|
case "admin":
|
|
case "/admin":
|
|
mp.OpenAdminMenu();
|
|
break;
|
|
case "rig":
|
|
foreach (string line in mp.DescribeRigs()) print(line);
|
|
break;
|
|
case "vehicles":
|
|
foreach (string line in mp.DescribeVehicles()) print(line);
|
|
break;
|
|
case "debug":
|
|
FsmSync.Debug = !FsmSync.Debug;
|
|
print("Sync debug output " + (FsmSync.Debug ? "ON" : "OFF"));
|
|
break;
|
|
default:
|
|
print("Unknown command '" + args[0] + "' - type 'help'");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|