unfinished regioning of sdk

This commit is contained in:
Bitl 2020-07-09 14:14:51 -07:00
parent 165ca4f304
commit d25ef8dedb
11 changed files with 852 additions and 871 deletions

View File

@ -161,17 +161,11 @@ public class GlobalFuncs
} }
GlobalVars.UserConfiguration.PlayerName = name; GlobalVars.UserConfiguration.PlayerName = name;
GlobalVars.UserConfiguration.SelectedClient = selectedclient; GlobalVars.UserConfiguration.SelectedClient = selectedclient;
GlobalVars.UserConfiguration.Map = map; GlobalVars.UserConfiguration.Map = map;
GlobalVars.UserConfiguration.RobloxPort = Convert.ToInt32(port); GlobalVars.UserConfiguration.RobloxPort = Convert.ToInt32(port);
GlobalVars.UserConfiguration.PlayerLimit = Convert.ToInt32(limit); GlobalVars.UserConfiguration.PlayerLimit = Convert.ToInt32(limit);
GlobalVars.UserConfiguration.UPnP = Convert.ToBoolean(upnp); GlobalVars.UserConfiguration.UPnP = Convert.ToBoolean(upnp);
GlobalVars.UserConfiguration.DisabledItemMakerHelp = Convert.ToBoolean(disablehelpmessage); GlobalVars.UserConfiguration.DisabledItemMakerHelp = Convert.ToBoolean(disablehelpmessage);
if (string.IsNullOrWhiteSpace(SecurityFuncs.Base64Decode(tripcode))) if (string.IsNullOrWhiteSpace(SecurityFuncs.Base64Decode(tripcode)))
@ -185,10 +179,8 @@ public class GlobalFuncs
} }
GlobalVars.UserConfiguration.DiscordPresence = Convert.ToBoolean(discord); GlobalVars.UserConfiguration.DiscordPresence = Convert.ToBoolean(discord);
GlobalVars.UserConfiguration.MapPath = mappath; GlobalVars.UserConfiguration.MapPath = mappath;
GlobalVars.UserConfiguration.MapPathSnip = mapsnip; GlobalVars.UserConfiguration.MapPathSnip = mapsnip;
GlobalVars.UserConfiguration.GraphicsMode = Settings.GraphicsOptions.GetModeForInt(Convert.ToInt32(graphics)); GlobalVars.UserConfiguration.GraphicsMode = Settings.GraphicsOptions.GetModeForInt(Convert.ToInt32(graphics));
GlobalVars.UserConfiguration.ReShade = Convert.ToBoolean(reshade); GlobalVars.UserConfiguration.ReShade = Convert.ToBoolean(reshade);
GlobalVars.UserConfiguration.QualityLevel = Settings.GraphicsOptions.GetLevelForInt(Convert.ToInt32(qualitylevel)); GlobalVars.UserConfiguration.QualityLevel = Settings.GraphicsOptions.GetLevelForInt(Convert.ToInt32(qualitylevel));
@ -328,14 +320,9 @@ public class GlobalFuncs
GlobalVars.UserCustomization.Icon = icon; GlobalVars.UserCustomization.Icon = icon;
GlobalVars.UserCustomization.CharacterID = characterid; GlobalVars.UserCustomization.CharacterID = characterid;
GlobalVars.UserCustomization.Extra = extra; GlobalVars.UserCustomization.Extra = extra;
GlobalVars.UserCustomization.ExtraSelectionIsHat = Convert.ToBoolean(extraishat);
bool bline24 = Convert.ToBoolean(extraishat); GlobalVars.UserCustomization.ShowHatsInExtra = Convert.ToBoolean(showhatsonextra);
GlobalVars.UserCustomization.ExtraSelectionIsHat = bline24;
bool bline9 = Convert.ToBoolean(showhatsonextra);
GlobalVars.UserCustomization.ShowHatsInExtra = bline9;
} }
catch (Exception) catch (Exception)
{ {
@ -443,30 +430,16 @@ public class GlobalFuncs
commandlineargs = SecurityFuncs.Base64Decode(result[10]); commandlineargs = SecurityFuncs.Base64Decode(result[10]);
} }
bool bline1 = Convert.ToBoolean(usesplayername); GlobalVars.SelectedClientInfo.UsesPlayerName = Convert.ToBoolean(usesplayername);
GlobalVars.SelectedClientInfo.UsesPlayerName = bline1; GlobalVars.SelectedClientInfo.UsesID = Convert.ToBoolean(usesid);
bool bline2 = Convert.ToBoolean(usesid);
GlobalVars.SelectedClientInfo.UsesID = bline2;
GlobalVars.SelectedClientInfo.Warning = warning; GlobalVars.SelectedClientInfo.Warning = warning;
GlobalVars.SelectedClientInfo.LegacyMode = Convert.ToBoolean(legacymode);
bool bline4 = Convert.ToBoolean(legacymode);
GlobalVars.SelectedClientInfo.LegacyMode = bline4;
GlobalVars.SelectedClientInfo.ClientMD5 = clientmd5; GlobalVars.SelectedClientInfo.ClientMD5 = clientmd5;
GlobalVars.SelectedClientInfo.ScriptMD5 = scriptmd5; GlobalVars.SelectedClientInfo.ScriptMD5 = scriptmd5;
GlobalVars.SelectedClientInfo.Description = desc; GlobalVars.SelectedClientInfo.Description = desc;
GlobalVars.SelectedClientInfo.Fix2007 = Convert.ToBoolean(fix2007);
bool bline9 = Convert.ToBoolean(fix2007); GlobalVars.SelectedClientInfo.AlreadyHasSecurity = Convert.ToBoolean(alreadyhassecurity);
GlobalVars.SelectedClientInfo.Fix2007 = bline9; GlobalVars.SelectedClientInfo.NoGraphicsOptions = Convert.ToBoolean(nographicsoptions);
bool bline10 = Convert.ToBoolean(alreadyhassecurity);
GlobalVars.SelectedClientInfo.AlreadyHasSecurity = bline10;
bool bline11 = Convert.ToBoolean(nographicsoptions);
GlobalVars.SelectedClientInfo.NoGraphicsOptions = bline11;
GlobalVars.SelectedClientInfo.CommandLineArgs = commandlineargs; GlobalVars.SelectedClientInfo.CommandLineArgs = commandlineargs;
} }

View File

@ -0,0 +1,39 @@
#region Usings
using System.IO;
#endregion
namespace NovetusLauncher
{
#region Launcher Functions
class LauncherFuncs
{
public static void CreateAssetCacheDirectories()
{
if (!Directory.Exists(LocalPaths.AssetCacheDirFonts))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirFonts);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSky))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSky);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSounds))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSounds);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirTexturesGUI))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirTexturesGUI);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirScripts))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirScripts);
}
}
}
#endregion
}

View File

@ -0,0 +1,679 @@
#region Usings
using System;
using System.ComponentModel;
using System.IO;
using System.Text;
using System.Windows.Forms;
#endregion
namespace NovetusLauncher
{
#region SDK Functions
class SDKFuncs
{
#region Asset Localizer
public static OpenFileDialog LoadROBLOXFileDialog(RobloxFileType type)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog
{
Filter = (type == RobloxFileType.RBXL) ? "ROBLOX Level (*.rbxl)|*.rbxl" : "ROBLOX Model (*.rbxm)|*.rbxm",
Title = "Open ROBLOX level or model"
};
return openFileDialog1;
}
public static RobloxFileType SelectROBLOXFileType(int index)
{
RobloxFileType type;
switch (index)
{
case 1:
type = RobloxFileType.RBXM;
break;
case 2:
type = RobloxFileType.Hat;
break;
case 3:
type = RobloxFileType.Head;
break;
case 4:
type = RobloxFileType.Face;
break;
case 5:
type = RobloxFileType.Shirt;
break;
case 6:
type = RobloxFileType.TShirt;
break;
case 7:
type = RobloxFileType.Pants;
break;
default:
type = RobloxFileType.RBXL;
break;
}
return type;
}
public static string GetProgressString(RobloxFileType type, int percent)
{
string progressString = "";
switch (type)
{
case RobloxFileType.RBXL:
switch (percent)
{
case 0:
progressString = "Backing up RBXL...";
break;
case 5:
progressString = "Downloading RBXL Meshes and Textures...";
break;
case 10:
progressString = "Downloading RBXL Skybox Textures...";
break;
case 15:
progressString = "Downloading RBXL Decal Textures...";
break;
case 20:
progressString = "Downloading RBXL Textures...";
break;
case 25:
progressString = "Downloading RBXL Tool Textures...";
break;
case 30:
progressString = "Downloading RBXL HopperBin Textures...";
break;
case 40:
progressString = "Downloading RBXL Sounds...";
break;
case 50:
progressString = "Downloading RBXL GUI Textures...";
break;
case 60:
progressString = "Downloading RBXL Shirt Textures...";
break;
case 65:
progressString = "Downloading RBXL T-Shirt Textures...";
break;
case 70:
progressString = "Downloading RBXL Pants Textures...";
break;
case 80:
progressString = "Downloading RBXL Linked Scripts...";
break;
case 90:
progressString = "Downloading RBXL Linked LocalScripts...";
break;
}
break;
case RobloxFileType.RBXM:
switch (percent)
{
case 0:
progressString = "Downloading RBXL Meshes and Textures...";
break;
case 10:
progressString = "Downloading RBXL Skybox Textures...";
break;
case 15:
progressString = "Downloading RBXL Decal Textures...";
break;
case 20:
progressString = "Downloading RBXL Textures...";
break;
case 25:
progressString = "Downloading RBXL Tool Textures...";
break;
case 30:
progressString = "Downloading RBXL HopperBin Textures...";
break;
case 40:
progressString = "Downloading RBXL Sounds...";
break;
case 50:
progressString = "Downloading RBXL GUI Textures...";
break;
case 60:
progressString = "Downloading RBXL Shirt Textures...";
break;
case 65:
progressString = "Downloading RBXL T-Shirt Textures...";
break;
case 70:
progressString = "Downloading RBXL Pants Textures...";
break;
case 80:
progressString = "Downloading RBXL Linked Scripts...";
break;
case 90:
progressString = "Downloading RBXL Linked LocalScripts...";
break;
}
break;
case RobloxFileType.Hat:
switch (percent)
{
case 0:
progressString = "Downloading Hat Meshes and Textures...";
break;
case 25:
progressString = "Downloading Hat Sounds...";
break;
case 50:
progressString = "Downloading Hat Linked Scripts...";
break;
case 75:
progressString = "Downloading Hat Linked LocalScripts...";
break;
}
break;
case RobloxFileType.Head:
//meshes
switch (percent)
{
case 0:
progressString = "Downloading Head Meshes and Textures...";
break;
}
break;
case RobloxFileType.Face:
//decal
switch (percent)
{
case 0:
progressString = "Downloading Face Textures...";
break;
}
break;
case RobloxFileType.TShirt:
//texture
switch (percent)
{
case 0:
progressString = "Downloading T-Shirt Textures...";
break;
}
break;
case RobloxFileType.Shirt:
//texture
switch (percent)
{
case 0:
progressString = "Downloading Shirt Textures...";
break;
}
break;
case RobloxFileType.Pants:
//texture
switch (percent)
{
case 0:
progressString = "Downloading Pants Textures...";
break;
}
break;
default:
progressString = "Idle";
break;
}
return progressString + " " + percent.ToString() + "%";
}
public static void LocalizeAsset(RobloxFileType type, BackgroundWorker worker, string path, string itemname, string meshname)
{
try
{
switch (type)
{
case RobloxFileType.RBXL:
//backup the original copy
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxl", " BAK.rbxl"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
worker.ReportProgress(5);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts, 1, 1, 1, 1);
//skybox
worker.ReportProgress(10);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 1, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 2, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 3, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 4, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 5, 0, 0, 0);
//decal
worker.ReportProgress(15);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Decal);
//texture
worker.ReportProgress(20);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Texture);
//tools and hopperbin
worker.ReportProgress(25);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Tool);
worker.ReportProgress(30);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.HopperBin);
//sound
worker.ReportProgress(40);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sound);
worker.ReportProgress(50);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ImageLabel);
//clothing
worker.ReportProgress(60);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Shirt);
worker.ReportProgress(65);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ShirtGraphic);
worker.ReportProgress(70);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Pants);
//scripts
worker.ReportProgress(80);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Script);
worker.ReportProgress(90);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.LocalScript);
worker.ReportProgress(100);
break;
case RobloxFileType.RBXM:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts, 1, 1, 1, 1);
//skybox
worker.ReportProgress(10);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 1, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 2, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 3, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 4, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 5, 0, 0, 0);
//decal
worker.ReportProgress(15);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Decal);
//texture
worker.ReportProgress(20);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Texture);
//tools and hopperbin
worker.ReportProgress(25);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Tool);
worker.ReportProgress(30);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.HopperBin);
//sound
worker.ReportProgress(40);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sound);
worker.ReportProgress(50);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ImageLabel);
//clothing
worker.ReportProgress(60);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Shirt);
worker.ReportProgress(65);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ShirtGraphic);
worker.ReportProgress(70);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Pants);
//scripts
worker.ReportProgress(80);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Script);
worker.ReportProgress(90);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.LocalScript);
worker.ReportProgress(100);
break;
case RobloxFileType.Hat:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatFonts, itemname, meshname);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatFonts, 1, 1, 1, 1, itemname);
worker.ReportProgress(25);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatSound);
//scripts
worker.ReportProgress(50);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatScript);
worker.ReportProgress(75);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatLocalScript);
worker.ReportProgress(100);
break;
case RobloxFileType.Head:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHeadFonts, itemname);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHeadFonts, 1, 1, 1, 1, itemname);
worker.ReportProgress(100);
break;
case RobloxFileType.Face:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//decal
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemFaceTexture, itemname);
worker.ReportProgress(100);
break;
case RobloxFileType.TShirt:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//texture
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemTShirtTexture, itemname);
worker.ReportProgress(100);
break;
case RobloxFileType.Shirt:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//texture
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemShirtTexture, itemname);
worker.ReportProgress(100);
break;
case RobloxFileType.Pants:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//texture
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemPantsTexture, itemname);
worker.ReportProgress(100);
break;
default:
worker.ReportProgress(100);
break;
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Unable to localize the asset. " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
#region Client SDK
public static string SaveClientinfoAndGetPath(FileFormat.ClientInfo info, bool islocked, bool textonly = false)
{
string path = "";
using (var sfd = new SaveFileDialog())
{
sfd.Filter = textonly ? "Text file (*.txt)|*.txt" : "Novetus Clientinfo files (*.nov)|*.nov";
sfd.FilterIndex = 1;
string filename = textonly ? "clientinfo.txt" : "clientinfo.nov";
sfd.FileName = filename;
sfd.Title = "Save " + filename;
if (sfd.ShowDialog() == DialogResult.OK)
{
string[] lines = {
textonly ? info.UsesPlayerName.ToString() : SecurityFuncs.Base64Encode(info.UsesPlayerName.ToString()),
textonly ? info.UsesID.ToString() : SecurityFuncs.Base64Encode(info.UsesID.ToString()),
textonly ? info.Warning.ToString() : SecurityFuncs.Base64Encode(info.Warning.ToString()),
textonly ? info.LegacyMode.ToString() : SecurityFuncs.Base64Encode(info.LegacyMode.ToString()),
textonly ? info.ClientMD5.ToString() : SecurityFuncs.Base64Encode(info.ClientMD5.ToString()),
textonly ? info.ScriptMD5.ToString() : SecurityFuncs.Base64Encode(info.ScriptMD5.ToString()),
textonly ? info.Description.ToString() : SecurityFuncs.Base64Encode(info.Description.ToString()),
textonly ? islocked.ToString() : SecurityFuncs.Base64Encode(islocked.ToString()),
textonly ? info.Fix2007.ToString() : SecurityFuncs.Base64Encode(info.Fix2007.ToString()),
textonly ? info.AlreadyHasSecurity.ToString() : SecurityFuncs.Base64Encode(info.AlreadyHasSecurity.ToString()),
textonly ? info.NoGraphicsOptions.ToString() : SecurityFuncs.Base64Encode(info.NoGraphicsOptions.ToString()),
textonly ? info.CommandLineArgs.ToString() : SecurityFuncs.Base64Encode(info.CommandLineArgs.ToString())
};
File.WriteAllText(sfd.FileName, SecurityFuncs.Base64Encode(string.Join("|", lines)));
path = Path.GetDirectoryName(sfd.FileName);
}
}
return path;
}
public static string LoadClientinfoAndGetPath(FileFormat.ClientInfo info, bool islocked, string veroutput, bool islockedoutput)
{
string path = "";
bool IsVersion2 = false;
using (var ofd = new OpenFileDialog())
{
ofd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
ofd.FilterIndex = 1;
ofd.FileName = "clientinfo.nov";
ofd.Title = "Load clientinfo.nov";
if (ofd.ShowDialog() == DialogResult.OK)
{
string file, usesplayername, usesid, warning, legacymode, clientmd5,
scriptmd5, desc, locked, fix2007, alreadyhassecurity,
cmdargsornogfxoptions, commandargsver2;
using (StreamReader reader = new StreamReader(ofd.FileName))
{
file = reader.ReadLine();
}
string ConvertedLine = "";
try
{
IsVersion2 = true;
veroutput = "v2";
ConvertedLine = SecurityFuncs.Base64DecodeNew(file);
}
catch (Exception)
{
veroutput = "v1";
ConvertedLine = SecurityFuncs.Base64DecodeOld(file);
}
string[] result = ConvertedLine.Split('|');
usesplayername = SecurityFuncs.Base64Decode(result[0]);
usesid = SecurityFuncs.Base64Decode(result[1]);
warning = SecurityFuncs.Base64Decode(result[2]);
legacymode = SecurityFuncs.Base64Decode(result[3]);
clientmd5 = SecurityFuncs.Base64Decode(result[4]);
scriptmd5 = SecurityFuncs.Base64Decode(result[5]);
desc = SecurityFuncs.Base64Decode(result[6]);
locked = SecurityFuncs.Base64Decode(result[7]);
fix2007 = SecurityFuncs.Base64Decode(result[8]);
alreadyhassecurity = SecurityFuncs.Base64Decode(result[9]);
cmdargsornogfxoptions = SecurityFuncs.Base64Decode(result[10]);
commandargsver2 = "";
try
{
if (IsVersion2)
{
commandargsver2 = SecurityFuncs.Base64Decode(result[11]);
}
}
catch (Exception)
{
veroutput = "v2 (DEV)";
IsVersion2 = false;
}
if (!GlobalVars.AdminMode)
{
bool lockcheck = Convert.ToBoolean(locked);
if (lockcheck)
{
MessageBox.Show("This client is locked and therefore it cannot be loaded.", "Novetus Launcher - Error when loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
return "";
}
else
{
islocked = lockcheck;
islockedoutput = islocked;
}
}
else
{
islocked = Convert.ToBoolean(locked);
islockedoutput = islocked;
}
info.UsesPlayerName = Convert.ToBoolean(usesplayername);
info.UsesID = Convert.ToBoolean(usesid);
info.Warning = warning;
info.LegacyMode = Convert.ToBoolean(legacymode);
info.ClientMD5 = clientmd5;
info.ScriptMD5 = scriptmd5;
info.Description = desc;
info.Fix2007 = Convert.ToBoolean(fix2007);
info.AlreadyHasSecurity = Convert.ToBoolean(alreadyhassecurity);
if (IsVersion2)
{
info.NoGraphicsOptions = Convert.ToBoolean(cmdargsornogfxoptions);
info.CommandLineArgs = commandargsver2;
}
else
{
//Again, fake it.
info.NoGraphicsOptions = false;
info.CommandLineArgs = cmdargsornogfxoptions;
}
}
}
return path;
}
public static void NewClientinfo(FileFormat.ClientInfo info, bool islocked)
{
info.UsesPlayerName = false;
info.UsesID = false;
info.Warning = "";
info.LegacyMode = false;
info.Fix2007 = false;
info.AlreadyHasSecurity = false;
info.Description = "";
info.ClientMD5 = "";
info.ScriptMD5 = "";
info.CommandLineArgs = "";
islocked = false;
}
#endregion
#region Diogenes Editor
// credit to Carrot for this :D
public static string DiogenesCrypt(string word)
{
StringBuilder result = new StringBuilder("");
byte[] bytes = Encoding.ASCII.GetBytes(word);
foreach (byte singular in bytes)
{
result.Append(Convert.ToChar(0x55 ^ singular));
}
return result.ToString();
}
#endregion
}
#endregion
}

View File

@ -406,6 +406,7 @@ namespace NovetusLauncher
Text = "Novetus " + GlobalVars.ProgramInformation.Version; Text = "Novetus " + GlobalVars.ProgramInformation.Version;
ConsolePrint("Novetus version " + GlobalVars.ProgramInformation.Version + " loaded. Initializing config.", 4); ConsolePrint("Novetus version " + GlobalVars.ProgramInformation.Version + " loaded. Initializing config.", 4);
ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 4); ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 4);
if (File.Exists(GlobalPaths.RootPath + "\\changelog.txt")) if (File.Exists(GlobalPaths.RootPath + "\\changelog.txt"))
{ {
richTextBox2.Text = File.ReadAllText(GlobalPaths.RootPath + "\\changelog.txt"); richTextBox2.Text = File.ReadAllText(GlobalPaths.RootPath + "\\changelog.txt");
@ -445,30 +446,7 @@ namespace NovetusLauncher
File.Create(GlobalPaths.ConfigDir + "\\ports.txt").Dispose(); File.Create(GlobalPaths.ConfigDir + "\\ports.txt").Dispose();
} }
if (!Directory.Exists(LocalPaths.AssetCacheDirFonts)) LauncherFuncs.CreateAssetCacheDirectories();
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirFonts);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSky))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSky);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSounds))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSounds);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirTexturesGUI))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirTexturesGUI);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirScripts))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirScripts);
}
label8.Text = Application.ProductVersion; label8.Text = Application.ProductVersion;
LocalVars.important = SecurityFuncs.GenerateMD5(Assembly.GetExecutingAssembly().Location); LocalVars.important = SecurityFuncs.GenerateMD5(Assembly.GetExecutingAssembly().Location);

View File

@ -408,6 +408,7 @@ namespace NovetusLauncher
Text = "Novetus " + GlobalVars.ProgramInformation.Version; Text = "Novetus " + GlobalVars.ProgramInformation.Version;
ConsolePrint("Novetus version " + GlobalVars.ProgramInformation.Version + " loaded. Initializing config.", 4); ConsolePrint("Novetus version " + GlobalVars.ProgramInformation.Version + " loaded. Initializing config.", 4);
ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 4); ConsolePrint("Novetus path: " + GlobalPaths.BasePath, 4);
if (File.Exists(GlobalPaths.RootPath + "\\changelog.txt")) if (File.Exists(GlobalPaths.RootPath + "\\changelog.txt"))
{ {
richTextBox2.Text = File.ReadAllText(GlobalPaths.RootPath + "\\changelog.txt"); richTextBox2.Text = File.ReadAllText(GlobalPaths.RootPath + "\\changelog.txt");
@ -447,30 +448,7 @@ namespace NovetusLauncher
File.Create(GlobalPaths.ConfigDir + "\\ports.txt").Dispose(); File.Create(GlobalPaths.ConfigDir + "\\ports.txt").Dispose();
} }
if (!Directory.Exists(LocalPaths.AssetCacheDirFonts)) LauncherFuncs.CreateAssetCacheDirectories();
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirFonts);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSky))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSky);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSounds))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSounds);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirTexturesGUI))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirTexturesGUI);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirScripts))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirScripts);
}
label8.Text = Application.ProductVersion; label8.Text = Application.ProductVersion;
LocalVars.important = SecurityFuncs.GenerateMD5(Assembly.GetExecutingAssembly().Location); LocalVars.important = SecurityFuncs.GenerateMD5(Assembly.GetExecutingAssembly().Location);

View File

@ -1,67 +1,44 @@
using System; #region Usings
using System;
using System.ComponentModel; using System.ComponentModel;
using System.IO; using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
#endregion
namespace NovetusLauncher namespace NovetusLauncher
{ {
#region Asset Localizer
public partial class AssetLocalizer : Form public partial class AssetLocalizer : Form
{ {
#region Private Variables
private RobloxFileType currentType; private RobloxFileType currentType;
private string path; private string path;
private string name; private string name;
private string meshname; private string meshname;
#endregion
#region Constructor
public AssetLocalizer() public AssetLocalizer()
{ {
InitializeComponent(); InitializeComponent();
} }
#endregion
#region Form Events
private void button1_Click(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e)
{ {
OpenFileDialog openFileDialog1 = new OpenFileDialog OpenFileDialog robloxFileDialog = SDKFuncs.LoadROBLOXFileDialog(currentType);
{
Filter = (currentType == RobloxFileType.RBXL) ? "ROBLOX Level (*.rbxl)|*.rbxl" : "ROBLOX Model (*.rbxm)|*.rbxm",
Title = "Open ROBLOX level or model"
};
if (openFileDialog1.ShowDialog() == DialogResult.OK) if (robloxFileDialog.ShowDialog() == DialogResult.OK)
{ {
path = openFileDialog1.FileName; path = robloxFileDialog.FileName;
backgroundWorker1.RunWorkerAsync(); backgroundWorker1.RunWorkerAsync();
} }
} }
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{ {
switch (comboBox1.SelectedIndex) currentType = SDKFuncs.SelectROBLOXFileType(comboBox1.SelectedIndex);
{
case 1:
currentType = RobloxFileType.RBXM;
break;
case 2:
currentType = RobloxFileType.Hat;
break;
case 3:
currentType = RobloxFileType.Head;
break;
case 4:
currentType = RobloxFileType.Face;
break;
case 5:
currentType = RobloxFileType.Shirt;
break;
case 6:
currentType = RobloxFileType.TShirt;
break;
case 7:
currentType = RobloxFileType.Pants;
break;
default:
currentType = RobloxFileType.RBXL;
break;
}
} }
private void AssetLocalizer_Load(object sender, EventArgs e) private void AssetLocalizer_Load(object sender, EventArgs e)
@ -85,476 +62,20 @@ namespace NovetusLauncher
} }
} }
if (!Directory.Exists(LocalPaths.AssetCacheDirFonts)) LauncherFuncs.CreateAssetCacheDirectories();
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirFonts);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSky))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSky);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirSounds))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirSounds);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirTexturesGUI))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirTexturesGUI);
}
if (!Directory.Exists(LocalPaths.AssetCacheDirScripts))
{
Directory.CreateDirectory(LocalPaths.AssetCacheDirScripts);
}
}
private string GetProgressString(int percent)
{
string progressString = "";
switch (currentType)
{
case RobloxFileType.RBXL:
switch (percent)
{
case 0:
progressString = "Backing up RBXL...";
break;
case 5:
progressString = "Downloading RBXL Meshes and Textures...";
break;
case 10:
progressString = "Downloading RBXL Skybox Textures...";
break;
case 15:
progressString = "Downloading RBXL Decal Textures...";
break;
case 20:
progressString = "Downloading RBXL Textures...";
break;
case 25:
progressString = "Downloading RBXL Tool Textures...";
break;
case 30:
progressString = "Downloading RBXL HopperBin Textures...";
break;
case 40:
progressString = "Downloading RBXL Sounds...";
break;
case 50:
progressString = "Downloading RBXL GUI Textures...";
break;
case 60:
progressString = "Downloading RBXL Shirt Textures...";
break;
case 65:
progressString = "Downloading RBXL T-Shirt Textures...";
break;
case 70:
progressString = "Downloading RBXL Pants Textures...";
break;
case 80:
progressString = "Downloading RBXL Linked Scripts...";
break;
case 90:
progressString = "Downloading RBXL Linked LocalScripts...";
break;
}
break;
case RobloxFileType.RBXM:
switch (percent)
{
case 0:
progressString = "Downloading RBXL Meshes and Textures...";
break;
case 10:
progressString = "Downloading RBXL Skybox Textures...";
break;
case 15:
progressString = "Downloading RBXL Decal Textures...";
break;
case 20:
progressString = "Downloading RBXL Textures...";
break;
case 25:
progressString = "Downloading RBXL Tool Textures...";
break;
case 30:
progressString = "Downloading RBXL HopperBin Textures...";
break;
case 40:
progressString = "Downloading RBXL Sounds...";
break;
case 50:
progressString = "Downloading RBXL GUI Textures...";
break;
case 60:
progressString = "Downloading RBXL Shirt Textures...";
break;
case 65:
progressString = "Downloading RBXL T-Shirt Textures...";
break;
case 70:
progressString = "Downloading RBXL Pants Textures...";
break;
case 80:
progressString = "Downloading RBXL Linked Scripts...";
break;
case 90:
progressString = "Downloading RBXL Linked LocalScripts...";
break;
}
break;
case RobloxFileType.Hat:
switch (percent)
{
case 0:
progressString = "Downloading Hat Meshes and Textures...";
break;
case 25:
progressString = "Downloading Hat Sounds...";
break;
case 50:
progressString = "Downloading Hat Linked Scripts...";
break;
case 75:
progressString = "Downloading Hat Linked LocalScripts...";
break;
}
break;
case RobloxFileType.Head:
//meshes
switch (percent)
{
case 0:
progressString = "Downloading Head Meshes and Textures...";
break;
}
break;
case RobloxFileType.Face:
//decal
switch (percent)
{
case 0:
progressString = "Downloading Face Textures...";
break;
}
break;
case RobloxFileType.TShirt:
//texture
switch (percent)
{
case 0:
progressString = "Downloading T-Shirt Textures...";
break;
}
break;
case RobloxFileType.Shirt:
//texture
switch (percent)
{
case 0:
progressString = "Downloading Shirt Textures...";
break;
}
break;
case RobloxFileType.Pants:
//texture
switch (percent)
{
case 0:
progressString = "Downloading Pants Textures...";
break;
}
break;
default:
progressString = "Idle";
break;
}
return progressString + " " + percent.ToString() + "%";
} }
// This event handler is where the time-consuming work is done. // This event handler is where the time-consuming work is done.
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{ {
BackgroundWorker worker = sender as BackgroundWorker; BackgroundWorker worker = sender as BackgroundWorker;
SDKFuncs.LocalizeAsset(currentType, worker, path, name, meshname);
try
{
switch (currentType)
{
case RobloxFileType.RBXL:
//backup the original copy
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxl", " BAK.rbxl"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
worker.ReportProgress(5);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts, 1, 1, 1, 1);
//skybox
worker.ReportProgress(10);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 1, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 2, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 3, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 4, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 5, 0, 0, 0);
//decal
worker.ReportProgress(15);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Decal);
//texture
worker.ReportProgress(20);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Texture);
//tools and hopperbin
worker.ReportProgress(25);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Tool);
worker.ReportProgress(30);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.HopperBin);
//sound
worker.ReportProgress(40);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sound);
worker.ReportProgress(50);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ImageLabel);
//clothing
worker.ReportProgress(60);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Shirt);
worker.ReportProgress(65);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ShirtGraphic);
worker.ReportProgress(70);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Pants);
//scripts
worker.ReportProgress(80);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Script);
worker.ReportProgress(90);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.LocalScript);
worker.ReportProgress(100);
break;
case RobloxFileType.RBXM:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Fonts, 1, 1, 1, 1);
//skybox
worker.ReportProgress(10);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 1, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 2, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 3, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 4, 0, 0, 0);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sky, 5, 0, 0, 0);
//decal
worker.ReportProgress(15);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Decal);
//texture
worker.ReportProgress(20);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Texture);
//tools and hopperbin
worker.ReportProgress(25);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Tool);
worker.ReportProgress(30);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.HopperBin);
//sound
worker.ReportProgress(40);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Sound);
worker.ReportProgress(50);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ImageLabel);
//clothing
worker.ReportProgress(60);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Shirt);
worker.ReportProgress(65);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ShirtGraphic);
worker.ReportProgress(70);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Pants);
//scripts
worker.ReportProgress(80);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.Script);
worker.ReportProgress(90);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.LocalScript);
worker.ReportProgress(100);
break;
case RobloxFileType.Hat:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatFonts, name, meshname);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatFonts, 1, 1, 1, 1, name);
worker.ReportProgress(25);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatSound);
//scripts
worker.ReportProgress(50);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatScript);
worker.ReportProgress(75);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHatLocalScript);
worker.ReportProgress(100);
break;
case RobloxFileType.Head:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//meshes
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHeadFonts, name);
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemHeadFonts, 1, 1, 1, 1, name);
worker.ReportProgress(100);
break;
case RobloxFileType.Face:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//decal
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemFaceTexture, name);
worker.ReportProgress(100);
break;
case RobloxFileType.TShirt:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//texture
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemTShirtTexture, name);
worker.ReportProgress(100);
break;
case RobloxFileType.Shirt:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//texture
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemShirtTexture, name);
worker.ReportProgress(100);
break;
case RobloxFileType.Pants:
if (GlobalVars.UserConfiguration.AssetLocalizerSaveBackups)
{
try
{
worker.ReportProgress(0);
File.Copy(path, path.Replace(".rbxm", " BAK.rbxm"));
}
catch (Exception)
{
worker.ReportProgress(100);
}
}
else
{
worker.ReportProgress(0);
}
//texture
RobloxXMLLocalizer.DownloadFromNodes(path, RobloxDefs.ItemPantsTexture, name);
worker.ReportProgress(100);
break;
default:
worker.ReportProgress(100);
break;
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Unable to localize the asset. " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
} }
// This event handler updates the progress. // This event handler updates the progress.
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{ {
label2.Text = GetProgressString(e.ProgressPercentage); label2.Text = SDKFuncs.GetProgressString(currentType, e.ProgressPercentage);
progressBar1.Value = e.ProgressPercentage; progressBar1.Value = e.ProgressPercentage;
} }
@ -601,5 +122,7 @@ namespace NovetusLauncher
{ {
GlobalVars.UserConfiguration.AssetLocalizerSaveBackups = checkBox1.Checked; GlobalVars.UserConfiguration.AssetLocalizerSaveBackups = checkBox1.Checked;
} }
#endregion
} }
#endregion
} }

View File

@ -1,37 +1,27 @@
/* #region Usings
* Created by SharpDevelop.
* User: BITL
* Date: 12/19/2018
* Time: 8:15 PM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System; using System;
using System.Windows.Forms; using System.Windows.Forms;
using System.IO; using System.IO;
#endregion
namespace NovetusLauncher namespace NovetusLauncher
{ {
/// <summary> #region ClientScriptDocumentation
/// Description of ClientScriptDocumentation.
/// </summary>
public partial class ClientScriptDocumentation : Form public partial class ClientScriptDocumentation : Form
{ {
public ClientScriptDocumentation() #region Constructor
public ClientScriptDocumentation()
{ {
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent(); InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
} }
#endregion
void ClientScriptDocumentationLoad(object sender, EventArgs e) #region Form Events
void ClientScriptDocumentationLoad(object sender, EventArgs e)
{ {
richTextBox1.Text = File.ReadAllText(GlobalPaths.BasePath + "\\documentation.txt"); richTextBox1.Text = File.ReadAllText(GlobalPaths.BasePath + "\\documentation.txt");
} }
} #endregion
}
#endregion
} }

View File

@ -1,53 +1,42 @@
/* #region Usings
* Created by SharpDevelop.
* User: BITL-Gaming
* Date: 11/28/2016
* Time: 7:55 AM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System; using System;
using System.Windows.Forms; using System.Windows.Forms;
using System.IO; using System.IO;
using System.Globalization; using System.Globalization;
#endregion
namespace NovetusLauncher namespace NovetusLauncher
{ {
/// <summary> #region Client SDK
/// Description of ClientinfoCreator. public partial class ClientinfoEditor : Form
/// </summary>
public partial class ClientinfoEditor : Form
{ {
private FileFormat.ClientInfo loadedClientInfo = new FileFormat.ClientInfo(); #region Private Variables
private FileFormat.ClientInfo SelectedClientInfo = new FileFormat.ClientInfo();
private string SelectedClientInfoPath = ""; private string SelectedClientInfoPath = "";
private bool Locked = false; private bool Locked = false;
private bool IsVersion2 = false; #endregion
public ClientinfoEditor() #region Constructor
public ClientinfoEditor()
{ {
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent(); InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
} }
#endregion
void CheckBox1CheckedChanged(object sender, EventArgs e) #region Form Events
void CheckBox1CheckedChanged(object sender, EventArgs e)
{ {
loadedClientInfo.UsesPlayerName = checkBox1.Checked; SelectedClientInfo.UsesPlayerName = checkBox1.Checked;
} }
void CheckBox2CheckedChanged(object sender, EventArgs e) void CheckBox2CheckedChanged(object sender, EventArgs e)
{ {
loadedClientInfo.UsesID = checkBox2.Checked; SelectedClientInfo.UsesID = checkBox2.Checked;
} }
void TextBox1TextChanged(object sender, EventArgs e) void TextBox1TextChanged(object sender, EventArgs e)
{ {
loadedClientInfo.Description = textBox1.Text; SelectedClientInfo.Description = textBox1.Text;
} }
void ClientinfoCreatorLoad(object sender, EventArgs e) void ClientinfoCreatorLoad(object sender, EventArgs e)
@ -57,19 +46,19 @@ namespace NovetusLauncher
void CheckBox3CheckedChanged(object sender, EventArgs e) void CheckBox3CheckedChanged(object sender, EventArgs e)
{ {
loadedClientInfo.LegacyMode = checkBox3.Checked; SelectedClientInfo.LegacyMode = checkBox3.Checked;
} }
void TextBox2TextChanged(object sender, EventArgs e) void TextBox2TextChanged(object sender, EventArgs e)
{ {
textBox2.Text = textBox2.Text.ToUpper(CultureInfo.InvariantCulture); textBox2.Text = textBox2.Text.ToUpper(CultureInfo.InvariantCulture);
loadedClientInfo.ClientMD5 = textBox2.Text.ToUpper(CultureInfo.InvariantCulture); SelectedClientInfo.ClientMD5 = textBox2.Text.ToUpper(CultureInfo.InvariantCulture);
} }
void TextBox3TextChanged(object sender, EventArgs e) void TextBox3TextChanged(object sender, EventArgs e)
{ {
textBox3.Text = textBox3.Text.ToUpper(CultureInfo.InvariantCulture); textBox3.Text = textBox3.Text.ToUpper(CultureInfo.InvariantCulture);
loadedClientInfo.ScriptMD5 = textBox3.Text.ToUpper(CultureInfo.InvariantCulture); SelectedClientInfo.ScriptMD5 = textBox3.Text.ToUpper(CultureInfo.InvariantCulture);
} }
void Button4Click(object sender, EventArgs e) void Button4Click(object sender, EventArgs e)
@ -85,7 +74,7 @@ namespace NovetusLauncher
string ClientName = ""; string ClientName = "";
if (!loadedClientInfo.LegacyMode) if (!SelectedClientInfo.LegacyMode)
{ {
ClientName = "\\RobloxApp_Client.exe"; ClientName = "\\RobloxApp_Client.exe";
} }
@ -100,7 +89,7 @@ namespace NovetusLauncher
{ {
textBox2.Text = ClientMD5.ToUpper(CultureInfo.InvariantCulture); textBox2.Text = ClientMD5.ToUpper(CultureInfo.InvariantCulture);
textBox2.BackColor = System.Drawing.Color.Lime; textBox2.BackColor = System.Drawing.Color.Lime;
loadedClientInfo.ClientMD5 = textBox2.Text.ToUpper(CultureInfo.InvariantCulture); SelectedClientInfo.ClientMD5 = textBox2.Text.ToUpper(CultureInfo.InvariantCulture);
} }
else else
{ {
@ -113,7 +102,7 @@ namespace NovetusLauncher
{ {
textBox3.Text = ClientScriptMD5.ToUpper(CultureInfo.InvariantCulture); textBox3.Text = ClientScriptMD5.ToUpper(CultureInfo.InvariantCulture);
textBox3.BackColor = System.Drawing.Color.Lime; textBox3.BackColor = System.Drawing.Color.Lime;
loadedClientInfo.ScriptMD5 = textBox3.Text.ToUpper(CultureInfo.InvariantCulture); SelectedClientInfo.ScriptMD5 = textBox3.Text.ToUpper(CultureInfo.InvariantCulture);
} }
else else
{ {
@ -130,211 +119,72 @@ namespace NovetusLauncher
void CheckBox6CheckedChanged(object sender, EventArgs e) void CheckBox6CheckedChanged(object sender, EventArgs e)
{ {
loadedClientInfo.Fix2007 = checkBox6.Checked; SelectedClientInfo.Fix2007 = checkBox6.Checked;
} }
void CheckBox7CheckedChanged(object sender, EventArgs e) void CheckBox7CheckedChanged(object sender, EventArgs e)
{ {
loadedClientInfo.AlreadyHasSecurity = checkBox7.Checked; SelectedClientInfo.AlreadyHasSecurity = checkBox7.Checked;
} }
void checkBox5_CheckedChanged(object sender, EventArgs e) void checkBox5_CheckedChanged(object sender, EventArgs e)
{ {
loadedClientInfo.NoGraphicsOptions = checkBox5.Checked; SelectedClientInfo.NoGraphicsOptions = checkBox5.Checked;
} }
void NewToolStripMenuItemClick(object sender, EventArgs e) void NewToolStripMenuItemClick(object sender, EventArgs e)
{ {
label9.Text = "Not Loaded"; label9.Text = "Not Loaded";
loadedClientInfo.UsesPlayerName = false; SDKFuncs.NewClientinfo(SelectedClientInfo, Locked);
loadedClientInfo.UsesID = false;
loadedClientInfo.Warning = "";
loadedClientInfo.LegacyMode = false;
loadedClientInfo.Fix2007 = false;
loadedClientInfo.AlreadyHasSecurity = false;
loadedClientInfo.Description = "";
loadedClientInfo.ClientMD5 = "";
loadedClientInfo.ScriptMD5 = "";
SelectedClientInfoPath = ""; SelectedClientInfoPath = "";
loadedClientInfo.CommandLineArgs = ""; checkBox1.Checked = SelectedClientInfo.UsesPlayerName;
Locked = false; checkBox2.Checked = SelectedClientInfo.UsesID;
checkBox1.Checked = loadedClientInfo.UsesPlayerName; checkBox3.Checked = SelectedClientInfo.LegacyMode;
checkBox2.Checked = loadedClientInfo.UsesID;
checkBox3.Checked = loadedClientInfo.LegacyMode;
checkBox4.Checked = Locked; checkBox4.Checked = Locked;
checkBox6.Checked = loadedClientInfo.Fix2007; checkBox6.Checked = SelectedClientInfo.Fix2007;
checkBox7.Checked = loadedClientInfo.AlreadyHasSecurity; checkBox7.Checked = SelectedClientInfo.AlreadyHasSecurity;
checkBox5.Checked = loadedClientInfo.NoGraphicsOptions; checkBox5.Checked = SelectedClientInfo.NoGraphicsOptions;
textBox3.Text = loadedClientInfo.ScriptMD5.ToUpper(CultureInfo.InvariantCulture); textBox3.Text = SelectedClientInfo.ScriptMD5.ToUpper(CultureInfo.InvariantCulture);
textBox2.Text = loadedClientInfo.ClientMD5.ToUpper(CultureInfo.InvariantCulture); textBox2.Text = SelectedClientInfo.ClientMD5.ToUpper(CultureInfo.InvariantCulture);
textBox1.Text = loadedClientInfo.Description; textBox1.Text = SelectedClientInfo.Description;
textBox4.Text = loadedClientInfo.CommandLineArgs; textBox4.Text = SelectedClientInfo.CommandLineArgs;
textBox5.Text = loadedClientInfo.Warning; textBox5.Text = SelectedClientInfo.Warning;
textBox2.BackColor = System.Drawing.SystemColors.Control; textBox2.BackColor = System.Drawing.SystemColors.Control;
textBox3.BackColor = System.Drawing.SystemColors.Control; textBox3.BackColor = System.Drawing.SystemColors.Control;
} }
void LoadToolStripMenuItemClick(object sender, EventArgs e) void LoadToolStripMenuItemClick(object sender, EventArgs e)
{ {
using (var ofd = new OpenFileDialog()) string clientinfopath = SDKFuncs.LoadClientinfoAndGetPath(SelectedClientInfo, Locked, label9.Text, checkBox4.Checked);
{
ofd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
ofd.FilterIndex = 1;
ofd.FileName = "clientinfo.nov";
ofd.Title = "Load clientinfo.nov";
if (ofd.ShowDialog() == DialogResult.OK)
{
string file, usesplayername, usesid, warning, legacymode, clientmd5,
scriptmd5, desc, locked, fix2007, alreadyhassecurity,
cmdargsornogfxoptions, commandargsver2;
using(StreamReader reader = new StreamReader(ofd.FileName)) if (!string.IsNullOrWhiteSpace(clientinfopath))
{ {
SelectedClientInfoPath = Path.GetDirectoryName(ofd.FileName); SelectedClientInfoPath = clientinfopath;
file = reader.ReadLine();
}
string ConvertedLine = ""; checkBox1.Checked = SelectedClientInfo.UsesPlayerName;
checkBox2.Checked = SelectedClientInfo.UsesID;
try checkBox3.Checked = SelectedClientInfo.LegacyMode;
{ checkBox6.Checked = SelectedClientInfo.Fix2007;
IsVersion2 = true; checkBox7.Checked = SelectedClientInfo.AlreadyHasSecurity;
label9.Text = "v2"; checkBox5.Checked = SelectedClientInfo.NoGraphicsOptions;
ConvertedLine = SecurityFuncs.Base64DecodeNew(file); textBox3.Text = SelectedClientInfo.ScriptMD5.ToUpper(CultureInfo.InvariantCulture);
} textBox2.Text = SelectedClientInfo.ClientMD5.ToUpper(CultureInfo.InvariantCulture);
catch(Exception) textBox1.Text = SelectedClientInfo.Description;
{ textBox4.Text = SelectedClientInfo.CommandLineArgs;
label9.Text = "v1"; textBox5.Text = SelectedClientInfo.Warning;
ConvertedLine = SecurityFuncs.Base64DecodeOld(file);
}
string[] result = ConvertedLine.Split('|');
usesplayername = SecurityFuncs.Base64Decode(result[0]);
usesid = SecurityFuncs.Base64Decode(result[1]);
warning = SecurityFuncs.Base64Decode(result[2]);
legacymode = SecurityFuncs.Base64Decode(result[3]);
clientmd5 = SecurityFuncs.Base64Decode(result[4]);
scriptmd5 = SecurityFuncs.Base64Decode(result[5]);
desc = SecurityFuncs.Base64Decode(result[6]);
locked = SecurityFuncs.Base64Decode(result[7]);
fix2007 = SecurityFuncs.Base64Decode(result[8]);
alreadyhassecurity = SecurityFuncs.Base64Decode(result[9]);
cmdargsornogfxoptions = SecurityFuncs.Base64Decode(result[10]);
commandargsver2 = "";
try
{
if (IsVersion2)
{
commandargsver2 = SecurityFuncs.Base64Decode(result[11]);
}
}
catch (Exception)
{
label9.Text = "v2 (DEV)";
IsVersion2 = false;
}
if (!GlobalVars.AdminMode)
{
bool bline8 = Convert.ToBoolean(locked);
if (bline8)
{
MessageBox.Show("This client is locked and therefore it cannot be loaded.","Novetus Launcher - Error when loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else
{
Locked = bline8;
checkBox4.Checked = Locked;
}
}
else
{
bool bline8 = Convert.ToBoolean(locked);
Locked = bline8;
checkBox4.Checked = Locked;
}
loadedClientInfo.UsesPlayerName = Convert.ToBoolean(usesplayername);
bool bline2 = Convert.ToBoolean(usesid);
loadedClientInfo.UsesID = bline2;
loadedClientInfo.Warning = warning;
bool bline4 = Convert.ToBoolean(legacymode);
loadedClientInfo.LegacyMode = bline4;
loadedClientInfo.ClientMD5 = clientmd5;
loadedClientInfo.ScriptMD5 = scriptmd5;
loadedClientInfo.Description = desc;
bool bline9 = Convert.ToBoolean(fix2007);
loadedClientInfo.Fix2007 = bline9;
bool bline10 = Convert.ToBoolean(alreadyhassecurity);
loadedClientInfo.AlreadyHasSecurity = bline10;
if (IsVersion2)
{
bool bline11 = Convert.ToBoolean(cmdargsornogfxoptions);
loadedClientInfo.NoGraphicsOptions = bline11;
loadedClientInfo.CommandLineArgs = commandargsver2;
}
else
{
//Agin, fake it.
loadedClientInfo.NoGraphicsOptions = false;
loadedClientInfo.CommandLineArgs = cmdargsornogfxoptions;
}
checkBox1.Checked = loadedClientInfo.UsesPlayerName;
checkBox2.Checked = loadedClientInfo.UsesID;
checkBox3.Checked = loadedClientInfo.LegacyMode;
checkBox6.Checked = loadedClientInfo.Fix2007;
checkBox7.Checked = loadedClientInfo.AlreadyHasSecurity;
checkBox5.Checked = loadedClientInfo.NoGraphicsOptions;
textBox3.Text = loadedClientInfo.ScriptMD5.ToUpper(CultureInfo.InvariantCulture);
textBox2.Text = loadedClientInfo.ClientMD5.ToUpper(CultureInfo.InvariantCulture);
textBox1.Text = loadedClientInfo.Description;
textBox4.Text = loadedClientInfo.CommandLineArgs;
textBox5.Text = loadedClientInfo.Warning;
}
} }
textBox2.BackColor = System.Drawing.SystemColors.Control; textBox2.BackColor = System.Drawing.SystemColors.Control;
textBox3.BackColor = System.Drawing.SystemColors.Control; textBox3.BackColor = System.Drawing.SystemColors.Control;
} }
void SaveToolStripMenuItemClick(object sender, EventArgs e) void SaveToolStripMenuItemClick(object sender, EventArgs e)
{ {
using (var sfd = new SaveFileDialog()) string clientinfopath = SDKFuncs.SaveClientinfoAndGetPath(SelectedClientInfo, Locked);
{
sfd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
sfd.FilterIndex = 1;
sfd.FileName = "clientinfo.nov";
sfd.Title = "Save clientinfo.nov";
if (sfd.ShowDialog() == DialogResult.OK) if (!string.IsNullOrWhiteSpace(clientinfopath))
{ {
string[] lines = { SelectedClientInfoPath = clientinfopath;
SecurityFuncs.Base64Encode(loadedClientInfo.UsesPlayerName.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.UsesID.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.Warning.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.LegacyMode.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.ClientMD5.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.ScriptMD5.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.Description.ToString()),
SecurityFuncs.Base64Encode(Locked.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.Fix2007.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.AlreadyHasSecurity.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.NoGraphicsOptions.ToString()),
SecurityFuncs.Base64Encode(loadedClientInfo.CommandLineArgs.ToString())
};
File.WriteAllText(sfd.FileName, SecurityFuncs.Base64Encode(string.Join("|",lines)));
SelectedClientInfoPath = Path.GetDirectoryName(sfd.FileName);
}
} }
label9.Text = "v2"; label9.Text = "v2";
@ -342,14 +192,19 @@ namespace NovetusLauncher
textBox3.BackColor = System.Drawing.SystemColors.Control; textBox3.BackColor = System.Drawing.SystemColors.Control;
} }
private void saveAsTextFileToolStripMenuItem_Click(object sender, EventArgs e)
{
SDKFuncs.SaveClientinfoAndGetPath(SelectedClientInfo, Locked, true);
}
void TextBox4TextChanged(object sender, EventArgs e) void TextBox4TextChanged(object sender, EventArgs e)
{ {
loadedClientInfo.CommandLineArgs = textBox4.Text; SelectedClientInfo.CommandLineArgs = textBox4.Text;
} }
void TextBox5TextChanged(object sender, EventArgs e) void TextBox5TextChanged(object sender, EventArgs e)
{ {
loadedClientInfo.Warning = textBox5.Text; SelectedClientInfo.Warning = textBox5.Text;
} }
private void documentationToolStripMenuItem_Click(object sender, EventArgs e) private void documentationToolStripMenuItem_Click(object sender, EventArgs e)
@ -358,11 +213,6 @@ namespace NovetusLauncher
csd.Show(); csd.Show();
} }
private void AddClientinfoText(string text)
{
textBox4.Paste(text);
}
//tags //tags
private void clientToolStripMenuItem_Click(object sender, EventArgs e) private void clientToolStripMenuItem_Click(object sender, EventArgs e)
{ {
@ -389,39 +239,19 @@ namespace NovetusLauncher
AddClientinfoText("<no3d></no3d>"); AddClientinfoText("<no3d></no3d>");
} }
//variables
private void variableToolStripMenuItem_Click(object sender, EventArgs e) private void variableToolStripMenuItem_Click(object sender, EventArgs e)
{ {
ToolStripMenuItem senderitem = (ToolStripMenuItem)sender; ToolStripMenuItem senderitem = (ToolStripMenuItem)sender;
AddClientinfoText(senderitem.Text); AddClientinfoText(senderitem.Text);
} }
#endregion
private void saveAsTextFileToolStripMenuItem_Click(object sender, EventArgs e) #region Functions
{ private void AddClientinfoText(string text)
using (var sfd = new SaveFileDialog()) {
{ textBox4.Paste(text);
sfd.Filter = "Text file (*.txt)|*.txt"; }
sfd.FilterIndex = 1; #endregion
sfd.FileName = "clientinfo.txt"; }
sfd.Title = "Save clientinfo.txt"; #endregion
if (sfd.ShowDialog() == DialogResult.OK)
{
string[] lines = {
loadedClientInfo.UsesPlayerName.ToString(),
loadedClientInfo.UsesID.ToString(),
loadedClientInfo.Warning.ToString(),
loadedClientInfo.LegacyMode.ToString(),
loadedClientInfo.Description.ToString(),
loadedClientInfo.Fix2007.ToString(),
loadedClientInfo.AlreadyHasSecurity.ToString(),
loadedClientInfo.NoGraphicsOptions.ToString(),
loadedClientInfo.CommandLineArgs.ToString()
};
File.WriteAllLines(sfd.FileName, lines);
}
}
}
}
} }

View File

@ -1,15 +1,14 @@
using System; #region Usings
using System.Collections.Generic; using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO; using System.IO;
using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
#endregion
namespace NovetusLauncher.SDK namespace NovetusLauncher.SDK
{ {
//UNFINISHED REGIONING
#region Diogenes Editor
public partial class DiogenesEditor : Form public partial class DiogenesEditor : Form
{ {
public DiogenesEditor() public DiogenesEditor()
@ -17,18 +16,7 @@ namespace NovetusLauncher.SDK
InitializeComponent(); InitializeComponent();
} }
public static string DiogenesCrypt(string word)
{
StringBuilder result = new StringBuilder("");
byte[] bytes = Encoding.ASCII.GetBytes(word);
foreach (byte singular in bytes)
{
result.Append(Convert.ToChar(0x55 ^ singular));
}
return result.ToString();
}
void NewToolStripMenuItemClick(object sender, EventArgs e) void NewToolStripMenuItemClick(object sender, EventArgs e)
{ {
@ -125,4 +113,5 @@ namespace NovetusLauncher.SDK
} }
} }
} }
#endregion
} }

View File

@ -122,16 +122,18 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="CharacterCustomization\Compact\CharacterCustomizationCompact.cs"> <Compile Include="Classes\Launcher\LauncherFuncs.cs" />
<Compile Include="Classes\SDK\SDKFuncs.cs" />
<Compile Include="Forms\CharacterCustomization\Compact\CharacterCustomizationCompact.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="CharacterCustomization\Compact\CharacterCustomizationCompact.Designer.cs"> <Compile Include="Forms\CharacterCustomization\Compact\CharacterCustomizationCompact.Designer.cs">
<DependentUpon>CharacterCustomizationCompact.cs</DependentUpon> <DependentUpon>CharacterCustomizationCompact.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="CharacterCustomization\Extended\CharacterCustomizationExtended.cs"> <Compile Include="Forms\CharacterCustomization\Extended\CharacterCustomizationExtended.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="CharacterCustomization\Extended\CharacterCustomizationExtended.Designer.cs"> <Compile Include="Forms\CharacterCustomization\Extended\CharacterCustomizationExtended.Designer.cs">
<DependentUpon>CharacterCustomizationExtended.cs</DependentUpon> <DependentUpon>CharacterCustomizationExtended.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Classes\Launcher\AddonLoader.cs" /> <Compile Include="Classes\Launcher\AddonLoader.cs" />
@ -221,10 +223,10 @@
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="CharacterCustomization\Compact\CharacterCustomizationCompact.resx"> <EmbeddedResource Include="Forms\CharacterCustomization\Compact\CharacterCustomizationCompact.resx">
<DependentUpon>CharacterCustomizationCompact.cs</DependentUpon> <DependentUpon>CharacterCustomizationCompact.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="CharacterCustomization\Extended\CharacterCustomizationExtended.resx"> <EmbeddedResource Include="Forms\CharacterCustomization\Extended\CharacterCustomizationExtended.resx">
<DependentUpon>CharacterCustomizationExtended.cs</DependentUpon> <DependentUpon>CharacterCustomizationExtended.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Forms\LauncherForm\Compact\LauncherFormCompact.resx"> <EmbeddedResource Include="Forms\LauncherForm\Compact\LauncherFormCompact.resx">

View File

@ -99,7 +99,7 @@ namespace NovetusURI
void Button2Click(object sender, EventArgs e) void Button2Click(object sender, EventArgs e)
{ {
this.Close(); Close();
} }
void QuickConfigureClose(object sender, CancelEventArgs e) void QuickConfigureClose(object sender, CancelEventArgs e)