IW4M-Admin/Admin/Main.cs
RaidMax 7dfc2bbc1b I apparently initialized the commands for each server, which result in 114 commands being added. That is now fixed.
Hopefully this is the final fix for chat remaining on empty servers. (order matters!)
Configuration setting to allow multiple owners.
Fixed setlevel issues.
Organized Server class variables
2017-06-19 13:58:01 -04:00

127 lines
3.9 KiB
C#

#define USINGMEMORY
using System;
using System.Runtime.InteropServices;
using SharedLibrary;
using System.Threading.Tasks;
using System.IO;
namespace IW4MAdmin
{
class Program
{
static public double Version { get; private set; }
static private ApplicationManager ServerManager;
static void Main(string[] args)
{
Version = 1.3;
handler = new ConsoleEventDelegate(OnProcessExit);
SetConsoleCtrlHandler(handler, true);
double.TryParse(CheckUpdate(), out double latestVersion);
Console.WriteLine("=====================================================");
Console.WriteLine(" IW4M ADMIN");
Console.WriteLine(" by RaidMax ");
if (latestVersion != 0)
Console.WriteLine(" Version " + Version + " (latest " + latestVersion + ")");
else
Console.WriteLine(" Version " + Version + " (unable to retrieve latest)");
Console.WriteLine("=====================================================");
try
{
CheckDirectories();
ServerManager = ApplicationManager.GetInstance();
ServerManager.Init();
Task.Run(() =>
{
String userInput;
Player Origin = new Player("IW4MAdmin", "", -1, Player.Permission.Console, -1, "", 0, "");
do
{
userInput = Console.ReadLine();
if (userInput.ToLower() == "quit")
ServerManager.Stop();
if (ServerManager.Servers.Count == 0)
return;
Event E = new Event(Event.GType.Say, userInput, Origin, null, ServerManager.Servers[0]);
Origin.lastEvent = E;
ServerManager.Servers[0].ExecuteEvent(E);
Console.Write('>');
} while (ServerManager.Running);
});
}
catch(Exception e)
{
Console.WriteLine($"Fatal Error during initialization: {e.Message}");
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
return;
}
ServerManager.Start();
}
static ConsoleEventDelegate handler;
static private bool OnProcessExit(int e)
{
try
{
ServerManager.Stop();
return true;
}
catch
{
return true;
}
}
private delegate bool ConsoleEventDelegate(int eventType);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add);
static private String CheckUpdate()
{
//Connection Ver = new Connection("http://raidmax.org/IW4M/Admin/version.php");
//return Ver.Read();
return "0";
}
static void CheckDirectories()
{
if (!Directory.Exists("Lib"))
throw new Exception("Lib folder does not exist");
if (!Directory.Exists("Config"))
{
Console.WriteLine("Warning: Config folder does not exist");
Directory.CreateDirectory("Config");
}
if (!Directory.Exists("Config/Servers"))
Directory.CreateDirectory("Config/Servers");
if (!Directory.Exists("Logs"))
Directory.CreateDirectory("Logs");
if (!Directory.Exists("Database"))
Directory.CreateDirectory("Database");
if (!Directory.Exists("Plugins"))
Directory.CreateDirectory("Plugins");
}
}
}