/* * 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.Windows.Forms; using System.IO; using System.Globalization; namespace NovetusLauncher { /// /// Description of ClientinfoCreator. /// public partial class ClientinfoEditor : Form { private ClientInfo loadedClientInfo = new ClientInfo(); private string SelectedClientInfoPath = ""; private bool Locked = false; private bool IsVersion2 = false; public ClientinfoEditor() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } void CheckBox1CheckedChanged(object sender, EventArgs e) { loadedClientInfo.UsesPlayerName = checkBox1.Checked; } void CheckBox2CheckedChanged(object sender, EventArgs e) { loadedClientInfo.UsesID = checkBox2.Checked; } void TextBox1TextChanged(object sender, EventArgs e) { loadedClientInfo.Description = textBox1.Text; } void ClientinfoCreatorLoad(object sender, EventArgs e) { string cfgpath = Directories.ConfigDir + "\\" + GlobalVars.ConfigName; if (!File.Exists(cfgpath)) { LauncherFuncs.Config(cfgpath, true); } else { LauncherFuncs.Config(cfgpath, false); } checkBox4.Visible = GlobalVars.AdminMode; } void CheckBox3CheckedChanged(object sender, EventArgs e) { loadedClientInfo.LegacyMode = checkBox3.Checked; } void TextBox2TextChanged(object sender, EventArgs e) { textBox2.Text = textBox2.Text.ToUpper(CultureInfo.InvariantCulture); loadedClientInfo.ClientMD5 = textBox2.Text.ToUpper(CultureInfo.InvariantCulture); } void TextBox3TextChanged(object sender, EventArgs e) { textBox3.Text = textBox3.Text.ToUpper(CultureInfo.InvariantCulture); loadedClientInfo.ScriptMD5 = textBox3.Text.ToUpper(CultureInfo.InvariantCulture); } void Button4Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(SelectedClientInfoPath)) { FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog(); if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { SelectedClientInfoPath = folderBrowserDialog1.SelectedPath; } } string ClientName = ""; if (!loadedClientInfo.LegacyMode) { ClientName = "\\RobloxApp_Client.exe"; } else { ClientName = "\\RobloxApp.exe"; } string ClientMD5 = File.Exists(SelectedClientInfoPath + ClientName) ? SecurityFuncs.CalculateMD5(SelectedClientInfoPath + ClientName) : ""; if (!string.IsNullOrWhiteSpace(ClientMD5)) { textBox2.Text = ClientMD5.ToUpper(CultureInfo.InvariantCulture); textBox2.BackColor = System.Drawing.Color.Lime; loadedClientInfo.ClientMD5 = textBox2.Text.ToUpper(CultureInfo.InvariantCulture); } else { MessageBox.Show("Cannot load '" + ClientName.Trim('/') + "'. Please make sure you selected the directory","Novetus Launcher - Error while generating MD5 for client", MessageBoxButtons.OK, MessageBoxIcon.Error); } string ClientScriptMD5 = File.Exists(SelectedClientInfoPath + "\\content\\scripts\\" + GlobalVars.ScriptName + ".lua") ? SecurityFuncs.CalculateMD5(SelectedClientInfoPath + "\\content\\scripts\\" + GlobalVars.ScriptName + ".lua") : ""; if (!string.IsNullOrWhiteSpace(ClientScriptMD5)) { textBox3.Text = ClientScriptMD5.ToUpper(CultureInfo.InvariantCulture); textBox3.BackColor = System.Drawing.Color.Lime; loadedClientInfo.ScriptMD5 = textBox3.Text.ToUpper(CultureInfo.InvariantCulture); } else { MessageBox.Show("Cannot load '" + GlobalVars.ScriptName + ".lua'. Please make sure you selected the directory","Novetus Launcher - Error while generating MD5 for script", MessageBoxButtons.OK, MessageBoxIcon.Error); } MessageBox.Show("MD5s generated.","Novetus Launcher - Novetus Client SDK", MessageBoxButtons.OK, MessageBoxIcon.Information); } void CheckBox4CheckedChanged(object sender, EventArgs e) { Locked = true; } void CheckBox6CheckedChanged(object sender, EventArgs e) { loadedClientInfo.Fix2007 = checkBox6.Checked; } void CheckBox7CheckedChanged(object sender, EventArgs e) { loadedClientInfo.AlreadyHasSecurity = checkBox7.Checked; } void checkBox5_CheckedChanged(object sender, EventArgs e) { loadedClientInfo.NoGraphicsOptions = checkBox5.Checked; } void NewToolStripMenuItemClick(object sender, EventArgs e) { label9.Text = "Not Loaded"; loadedClientInfo.UsesPlayerName = false; loadedClientInfo.UsesID = false; loadedClientInfo.Warning = ""; loadedClientInfo.LegacyMode = false; loadedClientInfo.Fix2007 = false; loadedClientInfo.AlreadyHasSecurity = false; loadedClientInfo.Description = ""; loadedClientInfo.ClientMD5 = ""; loadedClientInfo.ScriptMD5 = ""; SelectedClientInfoPath = ""; loadedClientInfo.CommandLineArgs = ""; Locked = false; checkBox1.Checked = loadedClientInfo.UsesPlayerName; checkBox2.Checked = loadedClientInfo.UsesID; checkBox3.Checked = loadedClientInfo.LegacyMode; checkBox4.Checked = Locked; 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; textBox3.BackColor = System.Drawing.SystemColors.Control; } void LoadToolStripMenuItemClick(object sender, EventArgs e) { 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)) { SelectedClientInfoPath = Path.GetDirectoryName(ofd.FileName); file = reader.ReadLine(); } string ConvertedLine = ""; try { IsVersion2 = true; label9.Text = "v2"; ConvertedLine = SecurityFuncs.Base64DecodeNew(file); } catch(Exception) { label9.Text = "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) { label9.Text = "v2 (DEV)"; IsVersion2 = false; } if (GlobalVars.AdminMode != true) { bool bline8 = Convert.ToBoolean(locked); if (bline8 == true) { 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; textBox3.BackColor = System.Drawing.SystemColors.Control; } void SaveToolStripMenuItemClick(object sender, EventArgs e) { using (var sfd = new SaveFileDialog()) { sfd.Filter = "Novetus Clientinfo files (*.nov)|*.nov"; sfd.FilterIndex = 1; sfd.FileName = "clientinfo.nov"; sfd.Title = "Save clientinfo.nov"; if (sfd.ShowDialog() == DialogResult.OK) { string[] lines = { 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"; textBox2.BackColor = System.Drawing.SystemColors.Control; textBox3.BackColor = System.Drawing.SystemColors.Control; } void TextBox4TextChanged(object sender, EventArgs e) { loadedClientInfo.CommandLineArgs = textBox4.Text; } void TextBox5TextChanged(object sender, EventArgs e) { loadedClientInfo.Warning = textBox5.Text; } private void documentationToolStripMenuItem_Click(object sender, EventArgs e) { ClientScriptDocumentation csd = new ClientScriptDocumentation(); csd.Show(); } private void AddClientinfoText(string text) { textBox4.Paste(text); } //tags private void clientToolStripMenuItem_Click(object sender, EventArgs e) { AddClientinfoText(""); } private void serverToolStripMenuItem_Click(object sender, EventArgs e) { AddClientinfoText(""); } private void soloToolStripMenuItem_Click(object sender, EventArgs e) { AddClientinfoText(""); } private void studioToolStripMenuItem_Click(object sender, EventArgs e) { AddClientinfoText(""); } private void no3dToolStripMenuItem_Click(object sender, EventArgs e) { AddClientinfoText(""); } //variables private void variableToolStripMenuItem_Click(object sender, EventArgs e) { ToolStripMenuItem senderitem = (ToolStripMenuItem)sender; AddClientinfoText(senderitem.Text); } private void saveAsTextFileToolStripMenuItem_Click(object sender, EventArgs e) { using (var sfd = new SaveFileDialog()) { sfd.Filter = "Text file (*.txt)|*.txt"; sfd.FilterIndex = 1; sfd.FileName = "clientinfo.txt"; sfd.Title = "Save clientinfo.txt"; 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); } } } } }