begin development of mod package creator

This commit is contained in:
Bitl 2022-07-27 17:45:41 -07:00
parent 4df1691187
commit 6d5be9a2c9
20 changed files with 425 additions and 79 deletions

View File

@ -15,6 +15,7 @@ using System.Net;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
@ -2916,5 +2917,39 @@ public class GlobalFuncs
return finalUrl;
}
public static void CreateInitialFileListIfNeededMulti()
{
if (!File.Exists(GlobalPaths.ConfigDir + "\\InitialFileList.txt"))
{
Thread t = new Thread(CreateInitialFileList);
t.Start();
}
}
private static void CreateInitialFileList()
{
string filterPath = GlobalPaths.ConfigDir + @"\\" + GlobalPaths.InitialFileListIgnoreFilterName;
string[] fileListToIgnore = File.ReadAllLines(filterPath);
using (var txt = File.CreateText(GlobalPaths.ConfigDir + "\\InitialFileList.txt"))
{
DirectoryInfo dinfo = new DirectoryInfo(GlobalPaths.BasePath);
FileInfo[] Files = dinfo.GetFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo file in Files)
{
DirectoryInfo localdinfo = new DirectoryInfo(file.DirectoryName);
string directory = localdinfo.Name;
if (!fileListToIgnore.Contains(file.Name, StringComparer.InvariantCultureIgnoreCase) && !fileListToIgnore.Contains(directory, StringComparer.InvariantCultureIgnoreCase))
{
txt.WriteLine(file.FullName);
}
else
{
continue;
}
}
}
}
}
#endregion

View File

@ -117,6 +117,7 @@ public class GlobalPaths
public static readonly string ContentProviderXMLName = "ContentProviders.xml";
public static readonly string PartColorXMLName = "PartColors.xml";
public static readonly string FileDeleteFilterName = "FileDeleteFilter.txt";
public static readonly string InitialFileListIgnoreFilterName = "InitialFileListIgnoreFilter.txt";
#endregion
}
#endregion

View File

@ -65,29 +65,6 @@ public static class NETExt
}
#endregion
#region Array Helper
public static object FindInDimensions(this object[,] target,
object searchTerm)
{
object result = null;
var rowLowerLimit = target.GetLowerBound(0);
var rowUpperLimit = target.GetUpperBound(0);
var colLowerLimit = target.GetLowerBound(1);
var colUpperLimit = target.GetUpperBound(1);
for (int row = rowLowerLimit; row < rowUpperLimit; row++)
{
for (int col = colLowerLimit; col < colUpperLimit; col++)
{
// you could do the search here...
}
}
return result;
}
#endregion
#region Substring Extensions
/// <summary>
/// Get string value between [first] a and [last] b.

View File

@ -10,8 +10,8 @@ using System.Timers;
using System.Windows.Forms;
#endregion
#region Addon Loader
public class AddonLoader
#region Mod Manager
public class ModManager
{
private readonly OpenFileDialog openFileDialog1;
private string installOutcome = "";
@ -20,7 +20,8 @@ public class AddonLoader
private CancellationTokenSource tokenSource;
private int pastPercentage = 0;
public AddonLoader(RichTextBox box)
//extracting mode
public ModManager(RichTextBox box)
{
Application.ApplicationExit += new EventHandler(OnApplicationExit);
consoleBox = box;
@ -117,7 +118,7 @@ public class AddonLoader
if (intPercent % 25 == 0 && pastPercentage != intPercent)
{
GlobalFuncs.ConsolePrint("AddonLoader - Extracting: "
GlobalFuncs.ConsolePrint("ModManager - Extracting: "
+ e.CurrentEntry.FileName + ". Progress: "
+ e.BytesTransferred + "/" + e.TotalBytesToTransfer
+ " (" + intPercent + "%)", 3, consoleBox, true);
@ -127,7 +128,7 @@ public class AddonLoader
}
else if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry)
{
GlobalFuncs.ConsolePrint("AddonLoader - Extracting: " + e.CurrentEntry.FileName, 3, consoleBox);
GlobalFuncs.ConsolePrint("ModManager - Extracting: " + e.CurrentEntry.FileName, 3, consoleBox);
}
}

View File

@ -180,7 +180,7 @@ namespace NovetusLauncher
this.button25.Name = "button25";
this.button25.Size = new System.Drawing.Size(104, 20);
this.button25.TabIndex = 56;
this.button25.Text = "Install Mods/Addons";
this.button25.Text = "Install Mod Package";
this.button25.UseVisualStyleBackColor = true;
this.button25.Click += new System.EventHandler(this.button25_Click);
//

View File

@ -136,7 +136,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB0
CQAAAk1TRnQBSQFMAgEBAgEAAZgBAAGYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
CQAAAk1TRnQBSQFMAgEBAgEAAaABAAGgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@ -201,6 +201,8 @@ namespace NovetusLauncher
#region Form Event Functions
public void InitForm()
{
GlobalFuncs.CreateInitialFileListIfNeededMulti();
HideMasterAddressWarning = false;
if (FormStyle != Settings.Style.Stylish)
@ -1099,7 +1101,7 @@ namespace NovetusLauncher
public async void InstallAddon()
{
AddonLoader addon = new AddonLoader(ConsoleBox);
ModManager addon = new ModManager(ConsoleBox);
addon.setFileListDisplay(10);
try
{

View File

@ -855,15 +855,15 @@
<Button x:Name="saveConfigButton" Content="Save Config" HorizontalAlignment="Left" Margin="233,67,0,0" VerticalAlignment="Top" Width="75" Click="saveConfigButton_Click"/>
<Button x:Name="resetAssetCacheButton" Content="Clear Cache" HorizontalAlignment="Left" Margin="313,46,0,0" VerticalAlignment="Top" Width="81" Height="16" Click="resetAssetCacheButton_Click"/>
<Button x:Name="novetusSDKButton" Content="Novetus SDK" HorizontalAlignment="Left" Margin="313,67,0,0" VerticalAlignment="Top" Width="81" Click="novetusSDKButton_Click"/>
<Button x:Name="settingsButtons" Style="{DynamicResource ImportantButtonSmall}" Content="Settings" HorizontalAlignment="Left" Margin="399,46,0,0" VerticalAlignment="Top" Width="103" Height="17" Click="settingsButtons_Click" Grid.ColumnSpan="2"/>
<Button x:Name="modInstallerButton" Content="Install Mods" HorizontalAlignment="Left" Margin="399,67,0,0" VerticalAlignment="Top" Width="103" Click="modInstallerButton_Click" Grid.ColumnSpan="2"/>
<ComboBox x:Name="styleBox" Grid.Column="1" HorizontalAlignment="Left" Margin="79,59,0,0" VerticalAlignment="Top" Width="107" Height="24" DropDownClosed="styleBox_DropDownClosed">
<Button x:Name="settingsButtons" Style="{DynamicResource ImportantButtonSmall}" Content="Settings" HorizontalAlignment="Left" Margin="399,46,0,0" VerticalAlignment="Top" Width="119" Height="17" Click="settingsButtons_Click" Grid.ColumnSpan="2"/>
<Button x:Name="modInstallerButton" Content="Install Mod Package" HorizontalAlignment="Left" Margin="399,67,0,0" VerticalAlignment="Top" Width="119" Click="modInstallerButton_Click" Grid.ColumnSpan="2"/>
<ComboBox x:Name="styleBox" Grid.Column="1" HorizontalAlignment="Left" Margin="89,59,0,0" VerticalAlignment="Top" Width="107" Height="24" DropDownClosed="styleBox_DropDownClosed">
<local:StyleListItem StyleName="Extended"/>
<local:StyleListItem StyleName="Compact"/>
<local:StyleListItem StyleName="Stylish"/>
</ComboBox>
<Separator Style="{DynamicResource VerticalSeperator}" HorizontalAlignment="Left" Height="44" Margin="223,44,0,0" VerticalAlignment="Top" Width="5"/>
<Label x:Name="styleLabel" Content="Launcher Style" Grid.Column="1" HorizontalAlignment="Left" Margin="79,37,0,0" VerticalAlignment="Top" Width="107" Height="26"/>
<Label x:Name="styleLabel" Content="Launcher Style" Grid.Column="1" HorizontalAlignment="Left" Margin="89,37,0,0" VerticalAlignment="Top" Width="107" Height="26"/>
</Grid>
</TabItem>
</TabControl>

View File

@ -33,6 +33,8 @@ partial class ItemCreationSDK
this.ItemIconLabel = new System.Windows.Forms.Label();
this.BrowseImageButton = new System.Windows.Forms.Button();
this.ItemSettingsGroup = new System.Windows.Forms.GroupBox();
this.UsesHatTexBoxRefresh = new System.Windows.Forms.Button();
this.UsesHatMeshBoxRefresh = new System.Windows.Forms.Button();
this.OtherGroup = new System.Windows.Forms.GroupBox();
this.EditItemBox = new System.Windows.Forms.CheckBox();
this.ResetButton = new System.Windows.Forms.Button();
@ -121,8 +123,6 @@ partial class ItemCreationSDK
this.ItemNameBox = new System.Windows.Forms.TextBox();
this.Warning = new System.Windows.Forms.Label();
this.SettingsButton = new System.Windows.Forms.Button();
this.UsesHatMeshBoxRefresh = new System.Windows.Forms.Button();
this.UsesHatTexBoxRefresh = new System.Windows.Forms.Button();
this.ItemSettingsGroup.SuspendLayout();
this.OtherGroup.SuspendLayout();
this.CoordGroup3.SuspendLayout();
@ -234,6 +234,30 @@ partial class ItemCreationSDK
this.ItemSettingsGroup.TabStop = false;
this.ItemSettingsGroup.Text = "Item Settings";
//
// UsesHatTexBoxRefresh
//
this.UsesHatTexBoxRefresh.Enabled = false;
this.UsesHatTexBoxRefresh.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.UsesHatTexBoxRefresh.Location = new System.Drawing.Point(492, 81);
this.UsesHatTexBoxRefresh.Name = "UsesHatTexBoxRefresh";
this.UsesHatTexBoxRefresh.Size = new System.Drawing.Size(56, 20);
this.UsesHatTexBoxRefresh.TabIndex = 24;
this.UsesHatTexBoxRefresh.Text = "Refresh";
this.UsesHatTexBoxRefresh.UseVisualStyleBackColor = true;
this.UsesHatTexBoxRefresh.Click += new System.EventHandler(this.UsesHatTexBoxRefresh_Click);
//
// UsesHatMeshBoxRefresh
//
this.UsesHatMeshBoxRefresh.Enabled = false;
this.UsesHatMeshBoxRefresh.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.UsesHatMeshBoxRefresh.Location = new System.Drawing.Point(215, 82);
this.UsesHatMeshBoxRefresh.Name = "UsesHatMeshBoxRefresh";
this.UsesHatMeshBoxRefresh.Size = new System.Drawing.Size(56, 20);
this.UsesHatMeshBoxRefresh.TabIndex = 23;
this.UsesHatMeshBoxRefresh.Text = "Refresh";
this.UsesHatMeshBoxRefresh.UseVisualStyleBackColor = true;
this.UsesHatMeshBoxRefresh.Click += new System.EventHandler(this.UsesHatMeshBoxRefresh_Click);
//
// OtherGroup
//
this.OtherGroup.Controls.Add(this.EditItemBox);
@ -1455,7 +1479,7 @@ partial class ItemCreationSDK
//
this.CreateItemButton.Location = new System.Drawing.Point(12, 382);
this.CreateItemButton.Name = "CreateItemButton";
this.CreateItemButton.Size = new System.Drawing.Size(197, 23);
this.CreateItemButton.Size = new System.Drawing.Size(118, 23);
this.CreateItemButton.TabIndex = 6;
this.CreateItemButton.Text = "Create and Test Item";
this.CreateItemButton.UseVisualStyleBackColor = true;
@ -1520,38 +1544,14 @@ partial class ItemCreationSDK
//
// SettingsButton
//
this.SettingsButton.Location = new System.Drawing.Point(215, 382);
this.SettingsButton.Location = new System.Drawing.Point(243, 382);
this.SettingsButton.Name = "SettingsButton";
this.SettingsButton.Size = new System.Drawing.Size(84, 23);
this.SettingsButton.Size = new System.Drawing.Size(57, 23);
this.SettingsButton.TabIndex = 15;
this.SettingsButton.Text = "Item Settings";
this.SettingsButton.Text = "Settings";
this.SettingsButton.UseVisualStyleBackColor = true;
this.SettingsButton.Click += new System.EventHandler(this.SettingsButton_Click);
//
// UsesHatMeshBoxRefresh
//
this.UsesHatMeshBoxRefresh.Enabled = false;
this.UsesHatMeshBoxRefresh.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.UsesHatMeshBoxRefresh.Location = new System.Drawing.Point(215, 82);
this.UsesHatMeshBoxRefresh.Name = "UsesHatMeshBoxRefresh";
this.UsesHatMeshBoxRefresh.Size = new System.Drawing.Size(56, 20);
this.UsesHatMeshBoxRefresh.TabIndex = 23;
this.UsesHatMeshBoxRefresh.Text = "Refresh";
this.UsesHatMeshBoxRefresh.UseVisualStyleBackColor = true;
this.UsesHatMeshBoxRefresh.Click += new System.EventHandler(this.UsesHatMeshBoxRefresh_Click);
//
// UsesHatTexBoxRefresh
//
this.UsesHatTexBoxRefresh.Enabled = false;
this.UsesHatTexBoxRefresh.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.UsesHatTexBoxRefresh.Location = new System.Drawing.Point(492, 81);
this.UsesHatTexBoxRefresh.Name = "UsesHatTexBoxRefresh";
this.UsesHatTexBoxRefresh.Size = new System.Drawing.Size(56, 20);
this.UsesHatTexBoxRefresh.TabIndex = 24;
this.UsesHatTexBoxRefresh.Text = "Refresh";
this.UsesHatTexBoxRefresh.UseVisualStyleBackColor = true;
this.UsesHatTexBoxRefresh.Click += new System.EventHandler(this.UsesHatTexBoxRefresh_Click);
//
// ItemCreationSDK
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

View File

@ -0,0 +1,86 @@
partial class ModCreator
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.AddonFilesListing = new System.Windows.Forms.ListBox();
this.SavePackageButton = new System.Windows.Forms.Button();
this.FileListingLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// AddonFilesListing
//
this.AddonFilesListing.FormattingEnabled = true;
this.AddonFilesListing.Location = new System.Drawing.Point(10, 25);
this.AddonFilesListing.Name = "AddonFilesListing";
this.AddonFilesListing.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.AddonFilesListing.Size = new System.Drawing.Size(407, 303);
this.AddonFilesListing.TabIndex = 0;
//
// SavePackageButton
//
this.SavePackageButton.Location = new System.Drawing.Point(10, 334);
this.SavePackageButton.Name = "SavePackageButton";
this.SavePackageButton.Size = new System.Drawing.Size(407, 23);
this.SavePackageButton.TabIndex = 4;
this.SavePackageButton.Text = "Save Package";
this.SavePackageButton.UseVisualStyleBackColor = true;
this.SavePackageButton.Click += new System.EventHandler(this.SavePackageButton_Click);
//
// FileListingLabel
//
this.FileListingLabel.AutoSize = true;
this.FileListingLabel.Location = new System.Drawing.Point(6, 7);
this.FileListingLabel.Name = "FileListingLabel";
this.FileListingLabel.Size = new System.Drawing.Size(416, 13);
this.FileListingLabel.TabIndex = 5;
this.FileListingLabel.Text = "Select which files you wish to include in your addon, then click \"Save Package\" b" +
"elow";
//
// ModCreator
//
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(429, 364);
this.Controls.Add(this.FileListingLabel);
this.Controls.Add(this.SavePackageButton);
this.Controls.Add(this.AddonFilesListing);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Name = "ModCreator";
this.Text = "Mod Package Creator";
this.Load += new System.EventHandler(this.ModCreator_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ListBox AddonFilesListing;
private System.Windows.Forms.Button SavePackageButton;
private System.Windows.Forms.Label FileListingLabel;
}

View File

@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
public partial class ModCreator : Form
{
public ModCreator()
{
InitializeComponent();
}
private void ModCreator_Load(object sender, EventArgs e)
{
CenterToScreen();
ListFiles();
}
private void SavePackageButton_Click(object sender, EventArgs e)
{
AddonFilesListing.Items.Clear();
ListFiles();
}
private void ListFiles()
{
if (File.Exists(GlobalPaths.ConfigDir + "\\InitialFileList.txt"))
{
Thread t = new Thread(FillFileListing);
t.Start();
}
else
{
MessageBox.Show("The initial file list has not been generated. Please launch the Novetus Launcher to initalize it.\n\nNote: Use a fresh Novetus install for this process. Do NOT use a client with mods (Addon scripts, items, maps, etc.) already created, as they won't show up in the file listing. After initalizing a fresh copy of Novetus, you are free to build Mod Packages for it.",
"Mod Creator - Initial file list not found.", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
}
private void FillFileListing()
{
string fileLoadString = "Loading files...";
AddonFilesListing.Items.Add(fileLoadString);
string[] files = GetUnlistedFiles();
foreach (string file in files)
{
AddonFilesListing.Items.Add(file);
}
AddonFilesListing.Items.Remove(fileLoadString);
}
private string[] GetUnlistedFiles()
{
string filterPath = GlobalPaths.ConfigDir + @"\\" + GlobalPaths.InitialFileListIgnoreFilterName;
string[] fileListToIgnore = File.ReadAllLines(filterPath);
string initialFileListPath = GlobalPaths.ConfigDir + "\\InitialFileList.txt";
string[] initalFileListLines = File.ReadAllLines(initialFileListPath);
List<string> newArray = new List<string>();
DirectoryInfo dinfo = new DirectoryInfo(GlobalPaths.BasePath);
FileInfo[] Files = dinfo.GetFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo file in Files)
{
DirectoryInfo localdinfo = new DirectoryInfo(file.DirectoryName);
string directory = localdinfo.Name;
if (!fileListToIgnore.Contains(file.Name, StringComparer.InvariantCultureIgnoreCase) &&
!fileListToIgnore.Contains(directory, StringComparer.InvariantCultureIgnoreCase) &&
!initalFileListLines.Contains(file.FullName, StringComparer.InvariantCultureIgnoreCase))
{
newArray.Add(file.FullName);
}
else
{
continue;
}
}
return newArray.ToArray();
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -38,18 +38,20 @@
System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem(new string[] {
"Item SDK"}, "ItemCreationSDK.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem6 = new System.Windows.Forms.ListViewItem(new string[] {
"ClientScript Documentation"}, "ClientScriptTester.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
"Mod Package Creator"}, -1, System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem7 = new System.Windows.Forms.ListViewItem(new string[] {
"Splash Tester"}, "splash.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
"ClientScript Documentation"}, "ClientScriptTester.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem8 = new System.Windows.Forms.ListViewItem(new string[] {
"Roblox Script Generator"}, "ROBLOXScriptGenerator.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
"Splash Tester"}, "splash.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem9 = new System.Windows.Forms.ListViewItem(new string[] {
"Roblox Legacy Place Converter"}, "ROBLOXLegacyPlaceConverter.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
"Roblox Script Generator"}, "ROBLOXScriptGenerator.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem10 = new System.Windows.Forms.ListViewItem(new string[] {
"Diogenes Editor"}, "Diogenes.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
"Roblox Legacy Place Converter"}, "ROBLOXLegacyPlaceConverter.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem11 = new System.Windows.Forms.ListViewItem(new string[] {
"ClientScript Tester"}, "ClientScriptTester.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
"Diogenes Editor"}, "Diogenes.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem12 = new System.Windows.Forms.ListViewItem(new string[] {
"ClientScript Tester"}, "ClientScriptTester.png", System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.Windows.Forms.ListViewItem listViewItem13 = new System.Windows.Forms.ListViewItem(new string[] {
"XML Content Editor"}, 9, System.Drawing.Color.Empty, System.Drawing.Color.Empty, new System.Drawing.Font("Microsoft Sans Serif", 9.75F));
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NovetusSDK));
this.label1 = new System.Windows.Forms.Label();
@ -96,7 +98,8 @@
listViewItem9,
listViewItem10,
listViewItem11,
listViewItem12});
listViewItem12,
listViewItem13});
this.listView1.Location = new System.Drawing.Point(12, 102);
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(414, 224);

View File

@ -16,6 +16,7 @@ enum SDKApps
AssetDownloader,
MeshConverter,
ItemCreationSDK,
ModCreator,
ClientScriptDoc,
SplashTester,
ScriptGenerator,
@ -118,6 +119,10 @@ public partial class NovetusSDK : Form
MeshConverter mesh = new MeshConverter();
mesh.Show();
break;
case SDKApps.ModCreator:
ModCreator mod = new ModCreator();
mod.Show();
break;
case SDKApps.ItemCreationSDK:
ItemCreationSDK icsdk = new ItemCreationSDK();
icsdk.Show();

View File

@ -125,7 +125,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAk
FQAAAk1TRnQBSQFMAgEBDAEAAUABAAFAAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
FQAAAk1TRnQBSQFMAgEBDAEAAUgBAAFIAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAAUADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@ -160,7 +160,7 @@
<Link>Forms\CharCustom\Extended\CharacterCustomizationExtended.designer.cs</Link>
<DependentUpon>CharacterCustomizationExtended.cs</DependentUpon>
</Compile>
<Compile Include="Classes\Launcher\AddonLoader.cs" />
<Compile Include="Classes\Launcher\ModManager.cs" />
<Compile Include="Classes\Launcher\SplashLoader.cs" />
<Compile Include="Classes\Launcher\TreeNodeHelper.cs" />
<Compile Include="Classes\LocalVars.cs" />
@ -204,19 +204,25 @@
<Compile Include="Forms\LauncherForm\Stylish\LauncherFormStylishServerInfo.Designer.cs">
<DependentUpon>LauncherFormStylishServerInfo.cs</DependentUpon>
</Compile>
<Compile Include="Forms\SDK\ModCreator.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\SDK\ModCreator.Designer.cs">
<DependentUpon>ModCreator.cs</DependentUpon>
</Compile>
<Compile Include="Forms\SDK\AssetDownloader.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\SDK\AssetDownloader.Designer.cs">
<DependentUpon>AssetDownloader.cs</DependentUpon>
</Compile>
<Compile Include="Forms\SDK\AssetFixer.cs">
<Compile Include="Forms\SDK\AssetFixer.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\SDK\AssetFixer.Designer.cs">
<DependentUpon>AssetFixer.cs</DependentUpon>
</Compile>
<Compile Include="Forms\SDK\MeshConverter.cs">
<Compile Include="Forms\SDK\MeshConverter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\SDK\MeshConverter.Designer.cs">
@ -326,6 +332,9 @@
<EmbeddedResource Include="Forms\LauncherForm\Stylish\LauncherFormStylishServerInfo.resx">
<DependentUpon>LauncherFormStylishServerInfo.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\SDK\ModCreator.resx">
<DependentUpon>ModCreator.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\SDK\AssetDownloader.resx">
<DependentUpon>AssetDownloader.cs</DependentUpon>
</EmbeddedResource>

View File

@ -1,3 +1,17 @@
1.3 Snapshot v22.8243.31090.1
Enhancements:
- Re-implemented the progress bar/status text to the Asset Fixer.
- The Asset Fixer and Legacy Place Converter will now show errors when loading a binary format place/model.
- The Legacy Place Converter now can load RBXMX, RBXL, and RBXM file types.
- The Asset SDK is now split up into 3 utilities:
- Mesh Converter
- Asset Fixer
- Asset Downloader
- The Asset Downloader's batch feature now shows the overall size of all items downloaded at the end of the download.
- Addon Packages are now renamed to Mod Packages to make differentiating them from Addon Scripts easier.
Fixes:
----------------------------------------------------------------------------
1.3 Snapshot v22.8222.20490.3
Enhancements:
- Added support for multiple addon scripts!

View File

@ -93,6 +93,7 @@ del /s /q Novetus\config\ports.txt
del /s /q Novetus\config\ReShade.ini
del /s /q Novetus\config\config.ini
del /s /q Novetus\config\config_customization.ini
del /s /q Novetus\config\initialfilelist.txt
del /s /q Novetus\config\clients\GlobalSettings2_2007E.xml
del /s /q Novetus\config\clients\GlobalSettings2_2007E-Shaders.xml
@ -108,4 +109,5 @@ del /s /q Novetus\config\clients\GlobalSettings4_2007M-Shaders.xml
del /s /q Novetus\config\clients\GlobalSettings7_2008M.xml
rmdir /s /q Novetus\maps\Custom
rmdir /s /q Novetus\shareddata\assetcache
rmdir /s /q Novetus\shareddata\assetcache
rmdir /s /q Novetus\logs

View File

@ -8,6 +8,6 @@ ExtendedVersionNumber=True
ExtendedVersionEditChangelog=True
//ExtendedVersionTemplate=%version% v?.2022.%extended-revision%%lite%
ExtendedVersionTemplate=%version% Snapshot v22.%build%.%revision%.%extended-revision%
ExtendedVersionRevision=3
ExtendedVersionRevision=1
IsLite=False
InitialBootup=False

View File

@ -206,4 +206,5 @@ Látom.
[normal]GET TO THE SHIPS! IT'S OUR ONLY CHANCE!|From the 1986 Transformers movie.
Standing here, I realize...
good grief!
This machine kills fascists
This machine kills fascists
wheatley is a moron i hate him