1.0 RC1 & RC2

This commit is contained in:
Bitl 2018-12-23 10:04:05 -07:00
parent 121d929eb6
commit d2b0e0bf3c
525 changed files with 46626 additions and 47219 deletions

View File

@ -10,6 +10,8 @@ function newWaitForChild(newParent,name)
end
function LoadCharacterNew(playerApp,newChar)
local path = "rbxasset://../../../shareddata/charcustom/"
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
for _,newVal in pairs(playerApp:GetChildren()) do
local customtype = newVal.CustomizationType.Value
@ -19,7 +21,7 @@ function LoadCharacterNew(playerApp,newChar)
end)
elseif (customtype == 2) then
pcall(function()
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
newHat[1].Parent = newChar
@ -30,7 +32,7 @@ function LoadCharacterNew(playerApp,newChar)
end)
elseif (customtype == 3) then
pcall(function()
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
if newTShirt[1] then
if newTShirt[1].className == "ShirtGraphic" then
newTShirt[1].Parent = newChar
@ -41,7 +43,7 @@ function LoadCharacterNew(playerApp,newChar)
end)
elseif (customtype == 4) then
pcall(function()
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
if newShirt[1] then
if newShirt[1].className == "Shirt" then
newShirt[1].Parent = newChar
@ -52,7 +54,7 @@ function LoadCharacterNew(playerApp,newChar)
end)
elseif (customtype == 5) then
pcall(function()
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
if newPants[1] then
if newPants[1].className == "Pants" then
newPants[1].Parent = newChar
@ -63,7 +65,7 @@ function LoadCharacterNew(playerApp,newChar)
end)
elseif (customtype == 6) then
pcall(function()
local newFace = game.Workspace:InsertContent("rbxasset://../../../charcustom/faces/"..newVal.Value)
local newFace = game.Workspace:InsertContent(path.."faces/"..newVal.Value)
if newFace[1] then
if newFace[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
@ -76,7 +78,7 @@ function LoadCharacterNew(playerApp,newChar)
end)
elseif (customtype == 7) then
pcall(function()
local newPart = game.Workspace:InsertContent("rbxasset://../../../charcustom/heads/"..newVal.Value)
local newPart = game.Workspace:InsertContent(path.."heads/"..newVal.Value)
if newPart[1] then
if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
@ -86,11 +88,38 @@ function LoadCharacterNew(playerApp,newChar)
end
end
end)
elseif (customtype == 8) then
pcall(function()
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
end
end)
pcall(function()
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
if newItem[1] then
if newItem[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
newItem[1].Parent = charparts[1]
newItem[1].Face = "Front"
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
newItem[1].Parent = charparts[1]
else
newItem[1].Parent = newChar
end
end
end)
end
end
end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance"
--BODY COLORS
@ -102,42 +131,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "HeadColor"
BodyColor.Name = "Head Color"
elseif (i == 2) then
if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "TorsoColor"
BodyColor.Name = "Torso Color"
elseif (i == 3) then
if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftArmColor"
BodyColor.Name = "Left Arm Color"
elseif (i == 4) then
if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightArmColor"
BodyColor.Name = "Right Arm Color"
elseif (i == 5) then
if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftLegColor"
BodyColor.Name = "Left Leg Color"
elseif (i == 6) then
if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightLegColor"
BodyColor.Name = "Right Leg Color"
end
local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex"
@ -154,26 +183,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
if (i == 1) then
if (Hat1ID ~= nil) then
newHat.Value = Hat1ID
newHat.Name = Hat1ID
newHat.Name = "Hat 1 - "..Hat1ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 1 - NoHat.rbxm"
end
elseif (i == 2) then
if (Hat2ID ~= nil) then
newHat.Value = Hat2ID
newHat.Name = Hat2ID
newHat.Name = "Hat 2 - "..Hat2ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 2 - NoHat.rbxm"
end
elseif (i == 3) then
if (Hat3ID ~= nil) then
newHat.Value = Hat3ID
newHat.Name = Hat3ID
newHat.Name = "Hat 3 - "..Hat3ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 3 - NoHat.rbxm"
end
end
local typeValue = Instance.new("NumberValue")
@ -185,10 +214,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newTShirt = Instance.new("StringValue",newCharApp)
if (TShirtID ~= nil) then
newTShirt.Value = TShirtID
newTShirt.Name = TShirtID
newTShirt.Name = "T-Shirt - "..TShirtID
else
newTShirt.Value = "NoTShirt.rbxm"
newTShirt.Name = "NoTShirt.rbxm"
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -198,10 +227,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newShirt = Instance.new("StringValue",newCharApp)
if (ShirtID ~= nil) then
newShirt.Value = ShirtID
newShirt.Name = ShirtID
newShirt.Name = "Shirt - "..ShirtID
else
newShirt.Value = "NoShirt.rbxm"
newShirt.Name = "NoShirt.rbxm"
newShirt.Name = "Shirt - NoShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -211,10 +240,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newPants = Instance.new("StringValue",newCharApp)
if (PantsID ~= nil) then
newPants.Value = PantsID
newPants.Name = PantsID
newPants.Name = "Pants - "..PantsID
else
newPants.Value = "NoPants.rbxm"
newPants.Name = "NoPants.rbxm"
newPants.Name = "Pants - NoPants.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -224,10 +253,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newFace = Instance.new("StringValue",newCharApp)
if (FaceID ~= nil) then
newFace.Value = FaceID
newFace.Name = FaceID
newFace.Name = "Face - "..FaceID
else
newFace.Value = "DefaultFace.rbxm"
newFace.Name = "DefaultFace.rbxm"
newFace.Name = "Face - DefaultFace.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -237,20 +266,33 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newHead = Instance.new("StringValue",newCharApp)
if (HeadID ~= nil) then
newHead.Value = HeadID
newHead.Name = HeadID
newHead.Name = "Head - "..HeadID
else
newHead.Value = "DefaultHead.rbxm"
newHead.Name = "DefaultHead.rbxm"
newHead.Name = "Head - DefaultHead.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newHead
typeValue.Value = 7
--EXTRA
local newItem = Instance.new("StringValue",newCharApp)
if (ItemID ~= nil) then
newItem.Value = ItemID
newItem.Name = "Extra - "..ItemID
else
newItem.Value = "NoExtra.rbxm"
newItem.Name = "Extra - NoExtra.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newItem
typeValue.Value = 8
end
print("3DView loaded. Nerd.")
function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
settings().Rendering.FrameRateManager = 2
game:GetService("RunService"):run()
game:GetService("NetworkServer")
@ -297,7 +339,8 @@ function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorI
human.WalkSpeed = 0
human.Jumping:connect(fixJump)
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
wait(0.65)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character)
wait(1)
game:GetService("NetworkClient")

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -87,12 +87,9 @@ namespace NovetusLauncher
this.button42 = new System.Windows.Forms.Button();
this.button41 = new System.Windows.Forms.Button();
this.pictureBox3 = new System.Windows.Forms.PictureBox();
this.label17 = new System.Windows.Forms.Label();
this.listBox3 = new System.Windows.Forms.ListBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label16 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.listBox2 = new System.Windows.Forms.ListBox();
this.listBox1 = new System.Windows.Forms.ListBox();
this.tabPage8 = new System.Windows.Forms.TabPage();
@ -120,7 +117,14 @@ namespace NovetusLauncher
this.button51 = new System.Windows.Forms.Button();
this.pictureBox7 = new System.Windows.Forms.PictureBox();
this.listBox7 = new System.Windows.Forms.ListBox();
this.tabPage9 = new System.Windows.Forms.TabPage();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.button58 = new System.Windows.Forms.Button();
this.button59 = new System.Windows.Forms.Button();
this.pictureBox9 = new System.Windows.Forms.PictureBox();
this.listBox9 = new System.Windows.Forms.ListBox();
this.tabPage7 = new System.Windows.Forms.TabPage();
this.button43 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
@ -131,7 +135,10 @@ namespace NovetusLauncher
this.button54 = new System.Windows.Forms.Button();
this.button53 = new System.Windows.Forms.Button();
this.button52 = new System.Windows.Forms.Button();
this.button43 = new System.Windows.Forms.Button();
this.tabControl2 = new System.Windows.Forms.TabControl();
this.tabPage10 = new System.Windows.Forms.TabPage();
this.tabPage11 = new System.Windows.Forms.TabPage();
this.tabPage12 = new System.Windows.Forms.TabPage();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox2.SuspendLayout();
@ -150,7 +157,13 @@ namespace NovetusLauncher
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit();
this.tabPage6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit();
this.tabPage9.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).BeginInit();
this.tabPage7.SuspendLayout();
this.tabControl2.SuspendLayout();
this.tabPage10.SuspendLayout();
this.tabPage11.SuspendLayout();
this.tabPage12.SuspendLayout();
this.SuspendLayout();
//
// tabControl1
@ -162,8 +175,10 @@ namespace NovetusLauncher
this.tabControl1.Controls.Add(this.tabPage4);
this.tabControl1.Controls.Add(this.tabPage5);
this.tabControl1.Controls.Add(this.tabPage6);
this.tabControl1.Controls.Add(this.tabPage9);
this.tabControl1.Controls.Add(this.tabPage7);
this.tabControl1.Location = new System.Drawing.Point(12, 12);
this.tabControl1.Location = new System.Drawing.Point(1, 3);
this.tabControl1.Multiline = true;
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(475, 267);
@ -698,17 +713,9 @@ namespace NovetusLauncher
//
// tabPage2
//
this.tabPage2.Controls.Add(this.tabControl2);
this.tabPage2.Controls.Add(this.button42);
this.tabPage2.Controls.Add(this.button41);
this.tabPage2.Controls.Add(this.pictureBox3);
this.tabPage2.Controls.Add(this.label17);
this.tabPage2.Controls.Add(this.listBox3);
this.tabPage2.Controls.Add(this.pictureBox2);
this.tabPage2.Controls.Add(this.pictureBox1);
this.tabPage2.Controls.Add(this.label16);
this.tabPage2.Controls.Add(this.label12);
this.tabPage2.Controls.Add(this.listBox2);
this.tabPage2.Controls.Add(this.listBox1);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
@ -723,7 +730,7 @@ namespace NovetusLauncher
this.button42.Name = "button42";
this.button42.Size = new System.Drawing.Size(219, 42);
this.button42.TabIndex = 56;
this.button42.Text = "Reset";
this.button42.Text = "Reset all 3";
this.button42.UseVisualStyleBackColor = true;
this.button42.Click += new System.EventHandler(this.Button42Click);
//
@ -733,85 +740,61 @@ namespace NovetusLauncher
this.button41.Name = "button41";
this.button41.Size = new System.Drawing.Size(219, 42);
this.button41.TabIndex = 55;
this.button41.Text = "Randomize";
this.button41.Text = "Randomize all 3";
this.button41.UseVisualStyleBackColor = true;
this.button41.Click += new System.EventHandler(this.Button41Click);
//
// pictureBox3
//
this.pictureBox3.Location = new System.Drawing.Point(346, 19);
this.pictureBox3.Location = new System.Drawing.Point(238, 3);
this.pictureBox3.Name = "pictureBox3";
this.pictureBox3.Size = new System.Drawing.Size(88, 80);
this.pictureBox3.Size = new System.Drawing.Size(218, 160);
this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox3.TabIndex = 54;
this.pictureBox3.TabStop = false;
//
// label17
//
this.label17.Location = new System.Drawing.Point(371, 3);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(35, 14);
this.label17.TabIndex = 53;
this.label17.Text = "Hat 3";
//
// listBox3
//
this.listBox3.FormattingEnabled = true;
this.listBox3.Location = new System.Drawing.Point(318, 105);
this.listBox3.Location = new System.Drawing.Point(2, 3);
this.listBox3.Name = "listBox3";
this.listBox3.Size = new System.Drawing.Size(143, 82);
this.listBox3.Size = new System.Drawing.Size(219, 160);
this.listBox3.TabIndex = 52;
this.listBox3.SelectedIndexChanged += new System.EventHandler(this.ListBox3SelectedIndexChanged);
//
// pictureBox2
//
this.pictureBox2.Location = new System.Drawing.Point(185, 19);
this.pictureBox2.Location = new System.Drawing.Point(238, 3);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(88, 80);
this.pictureBox2.Size = new System.Drawing.Size(218, 160);
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox2.TabIndex = 51;
this.pictureBox2.TabStop = false;
//
// pictureBox1
//
this.pictureBox1.Location = new System.Drawing.Point(33, 19);
this.pictureBox1.Location = new System.Drawing.Point(238, 3);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(88, 80);
this.pictureBox1.Size = new System.Drawing.Size(218, 160);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 50;
this.pictureBox1.TabStop = false;
//
// label16
//
this.label16.Location = new System.Drawing.Point(212, 3);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(35, 13);
this.label16.TabIndex = 49;
this.label16.Text = "Hat 2";
//
// label12
//
this.label12.Location = new System.Drawing.Point(61, 3);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(35, 13);
this.label12.TabIndex = 48;
this.label12.Text = "Hat 1";
//
// listBox2
//
this.listBox2.FormattingEnabled = true;
this.listBox2.Location = new System.Drawing.Point(161, 105);
this.listBox2.Location = new System.Drawing.Point(2, 3);
this.listBox2.Name = "listBox2";
this.listBox2.Size = new System.Drawing.Size(143, 82);
this.listBox2.Size = new System.Drawing.Size(219, 160);
this.listBox2.TabIndex = 47;
this.listBox2.SelectedIndexChanged += new System.EventHandler(this.ListBox2SelectedIndexChanged);
//
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(6, 105);
this.listBox1.Location = new System.Drawing.Point(2, 3);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(143, 82);
this.listBox1.Size = new System.Drawing.Size(219, 160);
this.listBox1.TabIndex = 46;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1SelectedIndexChanged);
//
@ -850,9 +833,9 @@ namespace NovetusLauncher
//
// pictureBox8
//
this.pictureBox8.Location = new System.Drawing.Point(182, 13);
this.pictureBox8.Location = new System.Drawing.Point(242, 9);
this.pictureBox8.Name = "pictureBox8";
this.pictureBox8.Size = new System.Drawing.Size(95, 86);
this.pictureBox8.Size = new System.Drawing.Size(219, 173);
this.pictureBox8.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox8.TabIndex = 63;
this.pictureBox8.TabStop = false;
@ -860,9 +843,9 @@ namespace NovetusLauncher
// listBox8
//
this.listBox8.FormattingEnabled = true;
this.listBox8.Location = new System.Drawing.Point(6, 105);
this.listBox8.Location = new System.Drawing.Point(6, 9);
this.listBox8.Name = "listBox8";
this.listBox8.Size = new System.Drawing.Size(455, 82);
this.listBox8.Size = new System.Drawing.Size(219, 173);
this.listBox8.TabIndex = 62;
this.listBox8.SelectedIndexChanged += new System.EventHandler(this.ListBox8SelectedIndexChanged);
//
@ -901,9 +884,9 @@ namespace NovetusLauncher
//
// pictureBox4
//
this.pictureBox4.Location = new System.Drawing.Point(182, 13);
this.pictureBox4.Location = new System.Drawing.Point(242, 9);
this.pictureBox4.Name = "pictureBox4";
this.pictureBox4.Size = new System.Drawing.Size(95, 86);
this.pictureBox4.Size = new System.Drawing.Size(219, 173);
this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox4.TabIndex = 59;
this.pictureBox4.TabStop = false;
@ -911,9 +894,9 @@ namespace NovetusLauncher
// listBox4
//
this.listBox4.FormattingEnabled = true;
this.listBox4.Location = new System.Drawing.Point(6, 105);
this.listBox4.Location = new System.Drawing.Point(6, 9);
this.listBox4.Name = "listBox4";
this.listBox4.Size = new System.Drawing.Size(455, 82);
this.listBox4.Size = new System.Drawing.Size(219, 173);
this.listBox4.TabIndex = 57;
this.listBox4.SelectedIndexChanged += new System.EventHandler(this.ListBox4SelectedIndexChanged);
//
@ -952,9 +935,9 @@ namespace NovetusLauncher
//
// pictureBox5
//
this.pictureBox5.Location = new System.Drawing.Point(182, 13);
this.pictureBox5.Location = new System.Drawing.Point(242, 9);
this.pictureBox5.Name = "pictureBox5";
this.pictureBox5.Size = new System.Drawing.Size(95, 86);
this.pictureBox5.Size = new System.Drawing.Size(219, 173);
this.pictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox5.TabIndex = 63;
this.pictureBox5.TabStop = false;
@ -962,9 +945,9 @@ namespace NovetusLauncher
// listBox5
//
this.listBox5.FormattingEnabled = true;
this.listBox5.Location = new System.Drawing.Point(6, 105);
this.listBox5.Location = new System.Drawing.Point(6, 9);
this.listBox5.Name = "listBox5";
this.listBox5.Size = new System.Drawing.Size(455, 82);
this.listBox5.Size = new System.Drawing.Size(219, 173);
this.listBox5.TabIndex = 62;
this.listBox5.SelectedIndexChanged += new System.EventHandler(this.ListBox5SelectedIndexChanged);
//
@ -1003,9 +986,9 @@ namespace NovetusLauncher
//
// pictureBox6
//
this.pictureBox6.Location = new System.Drawing.Point(182, 13);
this.pictureBox6.Location = new System.Drawing.Point(242, 9);
this.pictureBox6.Name = "pictureBox6";
this.pictureBox6.Size = new System.Drawing.Size(95, 86);
this.pictureBox6.Size = new System.Drawing.Size(219, 173);
this.pictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox6.TabIndex = 63;
this.pictureBox6.TabStop = false;
@ -1013,9 +996,9 @@ namespace NovetusLauncher
// listBox6
//
this.listBox6.FormattingEnabled = true;
this.listBox6.Location = new System.Drawing.Point(6, 105);
this.listBox6.Location = new System.Drawing.Point(6, 9);
this.listBox6.Name = "listBox6";
this.listBox6.Size = new System.Drawing.Size(455, 82);
this.listBox6.Size = new System.Drawing.Size(219, 173);
this.listBox6.TabIndex = 62;
this.listBox6.SelectedIndexChanged += new System.EventHandler(this.ListBox6SelectedIndexChanged);
//
@ -1054,9 +1037,9 @@ namespace NovetusLauncher
//
// pictureBox7
//
this.pictureBox7.Location = new System.Drawing.Point(182, 13);
this.pictureBox7.Location = new System.Drawing.Point(242, 9);
this.pictureBox7.Name = "pictureBox7";
this.pictureBox7.Size = new System.Drawing.Size(95, 86);
this.pictureBox7.Size = new System.Drawing.Size(219, 173);
this.pictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox7.TabIndex = 63;
this.pictureBox7.TabStop = false;
@ -1064,14 +1047,77 @@ namespace NovetusLauncher
// listBox7
//
this.listBox7.FormattingEnabled = true;
this.listBox7.Location = new System.Drawing.Point(6, 105);
this.listBox7.Location = new System.Drawing.Point(6, 9);
this.listBox7.Name = "listBox7";
this.listBox7.Size = new System.Drawing.Size(455, 82);
this.listBox7.Size = new System.Drawing.Size(219, 173);
this.listBox7.TabIndex = 62;
this.listBox7.SelectedIndexChanged += new System.EventHandler(this.ListBox7SelectedIndexChanged);
//
// tabPage9
//
this.tabPage9.Controls.Add(this.checkBox1);
this.tabPage9.Controls.Add(this.button58);
this.tabPage9.Controls.Add(this.button59);
this.tabPage9.Controls.Add(this.pictureBox9);
this.tabPage9.Controls.Add(this.listBox9);
this.tabPage9.Location = new System.Drawing.Point(4, 22);
this.tabPage9.Name = "tabPage9";
this.tabPage9.Size = new System.Drawing.Size(467, 241);
this.tabPage9.TabIndex = 8;
this.tabPage9.Text = "EXTRA";
this.tabPage9.UseVisualStyleBackColor = true;
//
// checkBox1
//
this.checkBox1.Location = new System.Drawing.Point(6, 170);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(79, 17);
this.checkBox1.TabIndex = 70;
this.checkBox1.Text = "Show Hats";
this.checkBox1.UseVisualStyleBackColor = true;
this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1CheckedChanged);
//
// button58
//
this.button58.Location = new System.Drawing.Point(242, 193);
this.button58.Name = "button58";
this.button58.Size = new System.Drawing.Size(219, 42);
this.button58.TabIndex = 69;
this.button58.Text = "Reset";
this.button58.UseVisualStyleBackColor = true;
this.button58.Click += new System.EventHandler(this.Button58Click);
//
// button59
//
this.button59.Location = new System.Drawing.Point(6, 193);
this.button59.Name = "button59";
this.button59.Size = new System.Drawing.Size(219, 42);
this.button59.TabIndex = 68;
this.button59.Text = "Randomize";
this.button59.UseVisualStyleBackColor = true;
this.button59.Click += new System.EventHandler(this.Button59Click);
//
// pictureBox9
//
this.pictureBox9.Location = new System.Drawing.Point(242, 9);
this.pictureBox9.Name = "pictureBox9";
this.pictureBox9.Size = new System.Drawing.Size(219, 173);
this.pictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox9.TabIndex = 67;
this.pictureBox9.TabStop = false;
//
// listBox9
//
this.listBox9.FormattingEnabled = true;
this.listBox9.Location = new System.Drawing.Point(6, 9);
this.listBox9.Name = "listBox9";
this.listBox9.Size = new System.Drawing.Size(219, 160);
this.listBox9.TabIndex = 66;
this.listBox9.SelectedIndexChanged += new System.EventHandler(this.ListBox9SelectedIndexChanged);
//
// tabPage7
//
this.tabPage7.Controls.Add(this.button43);
this.tabPage7.Controls.Add(this.textBox1);
this.tabPage7.Controls.Add(this.label7);
this.tabPage7.Controls.Add(this.label6);
@ -1089,6 +1135,16 @@ namespace NovetusLauncher
this.tabPage7.Text = "OTHER";
this.tabPage7.UseVisualStyleBackColor = true;
//
// button43
//
this.button43.Location = new System.Drawing.Point(365, 3);
this.button43.Name = "button43";
this.button43.Size = new System.Drawing.Size(99, 34);
this.button43.TabIndex = 1;
this.button43.Text = "Avatar 3D Preview";
this.button43.UseVisualStyleBackColor = true;
this.button43.Click += new System.EventHandler(this.Button43Click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(113, 213);
@ -1195,29 +1251,65 @@ namespace NovetusLauncher
this.button52.UseVisualStyleBackColor = true;
this.button52.Click += new System.EventHandler(this.Button52Click);
//
// button43
// tabControl2
//
this.button43.Location = new System.Drawing.Point(415, 12);
this.button43.Name = "button43";
this.button43.Size = new System.Drawing.Size(70, 19);
this.button43.TabIndex = 1;
this.button43.Text = "3D Preview";
this.button43.UseVisualStyleBackColor = true;
this.button43.Click += new System.EventHandler(this.Button43Click);
this.tabControl2.Controls.Add(this.tabPage10);
this.tabControl2.Controls.Add(this.tabPage11);
this.tabControl2.Controls.Add(this.tabPage12);
this.tabControl2.Location = new System.Drawing.Point(0, 0);
this.tabControl2.Name = "tabControl2";
this.tabControl2.SelectedIndex = 0;
this.tabControl2.Size = new System.Drawing.Size(471, 191);
this.tabControl2.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.tabControl2.TabIndex = 57;
//
// tabPage10
//
this.tabPage10.Controls.Add(this.listBox1);
this.tabPage10.Controls.Add(this.pictureBox1);
this.tabPage10.Location = new System.Drawing.Point(4, 22);
this.tabPage10.Name = "tabPage10";
this.tabPage10.Padding = new System.Windows.Forms.Padding(3);
this.tabPage10.Size = new System.Drawing.Size(463, 165);
this.tabPage10.TabIndex = 0;
this.tabPage10.Text = "HAT 1";
this.tabPage10.UseVisualStyleBackColor = true;
//
// tabPage11
//
this.tabPage11.Controls.Add(this.listBox2);
this.tabPage11.Controls.Add(this.pictureBox2);
this.tabPage11.Location = new System.Drawing.Point(4, 22);
this.tabPage11.Name = "tabPage11";
this.tabPage11.Padding = new System.Windows.Forms.Padding(3);
this.tabPage11.Size = new System.Drawing.Size(463, 165);
this.tabPage11.TabIndex = 1;
this.tabPage11.Text = "HAT 2";
this.tabPage11.UseVisualStyleBackColor = true;
//
// tabPage12
//
this.tabPage12.Controls.Add(this.listBox3);
this.tabPage12.Controls.Add(this.pictureBox3);
this.tabPage12.Location = new System.Drawing.Point(4, 22);
this.tabPage12.Name = "tabPage12";
this.tabPage12.Size = new System.Drawing.Size(463, 165);
this.tabPage12.TabIndex = 2;
this.tabPage12.Text = "HAT 3";
this.tabPage12.UseVisualStyleBackColor = true;
//
// CharacterCustomization
//
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(499, 288);
this.Controls.Add(this.button43);
this.ClientSize = new System.Drawing.Size(477, 272);
this.Controls.Add(this.tabControl1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "CharacterCustomization";
this.Text = "Avatar";
this.Text = "Avatar Customization";
this.Closing += new System.ComponentModel.CancelEventHandler(this.CharacterCustomizationClose);
this.Load += new System.EventHandler(this.CharacterCustomizationLoad);
this.tabControl1.ResumeLayout(false);
@ -1238,10 +1330,26 @@ namespace NovetusLauncher
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit();
this.tabPage6.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit();
this.tabPage9.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).EndInit();
this.tabPage7.ResumeLayout(false);
this.tabPage7.PerformLayout();
this.tabControl2.ResumeLayout(false);
this.tabPage10.ResumeLayout(false);
this.tabPage11.ResumeLayout(false);
this.tabPage12.ResumeLayout(false);
this.ResumeLayout(false);
}
private System.Windows.Forms.TabPage tabPage12;
private System.Windows.Forms.TabPage tabPage11;
private System.Windows.Forms.TabPage tabPage10;
private System.Windows.Forms.TabControl tabControl2;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.ListBox listBox9;
private System.Windows.Forms.PictureBox pictureBox9;
private System.Windows.Forms.Button button59;
private System.Windows.Forms.Button button58;
private System.Windows.Forms.TabPage tabPage9;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
@ -1326,12 +1434,9 @@ namespace NovetusLauncher
private System.Windows.Forms.Button button41;
private System.Windows.Forms.Button button42;
private System.Windows.Forms.ListBox listBox3;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.PictureBox pictureBox3;
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.ListBox listBox2;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.TabPage tabPage2;

View File

@ -26,23 +26,21 @@ namespace NovetusLauncher
{
private string SelectedPart = "Head";
private string[,] ColorArray;
private bool StartedVIAURI = false;
private string hatdir = GlobalVars.BasePath + "\\charcustom\\hats";
private string facedir = GlobalVars.BasePath + "\\charcustom\\faces";
private string headdir = GlobalVars.BasePath + "\\charcustom\\heads";
private string tshirtdir = GlobalVars.BasePath + "\\charcustom\\tshirts";
private string shirtdir = GlobalVars.BasePath + "\\charcustom\\shirts";
private string pantsdir = GlobalVars.BasePath + "\\charcustom\\pants";
private string hatdir = GlobalVars.CustomPlayerDir + "\\hats";
private string facedir = GlobalVars.CustomPlayerDir + "\\faces";
private string headdir = GlobalVars.CustomPlayerDir + "\\heads";
private string tshirtdir = GlobalVars.CustomPlayerDir + "\\tshirts";
private string shirtdir = GlobalVars.CustomPlayerDir + "\\shirts";
private string pantsdir = GlobalVars.CustomPlayerDir + "\\pants";
private string extradir = GlobalVars.CustomPlayerDir + "\\custom";
public CharacterCustomization(bool StartedURI = false)
public CharacterCustomization()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
StartedVIAURI = StartedURI;
ColorArray = new string[32, 2] {
{ "1", button7.BackColor.ToString() },
{ "208", button8.BackColor.ToString() },
@ -99,24 +97,21 @@ namespace NovetusLauncher
//charid
textBox1.Text = GlobalVars.CharacterID;
checkBox1.Checked = GlobalVars.Custom_Extra_ShowHats;
//discord
if (StartedVIAURI == false)
{
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = "Customizing " + GlobalVars.PlayerName;
GlobalVars.presence.state = "In Character Customization";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Character Customization";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
GlobalVars.presence.details = "Customizing " + GlobalVars.PlayerName;
GlobalVars.presence.state = "In Character Customization";
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Character Customization";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
LauncherFuncs.ReloadLoadtextValue();
}
void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage1"] && tabControl1.SelectedTab == tabControl1.TabPages["tabPage7"])//your specific tabname
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage1"] || tabControl1.SelectedTab == tabControl1.TabPages["tabPage7"])//your specific tabname
{
listBox1.Items.Clear();
listBox2.Items.Clear();
@ -126,6 +121,7 @@ namespace NovetusLauncher
listBox6.Items.Clear();
listBox7.Items.Clear();
listBox8.Items.Clear();
listBox9.Items.Clear();
}
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname
{
@ -135,6 +131,7 @@ namespace NovetusLauncher
listBox6.Items.Clear();
listBox7.Items.Clear();
listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(hatdir))
{
@ -147,11 +144,6 @@ namespace NovetusLauncher
continue;
}
if (file.Name.Equals("TeapotTurret.rbxm") && GlobalVars.AdminMode != true)
{
continue;
}
listBox1.Items.Add(file.Name);
listBox2.Items.Add(file.Name);
listBox3.Items.Add(file.Name);
@ -180,6 +172,7 @@ namespace NovetusLauncher
listBox6.Items.Clear();
listBox7.Items.Clear();
listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(facedir))
{
@ -210,6 +203,7 @@ namespace NovetusLauncher
listBox6.Items.Clear();
listBox7.Items.Clear();
listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(tshirtdir))
{
@ -240,6 +234,7 @@ namespace NovetusLauncher
listBox5.Items.Clear();
listBox7.Items.Clear();
listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(shirtdir))
{
@ -270,6 +265,7 @@ namespace NovetusLauncher
listBox5.Items.Clear();
listBox6.Items.Clear();
listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(pantsdir))
{
@ -300,6 +296,7 @@ namespace NovetusLauncher
listBox5.Items.Clear();
listBox6.Items.Clear();
listBox7.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(headdir))
{
@ -320,19 +317,80 @@ namespace NovetusLauncher
pictureBox8.Image = icon1;
}
}
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage9"])//your specific tabname
{
//faces
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear();
listBox5.Items.Clear();
listBox6.Items.Clear();
listBox7.Items.Clear();
listBox8.Items.Clear();
if (Directory.Exists(extradir))
{
DirectoryInfo dinfo = new DirectoryInfo(extradir);
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
foreach( FileInfo file in Files )
{
if (file.Name.Equals(String.Empty))
{
continue;
}
listBox9.Items.Add(file.Name);
}
}
if (GlobalVars.Custom_Extra_ShowHats == true)
{
if (Directory.Exists(hatdir))
{
DirectoryInfo dinfo = new DirectoryInfo(hatdir);
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
foreach( FileInfo file in Files )
{
if (file.Name.Equals(String.Empty))
{
continue;
}
if (file.Name.Equals("NoHat.rbxm"))
{
continue;
}
listBox9.Items.Add(file.Name);
}
}
}
listBox9.SelectedItem = GlobalVars.Custom_Extra;
listBox9.Enabled = true;
try
{
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
}
catch(Exception)
{
if (Directory.Exists(hatdir))
{
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
}
}
}
}
void CharacterCustomizationClose(object sender, CancelEventArgs e)
{
if (StartedVIAURI == false)
{
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
LauncherFuncs.ReloadLoadtextValue();
}
@ -982,8 +1040,8 @@ namespace NovetusLauncher
{
LauncherFuncs.ReloadLoadtextValue();
string luafile = "rbxasset://scripts\\\\CSView.lua";
string mapfile = GlobalVars.BasePath + "\\charcustom\\preview\\content\\fonts\\3DView.rbxl";
string rbxexe = GlobalVars.BasePath + "\\charcustom\\preview\\3DView.exe";
string mapfile = GlobalVars.ConfigDir + "\\preview\\content\\fonts\\3DView.rbxl";
string rbxexe = GlobalVars.ConfigDir + "\\preview\\3DView.exe";
string quote = "\"";
string args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CS3DView(0,'Player','" + GlobalVars.loadtext + ");" + quote;
try
@ -1028,5 +1086,150 @@ namespace NovetusLauncher
{
GlobalVars.CharacterID = textBox1.Text;
}
//extra
void ListBox9SelectedIndexChanged(object sender, EventArgs e)
{
if (Directory.Exists(extradir))
{
try
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = false;
}
catch(Exception)
{
if (Directory.Exists(hatdir))
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = true;
}
}
}
}
void Button59Click(object sender, EventArgs e)
{
if (Directory.Exists(extradir))
{
Random random = new Random();
int randomItem1 = random.Next(listBox9.Items.Count);
listBox9.SelectedItem = listBox9.Items[randomItem1];
try
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = false;
}
catch(Exception)
{
if (Directory.Exists(hatdir))
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = true;
}
}
}
}
void Button58Click(object sender, EventArgs e)
{
if (Directory.Exists(extradir))
{
listBox9.SelectedItem = "NoExtra.rbxm";
try
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = false;
}
catch(Exception)
{
if (Directory.Exists(hatdir))
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = true;
}
}
}
}
void CheckBox1CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
GlobalVars.Custom_Extra_ShowHats = true;
if (Directory.Exists(hatdir))
{
DirectoryInfo dinfo = new DirectoryInfo(hatdir);
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
foreach( FileInfo file in Files )
{
if (file.Name.Equals(String.Empty))
{
continue;
}
if (file.Name.Equals("NoHat.rbxm"))
{
continue;
}
listBox9.Items.Add(file.Name);
}
}
}
else if (checkBox1.Checked == false)
{
GlobalVars.Custom_Extra_ShowHats = false;
listBox9.Items.Clear();
if (Directory.Exists(extradir))
{
DirectoryInfo dinfo = new DirectoryInfo(extradir);
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
foreach( FileInfo file in Files )
{
if (file.Name.Equals(String.Empty))
{
continue;
}
listBox9.Items.Add(file.Name);
}
}
listBox9.SelectedItem = "NoExtra.rbxm";
try
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = false;
}
catch(Exception)
{
if (Directory.Exists(hatdir))
{
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
pictureBox9.Image = icon1;
GlobalVars.Custom_Extra_SelectionIsHat = true;
}
}
}
}
}
}

View File

@ -0,0 +1,72 @@
/*
* Created by SharpDevelop.
* User: BITL
* Date: 12/19/2018
* Time: 8:15 PM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace NovetusLauncher
{
partial class ClientScriptDocumentation
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClientScriptDocumentation));
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.ReadOnly = true;
this.richTextBox1.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
this.richTextBox1.Size = new System.Drawing.Size(648, 338);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
//
// ClientScriptDocumentation
//
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(648, 337);
this.Controls.Add(this.richTextBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "ClientScriptDocumentation";
this.Text = "ClientScript Documentation";
this.Load += new System.EventHandler(this.ClientScriptDocumentationLoad);
this.ResumeLayout(false);
}
private System.Windows.Forms.RichTextBox richTextBox1;
}
}

View File

@ -0,0 +1,38 @@
/*
* 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.Drawing;
using System.Windows.Forms;
using System.IO;
namespace NovetusLauncher
{
/// <summary>
/// Description of ClientScriptDocumentation.
/// </summary>
public partial class ClientScriptDocumentation : Form
{
public ClientScriptDocumentation()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void ClientScriptDocumentationLoad(object sender, EventArgs e)
{
richTextBox1.Text = File.ReadAllText(GlobalVars.BasePath + "\\documentation.txt");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -225,10 +225,10 @@ namespace NovetusLauncher
{
using (var ofd = new OpenFileDialog())
{
ofd.Filter = "Text files (*.txt)|*.txt";
ofd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
ofd.FilterIndex = 2;
ofd.FileName = "clientinfo.txt";
ofd.Title = "Load clientinfo.txt";
ofd.FileName = "clientinfo.nov";
ofd.Title = "Load clientinfo.nov";
if (ofd.ShowDialog() == DialogResult.OK)
{
string line1;
@ -239,11 +239,8 @@ namespace NovetusLauncher
SelectedClientInfoPath = Path.GetDirectoryName(ofd.FileName);
line1 = reader.ReadLine();
}
if (!SecurityFuncs.IsBase64String(line1))
return;
string ConvertedLine = SecurityFuncs.Base64Decode(line1);
string ConvertedLine = SecurityFuncs.DecryptText(line1,"");
string[] result = ConvertedLine.Split('|');
Decryptline1 = SecurityFuncs.Base64Decode(result[0]);
Decryptline2 = SecurityFuncs.Base64Decode(result[1]);
@ -321,11 +318,11 @@ namespace NovetusLauncher
{
using (var sfd = new SaveFileDialog())
{
sfd.Filter = "Text files (*.txt)|*.txt";
sfd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
sfd.FilterIndex = 2;
sfd.FileName = "clientinfo.txt";
sfd.Title = "Save clientinfo.txt";
sfd.FileName = "clientinfo.nov";
sfd.Title = "Save clientinfo.nov";
if (sfd.ShowDialog() == DialogResult.OK)
{
string[] lines = {
@ -341,7 +338,7 @@ namespace NovetusLauncher
SecurityFuncs.Base64Encode(AlreadyHasSecurity.ToString()),
SecurityFuncs.Base64Encode(CustomArgs.ToString())
};
File.WriteAllText(sfd.FileName, SecurityFuncs.Base64Encode(string.Join("|",lines)));
File.WriteAllText(sfd.FileName, SecurityFuncs.EncryptText(string.Join("|",lines),""));
SelectedClientInfoPath = Path.GetDirectoryName(sfd.FileName);
}
}
@ -354,7 +351,8 @@ namespace NovetusLauncher
void Button1Click(object sender, EventArgs e)
{
MessageBox.Show(File.ReadAllText("documentation.txt"), "Novetus Client SDK | Documentation", MessageBoxButtons.OK);
ClientScriptDocumentation csd = new ClientScriptDocumentation();
csd.Show();
}
void TextBox5TextChanged(object sender, EventArgs e)

View File

@ -0,0 +1,76 @@
/*
* Created by SharpDevelop.
* User: BITL
* Date: 5/14/2017
* Time: 9:14 AM
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace NovetusLauncher
{
partial class ServerInfo
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerInfo));
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBox1.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBox1.Location = new System.Drawing.Point(2, 3);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.Size = new System.Drawing.Size(501, 256);
this.textBox1.TabIndex = 0;
//
// ServerInfo
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.ClientSize = new System.Drawing.Size(504, 262);
this.Controls.Add(this.textBox1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(520, 300);
this.Name = "ServerInfo";
this.Text = "Server Info";
this.Load += new System.EventHandler(this.ServerInfoLoad);
this.ResumeLayout(false);
this.PerformLayout();
}
private System.Windows.Forms.TextBox textBox1;
}
}

View File

@ -45,21 +45,23 @@ namespace NovetusLauncher
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(12, 27);
this.textBox1.Location = new System.Drawing.Point(3, 27);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(212, 20);
this.textBox1.Size = new System.Drawing.Size(229, 20);
this.textBox1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(12, 120);
this.button1.Location = new System.Drawing.Point(3, 120);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(212, 23);
this.button1.Size = new System.Drawing.Size(229, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Create!";
this.button1.UseVisualStyleBackColor = true;
@ -67,21 +69,21 @@ namespace NovetusLauncher
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(38, 67);
this.textBox2.Location = new System.Drawing.Point(3, 67);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(91, 20);
this.textBox2.Size = new System.Drawing.Size(85, 20);
this.textBox2.TabIndex = 2;
//
// numericUpDown1
//
this.numericUpDown1.Location = new System.Drawing.Point(135, 67);
this.numericUpDown1.Location = new System.Drawing.Point(97, 66);
this.numericUpDown1.Maximum = new decimal(new int[] {
3,
0,
0,
0});
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(69, 20);
this.numericUpDown1.Size = new System.Drawing.Size(39, 20);
this.numericUpDown1.TabIndex = 3;
//
// label1
@ -94,7 +96,7 @@ namespace NovetusLauncher
//
// label2
//
this.label2.Location = new System.Drawing.Point(59, 50);
this.label2.Location = new System.Drawing.Point(21, 50);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(46, 14);
this.label2.TabIndex = 6;
@ -102,11 +104,12 @@ namespace NovetusLauncher
//
// label3
//
this.label3.Location = new System.Drawing.Point(135, 50);
this.label3.Location = new System.Drawing.Point(94, 50);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(69, 14);
this.label3.Size = new System.Drawing.Size(42, 14);
this.label3.TabIndex = 7;
this.label3.Text = "Item Version";
this.label3.Text = "Version";
this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// comboBox1
//
@ -115,18 +118,44 @@ namespace NovetusLauncher
this.comboBox1.Items.AddRange(new object[] {
"http://www.roblox.com/",
"http://assetgame.roblox.com/"});
this.comboBox1.Location = new System.Drawing.Point(12, 93);
this.comboBox1.Location = new System.Drawing.Point(3, 93);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(212, 21);
this.comboBox1.Size = new System.Drawing.Size(229, 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.Controls.Add(this.comboBox1);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
@ -145,6 +174,8 @@ namespace NovetusLauncher
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;

View File

@ -22,6 +22,7 @@ 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,10 +44,12 @@ namespace NovetusLauncher
using (WebClient wc = new WebClient())
{
wc.DownloadFile(url + textBox2.Text + version, GlobalVars.BasePath + "\\" + textBox1.Text + ".rbxm");
var ua = "Roblox/WinInet";
wc.Headers.Add(HttpRequestHeader.UserAgent, ua);
wc.DownloadFileAsync(new System.Uri(url + textBox2.Text + version), GlobalVars.BasePath + "\\" + textBox1.Text + type);
}
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 '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("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);
}
catch(Exception)
{
@ -56,11 +59,11 @@ namespace NovetusLauncher
void ComboBox1SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedText == "http://www.roblox.com/")
if (comboBox1.SelectedIndex == 0)
{
url = "http://www.roblox.com/asset?id=";
}
else if (comboBox1.SelectedText == "http://assetgame.roblox.com/")
else if (comboBox1.SelectedIndex == 1)
{
url = "http://assetgame.roblox.com/asset/?id=";
}
@ -68,7 +71,28 @@ namespace NovetusLauncher
void ItemMakerLoad(object sender, EventArgs e)
{
comboBox1.Text = "http://www.roblox.com/";
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";
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -38,7 +38,7 @@ namespace NovetusLauncher
void LoaderFormLoad(object sender, EventArgs e)
{
string[] lines = File.ReadAllLines(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\info.txt");
string[] lines = File.ReadAllLines(GlobalVars.ConfigDir + "\\info.txt");
GlobalVars.DefaultClient = lines[1];
GlobalVars.DefaultMap = lines[2];
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
@ -95,13 +95,20 @@ namespace NovetusLauncher
}
try
{
if (!GlobalVars.AdminMode || !GlobalVars.AlreadyHasSecurity)
if (GlobalVars.AdminMode != true)
{
if (SecurityFuncs.checkClientMD5(client) == true)
if (GlobalVars.AlreadyHasSecurity != true)
{
if (SecurityFuncs.checkScriptMD5(client) == true)
if (SecurityFuncs.checkClientMD5(client) == true)
{
LaunchClient(rbxexe,args);
if (SecurityFuncs.checkScriptMD5(client) == true)
{
LaunchClient(rbxexe,args);
}
else
{
label1.Text = "The client has been detected as modified.";
}
}
else
{
@ -110,7 +117,7 @@ namespace NovetusLauncher
}
else
{
label1.Text = "The client has been detected as modified.";
LaunchClient(rbxexe,args);
}
}
else
@ -133,10 +140,8 @@ namespace NovetusLauncher
clientproc.Exited += new EventHandler(ClientExited);
clientproc.Start();
SecurityFuncs.RenameWindow(clientproc, ScriptGenerator.ScriptType.Client);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = "";
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
this.Visible = false;
@ -144,10 +149,8 @@ namespace NovetusLauncher
void ClientExited(object sender, EventArgs e)
{
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
this.Close();
@ -168,16 +171,16 @@ namespace NovetusLauncher
void ReadConfigValues()
{
LauncherFuncs.ReadConfigValues(GlobalVars.BasePath + "\\config.txt");
LauncherFuncs.ReadConfigValues(GlobalVars.ConfigDir + "\\config.ini");
}
void ReadClientValues(string ClientName)
{
string clientpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + ClientName + "\\clientinfo.txt";
string clientpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + ClientName + "\\clientinfo.nov";
if (!File.Exists(clientpath))
{
MessageBox.Show("No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus Launcher - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show("No clientinfo.nov detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus Launcher - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
}

File diff suppressed because it is too large Load Diff

View File

@ -15,6 +15,9 @@ using System.Diagnostics;
using System.Threading;
using System.ComponentModel;
using System.Reflection;
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
using Mono.Nat;
namespace NovetusLauncher
{
@ -24,9 +27,12 @@ namespace NovetusLauncher
public partial class MainForm : Form
{
DiscordRpc.EventHandlers handlers;
private WaveOutEvent outputDevice;
private AudioFileReader audioFile;
public MainForm()
{
_fieldsTreeCache = new TreeView();
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
@ -37,7 +43,87 @@ namespace NovetusLauncher
//
}
//TODO: add upnp shit here
public void InitUPnP()
{
if (GlobalVars.UPnP == true)
{
try
{
UPnP.InitUPnP(DeviceFound,DeviceLost);
ConsolePrint("UPnP: Service initialized", 3);
}
catch (Exception ex)
{
ConsolePrint("UPnP: Unable to initialize UPnP. Reason - " + ex.Message, 2);
}
}
}
public void StartUPnP(INatDevice device, Protocol protocol, int port)
{
if (GlobalVars.UPnP == true)
{
try
{
UPnP.StartUPnP(device,protocol,port);
ConsolePrint("UPnP: Port " + port + " opened on '" + device.GetExternalIP() + "' (" + protocol.ToString() + ")", 3);
}
catch (Exception ex)
{
ConsolePrint("UPnP: Unable to open port mapping. Reason - " + ex.Message, 2);
}
}
}
public void StopUPnP(INatDevice device, Protocol protocol, int port)
{
if (GlobalVars.UPnP == true)
{
try
{
UPnP.StopUPnP(device,protocol,port);
ConsolePrint("UPnP: Port " + port + " closed on '" + device.GetExternalIP() + "' (" + protocol.ToString() + ")", 3);
}
catch (Exception ex)
{
ConsolePrint("UPnP: Unable to close port mapping. Reason - " + ex.Message, 2);
}
}
}
private void DeviceFound(object sender, DeviceEventArgs args)
{
try
{
INatDevice device = args.Device;
ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3);
StartUPnP(device, Protocol.Udp, GlobalVars.RobloxPort);
StartUPnP(device, Protocol.Tcp, GlobalVars.RobloxPort);
StartUPnP(device, Protocol.Udp, GlobalVars.WebServer_Port);
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServer_Port);
}
catch (Exception ex)
{
ConsolePrint("UPnP: Unable to register device. Reason - " + ex.Message, 2);
}
}
private void DeviceLost(object sender, DeviceEventArgs args)
{
try
{
INatDevice device = args.Device;
ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3);
StopUPnP(device, Protocol.Udp, GlobalVars.RobloxPort);
StopUPnP(device, Protocol.Tcp, GlobalVars.RobloxPort);
StopUPnP(device, Protocol.Udp, GlobalVars.WebServer_Port);
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServer_Port);
}
catch (Exception ex)
{
ConsolePrint("UPnP: Unable to disconnect device. Reason - " + ex.Message, 2);
}
}
public void ReadyCallback()
{
@ -83,20 +169,57 @@ namespace NovetusLauncher
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
}
void StartWebServer()
{
GlobalVars.WebServer = new SimpleHTTPServer(GlobalVars.DataPath, GlobalVars.WebServer_Port);
ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3);
}
void StartMusic()
{
string file = GlobalVars.DataPath + "\\music\\music.mp3";
if (File.Exists(file))
{
if (outputDevice == null)
{
outputDevice = new WaveOutEvent();
}
if (audioFile == null)
{
audioFile = new AudioFileReader(file);
LoopStream loop = new LoopStream(audioFile);
outputDevice.Init(loop);
}
outputDevice.Play();
}
else
{
button24.Visible = false;
button24.Enabled = false;
}
}
void EndMusic()
{
outputDevice.Stop();
outputDevice.Dispose();
outputDevice = null;
audioFile.Dispose();
audioFile = null;
}
void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname
{
string mapdir = GlobalVars.MapsDir;
DirectoryInfo dinfo = new DirectoryInfo(mapdir);
FileInfo[] Files = dinfo.GetFiles("*.rbxl");
foreach( FileInfo file in Files )
{
listBox1.Items.Add(file.Name);
}
listBox1.SelectedItem = GlobalVars.Map;
TreeNodeHelper.ListDirectory(treeView1, mapdir);
TreeNodeHelper.CopyNodes(treeView1.Nodes,_fieldsTreeCache.Nodes);
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.Map, treeView1.Nodes);
treeView1.Focus();
listBox2.Items.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear();
@ -111,22 +234,25 @@ namespace NovetusLauncher
listBox2.Items.Add(dir.Name);
}
listBox2.SelectedItem = GlobalVars.SelectedClient;
listBox1.Items.Clear();
treeView1.Nodes.Clear();
_fieldsTreeCache.Nodes.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear();
}
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage6"])//your specific tabname
{
string[] lines_server = File.ReadAllLines("servers.txt");
string[] lines_ports = File.ReadAllLines("ports.txt");
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox3.Items.AddRange(lines_server);
listBox4.Items.AddRange(lines_ports);
listBox1.Items.Clear();
treeView1.Nodes.Clear();
_fieldsTreeCache.Nodes.Clear();
listBox2.Items.Clear();
}
else
{
listBox1.Items.Clear();
treeView1.Nodes.Clear();
_fieldsTreeCache.Nodes.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear();
@ -175,12 +301,13 @@ namespace NovetusLauncher
void MainFormLoad(object sender, EventArgs e)
{
string[] lines = File.ReadAllLines("info.txt"); //File is in System.IO
string[] lines = File.ReadAllLines(GlobalVars.ConfigDir + "\\info.txt"); //File is in System.IO
string version = lines[0];
GlobalVars.DefaultClient = lines[1];
GlobalVars.DefaultMap = lines[2];
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
GlobalVars.Map = GlobalVars.DefaultMap;
this.Text = "Novetus " + version;
ConsolePrint("Novetus version " + version + " loaded. Initializing config.", 4);
if (File.Exists("changelog.txt"))
{
@ -190,44 +317,51 @@ namespace NovetusLauncher
{
ConsolePrint("ERROR 4 - changelog.txt not found.", 2);
}
if (!File.Exists("config.txt"))
if (!File.Exists(GlobalVars.ConfigDir + "\\config.ini"))
{
ConsolePrint("WARNING 1 - config.txt not found. Creating one with default values.", 5);
ConsolePrint("WARNING 1 - config.ini not found. Creating one with default values.", 5);
WriteConfigValues();
}
if (!File.Exists("config_customization.txt"))
if (!File.Exists(GlobalVars.ConfigDir + "\\config_customization.ini"))
{
ConsolePrint("WARNING 2 - config_customization.txt not found. Creating one with default values.", 5);
ConsolePrint("WARNING 2 - config_customization.ini not found. Creating one with default values.", 5);
WriteCustomizationValues();
}
if (!File.Exists("servers.txt"))
if (!File.Exists(GlobalVars.ConfigDir + "\\servers.txt"))
{
ConsolePrint("WARNING 3 - servers.txt not found. Creating empty file.", 5);
File.Create("servers.txt").Dispose();
File.Create(GlobalVars.ConfigDir + "\\servers.txt").Dispose();
}
if (!File.Exists("ports.txt"))
if (!File.Exists(GlobalVars.ConfigDir + "\\ports.txt"))
{
ConsolePrint("WARNING 4 - ports.txt not found. Creating empty file.", 5);
File.Create("ports.txt").Dispose();
File.Create(GlobalVars.ConfigDir + "\\ports.txt").Dispose();
}
label5.Text = GlobalVars.BasePath;
label8.Text = Application.ProductVersion;
GlobalVars.important = SecurityFuncs.CalculateMD5(Assembly.GetExecutingAssembly().Location);
label11.Text = version;
GlobalVars.Version = version;
label12.Text = SplashReader.GetSplash();
ReadConfigValues();
InitUPnP();
StartDiscord();
StartWebServer();
StartMusic();
}
void MainFormClose(object sender, CancelEventArgs e)
{
WriteConfigValues();
DiscordRpc.Shutdown();
DiscordRpc.Shutdown();
GlobalVars.WebServer.Stop();
}
void ReadConfigValues()
{
LauncherFuncs.ReadConfigValues(GlobalVars.BasePath + "\\config.txt");
LauncherFuncs.ReadConfigValues(GlobalVars.ConfigDir + "\\config.ini");
if (GlobalVars.CloseOnLaunch == true)
{
@ -262,36 +396,38 @@ namespace NovetusLauncher
textBox2.Text = GlobalVars.PlayerName;
label26.Text = GlobalVars.SelectedClient;
label28.Text = GlobalVars.Map;
listBox1.SelectedItem = GlobalVars.Map;
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.Map, treeView1.Nodes);
treeView1.Focus();
numericUpDown1.Value = Convert.ToDecimal(GlobalVars.RobloxPort);
numericUpDown2.Value = Convert.ToDecimal(GlobalVars.RobloxPort);
label37.Text = GlobalVars.IP;
label38.Text = GlobalVars.RobloxPort.ToString();
checkBox2.Checked = GlobalVars.DisableTeapotTurret;
checkBox4.Checked = GlobalVars.UPnP;
ConsolePrint("Config loaded.", 3);
ReadClientValues(GlobalVars.SelectedClient);
}
void WriteConfigValues()
{
LauncherFuncs.WriteConfigValues(GlobalVars.BasePath + "\\config.txt");
LauncherFuncs.WriteConfigValues(GlobalVars.ConfigDir + "\\config.ini");
ConsolePrint("Config Saved.", 3);
}
void WriteCustomizationValues()
{
LauncherFuncs.WriteCustomizationValues("config_customization.txt");
LauncherFuncs.WriteCustomizationValues(GlobalVars.ConfigDir + "\\config_customization.ini");
ConsolePrint("Config Saved.", 3);
}
void ReadClientValues(string ClientName)
{
string clientpath = GlobalVars.ClientDir + @"\\" + ClientName + @"\\clientinfo.txt";
string clientpath = GlobalVars.ClientDir + @"\\" + ClientName + @"\\clientinfo.nov";
if (!File.Exists(clientpath))
{
ConsolePrint("ERROR 1 - No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.", 2);
MessageBox.Show("No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
ConsolePrint("ERROR 1 - No clientinfo.nov detected with the client you chose. The client either cannot be loaded, or it is not available.", 2);
MessageBox.Show("No clientinfo.nov detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
}
@ -352,12 +488,6 @@ namespace NovetusLauncher
label37.Text = GlobalVars.IP;
}
void ListBox1SelectedIndexChanged(object sender, EventArgs e)
{
GlobalVars.Map = listBox1.SelectedItem.ToString();
label28.Text = GlobalVars.Map;
}
void CheckBox1CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
@ -390,6 +520,10 @@ namespace NovetusLauncher
{
GlobalVars.SelectedClient = listBox2.SelectedItem.ToString();
ReadClientValues(GlobalVars.SelectedClient);
GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
void CheckBox3CheckedChanged(object sender, EventArgs e)
@ -454,21 +588,21 @@ namespace NovetusLauncher
void Button10Click(object sender, EventArgs e)
{
File.AppendAllText("servers.txt", GlobalVars.IP + Environment.NewLine);
File.AppendAllText(GlobalVars.ConfigDir + "\\servers.txt", GlobalVars.IP + Environment.NewLine);
}
void Button11Click(object sender, EventArgs e)
{
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
File.AppendAllText(GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
}
void Button12Click(object sender, EventArgs e)
{
if (listBox3.SelectedIndex >= 0)
{
TextLineRemover.RemoveTextLines(new List<string> { listBox3.SelectedItem.ToString() }, "servers.txt", "servers.tmp");
TextLineRemover.RemoveTextLines(new List<string> { listBox3.SelectedItem.ToString() }, GlobalVars.ConfigDir + "\\servers.txt", GlobalVars.ConfigDir + "\\servers.tmp");
listBox3.Items.Clear();
string[] lines_server = File.ReadAllLines("servers.txt");
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
listBox3.Items.AddRange(lines_server);
}
}
@ -477,42 +611,42 @@ namespace NovetusLauncher
{
if (listBox4.SelectedIndex >= 0)
{
TextLineRemover.RemoveTextLines(new List<string> { listBox4.SelectedItem.ToString() }, "ports.txt", "ports.tmp");
TextLineRemover.RemoveTextLines(new List<string> { listBox4.SelectedItem.ToString() }, GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.ConfigDir + "\\ports.tmp");
listBox4.Items.Clear();
string[] lines_ports = File.ReadAllLines("ports.txt");
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox4.Items.AddRange(lines_ports);
}
}
void Button14Click(object sender, EventArgs e)
{
File.Create("servers.txt").Dispose();
File.Create(GlobalVars.ConfigDir + "\\servers.txt").Dispose();
listBox3.Items.Clear();
string[] lines_server = File.ReadAllLines("servers.txt");
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
listBox3.Items.AddRange(lines_server);
}
void Button15Click(object sender, EventArgs e)
{
File.Create("ports.txt").Dispose();
File.Create(GlobalVars.ConfigDir + "\\ports.txt").Dispose();
listBox4.Items.Clear();
string[] lines_ports = File.ReadAllLines("ports.txt");
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox4.Items.AddRange(lines_ports);
}
void Button16Click(object sender, EventArgs e)
{
File.AppendAllText("servers.txt", GlobalVars.IP + Environment.NewLine);
File.AppendAllText(GlobalVars.ConfigDir + "\\servers.txt", GlobalVars.IP + Environment.NewLine);
listBox3.Items.Clear();
string[] lines_server = File.ReadAllLines("servers.txt");
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
listBox3.Items.AddRange(lines_server);
}
void Button17Click(object sender, EventArgs e)
{
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
File.AppendAllText(GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
listBox4.Items.Clear();
string[] lines_ports = File.ReadAllLines("ports.txt");
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox4.Items.AddRange(lines_ports);
}
@ -565,9 +699,7 @@ namespace NovetusLauncher
{
switch(e.KeyCode)
{
case Keys.C:
case Keys.X:
case Keys.V:
case Keys.Z:
e.Handled = true;
break;
@ -654,14 +786,31 @@ namespace NovetusLauncher
try
{
ConsolePrint("Client Loaded.", 4);
if (!GlobalVars.AdminMode || !GlobalVars.AlreadyHasSecurity)
if (GlobalVars.AdminMode != true)
{
if (SecurityFuncs.checkClientMD5(GlobalVars.SelectedClient) == true)
if (GlobalVars.AlreadyHasSecurity != true)
{
if (SecurityFuncs.checkScriptMD5(GlobalVars.SelectedClient) == true)
if (SecurityFuncs.checkClientMD5(GlobalVars.SelectedClient) == true)
{
OpenClient(rbxexe,args);
if (SecurityFuncs.checkScriptMD5(GlobalVars.SelectedClient) == true)
{
OpenClient(rbxexe,args);
}
else
{
ConsolePrint("ERROR 4 - Failed to launch Novetus. (The client has been detected as modified.)", 2);
DialogResult result2 = MessageBox.Show("Failed to launch Novetus. (Error: The client has been detected as modified.)","Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
ConsolePrint("ERROR 4 - Failed to launch Novetus. (The client has been detected as modified.)", 2);
DialogResult result2 = MessageBox.Show("Failed to launch Novetus. (Error: The client has been detected as modified.)","Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
OpenClient(rbxexe,args);
}
}
else
@ -686,20 +835,16 @@ namespace NovetusLauncher
client.Exited += new EventHandler(ClientExited);
client.Start();
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Client);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = "";
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
void ClientExited(object sender, EventArgs e)
{
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
if (GlobalVars.CloseOnLaunch == true)
@ -719,7 +864,7 @@ namespace NovetusLauncher
{
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua";
}
string mapfile = GlobalVars.MapsDir + @"\\" + GlobalVars.Map;
string mapfile = GlobalVars.MapsDir + @"\\" + TreeNodeHelper.GetFolderNameFromPrefix(GlobalVars.Map) + GlobalVars.Map;
string rbxexe = "";
if (GlobalVars.LegacyMode == true)
{
@ -758,10 +903,8 @@ namespace NovetusLauncher
client.Exited += new EventHandler(StudioExited);
client.Start();
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Solo);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = GlobalVars.Map;
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Solo Game";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Solo Game";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
@ -783,7 +926,7 @@ namespace NovetusLauncher
{
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua";
}
string mapfile = GlobalVars.MapsDir + @"\\" + GlobalVars.Map;
string mapfile = GlobalVars.MapsDir + @"\\" + TreeNodeHelper.GetFolderNameFromPrefix(GlobalVars.Map) + GlobalVars.Map;
string rbxexe = "";
if (GlobalVars.LegacyMode == true)
{
@ -857,7 +1000,7 @@ namespace NovetusLauncher
{
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua";
}
string mapfile = GlobalVars.MapsDir + @"\\" + GlobalVars.Map;
string mapfile = GlobalVars.MapsDir + @"\\" + TreeNodeHelper.GetFolderNameFromPrefix(GlobalVars.Map) + GlobalVars.Map;
string rbxexe = "";
if (GlobalVars.LegacyMode == true)
{
@ -896,10 +1039,8 @@ namespace NovetusLauncher
client.Exited += new EventHandler(StudioExited);
client.Start();
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Studio);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = GlobalVars.Map;
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Studio";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Studio";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
@ -912,10 +1053,8 @@ namespace NovetusLauncher
void StudioExited(object sender, EventArgs e)
{
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
if (GlobalVars.CloseOnLaunch == true)
@ -926,87 +1065,105 @@ namespace NovetusLauncher
void ConsoleProcessCommands(string command)
{
if (command.Equals("server"))
if (string.Compare(command,"server",true) == 0)
{
StartServer(false);
}
else if (command.Equals("server no3d"))
else if (string.Compare(command,"server no3d",true) == 0)
{
StartServer(true);
}
else if (command.Equals("no3d"))
else if (string.Compare(command,"no3d",true) == 0)
{
StartServer(true);
}
else if (command.Equals("client"))
else if (string.Compare(command,"client",true) == 0)
{
StartClient();
}
else if (command.Equals("client solo"))
else if (string.Compare(command,"client solo",true) == 0)
{
StartSolo();
}
else if (command.Equals("solo"))
else if (string.Compare(command,"solo",true) == 0)
{
StartSolo();
}
else if (command.Equals("studio"))
else if (string.Compare(command,"studio",true) == 0)
{
StartStudio();
}
else if (command.Equals("config save"))
else if (string.Compare(command,"config save",true) == 0)
{
WriteConfigValues();
}
else if (command.Equals("config load"))
else if (string.Compare(command,"config load",true) == 0)
{
ReadConfigValues();
}
else if (command.Equals("config reset"))
else if (string.Compare(command,"config reset",true) == 0)
{
ResetConfigValues();
}
else if (command.Equals("help"))
else if (string.Compare(command,"help",true) == 0)
{
ConsoleHelp(0);
}
else if (command.Equals("help config"))
else if (string.Compare(command,"help config",true) == 0)
{
ConsoleHelp(1);
}
else if (command.Equals("config"))
else if (string.Compare(command,"config",true) == 0)
{
ConsoleHelp(1);
}
else if (command.Equals("help sdk"))
else if (string.Compare(command,"help sdk",true) == 0)
{
ConsoleHelp(2);
}
else if (command.Equals("sdk"))
else if (string.Compare(command,"sdk",true) == 0)
{
ConsoleHelp(2);
}
else if (command.Equals("sdk clientinfo"))
else if (string.Compare(command,"sdk clientinfo",true) == 0)
{
ClientinfoEditor cie = new ClientinfoEditor();
cie.Show();
LoadClientSDK();
}
else if (command.Equals("sdk itemmaker"))
else if (string.Compare(command,"sdk itemmaker",true) == 0)
{
ItemMaker im = new ItemMaker();
im.Show();
LoadItemSDK();
}
else if (command.Equals("clientinfo"))
else if (string.Compare(command,"clientinfo",true) == 0)
{
ClientinfoEditor cie = new ClientinfoEditor();
cie.Show();
LoadClientSDK();
}
else if (command.Equals("itemmaker"))
else if (string.Compare(command,"itemmaker",true) == 0)
{
ItemMaker im = new ItemMaker();
im.Show();
LoadItemSDK();
}
else if (command.Equals(GlobalVars.important))
else if (string.Compare(command,"sdk clientsdk",true) == 0)
{
LoadClientSDK();
}
else if (string.Compare(command,"sdk itemsdk",true) == 0)
{
LoadItemSDK();
}
else if (string.Compare(command,"clientsdk",true) == 0)
{
LoadClientSDK();
}
else if (string.Compare(command,"itemsdk",true) == 0)
{
LoadItemSDK();
}
else if (string.Compare(command,"charcustom",true) == 0)
{
CharacterCustomization cc = new CharacterCustomization();
cc.Show();
ConsolePrint("Avatar Customization Loaded.", 4);
}
else if (string.Compare(command,GlobalVars.important,true) == 0)
{
GlobalVars.AdminMode = true;
ConsolePrint("ADMIN MODE ENABLED.", 4);
@ -1015,8 +1172,21 @@ namespace NovetusLauncher
else
{
ConsolePrint("ERROR 3 - Command is either not registered or valid", 2);
}
}
}
void LoadItemSDK()
{
ItemMaker im = new ItemMaker();
im.Show();
ConsolePrint("Novetus Item SDK Loaded.", 4);
}
void LoadClientSDK()
{
ClientinfoEditor cie = new ClientinfoEditor();
cie.Show();
ConsolePrint("Novetus Client SDK Loaded.", 4);
}
void ConsoleHelp(int page)
@ -1109,7 +1279,7 @@ namespace NovetusLauncher
void Button23Click(object sender, EventArgs e)
{
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
File.AppendAllText(GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
}
void Button22Click(object sender, EventArgs e)
@ -1130,5 +1300,84 @@ namespace NovetusLauncher
GlobalVars.DisableTeapotTurret = false;
}
}
void TreeView1AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Nodes.Count == 0)
{
GlobalVars.Map = treeView1.SelectedNode.Text.ToString();
label28.Text = GlobalVars.Map;
}
}
bool GetRBXLResults(TreeNode node)
{
return node.Text.EndsWith(".rbxl");
}
void TextBox3TextChanged(object sender, EventArgs e)
{
//blocks repainting tree till all objects loaded
treeView1.BeginUpdate();
treeView1.Nodes.Clear();
if (textBox3.Text != "")
{
List<TreeNode> nodeList = _fieldsTreeCache.GetAllNodes();
List<TreeNode> rbxlList = nodeList.FindAll(GetRBXLResults);
foreach (TreeNode node in rbxlList)
{
if (node.Text.Replace(".rbxl","").Contains(textBox3.Text, StringComparison.OrdinalIgnoreCase))
{
treeView1.Nodes.Add((TreeNode)node.Clone());
}
}
}
else
{
foreach (TreeNode _node in _fieldsTreeCache.Nodes)
{
treeView1.Nodes.Add((TreeNode)_node.Clone());
}
}
//enables redrawing tree after all objects have been added
treeView1.EndUpdate();
}
void Button6Click(object sender, EventArgs e)
{
Process.Start("explorer.exe", GlobalVars.MapsDir.Replace(@"\\",@"\"));
}
void CheckBox4CheckedChanged(object sender, EventArgs e)
{
if (checkBox4.Checked == true)
{
GlobalVars.UPnP = true;
}
else if (checkBox4.Checked == false)
{
GlobalVars.UPnP = false;
}
}
void CheckBox4Click(object sender, EventArgs e)
{
MessageBox.Show("Please restart the Novetus launcher for UPnP to take effect.","Novetus - UPnP", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
void Button24Click(object sender, EventArgs e)
{
if (outputDevice.PlaybackState == PlaybackState.Playing)
{
outputDevice.Pause();
button24.Text = "▶";
}
else if (outputDevice.PlaybackState == PlaybackState.Paused)
{
outputDevice.Play();
button24.Text = "⬛";
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -44,6 +44,12 @@
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Nat">
<HintPath>..\packages\Mono.Nat.1.2.24.0\lib\net40\Mono.Nat.dll</HintPath>
</Reference>
<Reference Include="NAudio">
<HintPath>..\packages\NAudio.1.8.5\lib\net35\NAudio.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
@ -68,6 +74,10 @@
<Compile Include="ClientinfoCreator.Designer.cs">
<DependentUpon>ClientinfoCreator.cs</DependentUpon>
</Compile>
<Compile Include="ClientScriptDocumentation.cs" />
<Compile Include="ClientScriptDocumentation.Designer.cs">
<DependentUpon>ClientScriptDocumentation.cs</DependentUpon>
</Compile>
<Compile Include="ItemMaker.cs" />
<Compile Include="ItemMaker.Designer.cs">
<DependentUpon>ItemMaker.cs</DependentUpon>
@ -99,6 +109,9 @@
<EmbeddedResource Include="ClientinfoCreator.resx">
<DependentUpon>ClientinfoCreator.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ClientScriptDocumentation.resx">
<DependentUpon>ClientScriptDocumentation.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ItemMaker.resx">
<DependentUpon>ItemMaker.cs</DependentUpon>
</EmbeddedResource>
@ -117,6 +130,7 @@
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -39,7 +39,27 @@ namespace NovetusLauncher
{
GlobalVars.SharedArgs = ProcessInput(s);
}
Application.Run(new LoaderForm());
if (GlobalVars.SharedArgs.Equals("-itemmaker"))
{
Application.Run(new ItemMaker());
}
else if (GlobalVars.SharedArgs.Equals("-clientinfo"))
{
Application.Run(new ClientinfoEditor());
}
else if (GlobalVars.SharedArgs.Equals("-quickconfigure"))
{
Application.Run(new QuickConfigure());
}
else if (GlobalVars.SharedArgs.Equals("-documentation"))
{
Application.Run(new ClientScriptDocumentation());
}
else
{
Application.Run(new LoaderForm());
}
}
}

View File

@ -98,7 +98,7 @@ namespace NovetusLauncher
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(260, 23);
this.button2.TabIndex = 5;
this.button2.Text = "Launch";
this.button2.Text = "Close";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.Button2Click);
//
@ -128,6 +128,7 @@ namespace NovetusLauncher
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "QuickConfigure";
this.Closing += new System.ComponentModel.CancelEventHandler(this.QuickConfigureClose);
this.Load += new System.EventHandler(this.QuickConfigureLoad);
this.ResumeLayout(false);
this.PerformLayout();

View File

@ -14,6 +14,7 @@ using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.ComponentModel;
namespace NovetusLauncher
{
@ -36,7 +37,7 @@ namespace NovetusLauncher
void QuickConfigureLoad(object sender, EventArgs e)
{
string cfgpath = GlobalVars.BasePath + "\\config.txt";
string cfgpath = GlobalVars.ConfigDir + "\\config.ini";
if (!File.Exists(cfgpath))
{
LauncherFuncs.WriteConfigValues(cfgpath);
@ -102,7 +103,7 @@ namespace NovetusLauncher
void Button1Click(object sender, EventArgs e)
{
CharacterCustomization ccustom = new CharacterCustomization(true);
CharacterCustomization ccustom = new CharacterCustomization();
ccustom.Show();
}
@ -111,10 +112,9 @@ namespace NovetusLauncher
this.Close();
}
protected override void OnFormClosing(FormClosingEventArgs e)
void QuickConfigureClose(object sender, CancelEventArgs e)
{
string cfgpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\config.txt";
base.OnFormClosing(e);
string cfgpath = GlobalVars.ConfigDir + "\\config.ini";
LauncherFuncs.WriteConfigValues(cfgpath);
GlobalVars.ReadyToLaunch = true;
}

View File

@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAYAAAAAAAEAIADtggAAZgAAAICAAAABACAAKAgBAFODAABAQAAAAQAgAChCAAB7iwEAMDAAAAEA

View File

@ -51,7 +51,7 @@ namespace NovetusLauncher
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
this.textBox1.Size = new System.Drawing.Size(501, 256);
this.textBox1.Size = new System.Drawing.Size(511, 266);
this.textBox1.TabIndex = 0;
//
// ServerInfo
@ -60,8 +60,9 @@ namespace NovetusLauncher
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.ClientSize = new System.Drawing.Size(504, 262);
this.ClientSize = new System.Drawing.Size(514, 272);
this.Controls.Add(this.textBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(520, 300);

View File

@ -34,7 +34,8 @@ namespace NovetusLauncher
{
textBox1.AppendText("Client: " + GlobalVars.SelectedClient);
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("IP: " + GetExternalIPAddress());
string IP = GetExternalIPAddress();
textBox1.AppendText("IP: " + IP);
textBox1.AppendText("Port: " + GlobalVars.RobloxPort.ToString());
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Map: " + GlobalVars.Map);
@ -43,7 +44,6 @@ namespace NovetusLauncher
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Version: Novetus " + GlobalVars.Version);
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText(Environment.NewLine);
string[] lines = {
SecurityFuncs.Base64Encode(GetExternalIPAddress()),
SecurityFuncs.Base64Encode(GlobalVars.RobloxPort.ToString()),
@ -60,9 +60,18 @@ namespace NovetusLauncher
SecurityFuncs.Base64Encode(GlobalVars.SelectedClient)
};
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|",lines2));
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Local URI Link:");
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText(URI2);
textBox1.AppendText(URI2);
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Web Server URL:");
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("http://" + IP + ":" + GlobalVars.WebServer.Port.ToString());
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Local Web Server URL:");
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText(GlobalVars.LocalWebServerURI);
}
string GetExternalIPAddress()

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Mono.Nat" version="1.2.24.0" targetFramework="net40" />
<package id="NAudio" version="1.8.5" targetFramework="net40" />
</packages>

Binary file not shown.

View File

@ -0,0 +1,24 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>Mono.Nat</id>
<version>1.2.24.0</version>
<authors>Alan McGovern &lt;alan.mcgovern@gmail.com&gt;
Ben Motmans &lt;ben.motmans@gmail.com&gt;
Nicholas Terry &lt;nick.i.terry@gmail.com&gt;</authors>
<owners>Alan McGovern &lt;alan.mcgovern@gmail.com&gt;
Ben Motmans &lt;ben.motmans@gmail.com&gt;
Nicholas Terry &lt;nick.i.terry@gmail.com&gt;</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/nterry/Mono.Nat</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>NAT stack for Mono and .NET applications</description>
<releaseNotes>Added useful improvements/fixes from Github user cwensley
Removed dependency on Type2Byte as It has been deprecated following confirmation that BitConvert actually does work with Mono.
Added Android target for nuget.
Fixed some breaking changes from a massive a cleanup
Added unicast support for discovery phase (supported by UPnP 1.1 compliant IGDs only)</releaseNotes>
<copyright>Copyright 2006 - 2007 Alan McGovern and Ben Motmans. See LICENSE for more details.</copyright>
<tags>nat nat-transversal upnp mono.nat mono pmp nat-pmp port mapping protocol universal plug and play igd internet gateway device router</tags>
</metadata>
</package>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>NAudio</id>
<version>1.8.5</version>
<authors>Mark Heath</authors>
<owners>Mark Heath</owners>
<licenseUrl>https://github.com/naudio/NAudio/blob/master/license.txt</licenseUrl>
<projectUrl>https://github.com/naudio/NAudio</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>NAudio, an audio library for .NET</description>
<tags>C# .NET audio sound</tags>
</metadata>
</package>

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<repositories>
<repository path="..\NovetusLauncher\packages.config" />
</repositories>

View File

@ -26,7 +26,7 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "Create a icon on your Desktop"; GroupDescription: "Icons"
Name: "quicklaunchicon"; Description: "Create a icon on your Quick Start Menu"; GroupDescription: "Icons"; Flags: unchecked; OnlyBelowVersion: 0,6.1
Name: "quicklaunchicon"; Description: "Create a icon on your Quick Launch Menu"; GroupDescription: "Icons"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
Source: "Novetus\NovetusLauncher.exe"; DestDir: "{app}"; Flags: ignoreversion
@ -37,15 +37,23 @@ Source: "Novetus\info.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "Novetus\clients\*"; DestDir: "{app}\clients"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "Novetus\maps\*"; DestDir: "{app}\maps"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "Novetus\models\*"; DestDir: "{app}\models"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "Novetus\charcustom\*"; DestDir: "{app}\charcustom"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "Novetus\config\*"; DestDir: "{app}\config"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "Novetus\shareddata\*"; DestDir: "{app}\shareddata"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "Novetus\_redist\*"; DestDir: "{app}\_redist"; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: "{group}"; Filename: "{app}\NovetusLauncher.exe"
Name: "{group}"; Filename: "{uninstallexe}"
Name: "{group}\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"
Name: "{group}\Utilities\Novetus Client SDK"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-clientinfo"
Name: "{group}\Utilities\Novetus Item SDK"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-itemmaker"
Name: "{group}\Utilities\Quick Configure"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-quickconfigure"
Name: "{group}\Utilities\ClientScript Documentation"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-documentation"
Name: "{group}\Uninstall Novetus {#AppVer}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"; Tasks: quicklaunchicon
[Run]
Filename: "{app}\NovetusLauncher.exe"; Description: "Play Novetus"; Flags: nowait postinstall skipifsilent
Filename: "{app}\_redist\netframework40install.exe"; Description: "Install .NET Framework 4.0"; Flags: nowait postinstall skipifsilent
Filename: "{app}\_redist\vcredist2005install32.exe"; Description: "Install Visual C++ 2005 Redistributable (32-bit)"; Flags: nowait postinstall skipifsilent
Filename: "{app}\NovetusLauncher.exe"; Description: "Play Novetus"; Flags: nowait postinstall skipifsilent unchecked
Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent unchecked
Filename: "{app}\changelog.txt"; Description: "View the changelog"; Flags: postinstall shellexec skipifsilent unchecked

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,4 +0,0 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
</roblox>

View File

@ -16,23 +16,29 @@ function newWaitForChild(newParent,name)
return returnable
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
end
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
if (playerApp==nil) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
else
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
end
PlayerService = game:GetService("Players")
Player = PlayerService:GetPlayerFromCharacter(newChar)
local function kick()
KickPlayer(Player, "Modified Client")
end
if (not Player:FindFirstChild("Appearance")) then
kick()
end
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
kick()
end
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
@ -46,7 +52,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end
end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance"
--BODY COLORS
@ -58,42 +64,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "HeadColor"
BodyColor.Name = "Head Color"
elseif (i == 2) then
if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "TorsoColor"
BodyColor.Name = "Torso Color"
elseif (i == 3) then
if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftArmColor"
BodyColor.Name = "Left Arm Color"
elseif (i == 4) then
if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightArmColor"
BodyColor.Name = "Right Arm Color"
elseif (i == 5) then
if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftLegColor"
BodyColor.Name = "Left Leg Color"
elseif (i == 6) then
if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightLegColor"
BodyColor.Name = "Right Leg Color"
end
local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex"
@ -106,46 +112,38 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
end
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
end
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
local function kick()
KickPlayer(Player, "Modified Client")
end
if (playerApp==nil) then
if (not Player:FindFirstChild("Security")) then
kick()
return
end
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
kick()
return
end
for _,newVal in pairs(playerApp:GetChildren()) do
if (newVal.Name == "ClientEXEMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "LauncherMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "ClientScriptMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
kick()
break
end
end
end
@ -196,24 +194,22 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
Player:LoadCharacter()
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
local ch = Player.Character
if (ch ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
if (Player.Character ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
while true do
wait(0.001)
local ch = Player.Character
if (ch ~= nil) then
if (ch.Humanoid.Health == 0) then
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
elseif (ch.Parent == nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
elseif (Player.Character.Parent == nil) then
wait(5)
Player:LoadCharacter() -- to make sure nobody is deleted.
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
end
@ -227,7 +223,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
Server.IncommingConnection:connect(IncommingConnection)
end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
local suc, err = pcall(function()
client = game:GetService("NetworkClient")
player = game:GetService("Players"):CreateLocalPlayer(UserID)
@ -238,7 +234,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
player.CharacterAppearance=0
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
end)
@ -303,14 +299,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
local plr = game.Players:CreateLocalPlayer(UserID)
game:GetService("RunService"):run()
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName
plr:LoadCharacter()
plr.CharacterAppearance=0
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
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")
while true do wait()

View File

@ -12,25 +12,33 @@ function newWaitForChild(newParent,name)
return returnable
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
end
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
if (playerApp==nil) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
else
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
end
PlayerService = game:GetService("Players")
Player = PlayerService:GetPlayerFromCharacter(newChar)
local function kick()
KickPlayer(Player, "Modified Client")
end
if (not Player:FindFirstChild("Appearance")) then
kick()
end
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
kick()
end
local path = "rbxasset://../../../shareddata/charcustom/"
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
for _,newVal in pairs(playerApp:GetChildren()) do
local customtype = newVal.CustomizationType.Value
@ -40,7 +48,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 2) then
pcall(function()
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
if (RemoveTeapotTurret == true) then
@ -59,7 +67,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 3) then
pcall(function()
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
if newTShirt[1] then
if newTShirt[1].className == "ShirtGraphic" then
newTShirt[1].Parent = newChar
@ -68,11 +76,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end
end
end)
elseif (customtype == 4) then
pcall(function()
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
end
end)
pcall(function()
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
if newItem[1] then
if newItem[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
newItem[1].Parent = charparts[1]
newItem[1].Face = "Front"
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
newItem[1].Parent = charparts[1]
else
newItem[1].Parent = newChar
end
end
end)
end
end
end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance"
--BODY COLORS
@ -84,42 +119,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "HeadColor"
BodyColor.Name = "Head Color"
elseif (i == 2) then
if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "TorsoColor"
BodyColor.Name = "Torso Color"
elseif (i == 3) then
if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftArmColor"
BodyColor.Name = "Left Arm Color"
elseif (i == 4) then
if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightArmColor"
BodyColor.Name = "Right Arm Color"
elseif (i == 5) then
if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftLegColor"
BodyColor.Name = "Left Leg Color"
elseif (i == 6) then
if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightLegColor"
BodyColor.Name = "Right Leg Color"
end
local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex"
@ -136,26 +171,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
if (i == 1) then
if (Hat1ID ~= nil) then
newHat.Value = Hat1ID
newHat.Name = Hat1ID
newHat.Name = "Hat 1 - "..Hat1ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 1 - NoHat.rbxm"
end
elseif (i == 2) then
if (Hat2ID ~= nil) then
newHat.Value = Hat2ID
newHat.Name = Hat2ID
newHat.Name = "Hat 2 - "..Hat2ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 2 - NoHat.rbxm"
end
elseif (i == 3) then
if (Hat3ID ~= nil) then
newHat.Value = Hat3ID
newHat.Name = Hat3ID
newHat.Name = "Hat 3 - "..Hat3ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 3 - NoHat.rbxm"
end
end
local typeValue = Instance.new("NumberValue")
@ -167,24 +202,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newTShirt = Instance.new("StringValue",newCharApp)
if (TShirtID ~= nil) then
newTShirt.Value = TShirtID
newTShirt.Name = TShirtID
newTShirt.Name = "T-Shirt - "..TShirtID
else
newTShirt.Value = "NoTShirt.rbxm"
newTShirt.Name = "NoTShirt.rbxm"
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newTShirt
typeValue.Value = 3
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
--EXTRA
local newItem = Instance.new("StringValue",newCharApp)
if (ItemID ~= nil) then
newItem.Value = ItemID
newItem.Name = "Extra - "..ItemID
else
newItem.Value = "NoExtra.rbxm"
newItem.Name = "Extra - NoExtra.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newItem
typeValue.Value = 4
end
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
@ -192,32 +231,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
KickPlayer(Player, "Modified Client")
end
if (playerApp==nil) then
if (not Player:FindFirstChild("Security")) then
kick()
return
end
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
kick()
return
end
for _,newVal in pairs(playerApp:GetChildren()) do
if (newVal.Name == "ClientEXEMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "LauncherMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "ClientScriptMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
kick()
break
end
end
end
@ -257,39 +297,37 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
PlayerService.MaxPlayers = PlayerLimit
PlayerService.PlayerAdded:connect(function(Player)
Player.Chatted:connect(function(msg)
print(Player.Name.."; "..msg)
end)
if (PlayerService.NumPlayers > PlayerService.MaxPlayers) then
KickPlayer(Player, "Too many players on server.")
else
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
Player:LoadCharacter()
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
local ch = Player.Character
if (ch ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
if (Player.Character ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
coroutine.resume(coroutine.create(function()
while Player ~= nil do
wait(0.1)
local ch = Player.Character
if (ch ~= nil) then
if (ch.Humanoid.Health == 0) then
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
elseif (ch.Parent == nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
elseif (Player.Character.Parent == nil) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
end
end))
Player.Chatted:connect(function(msg)
print(Player.Name.."; "..msg)
end)
end)
PlayerService.PlayerRemoving:connect(function(Player)
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
@ -300,7 +338,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
Server.IncommingConnection:connect(IncommingConnection)
end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
local suc, err = pcall(function()
client = game:GetService("NetworkClient")
player = game:GetService("Players"):CreateLocalPlayer(UserID)
@ -309,7 +347,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() player:SetAccountAge(365) end)
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
end)
@ -370,13 +408,13 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
local plr = game.Players:CreateLocalPlayer(UserID)
game:GetService("RunService"):run()
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName
plr:LoadCharacter()
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
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")
while true do

View File

@ -16,25 +16,33 @@ function newWaitForChild(newParent,name)
return returnable
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
end
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
if (playerApp==nil) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
else
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
end
PlayerService = game:GetService("Players")
Player = PlayerService:GetPlayerFromCharacter(newChar)
local function kick()
KickPlayer(Player, "Modified Client")
end
if (not Player:FindFirstChild("Appearance")) then
kick()
end
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
kick()
end
local path = "rbxasset://../../../shareddata/charcustom/"
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
for _,newVal in pairs(playerApp:GetChildren()) do
local customtype = newVal.CustomizationType.Value
@ -44,7 +52,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 2) then
pcall(function()
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
if (RemoveTeapotTurret == true) then
@ -63,7 +71,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 3) then
pcall(function()
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
if newTShirt[1] then
if newTShirt[1].className == "ShirtGraphic" then
newTShirt[1].Parent = newChar
@ -74,7 +82,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 4) then
pcall(function()
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
if newShirt[1] then
if newShirt[1].className == "Shirt" then
newShirt[1].Parent = newChar
@ -85,7 +93,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 5) then
pcall(function()
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
if newPants[1] then
if newPants[1].className == "Pants" then
newPants[1].Parent = newChar
@ -94,11 +102,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end
end
end)
elseif (customtype == 6) then
pcall(function()
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
end
end)
pcall(function()
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
if newItem[1] then
if newItem[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
newItem[1].Parent = charparts[1]
newItem[1].Face = "Front"
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
newItem[1].Parent = charparts[1]
else
newItem[1].Parent = newChar
end
end
end)
end
end
end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance"
--BODY COLORS
@ -110,42 +145,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "HeadColor"
BodyColor.Name = "Head Color"
elseif (i == 2) then
if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "TorsoColor"
BodyColor.Name = "Torso Color"
elseif (i == 3) then
if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftArmColor"
BodyColor.Name = "Left Arm Color"
elseif (i == 4) then
if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightArmColor"
BodyColor.Name = "Right Arm Color"
elseif (i == 5) then
if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftLegColor"
BodyColor.Name = "Left Leg Color"
elseif (i == 6) then
if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightLegColor"
BodyColor.Name = "Right Leg Color"
end
local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex"
@ -162,26 +197,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
if (i == 1) then
if (Hat1ID ~= nil) then
newHat.Value = Hat1ID
newHat.Name = Hat1ID
newHat.Name = "Hat 1 - "..Hat1ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 1 - NoHat.rbxm"
end
elseif (i == 2) then
if (Hat2ID ~= nil) then
newHat.Value = Hat2ID
newHat.Name = Hat2ID
newHat.Name = "Hat 2 - "..Hat2ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 2 - NoHat.rbxm"
end
elseif (i == 3) then
if (Hat3ID ~= nil) then
newHat.Value = Hat3ID
newHat.Name = Hat3ID
newHat.Name = "Hat 3 - "..Hat3ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 3 - NoHat.rbxm"
end
end
local typeValue = Instance.new("NumberValue")
@ -193,10 +228,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newTShirt = Instance.new("StringValue",newCharApp)
if (TShirtID ~= nil) then
newTShirt.Value = TShirtID
newTShirt.Name = TShirtID
newTShirt.Name = "T-Shirt - "..TShirtID
else
newTShirt.Value = "NoTShirt.rbxm"
newTShirt.Name = "NoTShirt.rbxm"
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -206,10 +241,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newShirt = Instance.new("StringValue",newCharApp)
if (ShirtID ~= nil) then
newShirt.Value = ShirtID
newShirt.Name = ShirtID
newShirt.Name = "Shirt - "..ShirtID
else
newShirt.Value = "NoShirt.rbxm"
newShirt.Name = "NoShirt.rbxm"
newShirt.Name = "Shirt - NoShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -219,24 +254,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newPants = Instance.new("StringValue",newCharApp)
if (PantsID ~= nil) then
newPants.Value = PantsID
newPants.Name = PantsID
newPants.Name = "Pants - "..PantsID
else
newPants.Value = "NoPants.rbxm"
newPants.Name = "NoPants.rbxm"
newPants.Name = "Pants - NoPants.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newPants
typeValue.Value = 5
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
--EXTRA
local newItem = Instance.new("StringValue",newCharApp)
if (ItemID ~= nil) then
newItem.Value = ItemID
newItem.Name = "Extra - "..ItemID
else
newItem.Value = "NoExtra.rbxm"
newItem.Name = "Extra - NoExtra.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newItem
typeValue.Value = 6
end
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
@ -244,32 +283,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
KickPlayer(Player, "Modified Client")
end
if (playerApp==nil) then
if (not Player:FindFirstChild("Security")) then
kick()
return
end
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
kick()
return
end
for _,newVal in pairs(playerApp:GetChildren()) do
if (newVal.Name == "ClientEXEMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "LauncherMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "ClientScriptMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
kick()
break
end
end
end
@ -320,24 +360,22 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
Player:LoadCharacter()
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
local ch = Player.Character
if (ch ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
if (Player.Character ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
while true do
wait(0.001)
local ch = Player.Character
if (ch ~= nil) then
if (ch.Humanoid.Health == 0) then
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
elseif (ch.Parent == nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
elseif (Player.Character.Parent == nil) then
wait(5)
Player:LoadCharacter() -- to make sure nobody is deleted.
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
end
@ -351,7 +389,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
Server.IncommingConnection:connect(IncommingConnection)
end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
local suc, err = pcall(function()
client = game:GetService("NetworkClient")
player = game:GetService("Players"):CreateLocalPlayer(UserID)
@ -362,7 +400,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
player.CharacterAppearance=0
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
end)
@ -423,14 +461,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
local plr = game.Players:CreateLocalPlayer(UserID)
game:GetService("RunService"):run()
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName
plr:LoadCharacter()
plr.CharacterAppearance=0
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
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")
while true do wait()

View File

@ -1,6 +1,9 @@
settings().Rendering.FrameRateManager = 2
settings().Network.DataSendRate = 30
settings().Network.ReceiveRate = 60
settings().Network.PhysicsSend = 1
settings().Network.NetworkOwnerRate = 30
settings().Network.PhysicsSendRate = 30
--function made by rbxbanland
function newWaitForChild(newParent,name)
@ -13,25 +16,33 @@ function newWaitForChild(newParent,name)
return returnable
end
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
if (playerApp==nil) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
else
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
end
function LoadCharacterNew(playerApp,newChar)
PlayerService = game:GetService("Players")
Player = PlayerService:GetPlayerFromCharacter(newChar)
local function kick()
KickPlayer(Player, "Modified Client")
end
if (not Player:FindFirstChild("Appearance")) then
kick()
end
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
kick()
end
local path = "rbxasset://../../../shareddata/charcustom/"
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
for _,newVal in pairs(playerApp:GetChildren()) do
local customtype = newVal.CustomizationType.Value
@ -41,18 +52,10 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 2) then
pcall(function()
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
if (RemoveTeapotTurret == true) then
if (newHat[1].Name ~= "TeapotTurret.rbxm") then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
else
newHat[1].Parent = newChar
end
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
@ -60,7 +63,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 3) then
pcall(function()
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
if newTShirt[1] then
if newTShirt[1].className == "ShirtGraphic" then
newTShirt[1].Parent = newChar
@ -71,7 +74,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 4) then
pcall(function()
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
if newShirt[1] then
if newShirt[1].className == "Shirt" then
newShirt[1].Parent = newChar
@ -82,7 +85,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 5) then
pcall(function()
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
if newPants[1] then
if newPants[1].className == "Pants" then
newPants[1].Parent = newChar
@ -93,7 +96,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 6) then
pcall(function()
local newFace = game.Workspace:InsertContent("rbxasset://../../../charcustom/faces/"..newVal.Value)
local newFace = game.Workspace:InsertContent(path.."faces/"..newVal.Value)
if newFace[1] then
if newFace[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
@ -106,7 +109,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 7) then
pcall(function()
local newPart = game.Workspace:InsertContent("rbxasset://../../../charcustom/heads/"..newVal.Value)
local newPart = game.Workspace:InsertContent(path.."heads/"..newVal.Value)
if newPart[1] then
if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
@ -116,11 +119,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end
end
end)
elseif (customtype == 8) then
pcall(function()
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
end
end)
pcall(function()
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
if newItem[1] then
if newItem[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
newItem[1].Parent = charparts[1]
newItem[1].Face = "Front"
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
newItem[1].Parent = charparts[1]
else
newItem[1].Parent = newChar
end
end
end)
end
end
end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance"
--BODY COLORS
@ -132,42 +162,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "HeadColor"
BodyColor.Name = "Head Color"
elseif (i == 2) then
if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "TorsoColor"
BodyColor.Name = "Torso Color"
elseif (i == 3) then
if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftArmColor"
BodyColor.Name = "Left Arm Color"
elseif (i == 4) then
if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightArmColor"
BodyColor.Name = "Right Arm Color"
elseif (i == 5) then
if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftLegColor"
BodyColor.Name = "Left Leg Color"
elseif (i == 6) then
if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightLegColor"
BodyColor.Name = "Right Leg Color"
end
local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex"
@ -184,26 +214,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
if (i == 1) then
if (Hat1ID ~= nil) then
newHat.Value = Hat1ID
newHat.Name = Hat1ID
newHat.Name = "Hat 1 - "..Hat1ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 1 - NoHat.rbxm"
end
elseif (i == 2) then
if (Hat2ID ~= nil) then
newHat.Value = Hat2ID
newHat.Name = Hat2ID
newHat.Name = "Hat 2 - "..Hat2ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 2 - NoHat.rbxm"
end
elseif (i == 3) then
if (Hat3ID ~= nil) then
newHat.Value = Hat3ID
newHat.Name = Hat3ID
newHat.Name = "Hat 3 - "..Hat3ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 3 - NoHat.rbxm"
end
end
local typeValue = Instance.new("NumberValue")
@ -215,10 +245,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newTShirt = Instance.new("StringValue",newCharApp)
if (TShirtID ~= nil) then
newTShirt.Value = TShirtID
newTShirt.Name = TShirtID
newTShirt.Name = "T-Shirt - "..TShirtID
else
newTShirt.Value = "NoTShirt.rbxm"
newTShirt.Name = "NoTShirt.rbxm"
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -228,10 +258,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newShirt = Instance.new("StringValue",newCharApp)
if (ShirtID ~= nil) then
newShirt.Value = ShirtID
newShirt.Name = ShirtID
newShirt.Name = "Shirt - "..ShirtID
else
newShirt.Value = "NoShirt.rbxm"
newShirt.Name = "NoShirt.rbxm"
newShirt.Name = "Shirt - NoShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -241,10 +271,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newPants = Instance.new("StringValue",newCharApp)
if (PantsID ~= nil) then
newPants.Value = PantsID
newPants.Name = PantsID
newPants.Name = "Pants - "..PantsID
else
newPants.Value = "NoPants.rbxm"
newPants.Name = "NoPants.rbxm"
newPants.Name = "Pants - NoPants.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -254,10 +284,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newFace = Instance.new("StringValue",newCharApp)
if (FaceID ~= nil) then
newFace.Value = FaceID
newFace.Name = FaceID
newFace.Name = "Face - "..FaceID
else
newFace.Value = "DefaultFace.rbxm"
newFace.Name = "DefaultFace.rbxm"
newFace.Name = "Face - DefaultFace.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -267,24 +297,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newHead = Instance.new("StringValue",newCharApp)
if (HeadID ~= nil) then
newHead.Value = HeadID
newHead.Name = HeadID
newHead.Name = "Head - "..HeadID
else
newHead.Value = "DefaultHead.rbxm"
newHead.Name = "DefaultHead.rbxm"
newHead.Name = "Head - DefaultHead.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newHead
typeValue.Value = 7
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
--EXTRA
local newItem = Instance.new("StringValue",newCharApp)
if (ItemID ~= nil) then
newItem.Value = ItemID
newItem.Name = "Extra - "..ItemID
else
newItem.Value = "NoExtra.rbxm"
newItem.Name = "Extra - NoExtra.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newItem
typeValue.Value = 8
end
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
@ -292,32 +326,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
KickPlayer(Player, "Modified Client")
end
if (playerApp==nil) then
if (not Player:FindFirstChild("Security")) then
kick()
return
end
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
kick()
return
end
for _,newVal in pairs(playerApp:GetChildren()) do
if (newVal.Name == "ClientEXEMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "LauncherMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "ClientScriptMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
kick()
break
end
end
end
@ -358,37 +393,35 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
PlayerService = game:GetService("Players")
PlayerService.MaxPlayers = PlayerLimit
PlayerService.PlayerAdded:connect(function(Player)
Player.Chatted:connect(function(msg)
print(Player.Name.."; "..msg)
end)
if (PlayerService.NumPlayers > PlayerService.MaxPlayers) then
KickPlayer(Player, "Too many players on server.")
else
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
Player:LoadCharacter()
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
local ch = Player.Character
if (ch ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
if (Player.Character ~= nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
while true do
wait(0.001)
local ch = Player.Character
if (ch ~= nil) then
if (ch.Humanoid.Health == 0) then
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
elseif (ch.Parent == nil) then
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
elseif (Player.Character.Parent == nil) then
wait(5)
Player:LoadCharacter() -- to make sure nobody is deleted.
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end
end
end
Player.Chatted:connect(function(msg)
print(Player.Name.."; "..msg)
end)
end)
PlayerService.PlayerRemoving:connect(function(Player)
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
@ -398,7 +431,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
InitalizeClientName(game.Lighting)
Server.IncommingConnection:connect(IncommingConnection)
end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
pcall(function() game:SetPlaceID(-1, false) end)
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end)
@ -422,7 +455,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
player.CharacterAppearance=0
pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit")
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
end)
@ -483,14 +516,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
local plr = game.Players:CreateLocalPlayer(UserID)
game:GetService("RunService"):run()
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName
plr:LoadCharacter()
plr.CharacterAppearance=0
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
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")
while true do wait()

View File

@ -2,6 +2,7 @@ settings().Rendering.FrameRateManager = 2
settings().Network.DataSendRate = 30
settings().Network.PhysicsSendRate = 20
settings().Network.ReceiveRate = 60
settings().Network.NetworkOwnerRate = 30
pcall(function() game:GetService("ScriptContext").ScriptsDisabled = false end)
--function made by rbxbanland
@ -15,24 +16,32 @@ function newWaitForChild(newParent,name)
return returnable
end
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
if (playerApp==nil) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
else
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
end
function LoadCharacterNew(playerApp,newChar)
PlayerService = game:GetService("Players")
Player = PlayerService:GetPlayerFromCharacter(newChar)
local function kick()
KickPlayer(Player, "Modified Client")
end
if (not Player:FindFirstChild("Appearance")) then
kick()
end
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
kick()
end
local path = "rbxasset://../../../shareddata/charcustom/"
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
for _,newVal in pairs(playerApp:GetChildren()) do
@ -43,18 +52,10 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 2) then
pcall(function()
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
if (RemoveTeapotTurret == true) then
if (newHat[1].Name ~= "TeapotTurret.rbxm") then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
else
newHat[1].Parent = newChar
end
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
@ -62,7 +63,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 3) then
pcall(function()
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
if newTShirt[1] then
if newTShirt[1].className == "ShirtGraphic" then
newTShirt[1].Parent = newChar
@ -73,7 +74,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 4) then
pcall(function()
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
if newShirt[1] then
if newShirt[1].className == "Shirt" then
newShirt[1].Parent = newChar
@ -84,7 +85,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 5) then
pcall(function()
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
if newPants[1] then
if newPants[1].className == "Pants" then
newPants[1].Parent = newChar
@ -95,7 +96,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 6) then
pcall(function()
local newFace = game.Workspace:InsertContent("rbxasset://../../../charcustom/faces/"..newVal.Value)
local newFace = game.Workspace:InsertContent(path.."faces/"..newVal.Value)
if newFace[1] then
if newFace[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
@ -108,7 +109,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end)
elseif (customtype == 7) then
pcall(function()
local newPart = game.Workspace:InsertContent("rbxasset://../../../charcustom/heads/"..newVal.Value)
local newPart = game.Workspace:InsertContent(path.."heads/"..newVal.Value)
if newPart[1] then
if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
@ -118,11 +119,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
end
end
end)
elseif (customtype == 8) then
pcall(function()
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
end
end)
pcall(function()
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
if newItem[1] then
if newItem[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove()
newItem[1].Parent = charparts[1]
newItem[1].Face = "Front"
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove()
newItem[1].Parent = charparts[1]
else
newItem[1].Parent = newChar
end
end
end)
end
end
end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance"
--BODY COLORS
@ -134,42 +162,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "HeadColor"
BodyColor.Name = "Head Color"
elseif (i == 2) then
if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "TorsoColor"
BodyColor.Name = "Torso Color"
elseif (i == 3) then
if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftArmColor"
BodyColor.Name = "Left Arm Color"
elseif (i == 4) then
if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightArmColor"
BodyColor.Name = "Right Arm Color"
elseif (i == 5) then
if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "LeftLegColor"
BodyColor.Name = "Left Leg Color"
elseif (i == 6) then
if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID)
else
BodyColor.Value = BrickColor.new(1)
end
BodyColor.Name = "RightLegColor"
BodyColor.Name = "Right Leg Color"
end
local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex"
@ -186,26 +214,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
if (i == 1) then
if (Hat1ID ~= nil) then
newHat.Value = Hat1ID
newHat.Name = Hat1ID
newHat.Name = "Hat 1 - "..Hat1ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 1 - NoHat.rbxm"
end
elseif (i == 2) then
if (Hat2ID ~= nil) then
newHat.Value = Hat2ID
newHat.Name = Hat2ID
newHat.Name = "Hat 2 - "..Hat2ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 2 - NoHat.rbxm"
end
elseif (i == 3) then
if (Hat3ID ~= nil) then
newHat.Value = Hat3ID
newHat.Name = Hat3ID
newHat.Name = "Hat 3 - "..Hat3ID
else
newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm"
newHat.Name = "Hat 3 - NoHat.rbxm"
end
end
local typeValue = Instance.new("NumberValue")
@ -217,10 +245,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newTShirt = Instance.new("StringValue",newCharApp)
if (TShirtID ~= nil) then
newTShirt.Value = TShirtID
newTShirt.Name = TShirtID
newTShirt.Name = "T-Shirt - "..TShirtID
else
newTShirt.Value = "NoTShirt.rbxm"
newTShirt.Name = "NoTShirt.rbxm"
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -230,10 +258,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newShirt = Instance.new("StringValue",newCharApp)
if (ShirtID ~= nil) then
newShirt.Value = ShirtID
newShirt.Name = ShirtID
newShirt.Name = "Shirt - "..ShirtID
else
newShirt.Value = "NoShirt.rbxm"
newShirt.Name = "NoShirt.rbxm"
newShirt.Name = "Shirt - NoShirt.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -243,10 +271,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newPants = Instance.new("StringValue",newCharApp)
if (PantsID ~= nil) then
newPants.Value = PantsID
newPants.Name = PantsID
newPants.Name = "Pants - "..PantsID
else
newPants.Value = "NoPants.rbxm"
newPants.Name = "NoPants.rbxm"
newPants.Name = "Pants - NoPants.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -256,10 +284,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newFace = Instance.new("StringValue",newCharApp)
if (FaceID ~= nil) then
newFace.Value = FaceID
newFace.Name = FaceID
newFace.Name = "Face - "..FaceID
else
newFace.Value = "DefaultFace.rbxm"
newFace.Name = "DefaultFace.rbxm"
newFace.Name = "Face - DefaultFace.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
@ -269,24 +297,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newHead = Instance.new("StringValue",newCharApp)
if (HeadID ~= nil) then
newHead.Value = HeadID
newHead.Name = HeadID
newHead.Name = "Head - "..HeadID
else
newHead.Value = "DefaultHead.rbxm"
newHead.Name = "DefaultHead.rbxm"
newHead.Name = "Head - DefaultHead.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newHead
typeValue.Value = 7
end
function KickPlayer(Player,reason)
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: "..reason
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
--EXTRA
local newItem = Instance.new("StringValue",newCharApp)
if (ItemID ~= nil) then
newItem.Value = ItemID
newItem.Name = "Extra - "..ItemID
else
newItem.Value = "NoExtra.rbxm"
newItem.Name = "Extra - NoExtra.rbxm"
end
local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType"
typeValue.Parent = newItem
typeValue.Value = 8
end
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
@ -294,32 +326,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
KickPlayer(Player, "Modified Client")
end
if (playerApp==nil) then
if (not Player:FindFirstChild("Security")) then
kick()
return
end
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
kick()
return
end
for _,newVal in pairs(playerApp:GetChildren()) do
if (newVal.Name == "ClientEXEMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "LauncherMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
kick()
break
end
end
if (newVal.Name == "ClientScriptMD5") then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
kick()
break
end
end
end
@ -399,7 +432,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
NetworkServer.IncommingConnection:connect(IncommingConnection)
end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
pcall(function() game:SetPlaceID(-1, false) end)
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end)
@ -492,7 +525,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
end
InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
InitalizeSecurityValues(Player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
pcall(function() Player:SetUnder13(false) end)
pcall(function() Player:SetMembershipType(Enum.MembershipType.BuildersClub) end)
@ -504,15 +537,19 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
game:GetService("Visit")
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
local plr = game.Players:CreateLocalPlayer(UserID)
game:GetService("RunService"):run()
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName
plr:LoadCharacter()
plr.CharacterAppearance=0
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
wait(0.65)
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
wait(0.65)
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
newWaitForChild(game.StarterGui, "Health")
game.StarterGui.Health:clone().Parent = plr.PlayerGui
game:GetService("Visit")
while true do wait()
if (plr.Character.Humanoid.Health == 0) then

View File

@ -5873,7 +5873,7 @@ if UserSettings and LoadLibrary then
local function getMembershipTypeIcon(membershipType, playerName)
if membershipType == Enum.MembershipType.None then
return &quot;rbxasset://../../../charcustom/icons/&quot;..playerName..&quot;.png&quot;
return &quot;rbxasset://../../../charcustom/custom/icons/&quot;..playerName..&quot;.png&quot;
elseif membershipType == Enum.MembershipType.BuildersClub then
return &quot;rbxasset://textures/ui/TinyBcIcon.png&quot;
elseif membershipType == Enum.MembershipType.TurboBuildersClub then

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="BodyColors" referent="RBX0">
<Properties>
<int name="HeadColor">{0}</int>
<int name="LeftArmColor">{1}</int>
<int name="LeftLegColor">{2}</int>
<string name="Name">Body Colors</string>
<int name="RightArmColor">{3}</int>
<int name="RightLegColor">{4}</int>
<int name="TorsoColor">{5}</int>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

View File

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/2006Face.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Annoyance.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/AprilFools.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/AprilFools2.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/CatFace.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/CheckIt.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Chill.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/ChillMcCool.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/ClassicZombie.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Commando.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/D.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://textures/face.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Drool.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Dulko.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/EmotionallyDistressedZombie.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/EpicFace.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Err.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/EvilCatFace.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/ExistentialAngst.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Fearless.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/FinnMcCool.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Freckles.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/Grr.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,14 @@
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Decal" referent="RBX0">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://../../../shareddata/charcustom/faces/HappyD.png</url></Content>
<bool name="archivable">true</bool>
</Properties>
</Item>
</roblox>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More