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>
<PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\*
del "%25path%25"\*.vshost.exe
del "%25path%25"\*.vshost.exe.config
del "%25path%25"\*.vshost.exe.manifest
del "%25path%25"\*.xml
if not exist "%25path%25"\clients\ClientScriptTester mkdir "%25path%25"\clients\ClientScriptTester
move "%25path%25"\* "%25path%25"\clients\ClientScriptTester</PostBuildEvent>
SET path2=%25path%25\ClientScriptTester
if not exist "%25path2%25" mkdir "%25path2%25"
copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\$(TargetName).vshost.exe
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"\clients\ClientScriptTester
move "%25path2%25"\* "%25path%25"\clients\ClientScriptTester
rd /s /q "%25path2%25"</PostBuildEvent>
</PropertyGroup>
</Project>

View File

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

View File

@ -24,18 +24,16 @@ namespace NovetusCMD
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("-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("-nowebserver | Disables launching of the web server.", 4, true);
GlobalFuncs.ConsolePrint("---------", 1, true);
GlobalFuncs.ConsolePrint("Custom server options", 3, 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("-map <map filename> | Sets the map.", 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("-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("How to launch:", 3, true);
GlobalFuncs.ConsolePrint("---------", 1, true);

View File

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

View File

@ -156,13 +156,16 @@
<PropertyGroup>
<PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\*
del "%25path%25"\*.vshost.exe
del "%25path%25"\*.vshost.exe.config
del "%25path%25"\*.vshost.exe.manifest
del "%25path%25"\*.xml
SET path2=%25path%25\CMD
if not exist "%25path2%25" mkdir "%25path2%25"
copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\$(TargetName).vshost.exe
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
move "%25path%25"\* "%25path%25"\bin</PostBuildEvent>
move "%25path2%25"\* "%25path%25"\bin
rd /s /q "%25path2%25"</PostBuildEvent>
</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')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">

View File

@ -69,8 +69,8 @@ namespace NovetusCMD
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Udp, GlobalVars.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
}
catch (Exception ex)
{
@ -86,8 +86,8 @@ namespace NovetusCMD
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Udp, GlobalVars.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
}
catch (Exception ex)
{
@ -103,7 +103,7 @@ namespace NovetusCMD
{
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);
}
catch (Exception ex)
@ -174,89 +174,7 @@ namespace NovetusCMD
log.Error("FOOTPRINTS: " + (!string.IsNullOrWhiteSpace(eventArgs.Exception.GetExceptionFootprints()) ? eventArgs.Exception.GetExceptionFootprints() : "N/A"));
};
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["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);
}
}
}
LoadCMDArgs(args);
if (!LocalVars.PrintHelp)
{
@ -266,26 +184,19 @@ namespace NovetusCMD
GlobalFuncs.ConsolePrint("NovetusCMD version " + GlobalVars.ProgramInformation.Version + " loaded.", 1);
GlobalFuncs.ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 1);
if (!LocalVars.OverrideINI)
{
GlobalFuncs.ConsolePrint("NovetusCMD is now loading all server configurations from the INI file.", 5);
GlobalFuncs.ConsolePrint("NovetusCMD is now loading main server configurations from the INI file.", 5);
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
if (!File.Exists(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName))
{
GlobalFuncs.ReadClientValues(true);
GlobalFuncs.ConsolePrint("WARNING 2 - " + GlobalPaths.ConfigName + " not found. Creating one with default values.", 5);
WriteConfigValues();
}
ReadConfigValues(true);
LoadOverrideINIArgs(args);
InitUPnP();
if (!LocalVars.NoWebServer)
if (!GlobalVars.UserConfiguration.WebServer)
{
StartWebServer();
}
@ -315,7 +226,10 @@ namespace NovetusCMD
static void ProgramClose(object sender, EventArgs e)
{
WriteConfigValues();
if (!LocalVars.OverrideINI)
{
WriteConfigValues();
}
if (GlobalVars.IsWebServerOn)
{
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
#region Client Loading

View File

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

View File

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

View File

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

View File

@ -32,7 +32,7 @@ class SDKFuncs
{
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"
};

View File

@ -119,6 +119,9 @@ public class GlobalFuncs
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, "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
{
@ -128,7 +131,7 @@ public class GlobalFuncs
string closeonlaunch, userid, name, selectedclient,
map, port, limit, upnp,
disablehelpmessage, tripcode, discord, mappath, mapsnip,
graphics, reshade, qualitylevel, style, savebackups;
graphics, reshade, qualitylevel, style, savebackups, altIP, WS, WSPort;
INIFile ini = new INIFile(cfgpath);
@ -152,7 +155,10 @@ public class GlobalFuncs
qualitylevel = ini.IniReadValue(section, "QualityLevel", Settings.GraphicsOptions.GetIntForLevel(GlobalVars.UserConfiguration.QualityLevel).ToString());
style = ini.IniReadValue(section, "Style", Settings.UIOptions.GetIntForStyle(GlobalVars.UserConfiguration.LauncherStyle).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);
if (userid.Equals("0"))
@ -202,6 +208,9 @@ public class GlobalFuncs
GlobalVars.UserConfiguration.QualityLevel = Settings.GraphicsOptions.GetLevelForInt(Convert.ToInt32(qualitylevel));
GlobalVars.UserConfiguration.LauncherStyle = Settings.UIOptions.GetStyleForInt(Convert.ToInt32(style));
GlobalVars.UserConfiguration.AssetLocalizerSaveBackups = Convert.ToBoolean(savebackups);
GlobalVars.UserConfiguration.AlternateServerIP = altIP;
GlobalVars.UserConfiguration.WebServerPort = Convert.ToInt32(WSPort);
GlobalVars.UserConfiguration.WebServer = Convert.ToBoolean(WS);
}
catch (Exception)
{
@ -1470,7 +1479,7 @@ public class GlobalFuncs
{
string IP = await SecurityFuncs.GetExternalIPAddressAsync();
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.SelectedClient)
};
@ -1488,7 +1497,7 @@ public class GlobalFuncs
"--------------------",
"Server Info:",
"Client: " + GlobalVars.UserConfiguration.SelectedClient,
"IP: " + IP,
"IP: " + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP),
"Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(),
"Map: " + GlobalVars.UserConfiguration.Map,
"Players: " + GlobalVars.UserConfiguration.PlayerLimit,
@ -1498,9 +1507,9 @@ public class GlobalFuncs
"Local URI Link:",
URI2,
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 ? GlobalVars.LocalWebServerURI : ""
GlobalVars.IsWebServerOn ? "http://localhost:" + (GlobalVars.WebServer.Port.ToString()).ToString() : ""
);
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/";
#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 Base Paths

View File

@ -55,12 +55,6 @@ public static class GlobalVars
public static bool AdminMode = false;
#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
//discord
public static DiscordRPC.RichPresence presence;

View File

@ -294,6 +294,15 @@ public class ScriptFuncs
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
string md5dir = !info.AlreadyHasSecurity ? SecurityFuncs.GenerateMD5(Assembly.GetExecutingAssembly().Location) : "";
#else
@ -345,16 +354,16 @@ public class ScriptFuncs
.Replace("%extrad%", GlobalPaths.extraGameDir + GlobalVars.UserCustomization.Extra)
.Replace("%hat4d%", GlobalPaths.hatGameDir + GlobalVars.UserCustomization.Extra)
.Replace("%args%", GetRawArgsForType(type, md5s, luafile))
.Replace("%facews%", GlobalVars.UserCustomization.Face.Contains("http://") ? GlobalVars.UserCustomization.Face : GlobalPaths.WebServer_FaceDir + GlobalVars.UserCustomization.Face)
.Replace("%headws%", GlobalPaths.WebServer_HeadDir + GlobalVars.UserCustomization.Head)
.Replace("%tshirtws%", GlobalVars.UserCustomization.TShirt.Contains("http://") ? GlobalVars.UserCustomization.TShirt : GlobalPaths.WebServer_TShirtDir + GlobalVars.UserCustomization.TShirt)
.Replace("%shirtws%", GlobalVars.UserCustomization.Shirt.Contains("http://") ? GlobalVars.UserCustomization.Shirt : GlobalPaths.WebServer_ShirtDir + GlobalVars.UserCustomization.Shirt)
.Replace("%pantsws%", GlobalVars.UserCustomization.Pants.Contains("http://") ? GlobalVars.UserCustomization.Pants : GlobalPaths.WebServer_PantsDir + GlobalVars.UserCustomization.Pants)
.Replace("%hat1ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Hat1)
.Replace("%hat2ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Hat2)
.Replace("%hat3ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Hat3)
.Replace("%extraws%", GlobalPaths.WebServer_ExtraDir + GlobalVars.UserCustomization.Extra)
.Replace("%hat4ws%", GlobalPaths.WebServer_HatDir + GlobalVars.UserCustomization.Extra)
.Replace("%facews%", GlobalVars.UserCustomization.Face.Contains("http://") ? GlobalVars.UserCustomization.Face : WebServer_FaceDir + GlobalVars.UserCustomization.Face)
.Replace("%headws%", WebServer_HeadDir + GlobalVars.UserCustomization.Head)
.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 : WebServer_ShirtDir + GlobalVars.UserCustomization.Shirt)
.Replace("%pantsws%", GlobalVars.UserCustomization.Pants.Contains("http://") ? GlobalVars.UserCustomization.Pants : WebServer_PantsDir + GlobalVars.UserCustomization.Pants)
.Replace("%hat1ws%", WebServer_HatDir + GlobalVars.UserCustomization.Hat1)
.Replace("%hat2ws%", WebServer_HatDir + GlobalVars.UserCustomization.Hat2)
.Replace("%hat3ws%", WebServer_HatDir + GlobalVars.UserCustomization.Hat3)
.Replace("%extraws%", WebServer_ExtraDir + GlobalVars.UserCustomization.Extra)
.Replace("%hat4ws%", WebServer_HatDir + GlobalVars.UserCustomization.Extra)
.Replace("%mapfiled%", GlobalPaths.BaseGameDir + GlobalVars.UserConfiguration.MapPathSnip.Replace(@"\\", @"\").Replace(@"/", @"\"))
.Replace("%mapfilec%", GlobalFuncs.CopyMapToRBXAsset())
.Replace("%tripcode%", GlobalVars.UserConfiguration.PlayerTripcode)

View File

@ -59,7 +59,6 @@ namespace NovetusLauncher
this.tabPage2 = new System.Windows.Forms.TabPage();
this.label19 = new System.Windows.Forms.Label();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.checkBox4 = new System.Windows.Forms.CheckBox();
this.button23 = 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.listBox2 = new System.Windows.Forms.ListBox();
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.button24 = new System.Windows.Forms.Button();
this.treeView1 = new System.Windows.Forms.TreeView();
@ -153,8 +154,7 @@ namespace NovetusLauncher
this.panel3 = new System.Windows.Forms.Panel();
this.panel4 = new System.Windows.Forms.Panel();
this.button35 = new System.Windows.Forms.Button();
this.SearchBar = new System.Windows.Forms.TextBox();
this.SearchButton = new System.Windows.Forms.Button();
this.checkBox8 = new System.Windows.Forms.CheckBox();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
@ -348,9 +348,9 @@ namespace NovetusLauncher
//
// tabPage2
//
this.tabPage2.Controls.Add(this.checkBox8);
this.tabPage2.Controls.Add(this.label19);
this.tabPage2.Controls.Add(this.textBox3);
this.tabPage2.Controls.Add(this.label17);
this.tabPage2.Controls.Add(this.checkBox4);
this.tabPage2.Controls.Add(this.button23);
this.tabPage2.Controls.Add(this.button22);
@ -389,28 +389,17 @@ namespace NovetusLauncher
this.textBox3.Name = "textBox3";
this.textBox3.ReadOnly = true;
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;
//
// 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
//
this.checkBox4.AutoSize = true;
this.checkBox4.Location = new System.Drawing.Point(204, 189);
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.Text = "Toggle UPnP";
this.checkBox4.Text = "UPnP";
this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.CheckBox4CheckedChanged);
this.checkBox4.Click += new System.EventHandler(this.CheckBox4Click);
@ -580,6 +569,23 @@ namespace NovetusLauncher
this.tabPage4.Text = "MAPS";
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
//
this.textBox4.BackColor = System.Drawing.SystemColors.ControlLightLight;
@ -1330,22 +1336,17 @@ namespace NovetusLauncher
this.button35.Size = new System.Drawing.Size(75, 23);
this.button35.TabIndex = 0;
//
// SearchBar
// checkBox8
//
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;
//
// 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);
this.checkBox8.AutoSize = true;
this.checkBox8.Location = new System.Drawing.Point(265, 189);
this.checkBox8.Name = "checkBox8";
this.checkBox8.Size = new System.Drawing.Size(83, 17);
this.checkBox8.TabIndex = 62;
this.checkBox8.Text = "Web Server";
this.checkBox8.UseVisualStyleBackColor = true;
this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox8_CheckedChanged);
this.checkBox8.Click += new System.EventHandler(this.CheckBox8Click);
//
// LauncherFormCompact
//
@ -1402,8 +1403,6 @@ namespace NovetusLauncher
this.PerformLayout();
}
private System.Windows.Forms.Label label17;
private System.Windows.Forms.CheckBox checkBox4;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.TreeView treeView1;
@ -1517,6 +1516,7 @@ namespace NovetusLauncher
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox SearchBar;
private System.Windows.Forms.Button SearchButton;
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);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Udp, GlobalVars.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
}
catch (Exception ex)
{
@ -104,8 +104,8 @@ namespace NovetusLauncher
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3, richTextBox1);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Udp, GlobalVars.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
}
catch (Exception ex)
{
@ -168,19 +168,17 @@ namespace NovetusLauncher
{
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);
}
catch (Exception ex)
{
GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (" + ex.Message + ")", 2, richTextBox1);
label17.Visible = false;
}
}
else
{
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();
textBox3.Text = "";
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.SelectedClient)
};
@ -235,7 +233,7 @@ namespace NovetusLauncher
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2), true);
string[] text = {
"Client: " + GlobalVars.UserConfiguration.SelectedClient,
"IP: " + IP,
"IP: " + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP),
"Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(),
"Map: " + GlobalVars.UserConfiguration.Map,
"Players: " + GlobalVars.UserConfiguration.PlayerLimit,
@ -245,9 +243,9 @@ namespace NovetusLauncher
"Local URI Link:",
URI2,
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 ? GlobalVars.LocalWebServerURI : ""
GlobalVars.IsWebServerOn ? "http://localhost:" + (GlobalVars.WebServer.Port.ToString()).ToString() : ""
};
foreach (string str in text)
@ -263,6 +261,7 @@ namespace NovetusLauncher
case TabPage pg4 when pg4 == tabControl1.TabPages["tabPage4"]:
string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
treeView1.Focus();
@ -420,7 +419,10 @@ namespace NovetusLauncher
ReadConfigValues(true);
InitUPnP();
StartDiscord();
StartWebServer();
if (!GlobalVars.UserConfiguration.WebServer)
{
StartWebServer();
}
}
void MainFormClose(object sender, CancelEventArgs e)
@ -459,6 +461,16 @@ namespace NovetusLauncher
checkBox2.Checked = GlobalVars.UserConfiguration.DiscordPresence;
checkBox4.Checked = GlobalVars.UserConfiguration.UPnP;
if (SecurityFuncs.IsElevated)
{
checkBox8.Enabled = true;
checkBox8.Checked = GlobalVars.UserConfiguration.WebServer;
}
else
{
checkBox8.Enabled = false;
}
switch (GlobalVars.UserConfiguration.LauncherStyle)
{
case Settings.UIOptions.Style.Compact:
@ -1016,9 +1028,9 @@ namespace NovetusLauncher
GlobalVars.UserConfiguration.MapPath = GlobalPaths.BasePath + @"\\" + GlobalVars.UserConfiguration.MapPathSnip;
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
{
@ -1059,12 +1071,13 @@ namespace NovetusLauncher
_fieldsTreeCache.Nodes.Clear();
string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
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
{
@ -1273,6 +1286,27 @@ namespace NovetusLauncher
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
#region Functions

View File

@ -87,7 +87,6 @@ namespace NovetusLauncher
this.tabPage2 = new System.Windows.Forms.TabPage();
this.label19 = new System.Windows.Forms.Label();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.checkBox4 = new System.Windows.Forms.CheckBox();
this.button23 = 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.tabPage5 = new System.Windows.Forms.TabPage();
this.panel5 = new System.Windows.Forms.Panel();
this.button36 = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label();
this.comboBox3 = 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.button35 = 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();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
@ -638,9 +638,9 @@ namespace NovetusLauncher
//
// tabPage2
//
this.tabPage2.Controls.Add(this.checkBox8);
this.tabPage2.Controls.Add(this.label19);
this.tabPage2.Controls.Add(this.textBox3);
this.tabPage2.Controls.Add(this.label17);
this.tabPage2.Controls.Add(this.checkBox4);
this.tabPage2.Controls.Add(this.button23);
this.tabPage2.Controls.Add(this.button22);
@ -676,27 +676,16 @@ namespace NovetusLauncher
this.textBox3.Name = "textBox3";
this.textBox3.ReadOnly = true;
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;
//
// 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
//
this.checkBox4.Location = new System.Drawing.Point(321, 180);
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.Text = "Toggle UPnP";
this.checkBox4.Text = "UPnP";
this.checkBox4.UseVisualStyleBackColor = true;
this.checkBox4.CheckedChanged += new System.EventHandler(this.CheckBox4CheckedChanged);
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.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
//
this.label5.AutoSize = true;
@ -1440,15 +1439,17 @@ namespace NovetusLauncher
this.UAButton.Size = new System.Drawing.Size(75, 23);
this.UAButton.TabIndex = 0;
//
// button36
// checkBox8
//
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);
this.checkBox8.AutoSize = true;
this.checkBox8.Location = new System.Drawing.Point(379, 180);
this.checkBox8.Name = "checkBox8";
this.checkBox8.Size = new System.Drawing.Size(83, 17);
this.checkBox8.TabIndex = 61;
this.checkBox8.Text = "Web Server";
this.checkBox8.UseVisualStyleBackColor = true;
this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox8_CheckedChanged);
this.checkBox8.Click += new System.EventHandler(this.CheckBox8Click);
//
// LauncherFormExtended
//
@ -1500,8 +1501,6 @@ namespace NovetusLauncher
this.ResumeLayout(false);
}
private System.Windows.Forms.Label label17;
private System.Windows.Forms.CheckBox checkBox4;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.TreeView treeView1;
@ -1615,6 +1614,7 @@ namespace NovetusLauncher
private System.Windows.Forms.TextBox SearchBar;
private System.Windows.Forms.Button SearchButton;
private System.Windows.Forms.Button button36;
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);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StartUPnP(device, Protocol.Udp, GlobalVars.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort);
StartUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
}
catch (Exception ex)
{
@ -108,8 +108,8 @@ namespace NovetusLauncher
GlobalFuncs.ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3, richTextBox1);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.RobloxPort);
StopUPnP(device, Protocol.Udp, GlobalVars.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServerPort);
StopUPnP(device, Protocol.Udp, GlobalVars.UserConfiguration.WebServerPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.UserConfiguration.WebServerPort);
}
catch (Exception ex)
{
@ -172,19 +172,17 @@ namespace NovetusLauncher
{
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);
}
catch (Exception ex)
{
GlobalFuncs.ConsolePrint("WebServer: Failed to launch WebServer. Some features may not function. (" + ex.Message + ")", 2, richTextBox1);
label17.Visible = false;
}
}
else
{
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();
textBox3.Text = "";
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.SelectedClient)
};
@ -239,7 +237,7 @@ namespace NovetusLauncher
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|", lines2), true);
string[] text = {
"Client: " + GlobalVars.UserConfiguration.SelectedClient,
"IP: " + IP,
"IP: " + (!string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.AlternateServerIP) ? GlobalVars.UserConfiguration.AlternateServerIP : IP),
"Port: " + GlobalVars.UserConfiguration.RobloxPort.ToString(),
"Map: " + GlobalVars.UserConfiguration.Map,
"Players: " + GlobalVars.UserConfiguration.PlayerLimit,
@ -249,9 +247,9 @@ namespace NovetusLauncher
"Local URI Link:",
URI2,
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 ? GlobalVars.LocalWebServerURI : ""
GlobalVars.IsWebServerOn ? "http://localhost:" + (GlobalVars.WebServer.Port.ToString()).ToString() : ""
};
foreach (string str in text)
@ -267,6 +265,7 @@ namespace NovetusLauncher
case TabPage pg4 when pg4 == tabControl1.TabPages["tabPage4"]:
string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes, _fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
treeView1.Focus();
@ -452,7 +451,10 @@ namespace NovetusLauncher
ReadConfigValues(true);
InitUPnP();
StartDiscord();
StartWebServer();
if (!GlobalVars.UserConfiguration.WebServer)
{
StartWebServer();
}
}
void MainFormClose(object sender, CancelEventArgs e)
@ -494,6 +496,16 @@ namespace NovetusLauncher
checkBox7.Checked = GlobalVars.UserConfiguration.ReShadePerformanceMode;
checkBox4.Checked = GlobalVars.UserConfiguration.UPnP;
if (SecurityFuncs.IsElevated)
{
checkBox8.Enabled = true;
checkBox8.Checked = GlobalVars.UserConfiguration.WebServer;
}
else
{
checkBox8.Enabled = false;
}
switch (GlobalVars.UserConfiguration.GraphicsMode)
{
case Settings.GraphicsOptions.Mode.OpenGL:
@ -1089,9 +1101,9 @@ namespace NovetusLauncher
GlobalVars.UserConfiguration.MapPath = GlobalPaths.BasePath + @"\\" + GlobalVars.UserConfiguration.MapPathSnip;
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
{
@ -1132,12 +1144,13 @@ namespace NovetusLauncher
_fieldsTreeCache.Nodes.Clear();
string mapdir = GlobalPaths.MapsDir;
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxl");
TreeNodeHelper.ListDirectory(treeView1, mapdir, ".rbxlx");
TreeNodeHelper.CopyNodes(treeView1.Nodes,_fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.UserConfiguration.Map, treeView1.Nodes);
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
{
@ -1443,6 +1456,27 @@ namespace NovetusLauncher
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
#region Functions
@ -1462,7 +1496,7 @@ namespace NovetusLauncher
};
}
#endregion
}
#endregion
}
#endregion
}

View File

@ -350,13 +350,16 @@
<PropertyGroup>
<PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\*
del "%25path%25"\*.vshost.exe
del "%25path%25"\*.vshost.exe.config
del "%25path%25"\*.vshost.exe.manifest
del "%25path%25"\*.xml
SET path2=%25path%25\Launcher
if not exist "%25path2%25" mkdir "%25path2%25"
copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\$(TargetName).vshost.exe
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
move "%25path%25"\* "%25path%25"\bin</PostBuildEvent>
move "%25path2%25"\* "%25path%25"\bin
rd /s /q "%25path2%25"</PostBuildEvent>
</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')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">

View File

@ -176,13 +176,16 @@
<PropertyGroup>
<PostBuildEvent>SET path=$(SolutionDir)build
if not exist "%25path%25" mkdir "%25path%25"
copy $(ProjectDir)$(OutDir) "%25path%25"\*
del "%25path%25"\*.vshost.exe
del "%25path%25"\*.vshost.exe.config
del "%25path%25"\*.vshost.exe.manifest
del "%25path%25"\*.xml
SET path2=%25path%25\URI
if not exist "%25path2%25" mkdir "%25path2%25"
copy $(ProjectDir)$(OutDir) "%25path2%25"\*
del "%25path%25"\$(TargetName).vshost.exe
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
move "%25path%25"\* "%25path%25"\bin</PostBuildEvent>
move "%25path2%25"\* "%25path%25"\bin
rd /s /q "%25path2%25"</PostBuildEvent>
</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')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">