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 end
function LoadCharacterNew(playerApp,newChar) 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")} 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 for _,newVal in pairs(playerApp:GetChildren()) do
local customtype = newVal.CustomizationType.Value local customtype = newVal.CustomizationType.Value
@ -19,7 +21,7 @@ function LoadCharacterNew(playerApp,newChar)
end) end)
elseif (customtype == 2) then elseif (customtype == 2) then
pcall(function() 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] then
if newHat[1].className == "Hat" then if newHat[1].className == "Hat" then
newHat[1].Parent = newChar newHat[1].Parent = newChar
@ -30,7 +32,7 @@ function LoadCharacterNew(playerApp,newChar)
end) end)
elseif (customtype == 3) then elseif (customtype == 3) then
pcall(function() 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] then
if newTShirt[1].className == "ShirtGraphic" then if newTShirt[1].className == "ShirtGraphic" then
newTShirt[1].Parent = newChar newTShirt[1].Parent = newChar
@ -41,7 +43,7 @@ function LoadCharacterNew(playerApp,newChar)
end) end)
elseif (customtype == 4) then elseif (customtype == 4) then
pcall(function() 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] then
if newShirt[1].className == "Shirt" then if newShirt[1].className == "Shirt" then
newShirt[1].Parent = newChar newShirt[1].Parent = newChar
@ -52,7 +54,7 @@ function LoadCharacterNew(playerApp,newChar)
end) end)
elseif (customtype == 5) then elseif (customtype == 5) then
pcall(function() 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] then
if newPants[1].className == "Pants" then if newPants[1].className == "Pants" then
newPants[1].Parent = newChar newPants[1].Parent = newChar
@ -63,7 +65,7 @@ function LoadCharacterNew(playerApp,newChar)
end) end)
elseif (customtype == 6) then elseif (customtype == 6) then
pcall(function() 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] then
if newFace[1].className == "Decal" then if newFace[1].className == "Decal" then
newWaitForChild(charparts[1],"face"):remove() newWaitForChild(charparts[1],"face"):remove()
@ -76,7 +78,7 @@ function LoadCharacterNew(playerApp,newChar)
end) end)
elseif (customtype == 7) then elseif (customtype == 7) then
pcall(function() 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] then
if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
newWaitForChild(charparts[1],"Mesh"):remove() newWaitForChild(charparts[1],"Mesh"):remove()
@ -86,11 +88,38 @@ function LoadCharacterNew(playerApp,newChar)
end end
end 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 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) local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance" newCharApp.Name = "Appearance"
--BODY COLORS --BODY COLORS
@ -102,42 +131,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "HeadColor" BodyColor.Name = "Head Color"
elseif (i == 2) then elseif (i == 2) then
if (TorsoColorID ~= nil) then if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID) BodyColor.Value = BrickColor.new(TorsoColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "TorsoColor" BodyColor.Name = "Torso Color"
elseif (i == 3) then elseif (i == 3) then
if (LeftArmColorID ~= nil) then if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID) BodyColor.Value = BrickColor.new(LeftArmColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "LeftArmColor" BodyColor.Name = "Left Arm Color"
elseif (i == 4) then elseif (i == 4) then
if (RightArmColorID ~= nil) then if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID) BodyColor.Value = BrickColor.new(RightArmColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "RightArmColor" BodyColor.Name = "Right Arm Color"
elseif (i == 5) then elseif (i == 5) then
if (LeftLegColorID ~= nil) then if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID) BodyColor.Value = BrickColor.new(LeftLegColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "LeftLegColor" BodyColor.Name = "Left Leg Color"
elseif (i == 6) then elseif (i == 6) then
if (RightLegColorID ~= nil) then if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID) BodyColor.Value = BrickColor.new(RightLegColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "RightLegColor" BodyColor.Name = "Right Leg Color"
end end
local indexValue = Instance.new("NumberValue") local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex" indexValue.Name = "ColorIndex"
@ -154,26 +183,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
if (i == 1) then if (i == 1) then
if (Hat1ID ~= nil) then if (Hat1ID ~= nil) then
newHat.Value = Hat1ID newHat.Value = Hat1ID
newHat.Name = Hat1ID newHat.Name = "Hat 1 - "..Hat1ID
else else
newHat.Value = "NoHat.rbxm" newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm" newHat.Name = "Hat 1 - NoHat.rbxm"
end end
elseif (i == 2) then elseif (i == 2) then
if (Hat2ID ~= nil) then if (Hat2ID ~= nil) then
newHat.Value = Hat2ID newHat.Value = Hat2ID
newHat.Name = Hat2ID newHat.Name = "Hat 2 - "..Hat2ID
else else
newHat.Value = "NoHat.rbxm" newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm" newHat.Name = "Hat 2 - NoHat.rbxm"
end end
elseif (i == 3) then elseif (i == 3) then
if (Hat3ID ~= nil) then if (Hat3ID ~= nil) then
newHat.Value = Hat3ID newHat.Value = Hat3ID
newHat.Name = Hat3ID newHat.Name = "Hat 3 - "..Hat3ID
else else
newHat.Value = "NoHat.rbxm" newHat.Value = "NoHat.rbxm"
newHat.Name = "NoHat.rbxm" newHat.Name = "Hat 3 - NoHat.rbxm"
end end
end end
local typeValue = Instance.new("NumberValue") local typeValue = Instance.new("NumberValue")
@ -185,10 +214,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newTShirt = Instance.new("StringValue",newCharApp) local newTShirt = Instance.new("StringValue",newCharApp)
if (TShirtID ~= nil) then if (TShirtID ~= nil) then
newTShirt.Value = TShirtID newTShirt.Value = TShirtID
newTShirt.Name = TShirtID newTShirt.Name = "T-Shirt - "..TShirtID
else else
newTShirt.Value = "NoTShirt.rbxm" newTShirt.Value = "NoTShirt.rbxm"
newTShirt.Name = "NoTShirt.rbxm" newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
end end
local typeValue = Instance.new("NumberValue") local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType" typeValue.Name = "CustomizationType"
@ -198,10 +227,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newShirt = Instance.new("StringValue",newCharApp) local newShirt = Instance.new("StringValue",newCharApp)
if (ShirtID ~= nil) then if (ShirtID ~= nil) then
newShirt.Value = ShirtID newShirt.Value = ShirtID
newShirt.Name = ShirtID newShirt.Name = "Shirt - "..ShirtID
else else
newShirt.Value = "NoShirt.rbxm" newShirt.Value = "NoShirt.rbxm"
newShirt.Name = "NoShirt.rbxm" newShirt.Name = "Shirt - NoShirt.rbxm"
end end
local typeValue = Instance.new("NumberValue") local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType" typeValue.Name = "CustomizationType"
@ -211,10 +240,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newPants = Instance.new("StringValue",newCharApp) local newPants = Instance.new("StringValue",newCharApp)
if (PantsID ~= nil) then if (PantsID ~= nil) then
newPants.Value = PantsID newPants.Value = PantsID
newPants.Name = PantsID newPants.Name = "Pants - "..PantsID
else else
newPants.Value = "NoPants.rbxm" newPants.Value = "NoPants.rbxm"
newPants.Name = "NoPants.rbxm" newPants.Name = "Pants - NoPants.rbxm"
end end
local typeValue = Instance.new("NumberValue") local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType" typeValue.Name = "CustomizationType"
@ -224,10 +253,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newFace = Instance.new("StringValue",newCharApp) local newFace = Instance.new("StringValue",newCharApp)
if (FaceID ~= nil) then if (FaceID ~= nil) then
newFace.Value = FaceID newFace.Value = FaceID
newFace.Name = FaceID newFace.Name = "Face - "..FaceID
else else
newFace.Value = "DefaultFace.rbxm" newFace.Value = "DefaultFace.rbxm"
newFace.Name = "DefaultFace.rbxm" newFace.Name = "Face - DefaultFace.rbxm"
end end
local typeValue = Instance.new("NumberValue") local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType" typeValue.Name = "CustomizationType"
@ -237,20 +266,33 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
local newHead = Instance.new("StringValue",newCharApp) local newHead = Instance.new("StringValue",newCharApp)
if (HeadID ~= nil) then if (HeadID ~= nil) then
newHead.Value = HeadID newHead.Value = HeadID
newHead.Name = HeadID newHead.Name = "Head - "..HeadID
else else
newHead.Value = "DefaultHead.rbxm" newHead.Value = "DefaultHead.rbxm"
newHead.Name = "DefaultHead.rbxm" newHead.Name = "Head - DefaultHead.rbxm"
end end
local typeValue = Instance.new("NumberValue") local typeValue = Instance.new("NumberValue")
typeValue.Name = "CustomizationType" typeValue.Name = "CustomizationType"
typeValue.Parent = newHead typeValue.Parent = newHead
typeValue.Value = 7 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 end
print("3DView loaded. Nerd.") 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 settings().Rendering.FrameRateManager = 2
game:GetService("RunService"):run() game:GetService("RunService"):run()
game:GetService("NetworkServer") game:GetService("NetworkServer")
@ -297,7 +339,8 @@ function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorI
human.WalkSpeed = 0 human.WalkSpeed = 0
human.Jumping:connect(fixJump) 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) LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character)
wait(1) wait(1)
game:GetService("NetworkClient") 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.button42 = new System.Windows.Forms.Button();
this.button41 = new System.Windows.Forms.Button(); this.button41 = new System.Windows.Forms.Button();
this.pictureBox3 = new System.Windows.Forms.PictureBox(); this.pictureBox3 = new System.Windows.Forms.PictureBox();
this.label17 = new System.Windows.Forms.Label();
this.listBox3 = new System.Windows.Forms.ListBox(); this.listBox3 = new System.Windows.Forms.ListBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox(); this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.pictureBox1 = 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.listBox2 = new System.Windows.Forms.ListBox();
this.listBox1 = new System.Windows.Forms.ListBox(); this.listBox1 = new System.Windows.Forms.ListBox();
this.tabPage8 = new System.Windows.Forms.TabPage(); this.tabPage8 = new System.Windows.Forms.TabPage();
@ -120,7 +117,14 @@ namespace NovetusLauncher
this.button51 = new System.Windows.Forms.Button(); this.button51 = new System.Windows.Forms.Button();
this.pictureBox7 = new System.Windows.Forms.PictureBox(); this.pictureBox7 = new System.Windows.Forms.PictureBox();
this.listBox7 = new System.Windows.Forms.ListBox(); 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.tabPage7 = new System.Windows.Forms.TabPage();
this.button43 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox1 = new System.Windows.Forms.TextBox();
this.label7 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label();
this.label6 = 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.button54 = new System.Windows.Forms.Button();
this.button53 = new System.Windows.Forms.Button(); this.button53 = new System.Windows.Forms.Button();
this.button52 = 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.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout(); this.tabPage1.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
@ -150,7 +157,13 @@ namespace NovetusLauncher
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit();
this.tabPage6.SuspendLayout(); this.tabPage6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit();
this.tabPage9.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).BeginInit();
this.tabPage7.SuspendLayout(); this.tabPage7.SuspendLayout();
this.tabControl2.SuspendLayout();
this.tabPage10.SuspendLayout();
this.tabPage11.SuspendLayout();
this.tabPage12.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// tabControl1 // tabControl1
@ -162,8 +175,10 @@ namespace NovetusLauncher
this.tabControl1.Controls.Add(this.tabPage4); this.tabControl1.Controls.Add(this.tabPage4);
this.tabControl1.Controls.Add(this.tabPage5); this.tabControl1.Controls.Add(this.tabPage5);
this.tabControl1.Controls.Add(this.tabPage6); this.tabControl1.Controls.Add(this.tabPage6);
this.tabControl1.Controls.Add(this.tabPage9);
this.tabControl1.Controls.Add(this.tabPage7); 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.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0; this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(475, 267); this.tabControl1.Size = new System.Drawing.Size(475, 267);
@ -698,17 +713,9 @@ namespace NovetusLauncher
// //
// tabPage2 // tabPage2
// //
this.tabPage2.Controls.Add(this.tabControl2);
this.tabPage2.Controls.Add(this.button42); this.tabPage2.Controls.Add(this.button42);
this.tabPage2.Controls.Add(this.button41); 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.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2"; this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3); this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
@ -723,7 +730,7 @@ namespace NovetusLauncher
this.button42.Name = "button42"; this.button42.Name = "button42";
this.button42.Size = new System.Drawing.Size(219, 42); this.button42.Size = new System.Drawing.Size(219, 42);
this.button42.TabIndex = 56; this.button42.TabIndex = 56;
this.button42.Text = "Reset"; this.button42.Text = "Reset all 3";
this.button42.UseVisualStyleBackColor = true; this.button42.UseVisualStyleBackColor = true;
this.button42.Click += new System.EventHandler(this.Button42Click); this.button42.Click += new System.EventHandler(this.Button42Click);
// //
@ -733,85 +740,61 @@ namespace NovetusLauncher
this.button41.Name = "button41"; this.button41.Name = "button41";
this.button41.Size = new System.Drawing.Size(219, 42); this.button41.Size = new System.Drawing.Size(219, 42);
this.button41.TabIndex = 55; this.button41.TabIndex = 55;
this.button41.Text = "Randomize"; this.button41.Text = "Randomize all 3";
this.button41.UseVisualStyleBackColor = true; this.button41.UseVisualStyleBackColor = true;
this.button41.Click += new System.EventHandler(this.Button41Click); this.button41.Click += new System.EventHandler(this.Button41Click);
// //
// pictureBox3 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox3.TabIndex = 54; this.pictureBox3.TabIndex = 54;
this.pictureBox3.TabStop = false; 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 // listBox3
// //
this.listBox3.FormattingEnabled = true; 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.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.TabIndex = 52;
this.listBox3.SelectedIndexChanged += new System.EventHandler(this.ListBox3SelectedIndexChanged); this.listBox3.SelectedIndexChanged += new System.EventHandler(this.ListBox3SelectedIndexChanged);
// //
// pictureBox2 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox2.TabIndex = 51; this.pictureBox2.TabIndex = 51;
this.pictureBox2.TabStop = false; this.pictureBox2.TabStop = false;
// //
// pictureBox1 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 50; this.pictureBox1.TabIndex = 50;
this.pictureBox1.TabStop = false; 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 // listBox2
// //
this.listBox2.FormattingEnabled = true; 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.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.TabIndex = 47;
this.listBox2.SelectedIndexChanged += new System.EventHandler(this.ListBox2SelectedIndexChanged); this.listBox2.SelectedIndexChanged += new System.EventHandler(this.ListBox2SelectedIndexChanged);
// //
// listBox1 // listBox1
// //
this.listBox1.FormattingEnabled = true; 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.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.TabIndex = 46;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1SelectedIndexChanged); this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1SelectedIndexChanged);
// //
@ -850,9 +833,9 @@ namespace NovetusLauncher
// //
// pictureBox8 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox8.TabIndex = 63; this.pictureBox8.TabIndex = 63;
this.pictureBox8.TabStop = false; this.pictureBox8.TabStop = false;
@ -860,9 +843,9 @@ namespace NovetusLauncher
// listBox8 // listBox8
// //
this.listBox8.FormattingEnabled = true; 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.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.TabIndex = 62;
this.listBox8.SelectedIndexChanged += new System.EventHandler(this.ListBox8SelectedIndexChanged); this.listBox8.SelectedIndexChanged += new System.EventHandler(this.ListBox8SelectedIndexChanged);
// //
@ -901,9 +884,9 @@ namespace NovetusLauncher
// //
// pictureBox4 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox4.TabIndex = 59; this.pictureBox4.TabIndex = 59;
this.pictureBox4.TabStop = false; this.pictureBox4.TabStop = false;
@ -911,9 +894,9 @@ namespace NovetusLauncher
// listBox4 // listBox4
// //
this.listBox4.FormattingEnabled = true; 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.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.TabIndex = 57;
this.listBox4.SelectedIndexChanged += new System.EventHandler(this.ListBox4SelectedIndexChanged); this.listBox4.SelectedIndexChanged += new System.EventHandler(this.ListBox4SelectedIndexChanged);
// //
@ -952,9 +935,9 @@ namespace NovetusLauncher
// //
// pictureBox5 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox5.TabIndex = 63; this.pictureBox5.TabIndex = 63;
this.pictureBox5.TabStop = false; this.pictureBox5.TabStop = false;
@ -962,9 +945,9 @@ namespace NovetusLauncher
// listBox5 // listBox5
// //
this.listBox5.FormattingEnabled = true; 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.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.TabIndex = 62;
this.listBox5.SelectedIndexChanged += new System.EventHandler(this.ListBox5SelectedIndexChanged); this.listBox5.SelectedIndexChanged += new System.EventHandler(this.ListBox5SelectedIndexChanged);
// //
@ -1003,9 +986,9 @@ namespace NovetusLauncher
// //
// pictureBox6 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox6.TabIndex = 63; this.pictureBox6.TabIndex = 63;
this.pictureBox6.TabStop = false; this.pictureBox6.TabStop = false;
@ -1013,9 +996,9 @@ namespace NovetusLauncher
// listBox6 // listBox6
// //
this.listBox6.FormattingEnabled = true; 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.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.TabIndex = 62;
this.listBox6.SelectedIndexChanged += new System.EventHandler(this.ListBox6SelectedIndexChanged); this.listBox6.SelectedIndexChanged += new System.EventHandler(this.ListBox6SelectedIndexChanged);
// //
@ -1054,9 +1037,9 @@ namespace NovetusLauncher
// //
// pictureBox7 // 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.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.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox7.TabIndex = 63; this.pictureBox7.TabIndex = 63;
this.pictureBox7.TabStop = false; this.pictureBox7.TabStop = false;
@ -1064,14 +1047,77 @@ namespace NovetusLauncher
// listBox7 // listBox7
// //
this.listBox7.FormattingEnabled = true; 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.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.TabIndex = 62;
this.listBox7.SelectedIndexChanged += new System.EventHandler(this.ListBox7SelectedIndexChanged); 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 // tabPage7
// //
this.tabPage7.Controls.Add(this.button43);
this.tabPage7.Controls.Add(this.textBox1); this.tabPage7.Controls.Add(this.textBox1);
this.tabPage7.Controls.Add(this.label7); this.tabPage7.Controls.Add(this.label7);
this.tabPage7.Controls.Add(this.label6); this.tabPage7.Controls.Add(this.label6);
@ -1089,6 +1135,16 @@ namespace NovetusLauncher
this.tabPage7.Text = "OTHER"; this.tabPage7.Text = "OTHER";
this.tabPage7.UseVisualStyleBackColor = true; 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 // textBox1
// //
this.textBox1.Location = new System.Drawing.Point(113, 213); this.textBox1.Location = new System.Drawing.Point(113, 213);
@ -1195,29 +1251,65 @@ namespace NovetusLauncher
this.button52.UseVisualStyleBackColor = true; this.button52.UseVisualStyleBackColor = true;
this.button52.Click += new System.EventHandler(this.Button52Click); this.button52.Click += new System.EventHandler(this.Button52Click);
// //
// button43 // tabControl2
// //
this.button43.Location = new System.Drawing.Point(415, 12); this.tabControl2.Controls.Add(this.tabPage10);
this.button43.Name = "button43"; this.tabControl2.Controls.Add(this.tabPage11);
this.button43.Size = new System.Drawing.Size(70, 19); this.tabControl2.Controls.Add(this.tabPage12);
this.button43.TabIndex = 1; this.tabControl2.Location = new System.Drawing.Point(0, 0);
this.button43.Text = "3D Preview"; this.tabControl2.Name = "tabControl2";
this.button43.UseVisualStyleBackColor = true; this.tabControl2.SelectedIndex = 0;
this.button43.Click += new System.EventHandler(this.Button43Click); 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 // CharacterCustomization
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLightLight; this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.ClientSize = new System.Drawing.Size(499, 288); this.ClientSize = new System.Drawing.Size(477, 272);
this.Controls.Add(this.button43);
this.Controls.Add(this.tabControl1); this.Controls.Add(this.tabControl1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false; this.MaximizeBox = false;
this.Name = "CharacterCustomization"; this.Name = "CharacterCustomization";
this.Text = "Avatar"; this.Text = "Avatar Customization";
this.Closing += new System.ComponentModel.CancelEventHandler(this.CharacterCustomizationClose); this.Closing += new System.ComponentModel.CancelEventHandler(this.CharacterCustomizationClose);
this.Load += new System.EventHandler(this.CharacterCustomizationLoad); this.Load += new System.EventHandler(this.CharacterCustomizationLoad);
this.tabControl1.ResumeLayout(false); this.tabControl1.ResumeLayout(false);
@ -1238,10 +1330,26 @@ namespace NovetusLauncher
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit();
this.tabPage6.ResumeLayout(false); this.tabPage6.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit();
this.tabPage9.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).EndInit();
this.tabPage7.ResumeLayout(false); this.tabPage7.ResumeLayout(false);
this.tabPage7.PerformLayout(); this.tabPage7.PerformLayout();
this.tabControl2.ResumeLayout(false);
this.tabPage10.ResumeLayout(false);
this.tabPage11.ResumeLayout(false);
this.tabPage12.ResumeLayout(false);
this.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.TextBox textBox1;
private System.Windows.Forms.Label label6; private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7; private System.Windows.Forms.Label label7;
@ -1326,12 +1434,9 @@ namespace NovetusLauncher
private System.Windows.Forms.Button button41; private System.Windows.Forms.Button button41;
private System.Windows.Forms.Button button42; private System.Windows.Forms.Button button42;
private System.Windows.Forms.ListBox listBox3; private System.Windows.Forms.ListBox listBox3;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.PictureBox pictureBox3; private System.Windows.Forms.PictureBox pictureBox3;
private System.Windows.Forms.ListBox listBox1; private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.ListBox listBox2; 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 pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2; private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.TabPage tabPage2; private System.Windows.Forms.TabPage tabPage2;

View File

@ -26,23 +26,21 @@ namespace NovetusLauncher
{ {
private string SelectedPart = "Head"; private string SelectedPart = "Head";
private string[,] ColorArray; private string[,] ColorArray;
private bool StartedVIAURI = false; private string hatdir = GlobalVars.CustomPlayerDir + "\\hats";
private string hatdir = GlobalVars.BasePath + "\\charcustom\\hats"; private string facedir = GlobalVars.CustomPlayerDir + "\\faces";
private string facedir = GlobalVars.BasePath + "\\charcustom\\faces"; private string headdir = GlobalVars.CustomPlayerDir + "\\heads";
private string headdir = GlobalVars.BasePath + "\\charcustom\\heads"; private string tshirtdir = GlobalVars.CustomPlayerDir + "\\tshirts";
private string tshirtdir = GlobalVars.BasePath + "\\charcustom\\tshirts"; private string shirtdir = GlobalVars.CustomPlayerDir + "\\shirts";
private string shirtdir = GlobalVars.BasePath + "\\charcustom\\shirts"; private string pantsdir = GlobalVars.CustomPlayerDir + "\\pants";
private string pantsdir = GlobalVars.BasePath + "\\charcustom\\pants"; private string extradir = GlobalVars.CustomPlayerDir + "\\custom";
public CharacterCustomization(bool StartedURI = false) public CharacterCustomization()
{ {
// //
// The InitializeComponent() call is required for Windows Forms designer support. // The InitializeComponent() call is required for Windows Forms designer support.
// //
InitializeComponent(); InitializeComponent();
StartedVIAURI = StartedURI;
ColorArray = new string[32, 2] { ColorArray = new string[32, 2] {
{ "1", button7.BackColor.ToString() }, { "1", button7.BackColor.ToString() },
{ "208", button8.BackColor.ToString() }, { "208", button8.BackColor.ToString() },
@ -99,24 +97,21 @@ namespace NovetusLauncher
//charid //charid
textBox1.Text = GlobalVars.CharacterID; textBox1.Text = GlobalVars.CharacterID;
checkBox1.Checked = GlobalVars.Custom_Extra_ShowHats;
//discord //discord
if (StartedVIAURI == false) GlobalVars.presence.details = "Customizing " + GlobalVars.PlayerName;
{ GlobalVars.presence.state = "In Character Customization";
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Character Customization";
GlobalVars.presence.details = "Customizing " + GlobalVars.PlayerName; DiscordRpc.UpdatePresence(ref GlobalVars.presence);
GlobalVars.presence.state = "In Character Customization";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Character Customization";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
LauncherFuncs.ReloadLoadtextValue(); LauncherFuncs.ReloadLoadtextValue();
} }
void tabControl1_SelectedIndexChanged(object sender, EventArgs e) 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(); listBox1.Items.Clear();
listBox2.Items.Clear(); listBox2.Items.Clear();
@ -126,6 +121,7 @@ namespace NovetusLauncher
listBox6.Items.Clear(); listBox6.Items.Clear();
listBox7.Items.Clear(); listBox7.Items.Clear();
listBox8.Items.Clear(); listBox8.Items.Clear();
listBox9.Items.Clear();
} }
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname
{ {
@ -135,6 +131,7 @@ namespace NovetusLauncher
listBox6.Items.Clear(); listBox6.Items.Clear();
listBox7.Items.Clear(); listBox7.Items.Clear();
listBox8.Items.Clear(); listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(hatdir)) if (Directory.Exists(hatdir))
{ {
@ -147,11 +144,6 @@ namespace NovetusLauncher
continue; continue;
} }
if (file.Name.Equals("TeapotTurret.rbxm") && GlobalVars.AdminMode != true)
{
continue;
}
listBox1.Items.Add(file.Name); listBox1.Items.Add(file.Name);
listBox2.Items.Add(file.Name); listBox2.Items.Add(file.Name);
listBox3.Items.Add(file.Name); listBox3.Items.Add(file.Name);
@ -180,6 +172,7 @@ namespace NovetusLauncher
listBox6.Items.Clear(); listBox6.Items.Clear();
listBox7.Items.Clear(); listBox7.Items.Clear();
listBox8.Items.Clear(); listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(facedir)) if (Directory.Exists(facedir))
{ {
@ -210,6 +203,7 @@ namespace NovetusLauncher
listBox6.Items.Clear(); listBox6.Items.Clear();
listBox7.Items.Clear(); listBox7.Items.Clear();
listBox8.Items.Clear(); listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(tshirtdir)) if (Directory.Exists(tshirtdir))
{ {
@ -240,6 +234,7 @@ namespace NovetusLauncher
listBox5.Items.Clear(); listBox5.Items.Clear();
listBox7.Items.Clear(); listBox7.Items.Clear();
listBox8.Items.Clear(); listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(shirtdir)) if (Directory.Exists(shirtdir))
{ {
@ -270,6 +265,7 @@ namespace NovetusLauncher
listBox5.Items.Clear(); listBox5.Items.Clear();
listBox6.Items.Clear(); listBox6.Items.Clear();
listBox8.Items.Clear(); listBox8.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(pantsdir)) if (Directory.Exists(pantsdir))
{ {
@ -300,6 +296,7 @@ namespace NovetusLauncher
listBox5.Items.Clear(); listBox5.Items.Clear();
listBox6.Items.Clear(); listBox6.Items.Clear();
listBox7.Items.Clear(); listBox7.Items.Clear();
listBox9.Items.Clear();
if (Directory.Exists(headdir)) if (Directory.Exists(headdir))
{ {
@ -320,19 +317,80 @@ namespace NovetusLauncher
pictureBox8.Image = icon1; 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) void CharacterCustomizationClose(object sender, CancelEventArgs e)
{ {
if (StartedVIAURI == false) GlobalVars.presence.state = "In Launcher";
{ GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
GlobalVars.presence.state = "In Launcher"; DiscordRpc.UpdatePresence(ref GlobalVars.presence);
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
}
LauncherFuncs.ReloadLoadtextValue(); LauncherFuncs.ReloadLoadtextValue();
} }
@ -982,8 +1040,8 @@ namespace NovetusLauncher
{ {
LauncherFuncs.ReloadLoadtextValue(); LauncherFuncs.ReloadLoadtextValue();
string luafile = "rbxasset://scripts\\\\CSView.lua"; string luafile = "rbxasset://scripts\\\\CSView.lua";
string mapfile = GlobalVars.BasePath + "\\charcustom\\preview\\content\\fonts\\3DView.rbxl"; string mapfile = GlobalVars.ConfigDir + "\\preview\\content\\fonts\\3DView.rbxl";
string rbxexe = GlobalVars.BasePath + "\\charcustom\\preview\\3DView.exe"; string rbxexe = GlobalVars.ConfigDir + "\\preview\\3DView.exe";
string quote = "\""; string quote = "\"";
string args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CS3DView(0,'Player','" + GlobalVars.loadtext + ");" + quote; string args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CS3DView(0,'Player','" + GlobalVars.loadtext + ");" + quote;
try try
@ -1028,5 +1086,150 @@ namespace NovetusLauncher
{ {
GlobalVars.CharacterID = textBox1.Text; 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()) using (var ofd = new OpenFileDialog())
{ {
ofd.Filter = "Text files (*.txt)|*.txt"; ofd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
ofd.FilterIndex = 2; ofd.FilterIndex = 2;
ofd.FileName = "clientinfo.txt"; ofd.FileName = "clientinfo.nov";
ofd.Title = "Load clientinfo.txt"; ofd.Title = "Load clientinfo.nov";
if (ofd.ShowDialog() == DialogResult.OK) if (ofd.ShowDialog() == DialogResult.OK)
{ {
string line1; string line1;
@ -239,11 +239,8 @@ namespace NovetusLauncher
SelectedClientInfoPath = Path.GetDirectoryName(ofd.FileName); SelectedClientInfoPath = Path.GetDirectoryName(ofd.FileName);
line1 = reader.ReadLine(); line1 = reader.ReadLine();
} }
if (!SecurityFuncs.IsBase64String(line1))
return;
string ConvertedLine = SecurityFuncs.Base64Decode(line1); string ConvertedLine = SecurityFuncs.DecryptText(line1,"");
string[] result = ConvertedLine.Split('|'); string[] result = ConvertedLine.Split('|');
Decryptline1 = SecurityFuncs.Base64Decode(result[0]); Decryptline1 = SecurityFuncs.Base64Decode(result[0]);
Decryptline2 = SecurityFuncs.Base64Decode(result[1]); Decryptline2 = SecurityFuncs.Base64Decode(result[1]);
@ -321,11 +318,11 @@ namespace NovetusLauncher
{ {
using (var sfd = new SaveFileDialog()) using (var sfd = new SaveFileDialog())
{ {
sfd.Filter = "Text files (*.txt)|*.txt"; sfd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
sfd.FilterIndex = 2; sfd.FilterIndex = 2;
sfd.FileName = "clientinfo.txt"; sfd.FileName = "clientinfo.nov";
sfd.Title = "Save clientinfo.txt"; sfd.Title = "Save clientinfo.nov";
if (sfd.ShowDialog() == DialogResult.OK) if (sfd.ShowDialog() == DialogResult.OK)
{ {
string[] lines = { string[] lines = {
@ -341,7 +338,7 @@ namespace NovetusLauncher
SecurityFuncs.Base64Encode(AlreadyHasSecurity.ToString()), SecurityFuncs.Base64Encode(AlreadyHasSecurity.ToString()),
SecurityFuncs.Base64Encode(CustomArgs.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); SelectedClientInfoPath = Path.GetDirectoryName(sfd.FileName);
} }
} }
@ -354,7 +351,8 @@ namespace NovetusLauncher
void Button1Click(object sender, EventArgs e) 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) 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.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox(); 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(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// textBox1 // 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.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(212, 20); this.textBox1.Size = new System.Drawing.Size(229, 20);
this.textBox1.TabIndex = 0; this.textBox1.TabIndex = 0;
// //
// button1 // 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.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.TabIndex = 1;
this.button1.Text = "Create!"; this.button1.Text = "Create!";
this.button1.UseVisualStyleBackColor = true; this.button1.UseVisualStyleBackColor = true;
@ -67,21 +69,21 @@ namespace NovetusLauncher
// //
// textBox2 // 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.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(91, 20); this.textBox2.Size = new System.Drawing.Size(85, 20);
this.textBox2.TabIndex = 2; this.textBox2.TabIndex = 2;
// //
// numericUpDown1 // 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[] { this.numericUpDown1.Maximum = new decimal(new int[] {
3, 3,
0, 0,
0, 0,
0}); 0});
this.numericUpDown1.Name = "numericUpDown1"; 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; this.numericUpDown1.TabIndex = 3;
// //
// label1 // label1
@ -94,7 +96,7 @@ namespace NovetusLauncher
// //
// label2 // 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.Name = "label2";
this.label2.Size = new System.Drawing.Size(46, 14); this.label2.Size = new System.Drawing.Size(46, 14);
this.label2.TabIndex = 6; this.label2.TabIndex = 6;
@ -102,11 +104,12 @@ namespace NovetusLauncher
// //
// label3 // 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.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.TabIndex = 7;
this.label3.Text = "Item Version"; this.label3.Text = "Version";
this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
// //
// comboBox1 // comboBox1
// //
@ -115,18 +118,44 @@ namespace NovetusLauncher
this.comboBox1.Items.AddRange(new object[] { this.comboBox1.Items.AddRange(new object[] {
"http://www.roblox.com/", "http://www.roblox.com/",
"http://assetgame.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.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.TabIndex = 8;
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.ComboBox1SelectedIndexChanged); 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 // ItemMaker
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLightLight; this.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.ClientSize = new System.Drawing.Size(236, 152); 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.comboBox1);
this.Controls.Add(this.label3); this.Controls.Add(this.label3);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
@ -145,6 +174,8 @@ namespace NovetusLauncher
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
} }
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox comboBox2;
private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;

View File

@ -22,6 +22,7 @@ namespace NovetusLauncher
public partial class ItemMaker : Form public partial class ItemMaker : Form
{ {
private static string url = "http://www.roblox.com/asset?id="; private static string url = "http://www.roblox.com/asset?id=";
private static string type = ".rbxm";
public ItemMaker() public ItemMaker()
{ {
@ -43,10 +44,12 @@ namespace NovetusLauncher
using (WebClient wc = new WebClient()) 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) catch(Exception)
{ {
@ -56,11 +59,11 @@ namespace NovetusLauncher
void ComboBox1SelectedIndexChanged(object sender, EventArgs e) void ComboBox1SelectedIndexChanged(object sender, EventArgs e)
{ {
if (comboBox1.SelectedText == "http://www.roblox.com/") if (comboBox1.SelectedIndex == 0)
{ {
url = "http://www.roblox.com/asset?id="; 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="; url = "http://assetgame.roblox.com/asset/?id=";
} }
@ -68,7 +71,28 @@ namespace NovetusLauncher
void ItemMakerLoad(object sender, EventArgs e) 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) 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.DefaultClient = lines[1];
GlobalVars.DefaultMap = lines[2]; GlobalVars.DefaultMap = lines[2];
GlobalVars.SelectedClient = GlobalVars.DefaultClient; GlobalVars.SelectedClient = GlobalVars.DefaultClient;
@ -95,13 +95,20 @@ namespace NovetusLauncher
} }
try 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 else
{ {
@ -110,7 +117,7 @@ namespace NovetusLauncher
} }
else else
{ {
label1.Text = "The client has been detected as modified."; LaunchClient(rbxexe,args);
} }
} }
else else
@ -133,10 +140,8 @@ namespace NovetusLauncher
clientproc.Exited += new EventHandler(ClientExited); clientproc.Exited += new EventHandler(ClientExited);
clientproc.Start(); clientproc.Start();
SecurityFuncs.RenameWindow(clientproc, ScriptGenerator.ScriptType.Client); SecurityFuncs.RenameWindow(clientproc, ScriptGenerator.ScriptType.Client);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = ""; GlobalVars.presence.details = "";
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game"; GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); DiscordRpc.UpdatePresence(ref GlobalVars.presence);
this.Visible = false; this.Visible = false;
@ -144,10 +149,8 @@ namespace NovetusLauncher
void ClientExited(object sender, EventArgs e) void ClientExited(object sender, EventArgs e)
{ {
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.state = "In Launcher"; GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient; GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); DiscordRpc.UpdatePresence(ref GlobalVars.presence);
this.Close(); this.Close();
@ -168,16 +171,16 @@ namespace NovetusLauncher
void ReadConfigValues() void ReadConfigValues()
{ {
LauncherFuncs.ReadConfigValues(GlobalVars.BasePath + "\\config.txt"); LauncherFuncs.ReadConfigValues(GlobalVars.ConfigDir + "\\config.ini");
} }
void ReadClientValues(string ClientName) 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)) 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; 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.Threading;
using System.ComponentModel; using System.ComponentModel;
using System.Reflection; using System.Reflection;
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
using Mono.Nat;
namespace NovetusLauncher namespace NovetusLauncher
{ {
@ -24,9 +27,12 @@ namespace NovetusLauncher
public partial class MainForm : Form public partial class MainForm : Form
{ {
DiscordRpc.EventHandlers handlers; DiscordRpc.EventHandlers handlers;
private WaveOutEvent outputDevice;
private AudioFileReader audioFile;
public MainForm() public MainForm()
{ {
_fieldsTreeCache = new TreeView();
// //
// The InitializeComponent() call is required for Windows Forms designer support. // 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() public void ReadyCallback()
{ {
@ -83,20 +169,57 @@ namespace NovetusLauncher
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow(); GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); 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) void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname
{ {
string mapdir = GlobalVars.MapsDir; string mapdir = GlobalVars.MapsDir;
DirectoryInfo dinfo = new DirectoryInfo(mapdir); TreeNodeHelper.ListDirectory(treeView1, mapdir);
FileInfo[] Files = dinfo.GetFiles("*.rbxl"); TreeNodeHelper.CopyNodes(treeView1.Nodes,_fieldsTreeCache.Nodes);
foreach( FileInfo file in Files ) treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.Map, treeView1.Nodes);
{ treeView1.Focus();
listBox1.Items.Add(file.Name);
}
listBox1.SelectedItem = GlobalVars.Map;
listBox2.Items.Clear(); listBox2.Items.Clear();
listBox3.Items.Clear(); listBox3.Items.Clear();
listBox4.Items.Clear(); listBox4.Items.Clear();
@ -111,22 +234,25 @@ namespace NovetusLauncher
listBox2.Items.Add(dir.Name); listBox2.Items.Add(dir.Name);
} }
listBox2.SelectedItem = GlobalVars.SelectedClient; listBox2.SelectedItem = GlobalVars.SelectedClient;
listBox1.Items.Clear(); treeView1.Nodes.Clear();
_fieldsTreeCache.Nodes.Clear();
listBox3.Items.Clear(); listBox3.Items.Clear();
listBox4.Items.Clear(); listBox4.Items.Clear();
} }
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage6"])//your specific tabname else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage6"])//your specific tabname
{ {
string[] lines_server = File.ReadAllLines("servers.txt"); string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
string[] lines_ports = File.ReadAllLines("ports.txt"); string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox3.Items.AddRange(lines_server); listBox3.Items.AddRange(lines_server);
listBox4.Items.AddRange(lines_ports); listBox4.Items.AddRange(lines_ports);
listBox1.Items.Clear(); treeView1.Nodes.Clear();
_fieldsTreeCache.Nodes.Clear();
listBox2.Items.Clear(); listBox2.Items.Clear();
} }
else else
{ {
listBox1.Items.Clear(); treeView1.Nodes.Clear();
_fieldsTreeCache.Nodes.Clear();
listBox2.Items.Clear(); listBox2.Items.Clear();
listBox3.Items.Clear(); listBox3.Items.Clear();
listBox4.Items.Clear(); listBox4.Items.Clear();
@ -175,12 +301,13 @@ namespace NovetusLauncher
void MainFormLoad(object sender, EventArgs e) 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]; string version = lines[0];
GlobalVars.DefaultClient = lines[1]; GlobalVars.DefaultClient = lines[1];
GlobalVars.DefaultMap = lines[2]; GlobalVars.DefaultMap = lines[2];
GlobalVars.SelectedClient = GlobalVars.DefaultClient; GlobalVars.SelectedClient = GlobalVars.DefaultClient;
GlobalVars.Map = GlobalVars.DefaultMap; GlobalVars.Map = GlobalVars.DefaultMap;
this.Text = "Novetus " + version;
ConsolePrint("Novetus version " + version + " loaded. Initializing config.", 4); ConsolePrint("Novetus version " + version + " loaded. Initializing config.", 4);
if (File.Exists("changelog.txt")) if (File.Exists("changelog.txt"))
{ {
@ -190,44 +317,51 @@ namespace NovetusLauncher
{ {
ConsolePrint("ERROR 4 - changelog.txt not found.", 2); 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(); 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(); WriteCustomizationValues();
} }
if (!File.Exists("servers.txt")) if (!File.Exists(GlobalVars.ConfigDir + "\\servers.txt"))
{ {
ConsolePrint("WARNING 3 - servers.txt not found. Creating empty file.", 5); 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); 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; label5.Text = GlobalVars.BasePath;
label8.Text = Application.ProductVersion; label8.Text = Application.ProductVersion;
GlobalVars.important = SecurityFuncs.CalculateMD5(Assembly.GetExecutingAssembly().Location); GlobalVars.important = SecurityFuncs.CalculateMD5(Assembly.GetExecutingAssembly().Location);
label11.Text = version; label11.Text = version;
GlobalVars.Version = version; GlobalVars.Version = version;
label12.Text = SplashReader.GetSplash();
ReadConfigValues(); ReadConfigValues();
InitUPnP();
StartDiscord(); StartDiscord();
StartWebServer();
StartMusic();
} }
void MainFormClose(object sender, CancelEventArgs e) void MainFormClose(object sender, CancelEventArgs e)
{ {
WriteConfigValues(); WriteConfigValues();
DiscordRpc.Shutdown(); DiscordRpc.Shutdown();
GlobalVars.WebServer.Stop();
} }
void ReadConfigValues() void ReadConfigValues()
{ {
LauncherFuncs.ReadConfigValues(GlobalVars.BasePath + "\\config.txt"); LauncherFuncs.ReadConfigValues(GlobalVars.ConfigDir + "\\config.ini");
if (GlobalVars.CloseOnLaunch == true) if (GlobalVars.CloseOnLaunch == true)
{ {
@ -262,36 +396,38 @@ namespace NovetusLauncher
textBox2.Text = GlobalVars.PlayerName; textBox2.Text = GlobalVars.PlayerName;
label26.Text = GlobalVars.SelectedClient; label26.Text = GlobalVars.SelectedClient;
label28.Text = GlobalVars.Map; label28.Text = GlobalVars.Map;
listBox1.SelectedItem = GlobalVars.Map; treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.Map, treeView1.Nodes);
treeView1.Focus();
numericUpDown1.Value = Convert.ToDecimal(GlobalVars.RobloxPort); numericUpDown1.Value = Convert.ToDecimal(GlobalVars.RobloxPort);
numericUpDown2.Value = Convert.ToDecimal(GlobalVars.RobloxPort); numericUpDown2.Value = Convert.ToDecimal(GlobalVars.RobloxPort);
label37.Text = GlobalVars.IP; label37.Text = GlobalVars.IP;
label38.Text = GlobalVars.RobloxPort.ToString(); label38.Text = GlobalVars.RobloxPort.ToString();
checkBox2.Checked = GlobalVars.DisableTeapotTurret; checkBox2.Checked = GlobalVars.DisableTeapotTurret;
checkBox4.Checked = GlobalVars.UPnP;
ConsolePrint("Config loaded.", 3); ConsolePrint("Config loaded.", 3);
ReadClientValues(GlobalVars.SelectedClient); ReadClientValues(GlobalVars.SelectedClient);
} }
void WriteConfigValues() void WriteConfigValues()
{ {
LauncherFuncs.WriteConfigValues(GlobalVars.BasePath + "\\config.txt"); LauncherFuncs.WriteConfigValues(GlobalVars.ConfigDir + "\\config.ini");
ConsolePrint("Config Saved.", 3); ConsolePrint("Config Saved.", 3);
} }
void WriteCustomizationValues() void WriteCustomizationValues()
{ {
LauncherFuncs.WriteCustomizationValues("config_customization.txt"); LauncherFuncs.WriteCustomizationValues(GlobalVars.ConfigDir + "\\config_customization.ini");
ConsolePrint("Config Saved.", 3); ConsolePrint("Config Saved.", 3);
} }
void ReadClientValues(string ClientName) void ReadClientValues(string ClientName)
{ {
string clientpath = GlobalVars.ClientDir + @"\\" + ClientName + @"\\clientinfo.txt"; string clientpath = GlobalVars.ClientDir + @"\\" + ClientName + @"\\clientinfo.nov";
if (!File.Exists(clientpath)) 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); 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.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); 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; GlobalVars.SelectedClient = GlobalVars.DefaultClient;
} }
@ -352,12 +488,6 @@ namespace NovetusLauncher
label37.Text = GlobalVars.IP; 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) void CheckBox1CheckedChanged(object sender, EventArgs e)
{ {
if (checkBox1.Checked == true) if (checkBox1.Checked == true)
@ -390,6 +520,10 @@ namespace NovetusLauncher
{ {
GlobalVars.SelectedClient = listBox2.SelectedItem.ToString(); GlobalVars.SelectedClient = listBox2.SelectedItem.ToString();
ReadClientValues(GlobalVars.SelectedClient); 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) void CheckBox3CheckedChanged(object sender, EventArgs e)
@ -454,21 +588,21 @@ namespace NovetusLauncher
void Button10Click(object sender, EventArgs e) 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) 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) void Button12Click(object sender, EventArgs e)
{ {
if (listBox3.SelectedIndex >= 0) 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(); listBox3.Items.Clear();
string[] lines_server = File.ReadAllLines("servers.txt"); string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
listBox3.Items.AddRange(lines_server); listBox3.Items.AddRange(lines_server);
} }
} }
@ -477,42 +611,42 @@ namespace NovetusLauncher
{ {
if (listBox4.SelectedIndex >= 0) 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(); listBox4.Items.Clear();
string[] lines_ports = File.ReadAllLines("ports.txt"); string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox4.Items.AddRange(lines_ports); listBox4.Items.AddRange(lines_ports);
} }
} }
void Button14Click(object sender, EventArgs e) void Button14Click(object sender, EventArgs e)
{ {
File.Create("servers.txt").Dispose(); File.Create(GlobalVars.ConfigDir + "\\servers.txt").Dispose();
listBox3.Items.Clear(); listBox3.Items.Clear();
string[] lines_server = File.ReadAllLines("servers.txt"); string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
listBox3.Items.AddRange(lines_server); listBox3.Items.AddRange(lines_server);
} }
void Button15Click(object sender, EventArgs e) void Button15Click(object sender, EventArgs e)
{ {
File.Create("ports.txt").Dispose(); File.Create(GlobalVars.ConfigDir + "\\ports.txt").Dispose();
listBox4.Items.Clear(); listBox4.Items.Clear();
string[] lines_ports = File.ReadAllLines("ports.txt"); string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox4.Items.AddRange(lines_ports); listBox4.Items.AddRange(lines_ports);
} }
void Button16Click(object sender, EventArgs e) 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(); listBox3.Items.Clear();
string[] lines_server = File.ReadAllLines("servers.txt"); string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
listBox3.Items.AddRange(lines_server); listBox3.Items.AddRange(lines_server);
} }
void Button17Click(object sender, EventArgs e) 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(); listBox4.Items.Clear();
string[] lines_ports = File.ReadAllLines("ports.txt"); string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
listBox4.Items.AddRange(lines_ports); listBox4.Items.AddRange(lines_ports);
} }
@ -565,9 +699,7 @@ namespace NovetusLauncher
{ {
switch(e.KeyCode) switch(e.KeyCode)
{ {
case Keys.C:
case Keys.X: case Keys.X:
case Keys.V:
case Keys.Z: case Keys.Z:
e.Handled = true; e.Handled = true;
break; break;
@ -654,14 +786,31 @@ namespace NovetusLauncher
try try
{ {
ConsolePrint("Client Loaded.", 4); 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 else
@ -686,20 +835,16 @@ namespace NovetusLauncher
client.Exited += new EventHandler(ClientExited); client.Exited += new EventHandler(ClientExited);
client.Start(); client.Start();
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Client); SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Client);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = ""; GlobalVars.presence.details = "";
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game"; GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); DiscordRpc.UpdatePresence(ref GlobalVars.presence);
} }
void ClientExited(object sender, EventArgs e) void ClientExited(object sender, EventArgs e)
{ {
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.state = "In Launcher"; GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient; GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); DiscordRpc.UpdatePresence(ref GlobalVars.presence);
if (GlobalVars.CloseOnLaunch == true) if (GlobalVars.CloseOnLaunch == true)
@ -719,7 +864,7 @@ namespace NovetusLauncher
{ {
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua"; 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 = ""; string rbxexe = "";
if (GlobalVars.LegacyMode == true) if (GlobalVars.LegacyMode == true)
{ {
@ -758,10 +903,8 @@ namespace NovetusLauncher
client.Exited += new EventHandler(StudioExited); client.Exited += new EventHandler(StudioExited);
client.Start(); client.Start();
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Solo); SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Solo);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = GlobalVars.Map; GlobalVars.presence.details = GlobalVars.Map;
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Solo Game"; GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Solo Game";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Solo Game"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Solo Game";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); DiscordRpc.UpdatePresence(ref GlobalVars.presence);
} }
@ -783,7 +926,7 @@ namespace NovetusLauncher
{ {
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua"; 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 = ""; string rbxexe = "";
if (GlobalVars.LegacyMode == true) if (GlobalVars.LegacyMode == true)
{ {
@ -857,7 +1000,7 @@ namespace NovetusLauncher
{ {
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua"; 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 = ""; string rbxexe = "";
if (GlobalVars.LegacyMode == true) if (GlobalVars.LegacyMode == true)
{ {
@ -896,10 +1039,8 @@ namespace NovetusLauncher
client.Exited += new EventHandler(StudioExited); client.Exited += new EventHandler(StudioExited);
client.Start(); client.Start();
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Studio); SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Studio);
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.details = GlobalVars.Map; GlobalVars.presence.details = GlobalVars.Map;
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Studio"; GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Studio";
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Studio"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Studio";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); DiscordRpc.UpdatePresence(ref GlobalVars.presence);
} }
@ -912,10 +1053,8 @@ namespace NovetusLauncher
void StudioExited(object sender, EventArgs e) void StudioExited(object sender, EventArgs e)
{ {
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
GlobalVars.presence.state = "In Launcher"; GlobalVars.presence.state = "In Launcher";
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient; GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher"; GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
DiscordRpc.UpdatePresence(ref GlobalVars.presence); DiscordRpc.UpdatePresence(ref GlobalVars.presence);
if (GlobalVars.CloseOnLaunch == true) if (GlobalVars.CloseOnLaunch == true)
@ -926,87 +1065,105 @@ namespace NovetusLauncher
void ConsoleProcessCommands(string command) void ConsoleProcessCommands(string command)
{ {
if (command.Equals("server")) if (string.Compare(command,"server",true) == 0)
{ {
StartServer(false); StartServer(false);
} }
else if (command.Equals("server no3d")) else if (string.Compare(command,"server no3d",true) == 0)
{ {
StartServer(true); StartServer(true);
} }
else if (command.Equals("no3d")) else if (string.Compare(command,"no3d",true) == 0)
{ {
StartServer(true); StartServer(true);
} }
else if (command.Equals("client")) else if (string.Compare(command,"client",true) == 0)
{ {
StartClient(); StartClient();
} }
else if (command.Equals("client solo")) else if (string.Compare(command,"client solo",true) == 0)
{ {
StartSolo(); StartSolo();
} }
else if (command.Equals("solo")) else if (string.Compare(command,"solo",true) == 0)
{ {
StartSolo(); StartSolo();
} }
else if (command.Equals("studio")) else if (string.Compare(command,"studio",true) == 0)
{ {
StartStudio(); StartStudio();
} }
else if (command.Equals("config save")) else if (string.Compare(command,"config save",true) == 0)
{ {
WriteConfigValues(); WriteConfigValues();
} }
else if (command.Equals("config load")) else if (string.Compare(command,"config load",true) == 0)
{ {
ReadConfigValues(); ReadConfigValues();
} }
else if (command.Equals("config reset")) else if (string.Compare(command,"config reset",true) == 0)
{ {
ResetConfigValues(); ResetConfigValues();
} }
else if (command.Equals("help")) else if (string.Compare(command,"help",true) == 0)
{ {
ConsoleHelp(0); ConsoleHelp(0);
} }
else if (command.Equals("help config")) else if (string.Compare(command,"help config",true) == 0)
{ {
ConsoleHelp(1); ConsoleHelp(1);
} }
else if (command.Equals("config")) else if (string.Compare(command,"config",true) == 0)
{ {
ConsoleHelp(1); ConsoleHelp(1);
} }
else if (command.Equals("help sdk")) else if (string.Compare(command,"help sdk",true) == 0)
{ {
ConsoleHelp(2); ConsoleHelp(2);
} }
else if (command.Equals("sdk")) else if (string.Compare(command,"sdk",true) == 0)
{ {
ConsoleHelp(2); ConsoleHelp(2);
} }
else if (command.Equals("sdk clientinfo")) else if (string.Compare(command,"sdk clientinfo",true) == 0)
{ {
ClientinfoEditor cie = new ClientinfoEditor(); LoadClientSDK();
cie.Show();
} }
else if (command.Equals("sdk itemmaker")) else if (string.Compare(command,"sdk itemmaker",true) == 0)
{ {
ItemMaker im = new ItemMaker(); LoadItemSDK();
im.Show();
} }
else if (command.Equals("clientinfo")) else if (string.Compare(command,"clientinfo",true) == 0)
{ {
ClientinfoEditor cie = new ClientinfoEditor(); LoadClientSDK();
cie.Show();
} }
else if (command.Equals("itemmaker")) else if (string.Compare(command,"itemmaker",true) == 0)
{ {
ItemMaker im = new ItemMaker(); LoadItemSDK();
im.Show();
} }
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; GlobalVars.AdminMode = true;
ConsolePrint("ADMIN MODE ENABLED.", 4); ConsolePrint("ADMIN MODE ENABLED.", 4);
@ -1015,8 +1172,21 @@ namespace NovetusLauncher
else else
{ {
ConsolePrint("ERROR 3 - Command is either not registered or valid", 2); 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) void ConsoleHelp(int page)
@ -1109,7 +1279,7 @@ namespace NovetusLauncher
void Button23Click(object sender, EventArgs e) 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) void Button22Click(object sender, EventArgs e)
@ -1130,5 +1300,84 @@ namespace NovetusLauncher
GlobalVars.DisableTeapotTurret = false; 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> <BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <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" />
<Reference Include="System.Core"> <Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework> <RequiredTargetFramework>3.5</RequiredTargetFramework>
@ -68,6 +74,10 @@
<Compile Include="ClientinfoCreator.Designer.cs"> <Compile Include="ClientinfoCreator.Designer.cs">
<DependentUpon>ClientinfoCreator.cs</DependentUpon> <DependentUpon>ClientinfoCreator.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ClientScriptDocumentation.cs" />
<Compile Include="ClientScriptDocumentation.Designer.cs">
<DependentUpon>ClientScriptDocumentation.cs</DependentUpon>
</Compile>
<Compile Include="ItemMaker.cs" /> <Compile Include="ItemMaker.cs" />
<Compile Include="ItemMaker.Designer.cs"> <Compile Include="ItemMaker.Designer.cs">
<DependentUpon>ItemMaker.cs</DependentUpon> <DependentUpon>ItemMaker.cs</DependentUpon>
@ -99,6 +109,9 @@
<EmbeddedResource Include="ClientinfoCreator.resx"> <EmbeddedResource Include="ClientinfoCreator.resx">
<DependentUpon>ClientinfoCreator.cs</DependentUpon> <DependentUpon>ClientinfoCreator.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ClientScriptDocumentation.resx">
<DependentUpon>ClientScriptDocumentation.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ItemMaker.resx"> <EmbeddedResource Include="ItemMaker.resx">
<DependentUpon>ItemMaker.cs</DependentUpon> <DependentUpon>ItemMaker.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -117,6 +130,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />
<None Include="packages.config" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>

View File

@ -39,7 +39,27 @@ namespace NovetusLauncher
{ {
GlobalVars.SharedArgs = ProcessInput(s); 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.Name = "button2";
this.button2.Size = new System.Drawing.Size(260, 23); this.button2.Size = new System.Drawing.Size(260, 23);
this.button2.TabIndex = 5; this.button2.TabIndex = 5;
this.button2.Text = "Launch"; this.button2.Text = "Close";
this.button2.UseVisualStyleBackColor = true; this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.Button2Click); this.button2.Click += new System.EventHandler(this.Button2Click);
// //
@ -128,6 +128,7 @@ namespace NovetusLauncher
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "QuickConfigure"; this.Name = "QuickConfigure";
this.Closing += new System.ComponentModel.CancelEventHandler(this.QuickConfigureClose);
this.Load += new System.EventHandler(this.QuickConfigureLoad); this.Load += new System.EventHandler(this.QuickConfigureLoad);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();

View File

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

View File

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

View File

@ -51,7 +51,7 @@ namespace NovetusLauncher
this.textBox1.Multiline = true; this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1"; this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true; 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; this.textBox1.TabIndex = 0;
// //
// ServerInfo // ServerInfo
@ -60,8 +60,9 @@ namespace NovetusLauncher
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true; this.AutoScroll = true;
this.BackColor = System.Drawing.SystemColors.ControlLightLight; 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.Controls.Add(this.textBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(520, 300); this.MinimumSize = new System.Drawing.Size(520, 300);

View File

@ -34,7 +34,8 @@ namespace NovetusLauncher
{ {
textBox1.AppendText("Client: " + GlobalVars.SelectedClient); textBox1.AppendText("Client: " + GlobalVars.SelectedClient);
textBox1.AppendText(Environment.NewLine); textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("IP: " + GetExternalIPAddress()); string IP = GetExternalIPAddress();
textBox1.AppendText("IP: " + IP);
textBox1.AppendText("Port: " + GlobalVars.RobloxPort.ToString()); textBox1.AppendText("Port: " + GlobalVars.RobloxPort.ToString());
textBox1.AppendText(Environment.NewLine); textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Map: " + GlobalVars.Map); textBox1.AppendText("Map: " + GlobalVars.Map);
@ -43,7 +44,6 @@ namespace NovetusLauncher
textBox1.AppendText(Environment.NewLine); textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Version: Novetus " + GlobalVars.Version); textBox1.AppendText("Version: Novetus " + GlobalVars.Version);
textBox1.AppendText(Environment.NewLine); textBox1.AppendText(Environment.NewLine);
textBox1.AppendText(Environment.NewLine);
string[] lines = { string[] lines = {
SecurityFuncs.Base64Encode(GetExternalIPAddress()), SecurityFuncs.Base64Encode(GetExternalIPAddress()),
SecurityFuncs.Base64Encode(GlobalVars.RobloxPort.ToString()), SecurityFuncs.Base64Encode(GlobalVars.RobloxPort.ToString()),
@ -60,9 +60,18 @@ namespace NovetusLauncher
SecurityFuncs.Base64Encode(GlobalVars.SelectedClient) SecurityFuncs.Base64Encode(GlobalVars.SelectedClient)
}; };
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|",lines2)); string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|",lines2));
textBox1.AppendText(Environment.NewLine);
textBox1.AppendText("Local URI Link:"); textBox1.AppendText("Local URI Link:");
textBox1.AppendText(Environment.NewLine); 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() 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] [Tasks]
Name: "desktopicon"; Description: "Create a icon on your Desktop"; GroupDescription: "Icons" 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] [Files]
Source: "Novetus\NovetusLauncher.exe"; DestDir: "{app}"; Flags: ignoreversion 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\clients\*"; DestDir: "{app}\clients"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "Novetus\maps\*"; DestDir: "{app}\maps"; 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\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] [Icons]
Name: "{group}"; Filename: "{app}\NovetusLauncher.exe" Name: "{group}\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"
Name: "{group}"; Filename: "{uninstallexe}" 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: "{commondesktop}\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"; Tasks: quicklaunchicon Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"; Tasks: quicklaunchicon
[Run] [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}\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 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 return returnable
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 LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret) function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
if (playerApp==nil) then PlayerService = game:GetService("Players")
local message = Instance.new("Message") Player = PlayerService:GetPlayerFromCharacter(newChar)
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player local function kick()
wait(2) KickPlayer(Player, "Modified Client")
Player:remove() end
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
else if (not Player:FindFirstChild("Appearance")) then
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then kick()
local message = Instance.new("Message") end
message.Text = "You were kicked. Reason: Modified Client"
message.Parent = Player if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
wait(2) kick()
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
end
end 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")} 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
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) local newCharApp = Instance.new("IntValue",Player)
newCharApp.Name = "Appearance" newCharApp.Name = "Appearance"
--BODY COLORS --BODY COLORS
@ -58,42 +64,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "HeadColor" BodyColor.Name = "Head Color"
elseif (i == 2) then elseif (i == 2) then
if (TorsoColorID ~= nil) then if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID) BodyColor.Value = BrickColor.new(TorsoColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "TorsoColor" BodyColor.Name = "Torso Color"
elseif (i == 3) then elseif (i == 3) then
if (LeftArmColorID ~= nil) then if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID) BodyColor.Value = BrickColor.new(LeftArmColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "LeftArmColor" BodyColor.Name = "Left Arm Color"
elseif (i == 4) then elseif (i == 4) then
if (RightArmColorID ~= nil) then if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID) BodyColor.Value = BrickColor.new(RightArmColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "RightArmColor" BodyColor.Name = "Right Arm Color"
elseif (i == 5) then elseif (i == 5) then
if (LeftLegColorID ~= nil) then if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID) BodyColor.Value = BrickColor.new(LeftLegColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "LeftLegColor" BodyColor.Name = "Left Leg Color"
elseif (i == 6) then elseif (i == 6) then
if (RightLegColorID ~= nil) then if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID) BodyColor.Value = BrickColor.new(RightLegColorID)
else else
BodyColor.Value = BrickColor.new(1) BodyColor.Value = BrickColor.new(1)
end end
BodyColor.Name = "RightLegColor" BodyColor.Name = "Right Leg Color"
end end
local indexValue = Instance.new("NumberValue") local indexValue = Instance.new("NumberValue")
indexValue.Name = "ColorIndex" indexValue.Name = "ColorIndex"
@ -106,46 +112,38 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
end end
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) function LoadSecurity(playerApp,Player,ServerSecurityLocation)
local function kick() local function kick()
KickPlayer(Player, "Modified Client") KickPlayer(Player, "Modified Client")
end end
if (playerApp==nil) then if (not Player:FindFirstChild("Security")) then
kick() kick()
return
end end
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
kick() kick()
return
end end
for _,newVal in pairs(playerApp:GetChildren()) do for _,newVal in pairs(playerApp:GetChildren()) do
if (newVal.Name == "ClientEXEMD5") then 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() kick()
break
end end
end end
if (newVal.Name == "LauncherMD5") then 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() kick()
break
end end
end end
if (newVal.Name == "ClientScriptMD5") then 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() kick()
break
end end
end end
end end
@ -196,24 +194,22 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added") print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
Player:LoadCharacter() Player:LoadCharacter()
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting) LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
local ch = Player.Character if (Player.Character ~= nil) then
if (ch ~= nil) then LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
end end
end end
while true do while true do
wait(0.001) wait(0.001)
local ch = Player.Character if (Player.Character ~= nil) then
if (ch ~= nil) then if (Player.Character.Humanoid.Health == 0) then
if (ch.Humanoid.Health == 0) then
wait(5) wait(5)
Player:LoadCharacter() Player:LoadCharacter()
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret) LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
elseif (ch.Parent == nil) then elseif (Player.Character.Parent == nil) then
wait(5) wait(5)
Player:LoadCharacter() -- to make sure nobody is deleted. Player:LoadCharacter() -- to make sure nobody is deleted.
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret) LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
end end
end end
end end
@ -227,7 +223,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
Server.IncommingConnection:connect(IncommingConnection) Server.IncommingConnection:connect(IncommingConnection)
end 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() local suc, err = pcall(function()
client = game:GetService("NetworkClient") client = game:GetService("NetworkClient")
player = game:GetService("Players"):CreateLocalPlayer(UserID) player = game:GetService("Players"):CreateLocalPlayer(UserID)
@ -238,7 +234,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
player.CharacterAppearance=0 player.CharacterAppearance=0
pcall(function() player.Name=PlayerName or "" end) pcall(function() player.Name=PlayerName or "" end)
game:GetService("Visit") 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) InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
end) end)
@ -303,14 +299,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end end
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) local plr = game.Players:CreateLocalPlayer(UserID)
game:GetService("RunService"):run() game:GetService("RunService"):run()
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm") game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
plr.Name = PlayerName plr.Name = PlayerName
plr:LoadCharacter() plr:LoadCharacter()
plr.CharacterAppearance=0 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) LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
game:GetService("Visit") game:GetService("Visit")
while true do wait() while true do wait()

View File

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

View File

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

View File

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

View File

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

View File

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