novetus development is getting back on track!

This commit is contained in:
Bitl 2020-09-03 12:37:25 -07:00
parent 4c984ee5ed
commit ebba6ca013
20 changed files with 490 additions and 382 deletions

View File

@ -94,12 +94,15 @@
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>SET path=$(SolutionDir)build <PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25" if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\* SET path2=%25path%25\ClientScriptTester
del "%25path%25"\*.vshost.exe if not exist "%25path2%25" mkdir "%25path2%25"
del "%25path%25"\*.vshost.exe.config copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\*.vshost.exe.manifest del "%25path%25"\$(TargetName).vshost.exe
del "%25path%25"\*.xml del "%25path%25"\$(TargetName).vshost.exe.config
if not exist "%25path%25"\clients\ClientScriptTester mkdir "%25path%25"\clients\ClientScriptTester del "%25path%25"\$(TargetName).vshost.exe.manifest
move "%25path%25"\* "%25path%25"\clients\ClientScriptTester</PostBuildEvent> del "%25path%25"\$(TargetName).xml
if not exist "%25path%25"\bin mkdir "%25path%25"\clients\ClientScriptTester
move "%25path2%25"\* "%25path%25"\clients\ClientScriptTester
rd /s /q "%25path2%25"</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -56,9 +56,9 @@
<PostBuildEvent>SET path=$(SolutionDir)build <PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25" if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\* copy $(ProjectDir)$(OutDir) "%25path%25"\*
del "%25path%25"\*.vshost.exe del "%25path%25"\$(TargetName).vshost.exe
del "%25path%25"\*.vshost.exe.config del "%25path%25"\$(TargetName).vshost.exe.config
del "%25path%25"\*.vshost.exe.manifest del "%25path%25"\$(TargetName).vshost.exe.manifest
del "%25path%25"\*.xml</PostBuildEvent> del "%25path%25"\$(TargetName).xml</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -24,18 +24,16 @@ namespace NovetusCMD
GlobalFuncs.ConsolePrint("-no3d | Launches server in NoGraphics mode", 4, true); GlobalFuncs.ConsolePrint("-no3d | Launches server in NoGraphics mode", 4, true);
GlobalFuncs.ConsolePrint("-script <path to script> | Loads an additional server script.", 4, true); GlobalFuncs.ConsolePrint("-script <path to script> | Loads an additional server script.", 4, true);
GlobalFuncs.ConsolePrint("-outputinfo | Outputs all information about the running server to a text file.", 4, true); GlobalFuncs.ConsolePrint("-outputinfo | Outputs all information about the running server to a text file.", 4, true);
GlobalFuncs.ConsolePrint("-overrideconfig | Override the launcher settings.", 4, true);
GlobalFuncs.ConsolePrint("-debug | Disables launching of the server for debugging purposes.", 4, true); GlobalFuncs.ConsolePrint("-debug | Disables launching of the server for debugging purposes.", 4, true);
GlobalFuncs.ConsolePrint("-nowebserver | Disables launching of the web server.", 4, true);
GlobalFuncs.ConsolePrint("---------", 1, true); GlobalFuncs.ConsolePrint("---------", 1, true);
GlobalFuncs.ConsolePrint("Custom server options", 3, true); GlobalFuncs.ConsolePrint("Custom server options", 3, true);
GlobalFuncs.ConsolePrint("---------", 1, true); GlobalFuncs.ConsolePrint("---------", 1, true);
GlobalFuncs.ConsolePrint("-overrideconfig must be added in order for the below commands to function.", 5, true);
GlobalFuncs.ConsolePrint("-upnp | Turns on UPnP.", 4, true); GlobalFuncs.ConsolePrint("-upnp | Turns on UPnP.", 4, true);
GlobalFuncs.ConsolePrint("-map <map filename> | Sets the map.", 4, true); GlobalFuncs.ConsolePrint("-map <map filename> | Sets the map.", 4, true);
GlobalFuncs.ConsolePrint("-client <client name> | Sets the client.", 4, true); GlobalFuncs.ConsolePrint("-client <client name> | Sets the client.", 4, true);
GlobalFuncs.ConsolePrint("-port <port number> | Sets the server port.", 4, true); GlobalFuncs.ConsolePrint("-port <port number> | Sets the server port.", 4, true);
GlobalFuncs.ConsolePrint("-maxplayers <number of players> | Sets the number of players.", 4, true); GlobalFuncs.ConsolePrint("-maxplayers <number of players> | Sets the number of players.", 4, true);
GlobalFuncs.ConsolePrint("-webserver <true/false> | Toggles launching of the web server.", 4, true);
GlobalFuncs.ConsolePrint("---------", 1, true); GlobalFuncs.ConsolePrint("---------", 1, true);
GlobalFuncs.ConsolePrint("How to launch:", 3, true); GlobalFuncs.ConsolePrint("How to launch:", 3, true);
GlobalFuncs.ConsolePrint("---------", 1, true); GlobalFuncs.ConsolePrint("---------", 1, true);

View File

@ -6,7 +6,6 @@
public static bool StartInNo3D = false; public static bool StartInNo3D = false;
public static bool OverrideINI = false; public static bool OverrideINI = false;
public static bool DebugMode = false; public static bool DebugMode = false;
public static bool NoWebServer = false;
public static bool PrintHelp = false; public static bool PrintHelp = false;
} }
#endregion #endregion

View File

@ -156,13 +156,16 @@
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>SET path=$(SolutionDir)build <PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25" if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\* SET path2=%25path%25\CMD
del "%25path%25"\*.vshost.exe if not exist "%25path2%25" mkdir "%25path2%25"
del "%25path%25"\*.vshost.exe.config copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\*.vshost.exe.manifest del "%25path%25"\$(TargetName).vshost.exe
del "%25path%25"\*.xml del "%25path%25"\$(TargetName).vshost.exe.config
del "%25path%25"\$(TargetName).vshost.exe.manifest
del "%25path%25"\$(TargetName).xml
if not exist "%25path%25"\bin mkdir "%25path%25"\bin if not exist "%25path%25"\bin mkdir "%25path%25"\bin
move "%25path%25"\* "%25path%25"\bin</PostBuildEvent> move "%25path2%25"\* "%25path%25"\bin
rd /s /q "%25path2%25"</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''"> <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">

View File

@ -69,8 +69,8 @@ namespace NovetusCMD
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3); GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort); StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort); StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Udp, GlobalVars.WebServerPort); StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort); StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -86,8 +86,8 @@ namespace NovetusCMD
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3); GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort); StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort); StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Udp, GlobalVars.WebServerPort); StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort); StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -103,7 +103,7 @@ namespace NovetusCMD
{ {
try try
{ {
GlobalVars.WebServer = new SimpleHTTPServer(GlobalPaths.DataPath, GlobalVars.WebServerPort); GlobalVars.WebServer = new SimpleHTTPServer(GlobalPaths.DataPath, GlobalVars.UserConfiguration.WebServerPort);
GlobalFuncs.ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3); GlobalFuncs.ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3);
} }
catch (Exception ex) catch (Exception ex)
@ -174,89 +174,7 @@ namespace NovetusCMD
log.Error("FOOTPRINTS: " + (!string.IsNullOrWhiteSpace(eventArgs.Exception.GetExceptionFootprints()) ? eventArgs.Exception.GetExceptionFootprints() : "N/A")); log.Error("FOOTPRINTS: " + (!string.IsNullOrWhiteSpace(eventArgs.Exception.GetExceptionFootprints()) ? eventArgs.Exception.GetExceptionFootprints() : "N/A"));
}; };
if (args.Length > 0) LoadCMDArgs(args);
{
CommandLineArguments.Arguments CommandLine = new CommandLineArguments.Arguments(args);
if (CommandLine["help"] != null)
{
LocalVars.PrintHelp = true;
}
if (CommandLine["no3d"] != null)
{
LocalVars.StartInNo3D = true;
GlobalFuncs.ConsolePrint("NovetusCMD will now launch the server in No3D mode.", 4);
}
if (CommandLine["overrideconfig"] != null)
{
LocalVars.OverrideINI = true;
GlobalFuncs.ConsolePrint("NovetusCMD will no longer grab values from the INI file.", 4);
if (CommandLine["upnp"] != null)
{
GlobalVars.UserConfiguration.UPnP = true;
GlobalFuncs.ConsolePrint("NovetusCMD will now use UPnP for port forwarding.", 4);
}
if (CommandLine["map"] != null)
{
GlobalVars.UserConfiguration.MapPath = CommandLine["map"];
}
else
{
GlobalFuncs.ConsolePrint("NovetusCMD will launch the server with the default map.", 4);
}
if (CommandLine["client"] != null)
{
GlobalVars.UserConfiguration.SelectedClient = CommandLine["client"];
}
else
{
GlobalFuncs.ConsolePrint("NovetusCMD will launch the server with the default client.", 4);
}
if (CommandLine["port"] != null)
{
GlobalVars.UserConfiguration.RobloxPort = Convert.ToInt32(CommandLine["port"]);
}
if (CommandLine["maxplayers"] != null)
{
GlobalVars.UserConfiguration.PlayerLimit = Convert.ToInt32(CommandLine["maxplayers"]);
}
}
if (CommandLine["outputinfo"] != null)
{
GlobalVars.RequestToOutputInfo = true;
}
if (CommandLine["debug"] != null)
{
LocalVars.DebugMode = true;
}
if (CommandLine["nowebserver"] != null)
{
LocalVars.NoWebServer = true;
}
if (CommandLine["script"] != null)
{
if (CommandLine["script"].Contains("rbxasset:") || CommandLine["script"].Contains("http:"))
{
GlobalPaths.AddonScriptPath = CommandLine["script"].Replace(@"\", @"\\");
GlobalFuncs.ConsolePrint("NovetusCMD detected a custom script. Loading " + GlobalPaths.AddonScriptPath, 4);
}
else
{
GlobalFuncs.ConsolePrint("NovetusCMD cannot load '" + CommandLine["script"] + "' as it doesn't use a rbxasset path or URL.", 2);
}
}
}
if (!LocalVars.PrintHelp) if (!LocalVars.PrintHelp)
{ {
@ -266,26 +184,19 @@ namespace NovetusCMD
GlobalFuncs.ConsolePrint("NovetusCMD version " + GlobalVars.ProgramInformation.Version + " loaded.", 1); GlobalFuncs.ConsolePrint("NovetusCMD version " + GlobalVars.ProgramInformation.Version + " loaded.", 1);
GlobalFuncs.ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 1); GlobalFuncs.ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 1);
if (!LocalVars.OverrideINI) GlobalFuncs.ConsolePrint("NovetusCMD is now loading main server configurations from the INI file.", 5);
{
GlobalFuncs.ConsolePrint("NovetusCMD is now loading all server configurations from the INI file.", 5);
if (!File.Exists(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName)) if (!File.Exists(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName))
{
GlobalFuncs.ConsolePrint("WARNING 2 - " + GlobalPaths.ConfigName + " not found. Creating one with default values.", 5);
WriteConfigValues();
}
ReadConfigValues(true);
}
else
{ {
GlobalFuncs.ReadClientValues(true); GlobalFuncs.ConsolePrint("WARNING 2 - " + GlobalPaths.ConfigName + " not found. Creating one with default values.", 5);
WriteConfigValues();
} }
ReadConfigValues(true);
LoadOverrideINIArgs(args);
InitUPnP(); InitUPnP();
if (!LocalVars.NoWebServer) if (!GlobalVars.UserConfiguration.WebServer)
{ {
StartWebServer(); StartWebServer();
} }
@ -315,7 +226,10 @@ namespace NovetusCMD
static void ProgramClose(object sender, EventArgs e) static void ProgramClose(object sender, EventArgs e)
{ {
WriteConfigValues(); if (!LocalVars.OverrideINI)
{
WriteConfigValues();
}
if (GlobalVars.IsWebServerOn) if (GlobalVars.IsWebServerOn)
{ {
StopWebServer(); StopWebServer();
@ -329,6 +243,111 @@ namespace NovetusCMD
} }
} }
} }
static void LoadCMDArgs(string[] args)
{
if (args.Length > 0)
{
CommandLineArguments.Arguments CommandLine = new CommandLineArguments.Arguments(args);
if (CommandLine["help"] != null)
{
LocalVars.PrintHelp = true;
}
if (CommandLine["no3d"] != null)
{
LocalVars.StartInNo3D = true;
GlobalFuncs.ConsolePrint("NovetusCMD will now launch the server in No3D mode.", 4);
}
if (CommandLine["outputinfo"] != null)
{
GlobalVars.RequestToOutputInfo = true;
}
if (CommandLine["debug"] != null)
{
LocalVars.DebugMode = true;
}
if (CommandLine["script"] != null)
{
if (CommandLine["script"].Contains("rbxasset:") || CommandLine["script"].Contains("http:"))
{
GlobalPaths.AddonScriptPath = CommandLine["script"].Replace(@"\", @"\\");
GlobalFuncs.ConsolePrint("NovetusCMD detected a custom script. Loading " + GlobalPaths.AddonScriptPath, 4);
}
else
{
GlobalFuncs.ConsolePrint("NovetusCMD cannot load '" + CommandLine["script"] + "' as it doesn't use a rbxasset path or URL.", 2);
}
}
}
}
static void LoadOverrideINIArgs(string[] args)
{
if (args.Length > 0)
{
CommandLineArguments.Arguments CommandLine = new CommandLineArguments.Arguments(args);
if (CommandLine["upnp"] != null)
{
LocalVars.OverrideINI = true;
GlobalVars.UserConfiguration.UPnP = true;
GlobalFuncs.ConsolePrint("NovetusCMD will now use UPnP for port forwarding.", 4);
}
if (CommandLine["webserver"] != null)
{
LocalVars.OverrideINI = true;
GlobalVars.UserConfiguration.WebServer = Convert.ToBoolean(CommandLine["webserver"]);
if (GlobalVars.UserConfiguration.WebServer)
{
GlobalFuncs.ConsolePrint("NovetusCMD will now launch the Web Server.", 4);
}
else
{
GlobalFuncs.ConsolePrint("NovetusCMD no longer will launch the Web Server.", 4);
}
}
if (CommandLine["map"] != null)
{
LocalVars.OverrideINI = true;
GlobalVars.UserConfiguration.MapPath = CommandLine["map"];
GlobalFuncs.ConsolePrint("NovetusCMD will now launch the server with the map " + GlobalVars.UserConfiguration.MapPath, 4);
}
else
{
GlobalFuncs.ConsolePrint("NovetusCMD will launch the server with the default map.", 4);
}
if (CommandLine["client"] != null)
{
LocalVars.OverrideINI = true;
GlobalVars.UserConfiguration.SelectedClient = CommandLine["client"];
}
else
{
GlobalFuncs.ConsolePrint("NovetusCMD will launch the server with the default client.", 4);
}
if (CommandLine["port"] != null)
{
LocalVars.OverrideINI = true;
GlobalVars.UserConfiguration.RobloxPort = Convert.ToInt32(CommandLine["port"]);
}
if (CommandLine["maxplayers"] != null)
{
LocalVars.OverrideINI = true;
GlobalVars.UserConfiguration.PlayerLimit = Convert.ToInt32(CommandLine["maxplayers"]);
}
}
}
#endregion #endregion
#region Client Loading #region Client Loading

View File

@ -59,6 +59,9 @@ public class FileFormat
ReShadeFPSDisplay = false; ReShadeFPSDisplay = false;
ReShadePerformanceMode = false; ReShadePerformanceMode = false;
AssetLocalizerSaveBackups = true; AssetLocalizerSaveBackups = true;
AlternateServerIP = "";
WebServerPort = 40735;
WebServer = true;
} }
public string SelectedClient { get; set; } public string SelectedClient { get; set; }
@ -81,6 +84,9 @@ public class FileFormat
public bool ReShadeFPSDisplay { get; set; } public bool ReShadeFPSDisplay { get; set; }
public bool ReShadePerformanceMode { get; set; } public bool ReShadePerformanceMode { get; set; }
public bool AssetLocalizerSaveBackups { get; set; } public bool AssetLocalizerSaveBackups { get; set; }
public string AlternateServerIP { get; set; }
public int WebServerPort { get; set; }
public bool WebServer { get; set; }
} }
#endregion #endregion

View File

@ -36,129 +36,130 @@ partial class ItemMaker
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ItemMaker)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ItemMaker));
this.button1 = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox(); this.textBox2 = new System.Windows.Forms.TextBox();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox(); this.comboBox1 = new System.Windows.Forms.ComboBox();
this.checkBox1 = new System.Windows.Forms.CheckBox(); this.checkBox1 = new System.Windows.Forms.CheckBox();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox1 = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// button1 // button1
// //
this.button1.Location = new System.Drawing.Point(3, 80); this.button1.Location = new System.Drawing.Point(3, 80);
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(238, 23); this.button1.Size = new System.Drawing.Size(238, 23);
this.button1.TabIndex = 1; this.button1.TabIndex = 1;
this.button1.Text = "Create!"; this.button1.Text = "Create!";
this.button1.UseVisualStyleBackColor = true; this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.Button1Click); this.button1.Click += new System.EventHandler(this.Button1Click);
// //
// textBox2 // textBox2
// //
this.textBox2.Location = new System.Drawing.Point(98, 25); this.textBox2.Location = new System.Drawing.Point(98, 25);
this.textBox2.Name = "textBox2"; this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(76, 20); this.textBox2.Size = new System.Drawing.Size(76, 20);
this.textBox2.TabIndex = 2; this.textBox2.TabIndex = 2;
// //
// numericUpDown1 // numericUpDown1
// //
this.numericUpDown1.Location = new System.Drawing.Point(193, 25); this.numericUpDown1.Location = new System.Drawing.Point(193, 25);
this.numericUpDown1.Maximum = new decimal(new int[] { this.numericUpDown1.Maximum = new decimal(new int[] {
99, 99,
0, 0,
0, 0,
0}); 0});
this.numericUpDown1.Name = "numericUpDown1"; this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(36, 20); this.numericUpDown1.Size = new System.Drawing.Size(36, 20);
this.numericUpDown1.TabIndex = 3; this.numericUpDown1.TabIndex = 3;
// //
// label2 // label2
// //
this.label2.Location = new System.Drawing.Point(116, 9); this.label2.Location = new System.Drawing.Point(116, 9);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(41, 14); this.label2.Size = new System.Drawing.Size(41, 14);
this.label2.TabIndex = 6; this.label2.TabIndex = 6;
this.label2.Text = "Item ID"; this.label2.Text = "Item ID";
// //
// label3 // label3
// //
this.label3.Location = new System.Drawing.Point(190, 9); this.label3.Location = new System.Drawing.Point(190, 9);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(42, 14); this.label3.Size = new System.Drawing.Size(42, 14);
this.label3.TabIndex = 7; this.label3.TabIndex = 7;
this.label3.Text = "Version"; this.label3.Text = "Version";
this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
// //
// comboBox1 // comboBox1
// //
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true; this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] { this.comboBox1.Items.AddRange(new object[] {
"http://www.roblox.com/", "http://www.roblox.com/",
"http://assetgame.roblox.com/", "http://assetgame.roblox.com/",
"https://assetdelivery.roblox.com/",
"https://www.roblox.com/catalog/", "https://www.roblox.com/catalog/",
"https://www.roblox.com/library/"}); "https://www.roblox.com/library/"});
this.comboBox1.Location = new System.Drawing.Point(3, 53); this.comboBox1.Location = new System.Drawing.Point(3, 53);
this.comboBox1.Name = "comboBox1"; this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(238, 21); this.comboBox1.Size = new System.Drawing.Size(238, 21);
this.comboBox1.TabIndex = 8; this.comboBox1.TabIndex = 8;
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.ComboBox1SelectedIndexChanged); this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.ComboBox1SelectedIndexChanged);
// //
// checkBox1 // checkBox1
// //
this.checkBox1.Location = new System.Drawing.Point(12, 109); this.checkBox1.Location = new System.Drawing.Point(12, 109);
this.checkBox1.Name = "checkBox1"; this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(220, 24); this.checkBox1.Size = new System.Drawing.Size(220, 24);
this.checkBox1.TabIndex = 9; this.checkBox1.TabIndex = 9;
this.checkBox1.Text = "Disable Help Message on Item Creation"; this.checkBox1.Text = "Disable Help Message on Item Creation";
this.checkBox1.UseVisualStyleBackColor = true; this.checkBox1.UseVisualStyleBackColor = true;
this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1CheckedChanged); this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1CheckedChanged);
// //
// label1 // label1
// //
this.label1.Location = new System.Drawing.Point(33, 9); this.label1.Location = new System.Drawing.Point(33, 9);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 14); this.label1.Size = new System.Drawing.Size(35, 14);
this.label1.TabIndex = 11; this.label1.TabIndex = 11;
this.label1.Text = "Name"; this.label1.Text = "Name";
// //
// textBox1 // textBox1
// //
this.textBox1.Location = new System.Drawing.Point(12, 25); this.textBox1.Location = new System.Drawing.Point(12, 25);
this.textBox1.Name = "textBox1"; this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(76, 20); this.textBox1.Size = new System.Drawing.Size(76, 20);
this.textBox1.TabIndex = 12; this.textBox1.TabIndex = 12;
// //
// ItemMaker // ItemMaker
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLightLight; this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.ClientSize = new System.Drawing.Size(244, 136); this.ClientSize = new System.Drawing.Size(244, 136);
this.Controls.Add(this.textBox1); this.Controls.Add(this.textBox1);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.checkBox1); this.Controls.Add(this.checkBox1);
this.Controls.Add(this.comboBox1); this.Controls.Add(this.comboBox1);
this.Controls.Add(this.label3); this.Controls.Add(this.label3);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
this.Controls.Add(this.numericUpDown1); this.Controls.Add(this.numericUpDown1);
this.Controls.Add(this.textBox2); this.Controls.Add(this.textBox2);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false; this.MaximizeBox = false;
this.Name = "ItemMaker"; this.Name = "ItemMaker";
this.Text = "Novetus Item SDK"; this.Text = "Novetus Item SDK";
this.Load += new System.EventHandler(this.ItemMakerLoad); this.Load += new System.EventHandler(this.ItemMakerLoad);
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.ComboBox comboBox1;

View File

@ -33,10 +33,14 @@ using System.Windows.Forms;
isWebSite = false; isWebSite = false;
break; break;
case 2: case 2:
url = "https://assetdelivery.roblox.com/v1/asset/?id=";
isWebSite = false;
break;
case 3:
url = "https://www.roblox.com/catalog/"; url = "https://www.roblox.com/catalog/";
isWebSite = true; isWebSite = true;
break; break;
case 3: case 4:
url = "https://www.roblox.com/library/"; url = "https://www.roblox.com/library/";
isWebSite = true; isWebSite = true;
break; break;

View File

@ -32,7 +32,7 @@ class SDKFuncs
{ {
OpenFileDialog openFileDialog1 = new OpenFileDialog OpenFileDialog openFileDialog1 = new OpenFileDialog
{ {
Filter = (type == RobloxFileType.RBXL) ? "ROBLOX Level (*.rbxl)|*.rbxl" : "ROBLOX Model (*.rbxm)|*.rbxm", Filter = (type == RobloxFileType.RBXL) ? "ROBLOX Level (*.rbxl)|*.rbxl|ROBLOX Level (*.rbxlx)|*.rbxlx" : "ROBLOX Model (*.rbxm)|*.rbxm",
Title = "Open ROBLOX level or model" Title = "Open ROBLOX level or model"
}; };

View File

@ -119,6 +119,9 @@ public class GlobalFuncs
ini.IniWriteValue(section, "QualityLevel", Settings.GraphicsOptions.GetIntForLevel(GlobalVars.UserConfiguration.QualityLevel).ToString()); ini.IniWriteValue(section, "QualityLevel", Settings.GraphicsOptions.GetIntForLevel(GlobalVars.UserConfiguration.QualityLevel).ToString());
ini.IniWriteValue(section, "Style", Settings.UIOptions.GetIntForStyle(GlobalVars.UserConfiguration.LauncherStyle).ToString()); ini.IniWriteValue(section, "Style", Settings.UIOptions.GetIntForStyle(GlobalVars.UserConfiguration.LauncherStyle).ToString());
ini.IniWriteValue(section, "AssetLocalizerSaveBackups", GlobalVars.UserConfiguration.AssetLocalizerSaveBackups.ToString()); ini.IniWriteValue(section, "AssetLocalizerSaveBackups", GlobalVars.UserConfiguration.AssetLocalizerSaveBackups.ToString());
ini.IniWriteValue(section, "AlternateServerIP", GlobalVars.UserConfiguration.AlternateServerIP.ToString());
ini.IniWriteValue(section, "WebServerPort", GlobalVars.UserConfiguration.WebServerPort.ToString());
ini.IniWriteValue(section, "WebServer", GlobalVars.UserConfiguration.WebServer.ToString());
} }
else else
{ {
@ -128,7 +131,7 @@ public class GlobalFuncs
string closeonlaunch, userid, name, selectedclient, string closeonlaunch, userid, name, selectedclient,
map, port, limit, upnp, map, port, limit, upnp,
disablehelpmessage, tripcode, discord, mappath, mapsnip, disablehelpmessage, tripcode, discord, mappath, mapsnip,
graphics, reshade, qualitylevel, style, savebackups; graphics, reshade, qualitylevel, style, savebackups, altIP, WS, WSPort;
INIFile ini = new INIFile(cfgpath); INIFile ini = new INIFile(cfgpath);
@ -152,6 +155,9 @@ public class GlobalFuncs
qualitylevel = ini.IniReadValue(section, "QualityLevel", Settings.GraphicsOptions.GetIntForLevel(GlobalVars.UserConfiguration.QualityLevel).ToString()); qualitylevel = ini.IniReadValue(section, "QualityLevel", Settings.GraphicsOptions.GetIntForLevel(GlobalVars.UserConfiguration.QualityLevel).ToString());
style = ini.IniReadValue(section, "Style", Settings.UIOptions.GetIntForStyle(GlobalVars.UserConfiguration.LauncherStyle).ToString()); style = ini.IniReadValue(section, "Style", Settings.UIOptions.GetIntForStyle(GlobalVars.UserConfiguration.LauncherStyle).ToString());
savebackups = ini.IniReadValue(section, "AssetLocalizerSaveBackups", GlobalVars.UserConfiguration.AssetLocalizerSaveBackups.ToString()); savebackups = ini.IniReadValue(section, "AssetLocalizerSaveBackups", GlobalVars.UserConfiguration.AssetLocalizerSaveBackups.ToString());
altIP = ini.IniReadValue(section, "AlternateServerIP", GlobalVars.UserConfiguration.AlternateServerIP.ToString());
WSPort = ini.IniReadValue(section, "WebServerPort", GlobalVars.UserConfiguration.WebServerPort.ToString());
WS = ini.IniReadValue(section, "WebServer", GlobalVars.UserConfiguration.WebServer.ToString());
GlobalVars.UserConfiguration.CloseOnLaunch = Convert.ToBoolean(closeonlaunch); GlobalVars.UserConfiguration.CloseOnLaunch = Convert.ToBoolean(closeonlaunch);
@ -202,6 +208,9 @@ public class GlobalFuncs
GlobalVars.UserConfiguration.QualityLevel = Settings.GraphicsOptions.GetLevelForInt(Convert.ToInt32(qualitylevel)); GlobalVars.UserConfiguration.QualityLevel = Settings.GraphicsOptions.GetLevelForInt(Convert.ToInt32(qualitylevel));
GlobalVars.UserConfiguration.LauncherStyle = Settings.UIOptions.GetStyleForInt(Convert.ToInt32(style)); GlobalVars.UserConfiguration.LauncherStyle = Settings.UIOptions.GetStyleForInt(Convert.ToInt32(style));
GlobalVars.UserConfiguration.AssetLocalizerSaveBackups = Convert.ToBoolean(savebackups); GlobalVars.UserConfiguration.AssetLocalizerSaveBackups = Convert.ToBoolean(savebackups);
GlobalVars.UserConfiguration.AlternateServerIP = altIP;
GlobalVars.UserConfiguration.WebServerPort = Convert.ToInt32(WSPort);
GlobalVars.UserConfiguration.WebServer = Convert.ToBoolean(WS);
} }
catch (Exception) catch (Exception)
{ {
@ -1470,7 +1479,7 @@ public class GlobalFuncs
{ {
string IP = await SecurityFuncs.GetExternalIPAddressAsync(); string IP = await SecurityFuncs.GetExternalIPAddressAsync();
string[] lines1 = { string[] lines1 = {
SecurityFuncs.Base64Encode(IP), SecurityFuncs.Base64Encode((!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP)),
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()), SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()),
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient) SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient)
}; };
@ -1488,7 +1497,7 @@ public class GlobalFuncs
"--------------------", "--------------------",
"Server Info:", "Server Info:",
"Client: " + GlobalVars.UserConfiguration.SelectedClient, "Client: " + GlobalVars.UserConfiguration.SelectedClient,
"IP: " + IP, "IP: " + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP),
"Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(), "Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(),
"Map: " + GlobalVars.UserConfiguration.Map, "Map: " + GlobalVars.UserConfiguration.Map,
"Players: " + GlobalVars.UserConfiguration.PlayerLimit, "Players: " + GlobalVars.UserConfiguration.PlayerLimit,
@ -1498,9 +1507,9 @@ public class GlobalFuncs
"Local URI Link:", "Local URI Link:",
URI2, URI2,
GlobalVars.IsWebServerOn ? "Web Server URL:" : "", GlobalVars.IsWebServerOn ? "Web Server URL:" : "",
GlobalVars.IsWebServerOn ? "http://" + IP + ":" + GlobalVars.WebServer.Port.ToString() : "", GlobalVars.IsWebServerOn ? "http://" + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP) + ":" + GlobalVars.WebServer.Port.ToString() : "",
GlobalVars.IsWebServerOn ? "Local Web Server URL:" : "", GlobalVars.IsWebServerOn ? "Local Web Server URL:" : "",
GlobalVars.IsWebServerOn ? GlobalVars.LocalWebServerURI : "" GlobalVars.IsWebServerOn ? "http://localhost:" + (GlobalVars.WebServer.Port.ToString()).ToString() : ""
); );
File.WriteAllText(GlobalPaths.BasePath + "\\" + GlobalVars.ServerInfoFileName, GlobalFuncs.RemoveEmptyLines(text)); File.WriteAllText(GlobalPaths.BasePath + "\\" + GlobalVars.ServerInfoFileName, GlobalFuncs.RemoveEmptyLines(text));

View File

@ -45,17 +45,6 @@ public class GlobalPaths
public static readonly string extraGameDir = CharCustomGameDir + "custom/"; public static readonly string extraGameDir = CharCustomGameDir + "custom/";
#endregion #endregion
#region Web Server Paths
public static string WebServer_CustomPlayerDir = GlobalVars.WebServerURI + "/charcustom/";
public static string WebServer_HatDir = WebServer_CustomPlayerDir + "hats/";
public static string WebServer_FaceDir = WebServer_CustomPlayerDir + "faces/";
public static string WebServer_HeadDir = WebServer_CustomPlayerDir + "heads/";
public static string WebServer_TShirtDir = WebServer_CustomPlayerDir + "tshirts/";
public static string WebServer_ShirtDir = WebServer_CustomPlayerDir + "shirts/";
public static string WebServer_PantsDir = WebServer_CustomPlayerDir + "pants/";
public static string WebServer_ExtraDir = WebServer_CustomPlayerDir + "custom/";
#endregion
#region Asset Cache Paths #region Asset Cache Paths
#region Base Paths #region Base Paths

View File

@ -55,12 +55,6 @@ public static class GlobalVars
public static bool AdminMode = false; public static bool AdminMode = false;
#endregion #endregion
#region Web Server Vars
public static int WebServerPort = 40735;
public static string LocalWebServerURI = "http://localhost:" + (WebServerPort).ToString();
public static string WebServerURI = "http://" + IP + ":" + (WebServerPort).ToString();
#endregion
#region Discord Variables #region Discord Variables
//discord //discord
public static DiscordRPC.RichPresence presence; public static DiscordRPC.RichPresence presence;

View File

@ -294,6 +294,15 @@ public class ScriptFuncs
return ""; return "";
} }
string WebServer_CustomPlayerDir = "http://" + GlobalVars.IP + ":" + (GlobalVars.UserConfiguration.WebServerPort.ToString()).ToString() + "/charcustom/";
string WebServer_HatDir = WebServer_CustomPlayerDir + "hats/";
string WebServer_FaceDir = WebServer_CustomPlayerDir + "faces/";
string WebServer_HeadDir = WebServer_CustomPlayerDir + "heads/";
string WebServer_TShirtDir = WebServer_CustomPlayerDir + "tshirts/";
string WebServer_ShirtDir = WebServer_CustomPlayerDir + "shirts/";
string WebServer_PantsDir = WebServer_CustomPlayerDir + "pants/";
string WebServer_ExtraDir = WebServer_CustomPlayerDir + "custom/";
#if LAUNCHER #if LAUNCHER
string md5dir = !info.AlreadyHasSecurity ? SecurityFuncs.GenerateMD5(Assembly.GetExecutingAssembly().Location) : ""; string md5dir = !info.AlreadyHasSecurity ? SecurityFuncs.GenerateMD5(Assembly.GetExecutingAssembly().Location) : "";
#else #else
@ -345,16 +354,16 @@ public class ScriptFuncs
.Replace("%extrad%", GlobalPaths.extraGameDir + GlobalVars.UserCustomization.Extra) .Replace("%extrad%", GlobalPaths.extraGameDir + GlobalVars.UserCustomization.Extra)
.Replace("%hat4d%", GlobalPaths.hatGameDir + GlobalVars.UserCustomization.Extra) .Replace("%hat4d%", GlobalPaths.hatGameDir + GlobalVars.UserCustomization.Extra)
.Replace("%args%", GetRawArgsForType(type, md5s, luafile)) .Replace("%args%", GetRawArgsForType(type, md5s, luafile))
.Replace("%facews%", GlobalVars.UserCustomization.Face.Contains("http://") ? GlobalVars.UserCustomization.Face : GlobalPaths.WebServer_FaceDir + GlobalVars.UserCustomization.Face) .Replace("%facews%", GlobalVars.UserCustomization.Face.Contains("http://") ? GlobalVars.UserCustomization.Face : WebServer_FaceDir + GlobalVars.UserCustomization.Face)
.Replace("%headws%", GlobalPaths.WebServer_HeadDir + GlobalVars.UserCustomization.Head) .Replace("%headws%", WebServer_HeadDir + GlobalVars.UserCustomization.Head)
.Replace("%tshirtws%", GlobalVars.UserCustomization.TShirt.Contains("http://") ? GlobalVars.UserCustomization.TShirt : GlobalPaths.WebServer_TShirtDir + GlobalVars.UserCustomization.TShirt) .Replace("%tshirtws%", GlobalVars.UserCustomization.TShirt.Contains("http://") ? GlobalVars.UserCustomization.TShirt : WebServer_TShirtDir + GlobalVars.UserCustomization.TShirt)
.Replace("%shirtws%", GlobalVars.UserCustomization.Shirt.Contains("http://") ? GlobalVars.UserCustomization.Shirt : GlobalPaths.WebServer_ShirtDir + GlobalVars.UserCustomization.Shirt) .Replace("%shirtws%", GlobalVars.UserCustomization.Shirt.Contains("http://") ? GlobalVars.UserCustomization.Shirt : WebServer_ShirtDir + GlobalVars.UserCustomization.Shirt)
.Replace("%pantsws%", GlobalVars.UserCustomization.Pants.Contains("http://") ? GlobalVars.UserCustomization.Pants : GlobalPaths.WebServer_PantsDir + GlobalVars.UserCustomization.Pants) .Replace("%pantsws%", GlobalVars.UserCustomization.Pants.Contains("http://") ? GlobalVars.UserCustomization.Pants : WebServer_PantsDir + GlobalVars.UserCustomization.Pants)
.Replace("%hat1ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Hat1) .Replace("%hat1ws%", WebServer_HatDir + GlobalVars.UserCustomization.Hat1)
.Replace("%hat2ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Hat2) .Replace("%hat2ws%", WebServer_HatDir + GlobalVars.UserCustomization.Hat2)
.Replace("%hat3ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Hat3) .Replace("%hat3ws%", WebServer_HatDir + GlobalVars.UserCustomization.Hat3)
.Replace("%extraws%", GlobalPaths.WebServer_ExtraDir + GlobalVars.UserCustomization.Extra) .Replace("%extraws%", WebServer_ExtraDir + GlobalVars.UserCustomization.Extra)
.Replace("%hat4ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Extra) .Replace("%hat4ws%", WebServer_HatDir + GlobalVars.UserCustomization.Extra)
.Replace("%mapfiled%", GlobalPaths.BaseGameDir + GlobalVars.UserConfiguration.MapPathSnip.Replace(@"\\", @"\").Replace(@"/", @"\")) .Replace("%mapfiled%", GlobalPaths.BaseGameDir + GlobalVars.UserConfiguration.MapPathSnip.Replace(@"\\", @"\").Replace(@"/", @"\"))
.Replace("%mapfilec%", GlobalFuncs.CopyMapToRBXAsset()) .Replace("%mapfilec%", GlobalFuncs.CopyMapToRBXAsset())
.Replace("%tripcode%", GlobalVars.UserConfiguration.PlayerTripcode) .Replace("%tripcode%", GlobalVars.UserConfiguration.PlayerTripcode)

View File

@ -59,7 +59,6 @@ namespace NovetusLauncher
this.tabPage2 = new System.Windows.Forms.TabPage(); this.tabPage2 = new System.Windows.Forms.TabPage();
this.label19 = new System.Windows.Forms.Label(); this.label19 = new System.Windows.Forms.Label();
this.textBox3 = new System.Windows.Forms.TextBox(); this.textBox3 = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.checkBox4 = new System.Windows.Forms.CheckBox(); this.checkBox4 = new System.Windows.Forms.CheckBox();
this.button23 = new System.Windows.Forms.Button(); this.button23 = new System.Windows.Forms.Button();
this.button22 = new System.Windows.Forms.Button(); this.button22 = new System.Windows.Forms.Button();
@ -74,6 +73,8 @@ namespace NovetusLauncher
this.label30 = new System.Windows.Forms.Label(); this.label30 = new System.Windows.Forms.Label();
this.listBox2 = new System.Windows.Forms.ListBox(); this.listBox2 = new System.Windows.Forms.ListBox();
this.tabPage4 = new System.Windows.Forms.TabPage(); this.tabPage4 = new System.Windows.Forms.TabPage();
this.SearchButton = new System.Windows.Forms.Button();
this.SearchBar = new System.Windows.Forms.TextBox();
this.textBox4 = new System.Windows.Forms.TextBox(); this.textBox4 = new System.Windows.Forms.TextBox();
this.button24 = new System.Windows.Forms.Button(); this.button24 = new System.Windows.Forms.Button();
this.treeView1 = new System.Windows.Forms.TreeView(); this.treeView1 = new System.Windows.Forms.TreeView();
@ -153,8 +154,7 @@ namespace NovetusLauncher
this.panel3 = new System.Windows.Forms.Panel(); this.panel3 = new System.Windows.Forms.Panel();
this.panel4 = new System.Windows.Forms.Panel(); this.panel4 = new System.Windows.Forms.Panel();
this.button35 = new System.Windows.Forms.Button(); this.button35 = new System.Windows.Forms.Button();
this.SearchBar = new System.Windows.Forms.TextBox(); this.checkBox8 = new System.Windows.Forms.CheckBox();
this.SearchButton = new System.Windows.Forms.Button();
this.tabControl1.SuspendLayout(); this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout(); this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
@ -348,9 +348,9 @@ namespace NovetusLauncher
// //
// tabPage2 // tabPage2
// //
this.tabPage2.Controls.Add(this.checkBox8);
this.tabPage2.Controls.Add(this.label19); this.tabPage2.Controls.Add(this.label19);
this.tabPage2.Controls.Add(this.textBox3); this.tabPage2.Controls.Add(this.textBox3);
this.tabPage2.Controls.Add(this.label17);
this.tabPage2.Controls.Add(this.checkBox4); this.tabPage2.Controls.Add(this.checkBox4);
this.tabPage2.Controls.Add(this.button23); this.tabPage2.Controls.Add(this.button23);
this.tabPage2.Controls.Add(this.button22); this.tabPage2.Controls.Add(this.button22);
@ -389,28 +389,17 @@ namespace NovetusLauncher
this.textBox3.Name = "textBox3"; this.textBox3.Name = "textBox3";
this.textBox3.ReadOnly = true; this.textBox3.ReadOnly = true;
this.textBox3.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.textBox3.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.textBox3.Size = new System.Drawing.Size(393, 117); this.textBox3.Size = new System.Drawing.Size(393, 134);
this.textBox3.TabIndex = 59; this.textBox3.TabIndex = 59;
// //
// label17
//
this.label17.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label17.ForeColor = System.Drawing.Color.Red;
this.label17.Location = new System.Drawing.Point(10, 141);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(382, 19);
this.label17.TabIndex = 58;
this.label17.Text = "NOTE: The webserver port is static and it cannot be changed. It is 40735.";
this.label17.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// checkBox4 // checkBox4
// //
this.checkBox4.AutoSize = true; this.checkBox4.AutoSize = true;
this.checkBox4.Location = new System.Drawing.Point(204, 189); this.checkBox4.Location = new System.Drawing.Point(204, 189);
this.checkBox4.Name = "checkBox4"; this.checkBox4.Name = "checkBox4";
this.checkBox4.Size = new System.Drawing.Size(90, 17); this.checkBox4.Size = new System.Drawing.Size(54, 17);
this.checkBox4.TabIndex = 57; this.checkBox4.TabIndex = 57;
this.checkBox4.Text = "Toggle UPnP"; this.checkBox4.Text = "UPnP";
this.checkBox4.UseVisualStyleBackColor = true; this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.CheckBox4CheckedChanged); this.checkBox4.CheckedChanged += new System.EventHandler(this.CheckBox4CheckedChanged);
this.checkBox4.Click += new System.EventHandler(this.CheckBox4Click); this.checkBox4.Click += new System.EventHandler(this.CheckBox4Click);
@ -580,6 +569,23 @@ namespace NovetusLauncher
this.tabPage4.Text = "MAPS"; this.tabPage4.Text = "MAPS";
this.tabPage4.UseVisualStyleBackColor = true; this.tabPage4.UseVisualStyleBackColor = true;
// //
// SearchButton
//
this.SearchButton.Location = new System.Drawing.Point(164, 3);
this.SearchButton.Name = "SearchButton";
this.SearchButton.Size = new System.Drawing.Size(49, 23);
this.SearchButton.TabIndex = 69;
this.SearchButton.Text = "Search";
this.SearchButton.UseVisualStyleBackColor = true;
this.SearchButton.Click += new System.EventHandler(this.SearchButton_Click);
//
// SearchBar
//
this.SearchBar.Location = new System.Drawing.Point(7, 5);
this.SearchBar.Name = "SearchBar";
this.SearchBar.Size = new System.Drawing.Size(151, 20);
this.SearchBar.TabIndex = 68;
//
// textBox4 // textBox4
// //
this.textBox4.BackColor = System.Drawing.SystemColors.ControlLightLight; this.textBox4.BackColor = System.Drawing.SystemColors.ControlLightLight;
@ -1330,22 +1336,17 @@ namespace NovetusLauncher
this.button35.Size = new System.Drawing.Size(75, 23); this.button35.Size = new System.Drawing.Size(75, 23);
this.button35.TabIndex = 0; this.button35.TabIndex = 0;
// //
// SearchBar // checkBox8
// //
this.SearchBar.Location = new System.Drawing.Point(7, 5); this.checkBox8.AutoSize = true;
this.SearchBar.Name = "SearchBar"; this.checkBox8.Location = new System.Drawing.Point(265, 189);
this.SearchBar.Size = new System.Drawing.Size(151, 20); this.checkBox8.Name = "checkBox8";
this.SearchBar.TabIndex = 68; this.checkBox8.Size = new System.Drawing.Size(83, 17);
// this.checkBox8.TabIndex = 62;
// SearchButton this.checkBox8.Text = "Web Server";
// this.checkBox8.UseVisualStyleBackColor = true;
this.SearchButton.Location = new System.Drawing.Point(164, 3); this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox8_CheckedChanged);
this.SearchButton.Name = "SearchButton"; this.checkBox8.Click += new System.EventHandler(this.CheckBox8Click);
this.SearchButton.Size = new System.Drawing.Size(49, 23);
this.SearchButton.TabIndex = 69;
this.SearchButton.Text = "Search";
this.SearchButton.UseVisualStyleBackColor = true;
this.SearchButton.Click += new System.EventHandler(this.SearchButton_Click);
// //
// LauncherFormCompact // LauncherFormCompact
// //
@ -1402,8 +1403,6 @@ namespace NovetusLauncher
this.PerformLayout(); this.PerformLayout();
} }
private System.Windows.Forms.Label label17;
private System.Windows.Forms.CheckBox checkBox4; private System.Windows.Forms.CheckBox checkBox4;
private System.Windows.Forms.Button button6; private System.Windows.Forms.Button button6;
private System.Windows.Forms.TreeView treeView1; private System.Windows.Forms.TreeView treeView1;
@ -1517,6 +1516,7 @@ namespace NovetusLauncher
private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox SearchBar; private System.Windows.Forms.TextBox SearchBar;
private System.Windows.Forms.Button SearchButton; private System.Windows.Forms.Button SearchButton;
private System.Windows.Forms.CheckBox checkBox8;
//private System.Windows.Forms.CheckBox checkBox8; //private System.Windows.Forms.CheckBox checkBox8;
} }
} }

View File

@ -87,8 +87,8 @@ namespace NovetusLauncher
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3, richTextBox1); GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3, richTextBox1);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort); StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort); StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Udp, GlobalVars.WebServerPort); StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort); StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -104,8 +104,8 @@ namespace NovetusLauncher
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3, richTextBox1); GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3, richTextBox1);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort); StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort); StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Udp, GlobalVars.WebServerPort); StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort); StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -168,19 +168,17 @@ namespace NovetusLauncher
{ {
try try
{ {
GlobalVars.WebServer = new SimpleHTTPServer(GlobalPaths.DataPath, GlobalVars.WebServerPort); GlobalVars.WebServer = new SimpleHTTPServer(GlobalPaths.DataPath, GlobalVars.UserConfiguration.WebServerPort);
GlobalFuncs.ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3, richTextBox1); GlobalFuncs.ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3, richTextBox1);
} }
catch (Exception ex) catch (Exception ex)
{ {
GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (" + ex.Message + ")", 2, richTextBox1); GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (" + ex.Message + ")", 2, richTextBox1);
label17.Visible = false;
} }
} }
else else
{ {
GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (Did not run as Administrator)", 2, richTextBox1); GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (Did not run as Administrator)", 2, richTextBox1);
label17.Visible = false;
} }
} }
@ -222,7 +220,7 @@ namespace NovetusLauncher
string IP = await SecurityFuncs.GetExternalIPAddressAsync(); string IP = await SecurityFuncs.GetExternalIPAddressAsync();
textBox3.Text = ""; textBox3.Text = "";
string[] lines1 = { string[] lines1 = {
SecurityFuncs.Base64Encode(IP), SecurityFuncs.Base64Encode((!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP)),
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()), SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()),
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient) SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient)
}; };
@ -235,7 +233,7 @@ namespace NovetusLauncher
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2), true); string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2), true);
string[] text = { string[] text = {
"Client: " + GlobalVars.UserConfiguration.SelectedClient, "Client: " + GlobalVars.UserConfiguration.SelectedClient,
"IP: " + IP, "IP: " + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP),
"Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(), "Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(),
"Map: " + GlobalVars.UserConfiguration.Map, "Map: " + GlobalVars.UserConfiguration.Map,
"Players: " + GlobalVars.UserConfiguration.PlayerLimit, "Players: " + GlobalVars.UserConfiguration.PlayerLimit,
@ -245,9 +243,9 @@ namespace NovetusLauncher
"Local URI Link:", "Local URI Link:",
URI2, URI2,
GlobalVars.IsWebServerOn ? "Web Server URL:" : "", GlobalVars.IsWebServerOn ? "Web Server URL:" : "",
GlobalVars.IsWebServerOn ? "http://" + IP + ":" + GlobalVars.WebServer.Port.ToString() : "", GlobalVars.IsWebServerOn ? "http://" + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP) + ":" + GlobalVars.WebServer.Port.ToString() : "",
GlobalVars.IsWebServerOn ? "Local Web Server URL:" : "", GlobalVars.IsWebServerOn ? "Local Web Server URL:" : "",
GlobalVars.IsWebServerOn ? GlobalVars.LocalWebServerURI : "" GlobalVars.IsWebServerOn ? "http://localhost:" + (GlobalVars.WebServer.Port.ToString()).ToString() : ""
}; };
foreach (string str in text) foreach (string str in text)
@ -263,6 +261,7 @@ namespace NovetusLauncher
case TabPage pg4 when pg4 == tabControl1.TabPages["tabPage4"]: case TabPage pg4 when pg4 == tabControl1.TabPages["tabPage4"]:
string mapdir = GlobalPaths.MapsDir; string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl"); TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes); TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes); treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
treeView1.Focus(); treeView1.Focus();
@ -420,7 +419,10 @@ namespace NovetusLauncher
ReadConfigValues(true); ReadConfigValues(true);
InitUPnP(); InitUPnP();
StartDiscord(); StartDiscord();
StartWebServer(); if (!GlobalVars.UserConfiguration.WebServer)
{
StartWebServer();
}
} }
void MainFormClose(object sender, CancelEventArgs e) void MainFormClose(object sender, CancelEventArgs e)
@ -459,6 +461,16 @@ namespace NovetusLauncher
checkBox2.Checked = GlobalVars.UserConfiguration.DiscordPresence; checkBox2.Checked = GlobalVars.UserConfiguration.DiscordPresence;
checkBox4.Checked = GlobalVars.UserConfiguration.UPnP; checkBox4.Checked = GlobalVars.UserConfiguration.UPnP;
if (SecurityFuncs.IsElevated)
{
checkBox8.Enabled = true;
checkBox8.Checked = GlobalVars.UserConfiguration.WebServer;
}
else
{
checkBox8.Enabled = false;
}
switch (GlobalVars.UserConfiguration.LauncherStyle) switch (GlobalVars.UserConfiguration.LauncherStyle)
{ {
case Settings.UIOptions.Style.Compact: case Settings.UIOptions.Style.Compact:
@ -1016,9 +1028,9 @@ namespace NovetusLauncher
GlobalVars.UserConfiguration.MapPath = GlobalPaths.BasePath + @"\\" + GlobalVars.UserConfiguration.MapPathSnip; GlobalVars.UserConfiguration.MapPath = GlobalPaths.BasePath + @"\\" + GlobalVars.UserConfiguration.MapPathSnip;
label28.Text = GlobalVars.UserConfiguration.Map; label28.Text = GlobalVars.UserConfiguration.Map;
if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt")) if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt"))
{ {
textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt"); textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt");
} }
else else
{ {
@ -1059,12 +1071,13 @@ namespace NovetusLauncher
_fieldsTreeCache.Nodes.Clear(); _fieldsTreeCache.Nodes.Clear();
string mapdir = GlobalPaths.MapsDir; string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl"); TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes); TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes); treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
treeView1.Focus(); treeView1.Focus();
if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt")) if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt"))
{ {
textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt"); textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt");
} }
else else
{ {
@ -1273,6 +1286,27 @@ namespace NovetusLauncher
MessageBox.Show("The map '" + searchText + "' cannot be found. Please try another term."); MessageBox.Show("The map '" + searchText + "' cannot be found. Please try another term.");
} }
} }
private void checkBox8_CheckedChanged(object sender, EventArgs e)
{
GlobalVars.UserConfiguration.WebServer = checkBox8.Checked;
}
void CheckBox8Click(object sender, EventArgs e)
{
switch (checkBox8.Checked)
{
case false:
MessageBox.Show("Novetus will now restart.", "Novetus - UPnP", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
default:
MessageBox.Show("Novetus will now restart." + Environment.NewLine + "Make sure to check if your router has UPnP functionality enabled. Please note that some routers may not support UPnP, and some ISPs will block the UPnP protocol. This may not work for all users.", "Novetus - UPnP", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
WriteConfigValues();
Application.Restart();
}
#endregion #endregion
#region Functions #region Functions

View File

@ -87,7 +87,6 @@ namespace NovetusLauncher
this.tabPage2 = new System.Windows.Forms.TabPage(); this.tabPage2 = new System.Windows.Forms.TabPage();
this.label19 = new System.Windows.Forms.Label(); this.label19 = new System.Windows.Forms.Label();
this.textBox3 = new System.Windows.Forms.TextBox(); this.textBox3 = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.checkBox4 = new System.Windows.Forms.CheckBox(); this.checkBox4 = new System.Windows.Forms.CheckBox();
this.button23 = new System.Windows.Forms.Button(); this.button23 = new System.Windows.Forms.Button();
this.button22 = new System.Windows.Forms.Button(); this.button22 = new System.Windows.Forms.Button();
@ -129,6 +128,7 @@ namespace NovetusLauncher
this.richTextBox2 = new System.Windows.Forms.RichTextBox(); this.richTextBox2 = new System.Windows.Forms.RichTextBox();
this.tabPage5 = new System.Windows.Forms.TabPage(); this.tabPage5 = new System.Windows.Forms.TabPage();
this.panel5 = new System.Windows.Forms.Panel(); this.panel5 = new System.Windows.Forms.Panel();
this.button36 = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.comboBox3 = new System.Windows.Forms.ComboBox(); this.comboBox3 = new System.Windows.Forms.ComboBox();
this.comboBox2 = new System.Windows.Forms.ComboBox(); this.comboBox2 = new System.Windows.Forms.ComboBox();
@ -154,7 +154,7 @@ namespace NovetusLauncher
this.panel4 = new System.Windows.Forms.Panel(); this.panel4 = new System.Windows.Forms.Panel();
this.button35 = new System.Windows.Forms.Button(); this.button35 = new System.Windows.Forms.Button();
this.UAButton = new System.Windows.Forms.Button(); this.UAButton = new System.Windows.Forms.Button();
this.button36 = new System.Windows.Forms.Button(); this.checkBox8 = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
this.panel2.SuspendLayout(); this.panel2.SuspendLayout();
@ -638,9 +638,9 @@ namespace NovetusLauncher
// //
// tabPage2 // tabPage2
// //
this.tabPage2.Controls.Add(this.checkBox8);
this.tabPage2.Controls.Add(this.label19); this.tabPage2.Controls.Add(this.label19);
this.tabPage2.Controls.Add(this.textBox3); this.tabPage2.Controls.Add(this.textBox3);
this.tabPage2.Controls.Add(this.label17);
this.tabPage2.Controls.Add(this.checkBox4); this.tabPage2.Controls.Add(this.checkBox4);
this.tabPage2.Controls.Add(this.button23); this.tabPage2.Controls.Add(this.button23);
this.tabPage2.Controls.Add(this.button22); this.tabPage2.Controls.Add(this.button22);
@ -676,27 +676,16 @@ namespace NovetusLauncher
this.textBox3.Name = "textBox3"; this.textBox3.Name = "textBox3";
this.textBox3.ReadOnly = true; this.textBox3.ReadOnly = true;
this.textBox3.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.textBox3.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.textBox3.Size = new System.Drawing.Size(612, 113); this.textBox3.Size = new System.Drawing.Size(612, 129);
this.textBox3.TabIndex = 59; this.textBox3.TabIndex = 59;
// //
// label17
//
this.label17.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label17.ForeColor = System.Drawing.Color.Red;
this.label17.Location = new System.Drawing.Point(116, 137);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(382, 14);
this.label17.TabIndex = 58;
this.label17.Text = "NOTE: The webserver port is static and it cannot be changed. It is 40735.";
this.label17.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// checkBox4 // checkBox4
// //
this.checkBox4.Location = new System.Drawing.Point(321, 180); this.checkBox4.Location = new System.Drawing.Point(321, 180);
this.checkBox4.Name = "checkBox4"; this.checkBox4.Name = "checkBox4";
this.checkBox4.Size = new System.Drawing.Size(104, 17); this.checkBox4.Size = new System.Drawing.Size(55, 17);
this.checkBox4.TabIndex = 57; this.checkBox4.TabIndex = 57;
this.checkBox4.Text = "Toggle UPnP"; this.checkBox4.Text = "UPnP";
this.checkBox4.UseVisualStyleBackColor = true; this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.CheckBox4CheckedChanged); this.checkBox4.CheckedChanged += new System.EventHandler(this.CheckBox4CheckedChanged);
this.checkBox4.Click += new System.EventHandler(this.CheckBox4Click); this.checkBox4.Click += new System.EventHandler(this.CheckBox4Click);
@ -1162,6 +1151,16 @@ namespace NovetusLauncher
this.panel5.Size = new System.Drawing.Size(200, 259); this.panel5.Size = new System.Drawing.Size(200, 259);
this.panel5.TabIndex = 68; this.panel5.TabIndex = 68;
// //
// button36
//
this.button36.Location = new System.Drawing.Point(3, 161);
this.button36.Name = "button36";
this.button36.Size = new System.Drawing.Size(190, 23);
this.button36.TabIndex = 77;
this.button36.Text = "Change custom graphics options";
this.button36.UseVisualStyleBackColor = true;
this.button36.Click += new System.EventHandler(this.button36_Click);
//
// label5 // label5
// //
this.label5.AutoSize = true; this.label5.AutoSize = true;
@ -1440,15 +1439,17 @@ namespace NovetusLauncher
this.UAButton.Size = new System.Drawing.Size(75, 23); this.UAButton.Size = new System.Drawing.Size(75, 23);
this.UAButton.TabIndex = 0; this.UAButton.TabIndex = 0;
// //
// button36 // checkBox8
// //
this.button36.Location = new System.Drawing.Point(3, 161); this.checkBox8.AutoSize = true;
this.button36.Name = "button36"; this.checkBox8.Location = new System.Drawing.Point(379, 180);
this.button36.Size = new System.Drawing.Size(190, 23); this.checkBox8.Name = "checkBox8";
this.button36.TabIndex = 77; this.checkBox8.Size = new System.Drawing.Size(83, 17);
this.button36.Text = "Change custom graphics options"; this.checkBox8.TabIndex = 61;
this.button36.UseVisualStyleBackColor = true; this.checkBox8.Text = "Web Server";
this.button36.Click += new System.EventHandler(this.button36_Click); this.checkBox8.UseVisualStyleBackColor = true;
this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox8_CheckedChanged);
this.checkBox8.Click += new System.EventHandler(this.CheckBox8Click);
// //
// LauncherFormExtended // LauncherFormExtended
// //
@ -1500,8 +1501,6 @@ namespace NovetusLauncher
this.ResumeLayout(false); this.ResumeLayout(false);
} }
private System.Windows.Forms.Label label17;
private System.Windows.Forms.CheckBox checkBox4; private System.Windows.Forms.CheckBox checkBox4;
private System.Windows.Forms.Button button6; private System.Windows.Forms.Button button6;
private System.Windows.Forms.TreeView treeView1; private System.Windows.Forms.TreeView treeView1;
@ -1615,6 +1614,7 @@ namespace NovetusLauncher
private System.Windows.Forms.TextBox SearchBar; private System.Windows.Forms.TextBox SearchBar;
private System.Windows.Forms.Button SearchButton; private System.Windows.Forms.Button SearchButton;
private System.Windows.Forms.Button button36; private System.Windows.Forms.Button button36;
private System.Windows.Forms.CheckBox checkBox8;
//private System.Windows.Forms.CheckBox checkBox8; //private System.Windows.Forms.CheckBox checkBox8;
} }
} }

View File

@ -91,8 +91,8 @@ namespace NovetusLauncher
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3, richTextBox1); GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3, richTextBox1);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort); StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort); StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Udp, GlobalVars.WebServerPort); StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort); StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -108,8 +108,8 @@ namespace NovetusLauncher
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3, richTextBox1); GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3, richTextBox1);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort); StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort); StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Udp, GlobalVars.WebServerPort); StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort); StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -172,19 +172,17 @@ namespace NovetusLauncher
{ {
try try
{ {
GlobalVars.WebServer = new SimpleHTTPServer(GlobalPaths.DataPath, GlobalVars.WebServerPort); GlobalVars.WebServer = new SimpleHTTPServer(GlobalPaths.DataPath, GlobalVars.UserConfiguration.WebServerPort);
GlobalFuncs.ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3, richTextBox1); GlobalFuncs.ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3, richTextBox1);
} }
catch (Exception ex) catch (Exception ex)
{ {
GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (" + ex.Message + ")", 2, richTextBox1); GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (" + ex.Message + ")", 2, richTextBox1);
label17.Visible = false;
} }
} }
else else
{ {
GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (Did not run as Administrator)", 2, richTextBox1); GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (Did not run as Administrator)", 2, richTextBox1);
label17.Visible = false;
} }
} }
@ -226,7 +224,7 @@ namespace NovetusLauncher
string IP = await SecurityFuncs.GetExternalIPAddressAsync(); string IP = await SecurityFuncs.GetExternalIPAddressAsync();
textBox3.Text = ""; textBox3.Text = "";
string[] lines1 = { string[] lines1 = {
SecurityFuncs.Base64Encode(IP), SecurityFuncs.Base64Encode((!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP)),
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()), SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.RobloxPort.ToString()),
SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient) SecurityFuncs.Base64Encode(GlobalVars.UserConfiguration.SelectedClient)
}; };
@ -239,7 +237,7 @@ namespace NovetusLauncher
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2), true); string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2), true);
string[] text = { string[] text = {
"Client: " + GlobalVars.UserConfiguration.SelectedClient, "Client: " + GlobalVars.UserConfiguration.SelectedClient,
"IP: " + IP, "IP: " + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP),
"Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(), "Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(),
"Map: " + GlobalVars.UserConfiguration.Map, "Map: " + GlobalVars.UserConfiguration.Map,
"Players: " + GlobalVars.UserConfiguration.PlayerLimit, "Players: " + GlobalVars.UserConfiguration.PlayerLimit,
@ -249,9 +247,9 @@ namespace NovetusLauncher
"Local URI Link:", "Local URI Link:",
URI2, URI2,
GlobalVars.IsWebServerOn ? "Web Server URL:" : "", GlobalVars.IsWebServerOn ? "Web Server URL:" : "",
GlobalVars.IsWebServerOn ? "http://" + IP + ":" + GlobalVars.WebServer.Port.ToString() : "", GlobalVars.IsWebServerOn ? "http://" + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP) + ":" + GlobalVars.WebServer.Port.ToString() : "",
GlobalVars.IsWebServerOn ? "Local Web Server URL:" : "", GlobalVars.IsWebServerOn ? "Local Web Server URL:" : "",
GlobalVars.IsWebServerOn ? GlobalVars.LocalWebServerURI : "" GlobalVars.IsWebServerOn ? "http://localhost:" + (GlobalVars.WebServer.Port.ToString()).ToString() : ""
}; };
foreach (string str in text) foreach (string str in text)
@ -267,6 +265,7 @@ namespace NovetusLauncher
case TabPage pg4 when pg4 == tabControl1.TabPages["tabPage4"]: case TabPage pg4 when pg4 == tabControl1.TabPages["tabPage4"]:
string mapdir = GlobalPaths.MapsDir; string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl"); TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes); TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes); treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
treeView1.Focus(); treeView1.Focus();
@ -452,7 +451,10 @@ namespace NovetusLauncher
ReadConfigValues(true); ReadConfigValues(true);
InitUPnP(); InitUPnP();
StartDiscord(); StartDiscord();
StartWebServer(); if (!GlobalVars.UserConfiguration.WebServer)
{
StartWebServer();
}
} }
void MainFormClose(object sender, CancelEventArgs e) void MainFormClose(object sender, CancelEventArgs e)
@ -494,6 +496,16 @@ namespace NovetusLauncher
checkBox7.Checked = GlobalVars.UserConfiguration.ReShadePerformanceMode; checkBox7.Checked = GlobalVars.UserConfiguration.ReShadePerformanceMode;
checkBox4.Checked = GlobalVars.UserConfiguration.UPnP; checkBox4.Checked = GlobalVars.UserConfiguration.UPnP;
if (SecurityFuncs.IsElevated)
{
checkBox8.Enabled = true;
checkBox8.Checked = GlobalVars.UserConfiguration.WebServer;
}
else
{
checkBox8.Enabled = false;
}
switch (GlobalVars.UserConfiguration.GraphicsMode) switch (GlobalVars.UserConfiguration.GraphicsMode)
{ {
case Settings.GraphicsOptions.Mode.OpenGL: case Settings.GraphicsOptions.Mode.OpenGL:
@ -1089,9 +1101,9 @@ namespace NovetusLauncher
GlobalVars.UserConfiguration.MapPath = GlobalPaths.BasePath + @"\\" + GlobalVars.UserConfiguration.MapPathSnip; GlobalVars.UserConfiguration.MapPath = GlobalPaths.BasePath + @"\\" + GlobalVars.UserConfiguration.MapPathSnip;
label28.Text = GlobalVars.UserConfiguration.Map; label28.Text = GlobalVars.UserConfiguration.Map;
if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt")) if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt"))
{ {
textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt"); textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt");
} }
else else
{ {
@ -1132,12 +1144,13 @@ namespace NovetusLauncher
_fieldsTreeCache.Nodes.Clear(); _fieldsTreeCache.Nodes.Clear();
string mapdir = GlobalPaths.MapsDir; string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl"); TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes,_fieldsTreeCache.Nodes); TreeNodeHelper.CopyNodes(treeView1.Nodes,_fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes); treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
treeView1.Focus(); treeView1.Focus();
if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt")) if (File.Exists(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt"))
{ {
textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "") + "_desc.txt"); textBox4.Text = File.ReadAllText(GlobalPaths.RootPath + @"\\" + treeView1.SelectedNode.FullPath.ToString().Replace(".rbxl", "").Replace(".rbxlx", "") + "_desc.txt");
} }
else else
{ {
@ -1443,6 +1456,27 @@ namespace NovetusLauncher
MessageBox.Show("You do not have the 'Custom' option selected. Please select it before continuing."); MessageBox.Show("You do not have the 'Custom' option selected. Please select it before continuing.");
} }
} }
private void checkBox8_CheckedChanged(object sender, EventArgs e)
{
GlobalVars.UserConfiguration.WebServer = checkBox8.Checked;
}
void CheckBox8Click(object sender, EventArgs e)
{
switch (checkBox8.Checked)
{
case false:
MessageBox.Show("Novetus will now restart.", "Novetus - UPnP", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
default:
MessageBox.Show("Novetus will now restart." + Environment.NewLine + "Make sure to check if your router has UPnP functionality enabled. Please note that some routers may not support UPnP, and some ISPs will block the UPnP protocol. This may not work for all users.", "Novetus - UPnP", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
WriteConfigValues();
Application.Restart();
}
#endregion #endregion
#region Functions #region Functions
@ -1462,7 +1496,7 @@ namespace NovetusLauncher
}; };
} }
#endregion #endregion
} }
#endregion #endregion
} }

View File

@ -350,13 +350,16 @@
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>SET path=$(SolutionDir)build <PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25" if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\* SET path2=%25path%25\Launcher
del "%25path%25"\*.vshost.exe if not exist "%25path2%25" mkdir "%25path2%25"
del "%25path%25"\*.vshost.exe.config copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\*.vshost.exe.manifest del "%25path%25"\$(TargetName).vshost.exe
del "%25path%25"\*.xml del "%25path%25"\$(TargetName).vshost.exe.config
del "%25path%25"\$(TargetName).vshost.exe.manifest
del "%25path%25"\$(TargetName).xml
if not exist "%25path%25"\bin mkdir "%25path%25"\bin if not exist "%25path%25"\bin mkdir "%25path%25"\bin
move "%25path%25"\* "%25path%25"\bin</PostBuildEvent> move "%25path2%25"\* "%25path%25"\bin
rd /s /q "%25path2%25"</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''"> <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">

View File

@ -176,13 +176,16 @@
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>SET path=$(SolutionDir)build <PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25" if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\* SET path2=%25path%25\URI
del "%25path%25"\*.vshost.exe if not exist "%25path2%25" mkdir "%25path2%25"
del "%25path%25"\*.vshost.exe.config copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\*.vshost.exe.manifest del "%25path%25"\$(TargetName).vshost.exe
del "%25path%25"\*.xml del "%25path%25"\$(TargetName).vshost.exe.config
del "%25path%25"\$(TargetName).vshost.exe.manifest
del "%25path%25"\$(TargetName).xml
if not exist "%25path%25"\bin mkdir "%25path%25"\bin if not exist "%25path%25"\bin mkdir "%25path%25"\bin
move "%25path%25"\* "%25path%25"\bin</PostBuildEvent> move "%25path2%25"\* "%25path%25"\bin
rd /s /q "%25path2%25"</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''"> <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">