From 678a8c8557567d15591c5e48b7566a08c2522d93 Mon Sep 17 00:00:00 2001 From: Bitl Date: Mon, 22 Jul 2019 16:38:47 -0700 Subject: [PATCH] fixed itemmaker --- .../NovetusLauncher/ItemMaker.Designer.cs | 86 +++----------- NovetusLauncher/NovetusLauncher/ItemMaker.cs | 33 +----- .../ProFileDownloader.4.0.0.nupkg | Bin 0 -> 27971 bytes .../lib/netcoreapp2.1/ProFileDownloader.xml | 112 ++++++++++++++++++ 4 files changed, 133 insertions(+), 98 deletions(-) create mode 100644 NovetusLauncher/packages/ProFileDownloader.4.0.0/ProFileDownloader.4.0.0.nupkg create mode 100644 NovetusLauncher/packages/ProFileDownloader.4.0.0/lib/netcoreapp2.1/ProFileDownloader.xml diff --git a/NovetusLauncher/NovetusLauncher/ItemMaker.Designer.cs b/NovetusLauncher/NovetusLauncher/ItemMaker.Designer.cs index a6778d0..768ef3b 100644 --- a/NovetusLauncher/NovetusLauncher/ItemMaker.Designer.cs +++ b/NovetusLauncher/NovetusLauncher/ItemMaker.Designer.cs @@ -37,31 +37,20 @@ namespace NovetusLauncher private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ItemMaker)); - this.textBox1 = new System.Windows.Forms.TextBox(); this.button1 = new System.Windows.Forms.Button(); this.textBox2 = new System.Windows.Forms.TextBox(); this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); - this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.comboBox1 = new System.Windows.Forms.ComboBox(); - this.comboBox2 = new System.Windows.Forms.ComboBox(); - this.label4 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); this.SuspendLayout(); // - // textBox1 - // - this.textBox1.Location = new System.Drawing.Point(3, 27); - this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(229, 20); - this.textBox1.TabIndex = 0; - // // button1 // - this.button1.Location = new System.Drawing.Point(3, 120); + this.button1.Location = new System.Drawing.Point(3, 80); this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(229, 23); + this.button1.Size = new System.Drawing.Size(238, 23); this.button1.TabIndex = 1; this.button1.Text = "Create!"; this.button1.UseVisualStyleBackColor = true; @@ -69,34 +58,26 @@ namespace NovetusLauncher // // textBox2 // - this.textBox2.Location = new System.Drawing.Point(3, 67); + this.textBox2.Location = new System.Drawing.Point(46, 27); this.textBox2.Name = "textBox2"; - this.textBox2.Size = new System.Drawing.Size(85, 20); + this.textBox2.Size = new System.Drawing.Size(76, 20); this.textBox2.TabIndex = 2; // // numericUpDown1 // - this.numericUpDown1.Location = new System.Drawing.Point(97, 66); + this.numericUpDown1.Location = new System.Drawing.Point(161, 27); this.numericUpDown1.Maximum = new decimal(new int[] { - 3, - 0, - 0, - 0}); + 3, + 0, + 0, + 0}); this.numericUpDown1.Name = "numericUpDown1"; - this.numericUpDown1.Size = new System.Drawing.Size(39, 20); + this.numericUpDown1.Size = new System.Drawing.Size(36, 20); this.numericUpDown1.TabIndex = 3; // - // label1 - // - this.label1.Location = new System.Drawing.Point(59, 10); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(121, 14); - this.label1.TabIndex = 5; - this.label1.Text = "Item Name (No Spaces)"; - // // label2 // - this.label2.Location = new System.Drawing.Point(21, 50); + this.label2.Location = new System.Drawing.Point(63, 10); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(46, 14); this.label2.TabIndex = 6; @@ -104,7 +85,7 @@ namespace NovetusLauncher // // label3 // - this.label3.Location = new System.Drawing.Point(94, 50); + this.label3.Location = new System.Drawing.Point(161, 9); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(42, 14); this.label3.TabIndex = 7; @@ -116,54 +97,26 @@ namespace NovetusLauncher this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBox1.FormattingEnabled = true; this.comboBox1.Items.AddRange(new object[] { - "http://www.roblox.com/", - "http://assetgame.roblox.com/"}); - this.comboBox1.Location = new System.Drawing.Point(3, 93); + "http://www.roblox.com/", + "http://assetgame.roblox.com/"}); + this.comboBox1.Location = new System.Drawing.Point(3, 53); this.comboBox1.Name = "comboBox1"; - this.comboBox1.Size = new System.Drawing.Size(229, 21); + this.comboBox1.Size = new System.Drawing.Size(238, 21); this.comboBox1.TabIndex = 8; this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.ComboBox1SelectedIndexChanged); // - // comboBox2 - // - this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBox2.FormattingEnabled = true; - this.comboBox2.Items.AddRange(new object[] { - "Item (.rbxm)", - "Texture (.png)", - "Mesh (.mesh)", - "Sound (.wav)"}); - this.comboBox2.Location = new System.Drawing.Point(142, 65); - this.comboBox2.Name = "comboBox2"; - this.comboBox2.Size = new System.Drawing.Size(90, 21); - this.comboBox2.TabIndex = 9; - this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.ComboBox2SelectedIndexChanged); - // - // label4 - // - this.label4.Location = new System.Drawing.Point(142, 50); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(90, 14); - this.label4.TabIndex = 10; - this.label4.Text = "Type"; - this.label4.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // // ItemMaker // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.ClientSize = new System.Drawing.Size(236, 152); - this.Controls.Add(this.label4); - this.Controls.Add(this.comboBox2); + this.ClientSize = new System.Drawing.Size(244, 114); this.Controls.Add(this.comboBox1); this.Controls.Add(this.label3); this.Controls.Add(this.label2); - this.Controls.Add(this.label1); this.Controls.Add(this.numericUpDown1); this.Controls.Add(this.textBox2); this.Controls.Add(this.button1); - this.Controls.Add(this.textBox1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; @@ -173,16 +126,13 @@ namespace NovetusLauncher ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); + } - private System.Windows.Forms.Label label4; - private System.Windows.Forms.ComboBox comboBox2; private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label1; private System.Windows.Forms.NumericUpDown numericUpDown1; private System.Windows.Forms.TextBox textBox2; - private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Button button1; } } diff --git a/NovetusLauncher/NovetusLauncher/ItemMaker.cs b/NovetusLauncher/NovetusLauncher/ItemMaker.cs index eeef097..efa981b 100644 --- a/NovetusLauncher/NovetusLauncher/ItemMaker.cs +++ b/NovetusLauncher/NovetusLauncher/ItemMaker.cs @@ -23,7 +23,6 @@ namespace NovetusLauncher public partial class ItemMaker : Form { private static string url = "http://www.roblox.com/asset?id="; - private static string type = ".rbxm"; public ItemMaker() { @@ -43,14 +42,9 @@ namespace NovetusLauncher { string version = (numericUpDown1.Value != 0) ? "&version=" + numericUpDown1.Value : ""; - using (WebClient wc = new WebClient()) - { - var ua = "Roblox/WinInet"; - wc.Headers.Add(HttpRequestHeader.UserAgent, ua); - wc.DownloadFileAsync(new System.Uri(url + textBox2.Text + version), GlobalVars.BasePath + "\\" + textBox1.Text + type); - } + System.Diagnostics.Process.Start(url + textBox2.Text + version); - MessageBox.Show("Item downloaded into your Novetus directory! In order for the item to work in Novetus, you'll need to find an icon for your item (it must be a .png file), then name it the same name as your item.\n\nIf you want to create a local (offline) item, you'll have to download the meshes/textures from the links in the rbxm file, then replace the links in the file pointing to where they are using rbxasset://. Look at the directory in the 'shareddata/charcustom' folder that best suits your item type, then look at the rbxm for any one of the items. If you get a corrupted file, change the URL using the drop down box.","Novetus Item SDK", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("In order for the item to work in Novetus, you'll need to find an icon for your item (it must be a .png file), then name it the same name as your item.\n\nIf you want to create a local (offline) item, you'll have to download the meshes/textures from the links in the rbxm file, then replace the links in the file pointing to where they are using rbxasset://. Look at the directory in the 'shareddata/charcustom' folder that best suits your item type, then look at the rbxm for any one of the items. If you get a corrupted file, change the URL using the drop down box.\n\nIf you're trying to create a offline item. please use these file extension names when saving your files:\n.rbxm - ROBLOX Model/Item\n.mesh - ROBLOX Mesh\n.png - Texture/Icon\n.wav - Sound","Novetus Item SDK", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch(Exception) { @@ -72,28 +66,7 @@ namespace NovetusLauncher void ItemMakerLoad(object sender, EventArgs e) { - comboBox1.Text = "http://www.roblox.com/"; - comboBox2.Text = "Item (.rbxm)"; - } - - void ComboBox2SelectedIndexChanged(object sender, EventArgs e) - { - if (comboBox2.SelectedIndex == 0) - { - type = ".rbxm"; - } - else if (comboBox2.SelectedIndex == 1) - { - type = ".png"; - } - else if (comboBox2.SelectedIndex == 2) - { - type = ".mesh"; - } - else if (comboBox2.SelectedIndex == 3) - { - type = ".wav"; - } + comboBox1.Text = "http://www.roblox.com/"; } } } diff --git a/NovetusLauncher/packages/ProFileDownloader.4.0.0/ProFileDownloader.4.0.0.nupkg b/NovetusLauncher/packages/ProFileDownloader.4.0.0/ProFileDownloader.4.0.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..c815ed5def5076b5444ce38050c9e8d168d616fd GIT binary patch literal 27971 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 + + + ProFileDownloader + + + +

+ A class which represents a file downloader + + + + + Giving a name to overwrite the remote suggested file name. + + + + + Initialize the downloader. + + Url of the remote file. + Where the local file should be saved at. + + + + Giving you a readable format for the remote file size. + + + + + Loads the downloader with the required information about the remote file. + + + + + + Indicates if the remote server supports the file segmentation or not + + + + + Indicates if the remote server supports the file resuming or not + + + + + Updates the downloader with the new changes that happened to the remote file, to match the least changes to be able to resume downloading the file. + + + Updates the remote file properties. + + + + + Download the remote file. + + Gets the current downloading process + A token to cancel the downloading process if you want. + + + + + A class which represents segments downloader + + + + + Initialize the segment downloader. + + Url of the remote file. + Where the local file should be saved at. + + + + Load the segments of the remote file. + + List of segments are stored + + + + Gets the segments basic data, to be stored on your own, for later resuming needs. + + Json Content, which is need to be stored in somewhere on your own. + + + + Load the Segments data from the JsonContent + + Json Content, which you got from the + reloaded segments to be able to resumed + + + + Start downloading the segments + + Gets the current downloading process + A token to cancel the downloading process if you want. + + + + + Reconstract the segments from the temp files that got created. + + A complete file in the directory that you specified in the constructor. + + + + Provides Utility Methods for dealing with files. + + + +