updated SDK tools and scripts.

This commit is contained in:
Bitl 2020-10-10 17:55:43 -07:00
parent 906c0ca542
commit 72f6ebd03f
19 changed files with 266 additions and 103 deletions

View File

@ -12,6 +12,7 @@ class Downloader
private readonly string fileURL;
private readonly string fileName;
private readonly string fileFilter;
private readonly string filePath;
private string downloadOutcome;
private static string downloadOutcomeException;
@ -22,6 +23,14 @@ class Downloader
fileFilter = filter;
}
public Downloader(string url, string name, string filter, string path)
{
fileName = name;
fileURL = url;
fileFilter = filter;
filePath = path;
}
public Downloader(string url, string name)
{
fileName = name;
@ -59,8 +68,6 @@ class Downloader
public void InitDownload(string additionalText = "")
{
string downloadOutcomeAddText = additionalText;
SaveFileDialog saveFileDialog1 = new SaveFileDialog
{
FileName = fileName,
@ -71,18 +78,28 @@ class Downloader
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
int read = DownloadFile(fileURL, saveFileDialog1.FileName);
downloadOutcome = "File " + Path.GetFileName(saveFileDialog1.FileName) + " downloaded! " + read + " bytes written! " + downloadOutcomeAddText + downloadOutcomeException;
}
catch (Exception ex)
{
downloadOutcome = "Error when downloading file: " + ex.Message;
}
InitDownloadNoDialog(saveFileDialog1.FileName, additionalText);
}
}
public void InitDownloadNoDialog(string name, string additionalText = "")
{
try
{
int read = DownloadFile(fileURL, name);
downloadOutcome = "File " + Path.GetFileName(name) + " downloaded! " + read + " bytes written! " + additionalText + downloadOutcomeException;
}
catch (Exception ex)
{
downloadOutcome = "Error when downloading file: " + ex.Message;
}
}
public string GetFullDLPath()
{
return filePath + Path.DirectorySeparatorChar + fileName;
}
private static int DownloadFile(string remoteFilename, string localFilename)
{
//credit to Tom Archer (https://www.codeguru.com/columns/dotnettips/article.php/c7005/Downloading-Files-with-the-WebRequest-and-WebResponse-Classes.htm)

View File

@ -584,23 +584,6 @@ class SDKFuncs
}
#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
#region Item SDK
public static void StartItemDownload(string name, string url, string id, int ver, bool iswebsite)
@ -637,7 +620,7 @@ class SDKFuncs
}
else
{
System.Diagnostics.Process.Start(fullURL);
Process.Start(fullURL);
if (!GlobalVars.UserConfiguration.DisabledItemMakerHelp)
{
@ -651,6 +634,35 @@ class SDKFuncs
MessageBox.Show("Error: Unable to download the file. Try using a different file name or ID.", "Novetus Item SDK | Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public static void StartItemBatchDownload(string name, string url, string id, int ver, bool iswebsite, string path)
{
try
{
string version = ((ver != 0) && (!iswebsite)) ? "&version=" + ver : "";
string fullURL = url + id + version;
if (!iswebsite)
{
Downloader download = new Downloader(fullURL, name, "", path);
try
{
download.InitDownloadNoDialog(download.GetFullDLPath());
}
catch (Exception)
{
}
}
else
{
Process.Start(fullURL);
}
}
catch (Exception)
{
}
}
#endregion
#region SDK Launcher

View File

@ -1120,7 +1120,8 @@ public class GlobalFuncs
RobloxXML.EditRenderSettings(doc, "IceQuality", MaterialQuality.ToString(), XMLTypes.Token);
RobloxXML.EditRenderSettings(doc, "PlasticQuality", MaterialQuality.ToString(), XMLTypes.Token);
RobloxXML.EditRenderSettings(doc, "SlateQuality", MaterialQuality.ToString(), XMLTypes.Token);
RobloxXML.EditRenderSettings(doc, "TrussDetail", MaterialQuality.ToString(), XMLTypes.Token);
// fix truss detail. We're keeping it at 0.
RobloxXML.EditRenderSettings(doc, "TrussDetail", "0", XMLTypes.Token);
RobloxXML.EditRenderSettings(doc, "WoodQuality", MaterialQuality.ToString(), XMLTypes.Token);
RobloxXML.EditRenderSettings(doc, "Antialiasing", AA.ToString(), XMLTypes.Token);
RobloxXML.EditRenderSettings(doc, "AASamples", AASamples.ToString(), XMLTypes.Token);
@ -1567,5 +1568,14 @@ public class GlobalFuncs
{
await TaskEx.Delay(miliseconds);
}
// Credit to Carrot for the original code. Rewote it to be smaller and more customizable.
public static string CryptStringWithByte(string word, int byteflag)
{
byte[] bytes = Encoding.ASCII.GetBytes(word);
string result = "";
for (int i = 0; i < bytes.Length; i++) { result += Convert.ToChar(byteflag ^ bytes[i]); }
return result;
}
}
#endregion

View File

@ -123,7 +123,7 @@ namespace NovetusLauncher
private void button1_Click(object sender, EventArgs e)
{
if (comboBox2.SelectedIndex == 6)
if (GlobalVars.UserConfiguration.QualityLevel == Settings.GraphicsOptions.Level.Custom)
{
GlobalFuncs.Config(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ConfigName, true);
CustomGraphicsOptions opt = new CustomGraphicsOptions();

View File

@ -1451,7 +1451,7 @@ namespace NovetusLauncher
private void button36_Click(object sender, EventArgs e)
{
if (comboBox2.SelectedIndex == 6)
if (GlobalVars.UserConfiguration.QualityLevel == Settings.GraphicsOptions.Level.Custom)
{
CustomGraphicsOptions opt = new CustomGraphicsOptions();
opt.Show();

View File

@ -55,15 +55,21 @@
this.MeshConverter_CreditText = new System.Windows.Forms.Label();
this.MeshConverter_ConvertButton = new System.Windows.Forms.Button();
this.AssetLocalization_BackgroundWorker = new System.ComponentModel.BackgroundWorker();
this.AssetDownloaderBatch = new System.Windows.Forms.GroupBox();
this.AssetDownloaderBatch_BatchIDBox = new System.Windows.Forms.TextBox();
this.AssetDownloader_BatchMode = new System.Windows.Forms.CheckBox();
this.AssetDownloaderBatch_Status = new System.Windows.Forms.Label();
this.AssetDownloader.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.AssetDownloader_AssetVersionSelector)).BeginInit();
this.AssetLocalization.SuspendLayout();
this.MeshConverter.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.MeshConverter_MeshVersionSelector)).BeginInit();
this.AssetDownloaderBatch.SuspendLayout();
this.SuspendLayout();
//
// AssetDownloader
//
this.AssetDownloader.Controls.Add(this.AssetDownloader_BatchMode);
this.AssetDownloader.Controls.Add(this.AssetDownloader_AssetNameBox);
this.AssetDownloader.Controls.Add(this.AssetDownloader_AssetNameText);
this.AssetDownloader.Controls.Add(this.AssetDownloader_LoadHelpMessage);
@ -97,11 +103,11 @@
//
// AssetDownloader_LoadHelpMessage
//
this.AssetDownloader_LoadHelpMessage.Location = new System.Drawing.Point(16, 112);
this.AssetDownloader_LoadHelpMessage.Location = new System.Drawing.Point(6, 114);
this.AssetDownloader_LoadHelpMessage.Name = "AssetDownloader_LoadHelpMessage";
this.AssetDownloader_LoadHelpMessage.Size = new System.Drawing.Size(220, 24);
this.AssetDownloader_LoadHelpMessage.Size = new System.Drawing.Size(145, 24);
this.AssetDownloader_LoadHelpMessage.TabIndex = 19;
this.AssetDownloader_LoadHelpMessage.Text = "Disable Help Message on File Creation";
this.AssetDownloader_LoadHelpMessage.Text = "Disable Help Messages";
this.AssetDownloader_LoadHelpMessage.UseVisualStyleBackColor = true;
this.AssetDownloader_LoadHelpMessage.CheckedChanged += new System.EventHandler(this.AssetDownloader_LoadHelpMessage_CheckedChanged);
//
@ -177,7 +183,7 @@
this.AssetLocalization.Controls.Add(this.AssetLocalization_StatusText);
this.AssetLocalization.Controls.Add(this.AssetLocalization_AssetTypeBox);
this.AssetLocalization.Controls.Add(this.AssetLocalization_LocalizeButton);
this.AssetLocalization.Location = new System.Drawing.Point(278, 42);
this.AssetLocalization.Location = new System.Drawing.Point(278, 126);
this.AssetLocalization.Name = "AssetLocalization";
this.AssetLocalization.Size = new System.Drawing.Size(267, 182);
this.AssetLocalization.TabIndex = 1;
@ -295,7 +301,7 @@
this.MeshConverter.Controls.Add(this.MeshConverter_MeshVersionText);
this.MeshConverter.Controls.Add(this.MeshConverter_CreditText);
this.MeshConverter.Controls.Add(this.MeshConverter_ConvertButton);
this.MeshConverter.Location = new System.Drawing.Point(10, 160);
this.MeshConverter.Location = new System.Drawing.Point(278, 14);
this.MeshConverter.Name = "MeshConverter";
this.MeshConverter.Size = new System.Drawing.Size(262, 106);
this.MeshConverter.TabIndex = 2;
@ -345,7 +351,7 @@
// MeshConverter_CreditText
//
this.MeshConverter_CreditText.AutoSize = true;
this.MeshConverter_CreditText.Location = new System.Drawing.Point(48, 80);
this.MeshConverter_CreditText.Location = new System.Drawing.Point(51, 90);
this.MeshConverter_CreditText.Name = "MeshConverter_CreditText";
this.MeshConverter_CreditText.Size = new System.Drawing.Size(167, 13);
this.MeshConverter_CreditText.TabIndex = 7;
@ -369,12 +375,58 @@
this.AssetLocalization_BackgroundWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.AssetLocalization_BackgroundWorker_ProgressChanged);
this.AssetLocalization_BackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.AssetLocalization_BackgroundWorker_RunWorkerCompleted);
//
// AssetDownloaderBatch
//
this.AssetDownloaderBatch.Controls.Add(this.AssetDownloaderBatch_Status);
this.AssetDownloaderBatch.Controls.Add(this.AssetDownloaderBatch_BatchIDBox);
this.AssetDownloaderBatch.Location = new System.Drawing.Point(12, 160);
this.AssetDownloaderBatch.Name = "AssetDownloaderBatch";
this.AssetDownloaderBatch.Size = new System.Drawing.Size(260, 148);
this.AssetDownloaderBatch.TabIndex = 3;
this.AssetDownloaderBatch.TabStop = false;
this.AssetDownloaderBatch.Text = "Asset Downloader Batch Queue (IDs here!)";
//
// AssetDownloaderBatch_BatchIDBox
//
this.AssetDownloaderBatch_BatchIDBox.Enabled = false;
this.AssetDownloaderBatch_BatchIDBox.Location = new System.Drawing.Point(6, 19);
this.AssetDownloaderBatch_BatchIDBox.Multiline = true;
this.AssetDownloaderBatch_BatchIDBox.Name = "AssetDownloaderBatch_BatchIDBox";
this.AssetDownloaderBatch_BatchIDBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.AssetDownloaderBatch_BatchIDBox.Size = new System.Drawing.Size(242, 105);
this.AssetDownloaderBatch_BatchIDBox.TabIndex = 0;
//
// AssetDownloader_BatchMode
//
this.AssetDownloader_BatchMode.AutoSize = true;
this.AssetDownloader_BatchMode.Location = new System.Drawing.Point(157, 118);
this.AssetDownloader_BatchMode.Name = "AssetDownloader_BatchMode";
this.AssetDownloader_BatchMode.Size = new System.Drawing.Size(84, 17);
this.AssetDownloader_BatchMode.TabIndex = 22;
this.AssetDownloader_BatchMode.Text = "Batch Mode";
this.AssetDownloader_BatchMode.UseVisualStyleBackColor = true;
this.AssetDownloader_BatchMode.CheckedChanged += new System.EventHandler(this.AssetDownloader_BatchMode_CheckedChanged);
//
// AssetDownloaderBatch_Status
//
this.AssetDownloaderBatch_Status.AutoSize = true;
this.AssetDownloaderBatch_Status.Cursor = System.Windows.Forms.Cursors.Default;
this.AssetDownloaderBatch_Status.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.AssetDownloaderBatch_Status.ForeColor = System.Drawing.Color.Red;
this.AssetDownloaderBatch_Status.Location = new System.Drawing.Point(94, 127);
this.AssetDownloaderBatch_Status.Name = "AssetDownloaderBatch_Status";
this.AssetDownloaderBatch_Status.Size = new System.Drawing.Size(84, 13);
this.AssetDownloaderBatch_Status.TabIndex = 1;
this.AssetDownloaderBatch_Status.Text = "Please wait...";
this.AssetDownloaderBatch_Status.Visible = false;
//
// AssetSDK
//
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(556, 280);
this.ClientSize = new System.Drawing.Size(557, 320);
this.Controls.Add(this.AssetDownloaderBatch);
this.Controls.Add(this.MeshConverter);
this.Controls.Add(this.AssetLocalization);
this.Controls.Add(this.AssetDownloader);
@ -393,6 +445,8 @@
this.MeshConverter.ResumeLayout(false);
this.MeshConverter.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.MeshConverter_MeshVersionSelector)).EndInit();
this.AssetDownloaderBatch.ResumeLayout(false);
this.AssetDownloaderBatch.PerformLayout();
this.ResumeLayout(false);
}
@ -427,4 +481,8 @@
private System.Windows.Forms.TextBox AssetDownloader_AssetIDBox;
private System.Windows.Forms.Button AssetDownloader_AssetDownloaderButton;
private System.ComponentModel.BackgroundWorker AssetLocalization_BackgroundWorker;
private System.Windows.Forms.CheckBox AssetDownloader_BatchMode;
private System.Windows.Forms.GroupBox AssetDownloaderBatch;
private System.Windows.Forms.TextBox AssetDownloaderBatch_BatchIDBox;
private System.Windows.Forms.Label AssetDownloaderBatch_Status;
}

View File

@ -3,6 +3,7 @@ using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Windows.Forms;
#endregion
@ -17,6 +18,7 @@ public partial class AssetSDK : Form
//downloader
private string url = "https://assetdelivery.roblox.com/v1/asset/?id=";
private bool isWebSite = false;
private bool batchMode = false;
//obj2mesh
private OpenFileDialog MeshConverter_OpenOBJDialog;
#endregion
@ -93,24 +95,81 @@ public partial class AssetSDK : Form
break;
default:
//use defaults
url = "https://assetdelivery.roblox.com/v1/asset/?id=";
isWebSite = false;
break;
}
}
private void AssetDownloader_AssetDownloaderButton_Click(object sender, EventArgs e)
{
SDKFuncs.StartItemDownload(
AssetDownloader_AssetNameBox.Text,
url,
AssetDownloader_AssetIDBox.Text,
Convert.ToInt32(AssetDownloader_AssetVersionSelector.Value),
isWebSite);
if (batchMode == false)
{
SDKFuncs.StartItemDownload(
AssetDownloader_AssetNameBox.Text,
url,
AssetDownloader_AssetIDBox.Text,
Convert.ToInt32(AssetDownloader_AssetVersionSelector.Value),
isWebSite);
}
else
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog
{
FileName = "Save to a directory. Files will be saved as ",
//"Compressed zip files (*.zip)|*.zip|All files (*.*)|*.*"
Filter = "Roblox Model(*.rbxm) | *.rbxm | Roblox Mesh(*.mesh) | *.mesh | PNG Image(*.png) | *.png | WAV Sound(*.wav) | *.wav",
Title = "Save files downloaded via batch"
};
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string basepath = Path.GetDirectoryName(saveFileDialog1.FileName);
string extension = Path.GetExtension(saveFileDialog1.FileName);
AssetDownloaderBatch_Status.Visible = true;
string[] lines = AssetDownloaderBatch_BatchIDBox.Lines;
foreach (var line in lines)
{
SDKFuncs.StartItemBatchDownload(
line + extension,
url,
line,
Convert.ToInt32(AssetDownloader_AssetVersionSelector.Value),
isWebSite, basepath);
}
AssetDownloaderBatch_Status.Visible = false;
MessageBox.Show("Batch download complete! " + lines.Count() + " items downloaded!", "Novetus Item SDK", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
private void AssetDownloader_LoadHelpMessage_CheckedChanged(object sender, EventArgs e)
{
GlobalVars.UserConfiguration.DisabledItemMakerHelp = AssetDownloader_LoadHelpMessage.Checked;
}
private void AssetDownloader_BatchMode_CheckedChanged(object sender, EventArgs e)
{
batchMode = AssetDownloader_BatchMode.Checked;
if (batchMode)
{
AssetDownloaderBatch_BatchIDBox.Enabled = true;
AssetDownloader_AssetIDBox.Enabled = false;
AssetDownloader_AssetNameBox.Enabled = false;
}
else
{
AssetDownloaderBatch_BatchIDBox.Enabled = false;
AssetDownloader_AssetIDBox.Enabled = true;
AssetDownloader_AssetNameBox.Enabled = true;
}
}
#endregion
#region Asset Localizer

View File

@ -7,9 +7,13 @@ using System.Windows.Forms;
#region Diogenes Editor
public partial class DiogenesEditor : Form
{
{
#region Private vars
private int diogenesFlag = 0x55;
#endregion
#region Constructor
public DiogenesEditor()
public DiogenesEditor()
{
InitializeComponent();
}
@ -36,22 +40,29 @@ using System.Windows.Forms;
using (StreamReader reader = new StreamReader(ofd.FileName))
{
while (!reader.EndOfStream)
if (reader.EndOfStream)
{
string line = reader.ReadLine();
try
label2.Text = "Empty";
}
else
{
while (!reader.EndOfStream)
{
line = SDKFuncs.DiogenesCrypt(line);
label2.Text = "v2";
}
catch (Exception)
{
label2.Text = "v1";
continue;
}
string line = reader.ReadLine();
builder.Append(line + Environment.NewLine);
try
{
line = GlobalFuncs.CryptStringWithByte(line, diogenesFlag);
label2.Text = "v2";
}
catch (Exception)
{
label2.Text = "v1";
continue;
}
builder.Append(line + Environment.NewLine);
}
}
}
@ -77,7 +88,7 @@ using System.Windows.Forms;
{
if (sfd.FilterIndex == 1)
{
builder.Append(SDKFuncs.DiogenesCrypt(s) + Environment.NewLine);
builder.Append(GlobalFuncs.CryptStringWithByte(s, diogenesFlag) + Environment.NewLine);
label2.Text = "v2";
}
else

View File

@ -22,21 +22,21 @@ The LUA scripts used were borrowed from the RBXPri client and merged into 1 sing
All credit for the LUA code included with the RBXPri client goes to the RBXPri team.
All credit for the LUA code used with "non-modern" clients goes to Scripter John and EnergyCell.
All credit for the LUA code used for character customization goes to RBXBanLand.
Parts of the codebase use bits and pieces of code from Stack Overflow, MSDN Forums and Codeproject.
The Diogenes encryption/decryption source code was made by Carrot.
Parts of the codebase use bits and pieces of code from Stack Overflow, MSDN Forums, the Novetus GitHub Pull Requests and Codeproject.
The original concept for the Diogenes editor was suggested by Carrot. The concept code was then modified to be smaller, more efficent, and more customizable.
RBXMeshConverter was made by coke. (https://github.com/0xC0CAC01A/RBXMeshConverter)
Roblox Legacy Place Converter was made by BakonBot. (https://github.com/BakonBot/legacy-place-converter)
ROBLOX Script Generator was made by S. Costeira.
All credits for the used pieces of code go to the respective authors.
Mark James' Silk icon set 1.3:
### Mark James' Silk icon set 1.3:
The Discord Rich Presence icons used for this application use Mark James' Silk icon set 1.3.
http://www.famfamfam.com/lab/icons/silk/
PHP:
### PHP:
This product includes PHP, freely available from http://www.php.net/
ReShade:
### ReShade:
Copyright 2014 Patrick Mours. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@ -64,7 +64,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Novetus Launcher license (MIT Licence):
### Novetus Launcher license (MIT Licence):
MIT License

View File

@ -250,7 +250,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
coroutine.resume(coroutine.create(function()
while Player ~= nil do
wait(0.1)
if (Player.Character ~= nil) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
if (Player.Character.Humanoid.Health == 0) then
wait(5)
Player:LoadCharacter()
@ -283,7 +283,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() player:SetUnder13(false) end)
pcall(function() player:SetAccountAge(365) end)
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
end)
@ -356,11 +356,11 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
plr:LoadCharacter()
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do
wait(0.001)
if (plr.Character ~= nil) then
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character)

View File

@ -251,7 +251,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
while Player ~= nil do
wait(0.1)
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
@ -283,7 +283,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() player:SetUnder13(false) end)
pcall(function() player:SetAccountAge(365) end)
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
end)
@ -356,11 +356,11 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
plr:LoadCharacter()
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do
wait(0.001)
if (plr.Character ~= nil) then
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character)

View File

@ -347,7 +347,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
while Player ~= nil do
wait(0.1)
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
@ -379,7 +379,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() player:SetUnder13(false) end)
pcall(function() player:SetAccountAge(365) end)
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
end)
@ -450,11 +450,11 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
plr:LoadCharacter()
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do
wait(0.001)
if (plr.Character ~= nil) then
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character)

View File

@ -347,7 +347,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
while Player ~= nil do
wait(0.1)
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
@ -379,7 +379,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() player:SetUnder13(false) end)
pcall(function() player:SetAccountAge(365) end)
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
end)
@ -450,11 +450,11 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
plr:LoadCharacter()
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do
wait(0.001)
if (plr.Character ~= nil) then
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character)

View File

@ -438,7 +438,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
while true do
wait(0.001)
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
@ -469,7 +469,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() player:SetAccountAge(365) end)
player.CharacterAppearance=0
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
InitalizeSecurityValues(player,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
InitalizeTripcode(player,Tripcode)
@ -543,9 +543,9 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
plr.CharacterAppearance=0
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do wait()
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)

View File

@ -498,7 +498,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
while true do
wait(0.001)
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
@ -541,7 +541,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() player:SetAccountAge(365) end)
player.CharacterAppearance=0
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
InitalizeSecurityValues(player,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
InitalizeTripcode(player,Tripcode)
@ -615,9 +615,9 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
plr.CharacterAppearance=0
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do wait()
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)

View File

@ -628,7 +628,6 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
game.GuiRoot.MainMenu["Tools"]:Remove()
game.GuiRoot.MainMenu["Insert"]:Remove()
pcall(function() Visit:SetUploadUrl("") end)
game:GetService("Visit")
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
@ -640,9 +639,9 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
plr.CharacterAppearance=0
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do wait()
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)

View File

@ -628,7 +628,6 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
game.GuiRoot.MainMenu["Tools"]:Remove()
game.GuiRoot.MainMenu["Insert"]:Remove()
pcall(function() Visit:SetUploadUrl("") end)
game:GetService("Visit")
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
@ -642,9 +641,9 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
newWaitForChild(game.StarterGui, "Health")
game.StarterGui.Health:clone().Parent = plr.PlayerGui
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do wait()
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)

View File

@ -644,7 +644,6 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
pcall(function() Visit:SetUploadUrl("") end)
game:GetService("Visit")
InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
wait(0.65)
InitalizeSecurityValues(Player,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
@ -673,9 +672,9 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
newWaitForChild(game.StarterGui, "Health")
game.StarterGui.Dialogs:clone().Parent = plr.PlayerGui
game.StarterGui.Health:clone().Parent = plr.PlayerGui
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do wait()
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)

View File

@ -636,7 +636,6 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
pcall(function() Visit:SetUploadUrl("") end)
game:GetService("Visit")
InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
wait(0.65)
InitalizeSecurityValues(Player,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
@ -670,9 +669,9 @@ function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,
game.StarterGui.Health:clone().Parent = plr.PlayerGui
game.StarterGui.Playerlist:clone().Parent = plr.PlayerGui
game.StarterGui.Backpack:clone().Parent = plr.PlayerGui
game:GetService("Visit")
game:GetService("Visit"):SetUploadUrl("")
while true do wait()
if (plr.Character.Humanoid.Health == 0) then
if (plr.Character:FindFirstChild("Humanoid") and (plr.Character.Humanoid.Health == 0)) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)