diff --git a/NovetusLauncher/.vs/NovetusLauncher/v14/.suo b/NovetusLauncher/.vs/NovetusLauncher/v14/.suo
index 86a049b..fb41a01 100644
Binary files a/NovetusLauncher/.vs/NovetusLauncher/v14/.suo and b/NovetusLauncher/.vs/NovetusLauncher/v14/.suo differ
diff --git a/NovetusLauncher/NovetusCMD/CommandLineArguments.cs b/NovetusLauncher/NovetusCMD/CommandLineArguments.cs
new file mode 100644
index 0000000..56e155b
--- /dev/null
+++ b/NovetusLauncher/NovetusCMD/CommandLineArguments.cs
@@ -0,0 +1,114 @@
+using System.Collections.Specialized;
+using System.Text.RegularExpressions;
+
+namespace NovetusCMD
+{
+ public class CommandLineArguments
+ {
+ //credit to GriffonRL on codeproject
+ ///
+ /// Arguments class
+ ///
+ public class Arguments
+ {
+ // Variables
+ private StringDictionary Parameters;
+
+ // Constructor
+ public Arguments(string[] Args)
+ {
+ Parameters = new StringDictionary();
+ Regex Spliter = new Regex(@"^-{1,2}|^/|=|:",
+ RegexOptions.IgnoreCase | RegexOptions.Compiled);
+
+ Regex Remover = new Regex(@"^['""]?(.*?)['""]?$",
+ RegexOptions.IgnoreCase | RegexOptions.Compiled);
+
+ string Parameter = null;
+ string[] Parts;
+
+ // Valid parameters forms:
+ // {-,/,--}param{ ,=,:}((",')value(",'))
+ // Examples:
+ // -param1 value1 --param2 /param3:"Test-:-work"
+ // /param4=happy -param5 '--=nice=--'
+ foreach (string Txt in Args)
+ {
+ // Look for new parameters (-,/ or --) and a
+ // possible enclosed value (=,:)
+ Parts = Spliter.Split(Txt, 3);
+
+ switch (Parts.Length)
+ {
+ // Found a value (for the last parameter
+ // found (space separator))
+ case 1:
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ {
+ Parts[0] =
+ Remover.Replace(Parts[0], "$1");
+
+ Parameters.Add(Parameter, Parts[0]);
+ }
+ Parameter = null;
+ }
+ // else Error: no parameter waiting for a value (skipped)
+ break;
+
+ // Found just a parameter
+ case 2:
+ // The last parameter is still waiting.
+ // With no value, set it to true.
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ Parameters.Add(Parameter, "true");
+ }
+ Parameter = Parts[1];
+ break;
+
+ // Parameter with enclosed value
+ case 3:
+ // The last parameter is still waiting.
+ // With no value, set it to true.
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ Parameters.Add(Parameter, "true");
+ }
+
+ Parameter = Parts[1];
+
+ // Remove possible enclosing characters (",')
+ if (!Parameters.ContainsKey(Parameter))
+ {
+ Parts[2] = Remover.Replace(Parts[2], "$1");
+ Parameters.Add(Parameter, Parts[2]);
+ }
+
+ Parameter = null;
+ break;
+ }
+ }
+ // In case a parameter is still waiting
+ if (Parameter != null)
+ {
+ if (!Parameters.ContainsKey(Parameter))
+ Parameters.Add(Parameter, "true");
+ }
+ }
+
+ // Retrieve a parameter value if it exists
+ // (overriding C# indexer property)
+ public string this[string Param]
+ {
+ get
+ {
+ return (Parameters[Param]);
+ }
+ }
+ }
+ }
+}
diff --git a/NovetusLauncher/NovetusCMD/NovetusCMD.csproj b/NovetusLauncher/NovetusCMD/NovetusCMD.csproj
index f02a261..ec5beeb 100644
--- a/NovetusLauncher/NovetusCMD/NovetusCMD.csproj
+++ b/NovetusLauncher/NovetusCMD/NovetusCMD.csproj
@@ -75,6 +75,7 @@
+
diff --git a/NovetusLauncher/NovetusCMD/Program.cs b/NovetusLauncher/NovetusCMD/Program.cs
index d3dcdf6..5727d64 100644
--- a/NovetusLauncher/NovetusCMD/Program.cs
+++ b/NovetusLauncher/NovetusCMD/Program.cs
@@ -8,10 +8,9 @@
*/
using System;
using Mono.Nat;
-
using System.Diagnostics;
using System.IO;
-
+using static NovetusCMD.CommandLineArguments;
namespace NovetusCMD
{
@@ -196,43 +195,88 @@ namespace NovetusCMD
public static void Main(string[] args)
{
bool StartInNo3D = false;
-
- if (args.Length == 0)
+ bool OverrideINI = false;
+
+ if (args.Length == 0)
{
- ConsolePrint("WARNING 1 - NovetusCMD will launch the server in 3D mode. To launch the server in No3D mode, add -no3d as a command line argument.", 5);
- }
+ ConsolePrint("Help: Command Line Arguments", 3);
+ ConsolePrint("---------", 1);
+ ConsolePrint("-no3d | Launches server in NoGraphics mode", 3);
+ ConsolePrint("-overrideconfig | Override the launcher settings.", 3);
+ ConsolePrint("-overrideconfig must be added in order for the below commands to function.", 5);
+ ConsolePrint("-upnp | Turns on UPnP.", 4);
+ ConsolePrint("-map