1.0 RC1 & RC2
105
CSView.lua
@ -10,6 +10,8 @@ function newWaitForChild(newParent,name)
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar)
|
||||
local path = "rbxasset://../../../shareddata/charcustom/"
|
||||
|
||||
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
local customtype = newVal.CustomizationType.Value
|
||||
@ -19,7 +21,7 @@ function LoadCharacterNew(playerApp,newChar)
|
||||
end)
|
||||
elseif (customtype == 2) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
newHat[1].Parent = newChar
|
||||
@ -30,7 +32,7 @@ function LoadCharacterNew(playerApp,newChar)
|
||||
end)
|
||||
elseif (customtype == 3) then
|
||||
pcall(function()
|
||||
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
|
||||
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newTShirt[1].Parent = newChar
|
||||
@ -41,7 +43,7 @@ function LoadCharacterNew(playerApp,newChar)
|
||||
end)
|
||||
elseif (customtype == 4) then
|
||||
pcall(function()
|
||||
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
|
||||
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
|
||||
if newShirt[1] then
|
||||
if newShirt[1].className == "Shirt" then
|
||||
newShirt[1].Parent = newChar
|
||||
@ -52,7 +54,7 @@ function LoadCharacterNew(playerApp,newChar)
|
||||
end)
|
||||
elseif (customtype == 5) then
|
||||
pcall(function()
|
||||
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
|
||||
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
|
||||
if newPants[1] then
|
||||
if newPants[1].className == "Pants" then
|
||||
newPants[1].Parent = newChar
|
||||
@ -63,7 +65,7 @@ function LoadCharacterNew(playerApp,newChar)
|
||||
end)
|
||||
elseif (customtype == 6) then
|
||||
pcall(function()
|
||||
local newFace = game.Workspace:InsertContent("rbxasset://../../../charcustom/faces/"..newVal.Value)
|
||||
local newFace = game.Workspace:InsertContent(path.."faces/"..newVal.Value)
|
||||
if newFace[1] then
|
||||
if newFace[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
@ -76,7 +78,7 @@ function LoadCharacterNew(playerApp,newChar)
|
||||
end)
|
||||
elseif (customtype == 7) then
|
||||
pcall(function()
|
||||
local newPart = game.Workspace:InsertContent("rbxasset://../../../charcustom/heads/"..newVal.Value)
|
||||
local newPart = game.Workspace:InsertContent(path.."heads/"..newVal.Value)
|
||||
if newPart[1] then
|
||||
if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
@ -86,11 +88,38 @@ function LoadCharacterNew(playerApp,newChar)
|
||||
end
|
||||
end
|
||||
end)
|
||||
elseif (customtype == 8) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
pcall(function()
|
||||
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
|
||||
if newItem[1] then
|
||||
if newItem[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
newItem[1].Face = "Front"
|
||||
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
else
|
||||
newItem[1].Parent = newChar
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
local newCharApp = Instance.new("IntValue",Player)
|
||||
newCharApp.Name = "Appearance"
|
||||
--BODY COLORS
|
||||
@ -102,42 +131,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "HeadColor"
|
||||
BodyColor.Name = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "TorsoColor"
|
||||
BodyColor.Name = "Torso Color"
|
||||
elseif (i == 3) then
|
||||
if (LeftArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftArmColor"
|
||||
BodyColor.Name = "Left Arm Color"
|
||||
elseif (i == 4) then
|
||||
if (RightArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightArmColor"
|
||||
BodyColor.Name = "Right Arm Color"
|
||||
elseif (i == 5) then
|
||||
if (LeftLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftLegColor"
|
||||
BodyColor.Name = "Left Leg Color"
|
||||
elseif (i == 6) then
|
||||
if (RightLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightLegColor"
|
||||
BodyColor.Name = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
@ -154,26 +183,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
if (i == 1) then
|
||||
if (Hat1ID ~= nil) then
|
||||
newHat.Value = Hat1ID
|
||||
newHat.Name = Hat1ID
|
||||
newHat.Name = "Hat 1 - "..Hat1ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 1 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 2) then
|
||||
if (Hat2ID ~= nil) then
|
||||
newHat.Value = Hat2ID
|
||||
newHat.Name = Hat2ID
|
||||
newHat.Name = "Hat 2 - "..Hat2ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 2 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 3) then
|
||||
if (Hat3ID ~= nil) then
|
||||
newHat.Value = Hat3ID
|
||||
newHat.Name = Hat3ID
|
||||
newHat.Name = "Hat 3 - "..Hat3ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 3 - NoHat.rbxm"
|
||||
end
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
@ -185,10 +214,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newTShirt = Instance.new("StringValue",newCharApp)
|
||||
if (TShirtID ~= nil) then
|
||||
newTShirt.Value = TShirtID
|
||||
newTShirt.Name = TShirtID
|
||||
newTShirt.Name = "T-Shirt - "..TShirtID
|
||||
else
|
||||
newTShirt.Value = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -198,10 +227,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newShirt = Instance.new("StringValue",newCharApp)
|
||||
if (ShirtID ~= nil) then
|
||||
newShirt.Value = ShirtID
|
||||
newShirt.Name = ShirtID
|
||||
newShirt.Name = "Shirt - "..ShirtID
|
||||
else
|
||||
newShirt.Value = "NoShirt.rbxm"
|
||||
newShirt.Name = "NoShirt.rbxm"
|
||||
newShirt.Name = "Shirt - NoShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -211,10 +240,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newPants = Instance.new("StringValue",newCharApp)
|
||||
if (PantsID ~= nil) then
|
||||
newPants.Value = PantsID
|
||||
newPants.Name = PantsID
|
||||
newPants.Name = "Pants - "..PantsID
|
||||
else
|
||||
newPants.Value = "NoPants.rbxm"
|
||||
newPants.Name = "NoPants.rbxm"
|
||||
newPants.Name = "Pants - NoPants.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -224,10 +253,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newFace = Instance.new("StringValue",newCharApp)
|
||||
if (FaceID ~= nil) then
|
||||
newFace.Value = FaceID
|
||||
newFace.Name = FaceID
|
||||
newFace.Name = "Face - "..FaceID
|
||||
else
|
||||
newFace.Value = "DefaultFace.rbxm"
|
||||
newFace.Name = "DefaultFace.rbxm"
|
||||
newFace.Name = "Face - DefaultFace.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -237,20 +266,33 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newHead = Instance.new("StringValue",newCharApp)
|
||||
if (HeadID ~= nil) then
|
||||
newHead.Value = HeadID
|
||||
newHead.Name = HeadID
|
||||
newHead.Name = "Head - "..HeadID
|
||||
else
|
||||
newHead.Value = "DefaultHead.rbxm"
|
||||
newHead.Name = "DefaultHead.rbxm"
|
||||
newHead.Name = "Head - DefaultHead.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newHead
|
||||
typeValue.Value = 7
|
||||
--EXTRA
|
||||
local newItem = Instance.new("StringValue",newCharApp)
|
||||
if (ItemID ~= nil) then
|
||||
newItem.Value = ItemID
|
||||
newItem.Name = "Extra - "..ItemID
|
||||
else
|
||||
newItem.Value = "NoExtra.rbxm"
|
||||
newItem.Name = "Extra - NoExtra.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newItem
|
||||
typeValue.Value = 8
|
||||
end
|
||||
|
||||
print("3DView loaded. Nerd.")
|
||||
|
||||
function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
settings().Rendering.FrameRateManager = 2
|
||||
game:GetService("RunService"):run()
|
||||
game:GetService("NetworkServer")
|
||||
@ -297,7 +339,8 @@ function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorI
|
||||
human.WalkSpeed = 0
|
||||
human.Jumping:connect(fixJump)
|
||||
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
wait(0.65)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character)
|
||||
wait(1)
|
||||
game:GetService("NetworkClient")
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -87,12 +87,9 @@ namespace NovetusLauncher
|
||||
this.button42 = new System.Windows.Forms.Button();
|
||||
this.button41 = new System.Windows.Forms.Button();
|
||||
this.pictureBox3 = new System.Windows.Forms.PictureBox();
|
||||
this.label17 = new System.Windows.Forms.Label();
|
||||
this.listBox3 = new System.Windows.Forms.ListBox();
|
||||
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.listBox2 = new System.Windows.Forms.ListBox();
|
||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
||||
this.tabPage8 = new System.Windows.Forms.TabPage();
|
||||
@ -120,7 +117,14 @@ namespace NovetusLauncher
|
||||
this.button51 = new System.Windows.Forms.Button();
|
||||
this.pictureBox7 = new System.Windows.Forms.PictureBox();
|
||||
this.listBox7 = new System.Windows.Forms.ListBox();
|
||||
this.tabPage9 = new System.Windows.Forms.TabPage();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.button58 = new System.Windows.Forms.Button();
|
||||
this.button59 = new System.Windows.Forms.Button();
|
||||
this.pictureBox9 = new System.Windows.Forms.PictureBox();
|
||||
this.listBox9 = new System.Windows.Forms.ListBox();
|
||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||
this.button43 = new System.Windows.Forms.Button();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
@ -131,7 +135,10 @@ namespace NovetusLauncher
|
||||
this.button54 = new System.Windows.Forms.Button();
|
||||
this.button53 = new System.Windows.Forms.Button();
|
||||
this.button52 = new System.Windows.Forms.Button();
|
||||
this.button43 = new System.Windows.Forms.Button();
|
||||
this.tabControl2 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage10 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage11 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage12 = new System.Windows.Forms.TabPage();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
@ -150,7 +157,13 @@ namespace NovetusLauncher
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).BeginInit();
|
||||
this.tabPage6.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit();
|
||||
this.tabPage9.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).BeginInit();
|
||||
this.tabPage7.SuspendLayout();
|
||||
this.tabControl2.SuspendLayout();
|
||||
this.tabPage10.SuspendLayout();
|
||||
this.tabPage11.SuspendLayout();
|
||||
this.tabPage12.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tabControl1
|
||||
@ -162,8 +175,10 @@ namespace NovetusLauncher
|
||||
this.tabControl1.Controls.Add(this.tabPage4);
|
||||
this.tabControl1.Controls.Add(this.tabPage5);
|
||||
this.tabControl1.Controls.Add(this.tabPage6);
|
||||
this.tabControl1.Controls.Add(this.tabPage9);
|
||||
this.tabControl1.Controls.Add(this.tabPage7);
|
||||
this.tabControl1.Location = new System.Drawing.Point(12, 12);
|
||||
this.tabControl1.Location = new System.Drawing.Point(1, 3);
|
||||
this.tabControl1.Multiline = true;
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(475, 267);
|
||||
@ -698,17 +713,9 @@ namespace NovetusLauncher
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.tabControl2);
|
||||
this.tabPage2.Controls.Add(this.button42);
|
||||
this.tabPage2.Controls.Add(this.button41);
|
||||
this.tabPage2.Controls.Add(this.pictureBox3);
|
||||
this.tabPage2.Controls.Add(this.label17);
|
||||
this.tabPage2.Controls.Add(this.listBox3);
|
||||
this.tabPage2.Controls.Add(this.pictureBox2);
|
||||
this.tabPage2.Controls.Add(this.pictureBox1);
|
||||
this.tabPage2.Controls.Add(this.label16);
|
||||
this.tabPage2.Controls.Add(this.label12);
|
||||
this.tabPage2.Controls.Add(this.listBox2);
|
||||
this.tabPage2.Controls.Add(this.listBox1);
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
@ -723,7 +730,7 @@ namespace NovetusLauncher
|
||||
this.button42.Name = "button42";
|
||||
this.button42.Size = new System.Drawing.Size(219, 42);
|
||||
this.button42.TabIndex = 56;
|
||||
this.button42.Text = "Reset";
|
||||
this.button42.Text = "Reset all 3";
|
||||
this.button42.UseVisualStyleBackColor = true;
|
||||
this.button42.Click += new System.EventHandler(this.Button42Click);
|
||||
//
|
||||
@ -733,85 +740,61 @@ namespace NovetusLauncher
|
||||
this.button41.Name = "button41";
|
||||
this.button41.Size = new System.Drawing.Size(219, 42);
|
||||
this.button41.TabIndex = 55;
|
||||
this.button41.Text = "Randomize";
|
||||
this.button41.Text = "Randomize all 3";
|
||||
this.button41.UseVisualStyleBackColor = true;
|
||||
this.button41.Click += new System.EventHandler(this.Button41Click);
|
||||
//
|
||||
// pictureBox3
|
||||
//
|
||||
this.pictureBox3.Location = new System.Drawing.Point(346, 19);
|
||||
this.pictureBox3.Location = new System.Drawing.Point(238, 3);
|
||||
this.pictureBox3.Name = "pictureBox3";
|
||||
this.pictureBox3.Size = new System.Drawing.Size(88, 80);
|
||||
this.pictureBox3.Size = new System.Drawing.Size(218, 160);
|
||||
this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox3.TabIndex = 54;
|
||||
this.pictureBox3.TabStop = false;
|
||||
//
|
||||
// label17
|
||||
//
|
||||
this.label17.Location = new System.Drawing.Point(371, 3);
|
||||
this.label17.Name = "label17";
|
||||
this.label17.Size = new System.Drawing.Size(35, 14);
|
||||
this.label17.TabIndex = 53;
|
||||
this.label17.Text = "Hat 3";
|
||||
//
|
||||
// listBox3
|
||||
//
|
||||
this.listBox3.FormattingEnabled = true;
|
||||
this.listBox3.Location = new System.Drawing.Point(318, 105);
|
||||
this.listBox3.Location = new System.Drawing.Point(2, 3);
|
||||
this.listBox3.Name = "listBox3";
|
||||
this.listBox3.Size = new System.Drawing.Size(143, 82);
|
||||
this.listBox3.Size = new System.Drawing.Size(219, 160);
|
||||
this.listBox3.TabIndex = 52;
|
||||
this.listBox3.SelectedIndexChanged += new System.EventHandler(this.ListBox3SelectedIndexChanged);
|
||||
//
|
||||
// pictureBox2
|
||||
//
|
||||
this.pictureBox2.Location = new System.Drawing.Point(185, 19);
|
||||
this.pictureBox2.Location = new System.Drawing.Point(238, 3);
|
||||
this.pictureBox2.Name = "pictureBox2";
|
||||
this.pictureBox2.Size = new System.Drawing.Size(88, 80);
|
||||
this.pictureBox2.Size = new System.Drawing.Size(218, 160);
|
||||
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox2.TabIndex = 51;
|
||||
this.pictureBox2.TabStop = false;
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Location = new System.Drawing.Point(33, 19);
|
||||
this.pictureBox1.Location = new System.Drawing.Point(238, 3);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(88, 80);
|
||||
this.pictureBox1.Size = new System.Drawing.Size(218, 160);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 50;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.Location = new System.Drawing.Point(212, 3);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(35, 13);
|
||||
this.label16.TabIndex = 49;
|
||||
this.label16.Text = "Hat 2";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.Location = new System.Drawing.Point(61, 3);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(35, 13);
|
||||
this.label12.TabIndex = 48;
|
||||
this.label12.Text = "Hat 1";
|
||||
//
|
||||
// listBox2
|
||||
//
|
||||
this.listBox2.FormattingEnabled = true;
|
||||
this.listBox2.Location = new System.Drawing.Point(161, 105);
|
||||
this.listBox2.Location = new System.Drawing.Point(2, 3);
|
||||
this.listBox2.Name = "listBox2";
|
||||
this.listBox2.Size = new System.Drawing.Size(143, 82);
|
||||
this.listBox2.Size = new System.Drawing.Size(219, 160);
|
||||
this.listBox2.TabIndex = 47;
|
||||
this.listBox2.SelectedIndexChanged += new System.EventHandler(this.ListBox2SelectedIndexChanged);
|
||||
//
|
||||
// listBox1
|
||||
//
|
||||
this.listBox1.FormattingEnabled = true;
|
||||
this.listBox1.Location = new System.Drawing.Point(6, 105);
|
||||
this.listBox1.Location = new System.Drawing.Point(2, 3);
|
||||
this.listBox1.Name = "listBox1";
|
||||
this.listBox1.Size = new System.Drawing.Size(143, 82);
|
||||
this.listBox1.Size = new System.Drawing.Size(219, 160);
|
||||
this.listBox1.TabIndex = 46;
|
||||
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1SelectedIndexChanged);
|
||||
//
|
||||
@ -850,9 +833,9 @@ namespace NovetusLauncher
|
||||
//
|
||||
// pictureBox8
|
||||
//
|
||||
this.pictureBox8.Location = new System.Drawing.Point(182, 13);
|
||||
this.pictureBox8.Location = new System.Drawing.Point(242, 9);
|
||||
this.pictureBox8.Name = "pictureBox8";
|
||||
this.pictureBox8.Size = new System.Drawing.Size(95, 86);
|
||||
this.pictureBox8.Size = new System.Drawing.Size(219, 173);
|
||||
this.pictureBox8.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox8.TabIndex = 63;
|
||||
this.pictureBox8.TabStop = false;
|
||||
@ -860,9 +843,9 @@ namespace NovetusLauncher
|
||||
// listBox8
|
||||
//
|
||||
this.listBox8.FormattingEnabled = true;
|
||||
this.listBox8.Location = new System.Drawing.Point(6, 105);
|
||||
this.listBox8.Location = new System.Drawing.Point(6, 9);
|
||||
this.listBox8.Name = "listBox8";
|
||||
this.listBox8.Size = new System.Drawing.Size(455, 82);
|
||||
this.listBox8.Size = new System.Drawing.Size(219, 173);
|
||||
this.listBox8.TabIndex = 62;
|
||||
this.listBox8.SelectedIndexChanged += new System.EventHandler(this.ListBox8SelectedIndexChanged);
|
||||
//
|
||||
@ -901,9 +884,9 @@ namespace NovetusLauncher
|
||||
//
|
||||
// pictureBox4
|
||||
//
|
||||
this.pictureBox4.Location = new System.Drawing.Point(182, 13);
|
||||
this.pictureBox4.Location = new System.Drawing.Point(242, 9);
|
||||
this.pictureBox4.Name = "pictureBox4";
|
||||
this.pictureBox4.Size = new System.Drawing.Size(95, 86);
|
||||
this.pictureBox4.Size = new System.Drawing.Size(219, 173);
|
||||
this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox4.TabIndex = 59;
|
||||
this.pictureBox4.TabStop = false;
|
||||
@ -911,9 +894,9 @@ namespace NovetusLauncher
|
||||
// listBox4
|
||||
//
|
||||
this.listBox4.FormattingEnabled = true;
|
||||
this.listBox4.Location = new System.Drawing.Point(6, 105);
|
||||
this.listBox4.Location = new System.Drawing.Point(6, 9);
|
||||
this.listBox4.Name = "listBox4";
|
||||
this.listBox4.Size = new System.Drawing.Size(455, 82);
|
||||
this.listBox4.Size = new System.Drawing.Size(219, 173);
|
||||
this.listBox4.TabIndex = 57;
|
||||
this.listBox4.SelectedIndexChanged += new System.EventHandler(this.ListBox4SelectedIndexChanged);
|
||||
//
|
||||
@ -952,9 +935,9 @@ namespace NovetusLauncher
|
||||
//
|
||||
// pictureBox5
|
||||
//
|
||||
this.pictureBox5.Location = new System.Drawing.Point(182, 13);
|
||||
this.pictureBox5.Location = new System.Drawing.Point(242, 9);
|
||||
this.pictureBox5.Name = "pictureBox5";
|
||||
this.pictureBox5.Size = new System.Drawing.Size(95, 86);
|
||||
this.pictureBox5.Size = new System.Drawing.Size(219, 173);
|
||||
this.pictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox5.TabIndex = 63;
|
||||
this.pictureBox5.TabStop = false;
|
||||
@ -962,9 +945,9 @@ namespace NovetusLauncher
|
||||
// listBox5
|
||||
//
|
||||
this.listBox5.FormattingEnabled = true;
|
||||
this.listBox5.Location = new System.Drawing.Point(6, 105);
|
||||
this.listBox5.Location = new System.Drawing.Point(6, 9);
|
||||
this.listBox5.Name = "listBox5";
|
||||
this.listBox5.Size = new System.Drawing.Size(455, 82);
|
||||
this.listBox5.Size = new System.Drawing.Size(219, 173);
|
||||
this.listBox5.TabIndex = 62;
|
||||
this.listBox5.SelectedIndexChanged += new System.EventHandler(this.ListBox5SelectedIndexChanged);
|
||||
//
|
||||
@ -1003,9 +986,9 @@ namespace NovetusLauncher
|
||||
//
|
||||
// pictureBox6
|
||||
//
|
||||
this.pictureBox6.Location = new System.Drawing.Point(182, 13);
|
||||
this.pictureBox6.Location = new System.Drawing.Point(242, 9);
|
||||
this.pictureBox6.Name = "pictureBox6";
|
||||
this.pictureBox6.Size = new System.Drawing.Size(95, 86);
|
||||
this.pictureBox6.Size = new System.Drawing.Size(219, 173);
|
||||
this.pictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox6.TabIndex = 63;
|
||||
this.pictureBox6.TabStop = false;
|
||||
@ -1013,9 +996,9 @@ namespace NovetusLauncher
|
||||
// listBox6
|
||||
//
|
||||
this.listBox6.FormattingEnabled = true;
|
||||
this.listBox6.Location = new System.Drawing.Point(6, 105);
|
||||
this.listBox6.Location = new System.Drawing.Point(6, 9);
|
||||
this.listBox6.Name = "listBox6";
|
||||
this.listBox6.Size = new System.Drawing.Size(455, 82);
|
||||
this.listBox6.Size = new System.Drawing.Size(219, 173);
|
||||
this.listBox6.TabIndex = 62;
|
||||
this.listBox6.SelectedIndexChanged += new System.EventHandler(this.ListBox6SelectedIndexChanged);
|
||||
//
|
||||
@ -1054,9 +1037,9 @@ namespace NovetusLauncher
|
||||
//
|
||||
// pictureBox7
|
||||
//
|
||||
this.pictureBox7.Location = new System.Drawing.Point(182, 13);
|
||||
this.pictureBox7.Location = new System.Drawing.Point(242, 9);
|
||||
this.pictureBox7.Name = "pictureBox7";
|
||||
this.pictureBox7.Size = new System.Drawing.Size(95, 86);
|
||||
this.pictureBox7.Size = new System.Drawing.Size(219, 173);
|
||||
this.pictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox7.TabIndex = 63;
|
||||
this.pictureBox7.TabStop = false;
|
||||
@ -1064,14 +1047,77 @@ namespace NovetusLauncher
|
||||
// listBox7
|
||||
//
|
||||
this.listBox7.FormattingEnabled = true;
|
||||
this.listBox7.Location = new System.Drawing.Point(6, 105);
|
||||
this.listBox7.Location = new System.Drawing.Point(6, 9);
|
||||
this.listBox7.Name = "listBox7";
|
||||
this.listBox7.Size = new System.Drawing.Size(455, 82);
|
||||
this.listBox7.Size = new System.Drawing.Size(219, 173);
|
||||
this.listBox7.TabIndex = 62;
|
||||
this.listBox7.SelectedIndexChanged += new System.EventHandler(this.ListBox7SelectedIndexChanged);
|
||||
//
|
||||
// tabPage9
|
||||
//
|
||||
this.tabPage9.Controls.Add(this.checkBox1);
|
||||
this.tabPage9.Controls.Add(this.button58);
|
||||
this.tabPage9.Controls.Add(this.button59);
|
||||
this.tabPage9.Controls.Add(this.pictureBox9);
|
||||
this.tabPage9.Controls.Add(this.listBox9);
|
||||
this.tabPage9.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage9.Name = "tabPage9";
|
||||
this.tabPage9.Size = new System.Drawing.Size(467, 241);
|
||||
this.tabPage9.TabIndex = 8;
|
||||
this.tabPage9.Text = "EXTRA";
|
||||
this.tabPage9.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.Location = new System.Drawing.Point(6, 170);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(79, 17);
|
||||
this.checkBox1.TabIndex = 70;
|
||||
this.checkBox1.Text = "Show Hats";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1CheckedChanged);
|
||||
//
|
||||
// button58
|
||||
//
|
||||
this.button58.Location = new System.Drawing.Point(242, 193);
|
||||
this.button58.Name = "button58";
|
||||
this.button58.Size = new System.Drawing.Size(219, 42);
|
||||
this.button58.TabIndex = 69;
|
||||
this.button58.Text = "Reset";
|
||||
this.button58.UseVisualStyleBackColor = true;
|
||||
this.button58.Click += new System.EventHandler(this.Button58Click);
|
||||
//
|
||||
// button59
|
||||
//
|
||||
this.button59.Location = new System.Drawing.Point(6, 193);
|
||||
this.button59.Name = "button59";
|
||||
this.button59.Size = new System.Drawing.Size(219, 42);
|
||||
this.button59.TabIndex = 68;
|
||||
this.button59.Text = "Randomize";
|
||||
this.button59.UseVisualStyleBackColor = true;
|
||||
this.button59.Click += new System.EventHandler(this.Button59Click);
|
||||
//
|
||||
// pictureBox9
|
||||
//
|
||||
this.pictureBox9.Location = new System.Drawing.Point(242, 9);
|
||||
this.pictureBox9.Name = "pictureBox9";
|
||||
this.pictureBox9.Size = new System.Drawing.Size(219, 173);
|
||||
this.pictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox9.TabIndex = 67;
|
||||
this.pictureBox9.TabStop = false;
|
||||
//
|
||||
// listBox9
|
||||
//
|
||||
this.listBox9.FormattingEnabled = true;
|
||||
this.listBox9.Location = new System.Drawing.Point(6, 9);
|
||||
this.listBox9.Name = "listBox9";
|
||||
this.listBox9.Size = new System.Drawing.Size(219, 160);
|
||||
this.listBox9.TabIndex = 66;
|
||||
this.listBox9.SelectedIndexChanged += new System.EventHandler(this.ListBox9SelectedIndexChanged);
|
||||
//
|
||||
// tabPage7
|
||||
//
|
||||
this.tabPage7.Controls.Add(this.button43);
|
||||
this.tabPage7.Controls.Add(this.textBox1);
|
||||
this.tabPage7.Controls.Add(this.label7);
|
||||
this.tabPage7.Controls.Add(this.label6);
|
||||
@ -1089,6 +1135,16 @@ namespace NovetusLauncher
|
||||
this.tabPage7.Text = "OTHER";
|
||||
this.tabPage7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// button43
|
||||
//
|
||||
this.button43.Location = new System.Drawing.Point(365, 3);
|
||||
this.button43.Name = "button43";
|
||||
this.button43.Size = new System.Drawing.Size(99, 34);
|
||||
this.button43.TabIndex = 1;
|
||||
this.button43.Text = "Avatar 3D Preview";
|
||||
this.button43.UseVisualStyleBackColor = true;
|
||||
this.button43.Click += new System.EventHandler(this.Button43Click);
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(113, 213);
|
||||
@ -1195,29 +1251,65 @@ namespace NovetusLauncher
|
||||
this.button52.UseVisualStyleBackColor = true;
|
||||
this.button52.Click += new System.EventHandler(this.Button52Click);
|
||||
//
|
||||
// button43
|
||||
// tabControl2
|
||||
//
|
||||
this.button43.Location = new System.Drawing.Point(415, 12);
|
||||
this.button43.Name = "button43";
|
||||
this.button43.Size = new System.Drawing.Size(70, 19);
|
||||
this.button43.TabIndex = 1;
|
||||
this.button43.Text = "3D Preview";
|
||||
this.button43.UseVisualStyleBackColor = true;
|
||||
this.button43.Click += new System.EventHandler(this.Button43Click);
|
||||
this.tabControl2.Controls.Add(this.tabPage10);
|
||||
this.tabControl2.Controls.Add(this.tabPage11);
|
||||
this.tabControl2.Controls.Add(this.tabPage12);
|
||||
this.tabControl2.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl2.Name = "tabControl2";
|
||||
this.tabControl2.SelectedIndex = 0;
|
||||
this.tabControl2.Size = new System.Drawing.Size(471, 191);
|
||||
this.tabControl2.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
||||
this.tabControl2.TabIndex = 57;
|
||||
//
|
||||
// tabPage10
|
||||
//
|
||||
this.tabPage10.Controls.Add(this.listBox1);
|
||||
this.tabPage10.Controls.Add(this.pictureBox1);
|
||||
this.tabPage10.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage10.Name = "tabPage10";
|
||||
this.tabPage10.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage10.Size = new System.Drawing.Size(463, 165);
|
||||
this.tabPage10.TabIndex = 0;
|
||||
this.tabPage10.Text = "HAT 1";
|
||||
this.tabPage10.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage11
|
||||
//
|
||||
this.tabPage11.Controls.Add(this.listBox2);
|
||||
this.tabPage11.Controls.Add(this.pictureBox2);
|
||||
this.tabPage11.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage11.Name = "tabPage11";
|
||||
this.tabPage11.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage11.Size = new System.Drawing.Size(463, 165);
|
||||
this.tabPage11.TabIndex = 1;
|
||||
this.tabPage11.Text = "HAT 2";
|
||||
this.tabPage11.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage12
|
||||
//
|
||||
this.tabPage12.Controls.Add(this.listBox3);
|
||||
this.tabPage12.Controls.Add(this.pictureBox3);
|
||||
this.tabPage12.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage12.Name = "tabPage12";
|
||||
this.tabPage12.Size = new System.Drawing.Size(463, 165);
|
||||
this.tabPage12.TabIndex = 2;
|
||||
this.tabPage12.Text = "HAT 3";
|
||||
this.tabPage12.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// CharacterCustomization
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.ClientSize = new System.Drawing.Size(499, 288);
|
||||
this.Controls.Add(this.button43);
|
||||
this.ClientSize = new System.Drawing.Size(477, 272);
|
||||
this.Controls.Add(this.tabControl1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "CharacterCustomization";
|
||||
this.Text = "Avatar";
|
||||
this.Text = "Avatar Customization";
|
||||
this.Closing += new System.ComponentModel.CancelEventHandler(this.CharacterCustomizationClose);
|
||||
this.Load += new System.EventHandler(this.CharacterCustomizationLoad);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
@ -1238,10 +1330,26 @@ namespace NovetusLauncher
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox6)).EndInit();
|
||||
this.tabPage6.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit();
|
||||
this.tabPage9.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).EndInit();
|
||||
this.tabPage7.ResumeLayout(false);
|
||||
this.tabPage7.PerformLayout();
|
||||
this.tabControl2.ResumeLayout(false);
|
||||
this.tabPage10.ResumeLayout(false);
|
||||
this.tabPage11.ResumeLayout(false);
|
||||
this.tabPage12.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
private System.Windows.Forms.TabPage tabPage12;
|
||||
private System.Windows.Forms.TabPage tabPage11;
|
||||
private System.Windows.Forms.TabPage tabPage10;
|
||||
private System.Windows.Forms.TabControl tabControl2;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.ListBox listBox9;
|
||||
private System.Windows.Forms.PictureBox pictureBox9;
|
||||
private System.Windows.Forms.Button button59;
|
||||
private System.Windows.Forms.Button button58;
|
||||
private System.Windows.Forms.TabPage tabPage9;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label7;
|
||||
@ -1326,12 +1434,9 @@ namespace NovetusLauncher
|
||||
private System.Windows.Forms.Button button41;
|
||||
private System.Windows.Forms.Button button42;
|
||||
private System.Windows.Forms.ListBox listBox3;
|
||||
private System.Windows.Forms.Label label17;
|
||||
private System.Windows.Forms.PictureBox pictureBox3;
|
||||
private System.Windows.Forms.ListBox listBox1;
|
||||
private System.Windows.Forms.ListBox listBox2;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.PictureBox pictureBox2;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
|
@ -26,23 +26,21 @@ namespace NovetusLauncher
|
||||
{
|
||||
private string SelectedPart = "Head";
|
||||
private string[,] ColorArray;
|
||||
private bool StartedVIAURI = false;
|
||||
private string hatdir = GlobalVars.BasePath + "\\charcustom\\hats";
|
||||
private string facedir = GlobalVars.BasePath + "\\charcustom\\faces";
|
||||
private string headdir = GlobalVars.BasePath + "\\charcustom\\heads";
|
||||
private string tshirtdir = GlobalVars.BasePath + "\\charcustom\\tshirts";
|
||||
private string shirtdir = GlobalVars.BasePath + "\\charcustom\\shirts";
|
||||
private string pantsdir = GlobalVars.BasePath + "\\charcustom\\pants";
|
||||
private string hatdir = GlobalVars.CustomPlayerDir + "\\hats";
|
||||
private string facedir = GlobalVars.CustomPlayerDir + "\\faces";
|
||||
private string headdir = GlobalVars.CustomPlayerDir + "\\heads";
|
||||
private string tshirtdir = GlobalVars.CustomPlayerDir + "\\tshirts";
|
||||
private string shirtdir = GlobalVars.CustomPlayerDir + "\\shirts";
|
||||
private string pantsdir = GlobalVars.CustomPlayerDir + "\\pants";
|
||||
private string extradir = GlobalVars.CustomPlayerDir + "\\custom";
|
||||
|
||||
public CharacterCustomization(bool StartedURI = false)
|
||||
public CharacterCustomization()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
StartedVIAURI = StartedURI;
|
||||
|
||||
ColorArray = new string[32, 2] {
|
||||
{ "1", button7.BackColor.ToString() },
|
||||
{ "208", button8.BackColor.ToString() },
|
||||
@ -99,24 +97,21 @@ namespace NovetusLauncher
|
||||
|
||||
//charid
|
||||
textBox1.Text = GlobalVars.CharacterID;
|
||||
|
||||
checkBox1.Checked = GlobalVars.Custom_Extra_ShowHats;
|
||||
|
||||
//discord
|
||||
if (StartedVIAURI == false)
|
||||
{
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.details = "Customizing " + GlobalVars.PlayerName;
|
||||
GlobalVars.presence.state = "In Character Customization";
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Character Customization";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
GlobalVars.presence.details = "Customizing " + GlobalVars.PlayerName;
|
||||
GlobalVars.presence.state = "In Character Customization";
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Character Customization";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
|
||||
LauncherFuncs.ReloadLoadtextValue();
|
||||
}
|
||||
|
||||
void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage1"] && tabControl1.SelectedTab == tabControl1.TabPages["tabPage7"])//your specific tabname
|
||||
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage1"] || tabControl1.SelectedTab == tabControl1.TabPages["tabPage7"])//your specific tabname
|
||||
{
|
||||
listBox1.Items.Clear();
|
||||
listBox2.Items.Clear();
|
||||
@ -126,6 +121,7 @@ namespace NovetusLauncher
|
||||
listBox6.Items.Clear();
|
||||
listBox7.Items.Clear();
|
||||
listBox8.Items.Clear();
|
||||
listBox9.Items.Clear();
|
||||
}
|
||||
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname
|
||||
{
|
||||
@ -135,6 +131,7 @@ namespace NovetusLauncher
|
||||
listBox6.Items.Clear();
|
||||
listBox7.Items.Clear();
|
||||
listBox8.Items.Clear();
|
||||
listBox9.Items.Clear();
|
||||
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
@ -147,11 +144,6 @@ namespace NovetusLauncher
|
||||
continue;
|
||||
}
|
||||
|
||||
if (file.Name.Equals("TeapotTurret.rbxm") && GlobalVars.AdminMode != true)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
listBox1.Items.Add(file.Name);
|
||||
listBox2.Items.Add(file.Name);
|
||||
listBox3.Items.Add(file.Name);
|
||||
@ -180,6 +172,7 @@ namespace NovetusLauncher
|
||||
listBox6.Items.Clear();
|
||||
listBox7.Items.Clear();
|
||||
listBox8.Items.Clear();
|
||||
listBox9.Items.Clear();
|
||||
|
||||
if (Directory.Exists(facedir))
|
||||
{
|
||||
@ -210,6 +203,7 @@ namespace NovetusLauncher
|
||||
listBox6.Items.Clear();
|
||||
listBox7.Items.Clear();
|
||||
listBox8.Items.Clear();
|
||||
listBox9.Items.Clear();
|
||||
|
||||
if (Directory.Exists(tshirtdir))
|
||||
{
|
||||
@ -240,6 +234,7 @@ namespace NovetusLauncher
|
||||
listBox5.Items.Clear();
|
||||
listBox7.Items.Clear();
|
||||
listBox8.Items.Clear();
|
||||
listBox9.Items.Clear();
|
||||
|
||||
if (Directory.Exists(shirtdir))
|
||||
{
|
||||
@ -270,6 +265,7 @@ namespace NovetusLauncher
|
||||
listBox5.Items.Clear();
|
||||
listBox6.Items.Clear();
|
||||
listBox8.Items.Clear();
|
||||
listBox9.Items.Clear();
|
||||
|
||||
if (Directory.Exists(pantsdir))
|
||||
{
|
||||
@ -300,6 +296,7 @@ namespace NovetusLauncher
|
||||
listBox5.Items.Clear();
|
||||
listBox6.Items.Clear();
|
||||
listBox7.Items.Clear();
|
||||
listBox9.Items.Clear();
|
||||
|
||||
if (Directory.Exists(headdir))
|
||||
{
|
||||
@ -320,19 +317,80 @@ namespace NovetusLauncher
|
||||
pictureBox8.Image = icon1;
|
||||
}
|
||||
}
|
||||
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage9"])//your specific tabname
|
||||
{
|
||||
//faces
|
||||
listBox1.Items.Clear();
|
||||
listBox2.Items.Clear();
|
||||
listBox3.Items.Clear();
|
||||
listBox4.Items.Clear();
|
||||
listBox5.Items.Clear();
|
||||
listBox6.Items.Clear();
|
||||
listBox7.Items.Clear();
|
||||
listBox8.Items.Clear();
|
||||
|
||||
if (Directory.Exists(extradir))
|
||||
{
|
||||
DirectoryInfo dinfo = new DirectoryInfo(extradir);
|
||||
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
|
||||
foreach( FileInfo file in Files )
|
||||
{
|
||||
if (file.Name.Equals(String.Empty))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
listBox9.Items.Add(file.Name);
|
||||
}
|
||||
}
|
||||
|
||||
if (GlobalVars.Custom_Extra_ShowHats == true)
|
||||
{
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
DirectoryInfo dinfo = new DirectoryInfo(hatdir);
|
||||
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
|
||||
foreach( FileInfo file in Files )
|
||||
{
|
||||
if (file.Name.Equals(String.Empty))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (file.Name.Equals("NoHat.rbxm"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
listBox9.Items.Add(file.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listBox9.SelectedItem = GlobalVars.Custom_Extra;
|
||||
listBox9.Enabled = true;
|
||||
try
|
||||
{
|
||||
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CharacterCustomizationClose(object sender, CancelEventArgs e)
|
||||
{
|
||||
if (StartedVIAURI == false)
|
||||
{
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.state = "In Launcher";
|
||||
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
GlobalVars.presence.state = "In Launcher";
|
||||
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
|
||||
LauncherFuncs.ReloadLoadtextValue();
|
||||
}
|
||||
@ -982,8 +1040,8 @@ namespace NovetusLauncher
|
||||
{
|
||||
LauncherFuncs.ReloadLoadtextValue();
|
||||
string luafile = "rbxasset://scripts\\\\CSView.lua";
|
||||
string mapfile = GlobalVars.BasePath + "\\charcustom\\preview\\content\\fonts\\3DView.rbxl";
|
||||
string rbxexe = GlobalVars.BasePath + "\\charcustom\\preview\\3DView.exe";
|
||||
string mapfile = GlobalVars.ConfigDir + "\\preview\\content\\fonts\\3DView.rbxl";
|
||||
string rbxexe = GlobalVars.ConfigDir + "\\preview\\3DView.exe";
|
||||
string quote = "\"";
|
||||
string args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CS3DView(0,'Player','" + GlobalVars.loadtext + ");" + quote;
|
||||
try
|
||||
@ -1028,5 +1086,150 @@ namespace NovetusLauncher
|
||||
{
|
||||
GlobalVars.CharacterID = textBox1.Text;
|
||||
}
|
||||
|
||||
//extra
|
||||
|
||||
void ListBox9SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(extradir))
|
||||
{
|
||||
try
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = false;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Button59Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(extradir))
|
||||
{
|
||||
Random random = new Random();
|
||||
int randomItem1 = random.Next(listBox9.Items.Count);
|
||||
listBox9.SelectedItem = listBox9.Items[randomItem1];
|
||||
try
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = false;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Button58Click(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(extradir))
|
||||
{
|
||||
listBox9.SelectedItem = "NoExtra.rbxm";
|
||||
try
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = false;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CheckBox1CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox1.Checked == true)
|
||||
{
|
||||
GlobalVars.Custom_Extra_ShowHats = true;
|
||||
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
DirectoryInfo dinfo = new DirectoryInfo(hatdir);
|
||||
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
|
||||
foreach( FileInfo file in Files )
|
||||
{
|
||||
if (file.Name.Equals(String.Empty))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (file.Name.Equals("NoHat.rbxm"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
listBox9.Items.Add(file.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (checkBox1.Checked == false)
|
||||
{
|
||||
GlobalVars.Custom_Extra_ShowHats = false;
|
||||
listBox9.Items.Clear();
|
||||
|
||||
if (Directory.Exists(extradir))
|
||||
{
|
||||
DirectoryInfo dinfo = new DirectoryInfo(extradir);
|
||||
FileInfo[] Files = dinfo.GetFiles("*.rbxm");
|
||||
foreach( FileInfo file in Files )
|
||||
{
|
||||
if (file.Name.Equals(String.Empty))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
listBox9.Items.Add(file.Name);
|
||||
}
|
||||
}
|
||||
|
||||
listBox9.SelectedItem = "NoExtra.rbxm";
|
||||
try
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(extradir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = false;
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
if (Directory.Exists(hatdir))
|
||||
{
|
||||
GlobalVars.Custom_Extra = listBox9.SelectedItem.ToString();
|
||||
Image icon1 = Image.FromFile(hatdir + "\\" + GlobalVars.Custom_Extra.Replace(".rbxm", "") + ".png");
|
||||
pictureBox9.Image = icon1;
|
||||
GlobalVars.Custom_Extra_SelectionIsHat = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
72
NovetusLauncher/NovetusLauncher/ClientScriptDocumentation.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
38
NovetusLauncher/NovetusLauncher/ClientScriptDocumentation.cs
Normal 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");
|
||||
}
|
||||
}
|
||||
}
|
2346
NovetusLauncher/NovetusLauncher/ClientScriptDocumentation.resx
Normal file
@ -225,10 +225,10 @@ namespace NovetusLauncher
|
||||
{
|
||||
using (var ofd = new OpenFileDialog())
|
||||
{
|
||||
ofd.Filter = "Text files (*.txt)|*.txt";
|
||||
ofd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
|
||||
ofd.FilterIndex = 2;
|
||||
ofd.FileName = "clientinfo.txt";
|
||||
ofd.Title = "Load clientinfo.txt";
|
||||
ofd.FileName = "clientinfo.nov";
|
||||
ofd.Title = "Load clientinfo.nov";
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string line1;
|
||||
@ -239,11 +239,8 @@ namespace NovetusLauncher
|
||||
SelectedClientInfoPath = Path.GetDirectoryName(ofd.FileName);
|
||||
line1 = reader.ReadLine();
|
||||
}
|
||||
|
||||
if (!SecurityFuncs.IsBase64String(line1))
|
||||
return;
|
||||
|
||||
string ConvertedLine = SecurityFuncs.Base64Decode(line1);
|
||||
string ConvertedLine = SecurityFuncs.DecryptText(line1,"");
|
||||
string[] result = ConvertedLine.Split('|');
|
||||
Decryptline1 = SecurityFuncs.Base64Decode(result[0]);
|
||||
Decryptline2 = SecurityFuncs.Base64Decode(result[1]);
|
||||
@ -321,11 +318,11 @@ namespace NovetusLauncher
|
||||
{
|
||||
using (var sfd = new SaveFileDialog())
|
||||
{
|
||||
sfd.Filter = "Text files (*.txt)|*.txt";
|
||||
sfd.Filter = "Novetus Clientinfo files (*.nov)|*.nov";
|
||||
sfd.FilterIndex = 2;
|
||||
sfd.FileName = "clientinfo.txt";
|
||||
sfd.Title = "Save clientinfo.txt";
|
||||
|
||||
sfd.FileName = "clientinfo.nov";
|
||||
sfd.Title = "Save clientinfo.nov";
|
||||
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string[] lines = {
|
||||
@ -341,7 +338,7 @@ namespace NovetusLauncher
|
||||
SecurityFuncs.Base64Encode(AlreadyHasSecurity.ToString()),
|
||||
SecurityFuncs.Base64Encode(CustomArgs.ToString())
|
||||
};
|
||||
File.WriteAllText(sfd.FileName, SecurityFuncs.Base64Encode(string.Join("|",lines)));
|
||||
File.WriteAllText(sfd.FileName, SecurityFuncs.EncryptText(string.Join("|",lines),""));
|
||||
SelectedClientInfoPath = Path.GetDirectoryName(sfd.FileName);
|
||||
}
|
||||
}
|
||||
@ -354,7 +351,8 @@ namespace NovetusLauncher
|
||||
|
||||
void Button1Click(object sender, EventArgs e)
|
||||
{
|
||||
MessageBox.Show(File.ReadAllText("documentation.txt"), "Novetus Client SDK | Documentation", MessageBoxButtons.OK);
|
||||
ClientScriptDocumentation csd = new ClientScriptDocumentation();
|
||||
csd.Show();
|
||||
}
|
||||
|
||||
void TextBox5TextChanged(object sender, EventArgs e)
|
||||
|
76
NovetusLauncher/NovetusLauncher/Documentation.Designer.cs
generated
Normal 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;
|
||||
}
|
||||
}
|
@ -45,21 +45,23 @@ namespace NovetusLauncher
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.comboBox2 = new System.Windows.Forms.ComboBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(12, 27);
|
||||
this.textBox1.Location = new System.Drawing.Point(3, 27);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(212, 20);
|
||||
this.textBox1.Size = new System.Drawing.Size(229, 20);
|
||||
this.textBox1.TabIndex = 0;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(12, 120);
|
||||
this.button1.Location = new System.Drawing.Point(3, 120);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(212, 23);
|
||||
this.button1.Size = new System.Drawing.Size(229, 23);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "Create!";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
@ -67,21 +69,21 @@ namespace NovetusLauncher
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.Location = new System.Drawing.Point(38, 67);
|
||||
this.textBox2.Location = new System.Drawing.Point(3, 67);
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.Size = new System.Drawing.Size(91, 20);
|
||||
this.textBox2.Size = new System.Drawing.Size(85, 20);
|
||||
this.textBox2.TabIndex = 2;
|
||||
//
|
||||
// numericUpDown1
|
||||
//
|
||||
this.numericUpDown1.Location = new System.Drawing.Point(135, 67);
|
||||
this.numericUpDown1.Location = new System.Drawing.Point(97, 66);
|
||||
this.numericUpDown1.Maximum = new decimal(new int[] {
|
||||
3,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numericUpDown1.Name = "numericUpDown1";
|
||||
this.numericUpDown1.Size = new System.Drawing.Size(69, 20);
|
||||
this.numericUpDown1.Size = new System.Drawing.Size(39, 20);
|
||||
this.numericUpDown1.TabIndex = 3;
|
||||
//
|
||||
// label1
|
||||
@ -94,7 +96,7 @@ namespace NovetusLauncher
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Location = new System.Drawing.Point(59, 50);
|
||||
this.label2.Location = new System.Drawing.Point(21, 50);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(46, 14);
|
||||
this.label2.TabIndex = 6;
|
||||
@ -102,11 +104,12 @@ namespace NovetusLauncher
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Location = new System.Drawing.Point(135, 50);
|
||||
this.label3.Location = new System.Drawing.Point(94, 50);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(69, 14);
|
||||
this.label3.Size = new System.Drawing.Size(42, 14);
|
||||
this.label3.TabIndex = 7;
|
||||
this.label3.Text = "Item Version";
|
||||
this.label3.Text = "Version";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
@ -115,18 +118,44 @@ namespace NovetusLauncher
|
||||
this.comboBox1.Items.AddRange(new object[] {
|
||||
"http://www.roblox.com/",
|
||||
"http://assetgame.roblox.com/"});
|
||||
this.comboBox1.Location = new System.Drawing.Point(12, 93);
|
||||
this.comboBox1.Location = new System.Drawing.Point(3, 93);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(212, 21);
|
||||
this.comboBox1.Size = new System.Drawing.Size(229, 21);
|
||||
this.comboBox1.TabIndex = 8;
|
||||
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.ComboBox1SelectedIndexChanged);
|
||||
//
|
||||
// comboBox2
|
||||
//
|
||||
this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBox2.FormattingEnabled = true;
|
||||
this.comboBox2.Items.AddRange(new object[] {
|
||||
"Item (.rbxm)",
|
||||
"Texture (.png)",
|
||||
"Mesh (.mesh)",
|
||||
"Sound (.wav)"});
|
||||
this.comboBox2.Location = new System.Drawing.Point(142, 65);
|
||||
this.comboBox2.Name = "comboBox2";
|
||||
this.comboBox2.Size = new System.Drawing.Size(90, 21);
|
||||
this.comboBox2.TabIndex = 9;
|
||||
this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.ComboBox2SelectedIndexChanged);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Location = new System.Drawing.Point(142, 50);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(90, 14);
|
||||
this.label4.TabIndex = 10;
|
||||
this.label4.Text = "Type";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// ItemMaker
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.ClientSize = new System.Drawing.Size(236, 152);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.comboBox2);
|
||||
this.Controls.Add(this.comboBox1);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
@ -145,6 +174,8 @@ namespace NovetusLauncher
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.ComboBox comboBox2;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label2;
|
||||
|
@ -22,6 +22,7 @@ namespace NovetusLauncher
|
||||
public partial class ItemMaker : Form
|
||||
{
|
||||
private static string url = "http://www.roblox.com/asset?id=";
|
||||
private static string type = ".rbxm";
|
||||
|
||||
public ItemMaker()
|
||||
{
|
||||
@ -43,10 +44,12 @@ namespace NovetusLauncher
|
||||
|
||||
using (WebClient wc = new WebClient())
|
||||
{
|
||||
wc.DownloadFile(url + textBox2.Text + version, GlobalVars.BasePath + "\\" + textBox1.Text + ".rbxm");
|
||||
var ua = "Roblox/WinInet";
|
||||
wc.Headers.Add(HttpRequestHeader.UserAgent, ua);
|
||||
wc.DownloadFileAsync(new System.Uri(url + textBox2.Text + version), GlobalVars.BasePath + "\\" + textBox1.Text + type);
|
||||
}
|
||||
|
||||
MessageBox.Show("Item downloaded into your Novetus directory! In order for the item to work in Novetus, you'll need to find an icon for your item (it must be a .png file), then name it the same name as your item.\n\nIf you want to create a local (offline) item, you'll have to download the meshes/textures from the links in the rbxm file, then replace the links in the file pointing to where they are using rbxasset://. Look at the directory in the 'charcustom' folder that best suits your item type, then look at the rbxm for any one of the items. If you get a corrupted file, change the URL using the drop down box.","Novetus Item SDK", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
MessageBox.Show("Item downloaded into your Novetus directory! In order for the item to work in Novetus, you'll need to find an icon for your item (it must be a .png file), then name it the same name as your item.\n\nIf you want to create a local (offline) item, you'll have to download the meshes/textures from the links in the rbxm file, then replace the links in the file pointing to where they are using rbxasset://. Look at the directory in the 'shareddata/charcustom' folder that best suits your item type, then look at the rbxm for any one of the items. If you get a corrupted file, change the URL using the drop down box.","Novetus Item SDK", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
@ -56,11 +59,11 @@ namespace NovetusLauncher
|
||||
|
||||
void ComboBox1SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (comboBox1.SelectedText == "http://www.roblox.com/")
|
||||
if (comboBox1.SelectedIndex == 0)
|
||||
{
|
||||
url = "http://www.roblox.com/asset?id=";
|
||||
}
|
||||
else if (comboBox1.SelectedText == "http://assetgame.roblox.com/")
|
||||
else if (comboBox1.SelectedIndex == 1)
|
||||
{
|
||||
url = "http://assetgame.roblox.com/asset/?id=";
|
||||
}
|
||||
@ -68,7 +71,28 @@ namespace NovetusLauncher
|
||||
|
||||
void ItemMakerLoad(object sender, EventArgs e)
|
||||
{
|
||||
comboBox1.Text = "http://www.roblox.com/";
|
||||
comboBox1.Text = "http://www.roblox.com/";
|
||||
comboBox2.Text = "Item (.rbxm)";
|
||||
}
|
||||
|
||||
void ComboBox2SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (comboBox2.SelectedIndex == 0)
|
||||
{
|
||||
type = ".rbxm";
|
||||
}
|
||||
else if (comboBox2.SelectedIndex == 1)
|
||||
{
|
||||
type = ".png";
|
||||
}
|
||||
else if (comboBox2.SelectedIndex == 2)
|
||||
{
|
||||
type = ".mesh";
|
||||
}
|
||||
else if (comboBox2.SelectedIndex == 3)
|
||||
{
|
||||
type = ".wav";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ namespace NovetusLauncher
|
||||
|
||||
void LoaderFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
string[] lines = File.ReadAllLines(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\info.txt");
|
||||
string[] lines = File.ReadAllLines(GlobalVars.ConfigDir + "\\info.txt");
|
||||
GlobalVars.DefaultClient = lines[1];
|
||||
GlobalVars.DefaultMap = lines[2];
|
||||
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
|
||||
@ -95,13 +95,20 @@ namespace NovetusLauncher
|
||||
}
|
||||
try
|
||||
{
|
||||
if (!GlobalVars.AdminMode || !GlobalVars.AlreadyHasSecurity)
|
||||
if (GlobalVars.AdminMode != true)
|
||||
{
|
||||
if (SecurityFuncs.checkClientMD5(client) == true)
|
||||
if (GlobalVars.AlreadyHasSecurity != true)
|
||||
{
|
||||
if (SecurityFuncs.checkScriptMD5(client) == true)
|
||||
if (SecurityFuncs.checkClientMD5(client) == true)
|
||||
{
|
||||
LaunchClient(rbxexe,args);
|
||||
if (SecurityFuncs.checkScriptMD5(client) == true)
|
||||
{
|
||||
LaunchClient(rbxexe,args);
|
||||
}
|
||||
else
|
||||
{
|
||||
label1.Text = "The client has been detected as modified.";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -110,7 +117,7 @@ namespace NovetusLauncher
|
||||
}
|
||||
else
|
||||
{
|
||||
label1.Text = "The client has been detected as modified.";
|
||||
LaunchClient(rbxexe,args);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -133,10 +140,8 @@ namespace NovetusLauncher
|
||||
clientproc.Exited += new EventHandler(ClientExited);
|
||||
clientproc.Start();
|
||||
SecurityFuncs.RenameWindow(clientproc, ScriptGenerator.ScriptType.Client);
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.details = "";
|
||||
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game";
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
this.Visible = false;
|
||||
@ -144,10 +149,8 @@ namespace NovetusLauncher
|
||||
|
||||
void ClientExited(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.state = "In Launcher";
|
||||
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
this.Close();
|
||||
@ -168,16 +171,16 @@ namespace NovetusLauncher
|
||||
|
||||
void ReadConfigValues()
|
||||
{
|
||||
LauncherFuncs.ReadConfigValues(GlobalVars.BasePath + "\\config.txt");
|
||||
LauncherFuncs.ReadConfigValues(GlobalVars.ConfigDir + "\\config.ini");
|
||||
}
|
||||
|
||||
void ReadClientValues(string ClientName)
|
||||
{
|
||||
string clientpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + ClientName + "\\clientinfo.txt";
|
||||
string clientpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + ClientName + "\\clientinfo.nov";
|
||||
|
||||
if (!File.Exists(clientpath))
|
||||
{
|
||||
MessageBox.Show("No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus Launcher - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
MessageBox.Show("No clientinfo.nov detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus Launcher - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
|
||||
}
|
||||
|
||||
|
769
NovetusLauncher/NovetusLauncher/MainForm.Designer.cs
generated
@ -15,6 +15,9 @@ using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.ComponentModel;
|
||||
using System.Reflection;
|
||||
using NAudio.Wave;
|
||||
using NAudio.Wave.SampleProviders;
|
||||
using Mono.Nat;
|
||||
|
||||
namespace NovetusLauncher
|
||||
{
|
||||
@ -24,9 +27,12 @@ namespace NovetusLauncher
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
DiscordRpc.EventHandlers handlers;
|
||||
private WaveOutEvent outputDevice;
|
||||
private AudioFileReader audioFile;
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
_fieldsTreeCache = new TreeView();
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
@ -37,7 +43,87 @@ namespace NovetusLauncher
|
||||
//
|
||||
}
|
||||
|
||||
//TODO: add upnp shit here
|
||||
public void InitUPnP()
|
||||
{
|
||||
if (GlobalVars.UPnP == true)
|
||||
{
|
||||
try
|
||||
{
|
||||
UPnP.InitUPnP(DeviceFound,DeviceLost);
|
||||
ConsolePrint("UPnP: Service initialized", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("UPnP: Unable to initialize UPnP. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void StartUPnP(INatDevice device, Protocol protocol, int port)
|
||||
{
|
||||
if (GlobalVars.UPnP == true)
|
||||
{
|
||||
try
|
||||
{
|
||||
UPnP.StartUPnP(device,protocol,port);
|
||||
ConsolePrint("UPnP: Port " + port + " opened on '" + device.GetExternalIP() + "' (" + protocol.ToString() + ")", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("UPnP: Unable to open port mapping. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void StopUPnP(INatDevice device, Protocol protocol, int port)
|
||||
{
|
||||
if (GlobalVars.UPnP == true)
|
||||
{
|
||||
try
|
||||
{
|
||||
UPnP.StopUPnP(device,protocol,port);
|
||||
ConsolePrint("UPnP: Port " + port + " closed on '" + device.GetExternalIP() + "' (" + protocol.ToString() + ")", 3);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("UPnP: Unable to close port mapping. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DeviceFound(object sender, DeviceEventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
INatDevice device = args.Device;
|
||||
ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' registered.", 3);
|
||||
StartUPnP(device, Protocol.Udp, GlobalVars.RobloxPort);
|
||||
StartUPnP(device, Protocol.Tcp, GlobalVars.RobloxPort);
|
||||
StartUPnP(device, Protocol.Udp, GlobalVars.WebServer_Port);
|
||||
StartUPnP(device, Protocol.Tcp, GlobalVars.WebServer_Port);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("UPnP: Unable to register device. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
|
||||
private void DeviceLost(object sender, DeviceEventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
INatDevice device = args.Device;
|
||||
ConsolePrint("UPnP: Device '" + device.GetExternalIP() + "' disconnected.", 3);
|
||||
StopUPnP(device, Protocol.Udp, GlobalVars.RobloxPort);
|
||||
StopUPnP(device, Protocol.Tcp, GlobalVars.RobloxPort);
|
||||
StopUPnP(device, Protocol.Udp, GlobalVars.WebServer_Port);
|
||||
StopUPnP(device, Protocol.Tcp, GlobalVars.WebServer_Port);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("UPnP: Unable to disconnect device. Reason - " + ex.Message, 2);
|
||||
}
|
||||
}
|
||||
|
||||
public void ReadyCallback()
|
||||
{
|
||||
@ -83,20 +169,57 @@ namespace NovetusLauncher
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
}
|
||||
|
||||
void StartWebServer()
|
||||
{
|
||||
GlobalVars.WebServer = new SimpleHTTPServer(GlobalVars.DataPath, GlobalVars.WebServer_Port);
|
||||
ConsolePrint("WebServer: Server is running on port: " + GlobalVars.WebServer.Port.ToString(), 3);
|
||||
}
|
||||
|
||||
void StartMusic()
|
||||
{
|
||||
string file = GlobalVars.DataPath + "\\music\\music.mp3";
|
||||
|
||||
if (File.Exists(file))
|
||||
{
|
||||
if (outputDevice == null)
|
||||
{
|
||||
outputDevice = new WaveOutEvent();
|
||||
}
|
||||
if (audioFile == null)
|
||||
{
|
||||
audioFile = new AudioFileReader(file);
|
||||
LoopStream loop = new LoopStream(audioFile);
|
||||
outputDevice.Init(loop);
|
||||
}
|
||||
outputDevice.Play();
|
||||
}
|
||||
else
|
||||
{
|
||||
button24.Visible = false;
|
||||
button24.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
void EndMusic()
|
||||
{
|
||||
outputDevice.Stop();
|
||||
outputDevice.Dispose();
|
||||
outputDevice = null;
|
||||
audioFile.Dispose();
|
||||
audioFile = null;
|
||||
}
|
||||
|
||||
void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname
|
||||
{
|
||||
string mapdir = GlobalVars.MapsDir;
|
||||
DirectoryInfo dinfo = new DirectoryInfo(mapdir);
|
||||
FileInfo[] Files = dinfo.GetFiles("*.rbxl");
|
||||
foreach( FileInfo file in Files )
|
||||
{
|
||||
listBox1.Items.Add(file.Name);
|
||||
}
|
||||
listBox1.SelectedItem = GlobalVars.Map;
|
||||
TreeNodeHelper.ListDirectory(treeView1, mapdir);
|
||||
TreeNodeHelper.CopyNodes(treeView1.Nodes,_fieldsTreeCache.Nodes);
|
||||
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.Map, treeView1.Nodes);
|
||||
treeView1.Focus();
|
||||
listBox2.Items.Clear();
|
||||
listBox3.Items.Clear();
|
||||
listBox4.Items.Clear();
|
||||
@ -111,22 +234,25 @@ namespace NovetusLauncher
|
||||
listBox2.Items.Add(dir.Name);
|
||||
}
|
||||
listBox2.SelectedItem = GlobalVars.SelectedClient;
|
||||
listBox1.Items.Clear();
|
||||
treeView1.Nodes.Clear();
|
||||
_fieldsTreeCache.Nodes.Clear();
|
||||
listBox3.Items.Clear();
|
||||
listBox4.Items.Clear();
|
||||
}
|
||||
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage6"])//your specific tabname
|
||||
{
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
|
||||
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
listBox1.Items.Clear();
|
||||
treeView1.Nodes.Clear();
|
||||
_fieldsTreeCache.Nodes.Clear();
|
||||
listBox2.Items.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
listBox1.Items.Clear();
|
||||
treeView1.Nodes.Clear();
|
||||
_fieldsTreeCache.Nodes.Clear();
|
||||
listBox2.Items.Clear();
|
||||
listBox3.Items.Clear();
|
||||
listBox4.Items.Clear();
|
||||
@ -175,12 +301,13 @@ namespace NovetusLauncher
|
||||
|
||||
void MainFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
string[] lines = File.ReadAllLines("info.txt"); //File is in System.IO
|
||||
string[] lines = File.ReadAllLines(GlobalVars.ConfigDir + "\\info.txt"); //File is in System.IO
|
||||
string version = lines[0];
|
||||
GlobalVars.DefaultClient = lines[1];
|
||||
GlobalVars.DefaultMap = lines[2];
|
||||
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
|
||||
GlobalVars.Map = GlobalVars.DefaultMap;
|
||||
this.Text = "Novetus " + version;
|
||||
ConsolePrint("Novetus version " + version + " loaded. Initializing config.", 4);
|
||||
if (File.Exists("changelog.txt"))
|
||||
{
|
||||
@ -190,44 +317,51 @@ namespace NovetusLauncher
|
||||
{
|
||||
ConsolePrint("ERROR 4 - changelog.txt not found.", 2);
|
||||
}
|
||||
if (!File.Exists("config.txt"))
|
||||
if (!File.Exists(GlobalVars.ConfigDir + "\\config.ini"))
|
||||
{
|
||||
ConsolePrint("WARNING 1 - config.txt not found. Creating one with default values.", 5);
|
||||
ConsolePrint("WARNING 1 - config.ini not found. Creating one with default values.", 5);
|
||||
WriteConfigValues();
|
||||
}
|
||||
if (!File.Exists("config_customization.txt"))
|
||||
if (!File.Exists(GlobalVars.ConfigDir + "\\config_customization.ini"))
|
||||
{
|
||||
ConsolePrint("WARNING 2 - config_customization.txt not found. Creating one with default values.", 5);
|
||||
ConsolePrint("WARNING 2 - config_customization.ini not found. Creating one with default values.", 5);
|
||||
WriteCustomizationValues();
|
||||
}
|
||||
if (!File.Exists("servers.txt"))
|
||||
if (!File.Exists(GlobalVars.ConfigDir + "\\servers.txt"))
|
||||
{
|
||||
ConsolePrint("WARNING 3 - servers.txt not found. Creating empty file.", 5);
|
||||
File.Create("servers.txt").Dispose();
|
||||
File.Create(GlobalVars.ConfigDir + "\\servers.txt").Dispose();
|
||||
}
|
||||
if (!File.Exists("ports.txt"))
|
||||
if (!File.Exists(GlobalVars.ConfigDir + "\\ports.txt"))
|
||||
{
|
||||
ConsolePrint("WARNING 4 - ports.txt not found. Creating empty file.", 5);
|
||||
File.Create("ports.txt").Dispose();
|
||||
File.Create(GlobalVars.ConfigDir + "\\ports.txt").Dispose();
|
||||
}
|
||||
label5.Text = GlobalVars.BasePath;
|
||||
label8.Text = Application.ProductVersion;
|
||||
GlobalVars.important = SecurityFuncs.CalculateMD5(Assembly.GetExecutingAssembly().Location);
|
||||
label11.Text = version;
|
||||
GlobalVars.Version = version;
|
||||
|
||||
label12.Text = SplashReader.GetSplash();
|
||||
|
||||
ReadConfigValues();
|
||||
InitUPnP();
|
||||
StartDiscord();
|
||||
StartWebServer();
|
||||
StartMusic();
|
||||
}
|
||||
|
||||
void MainFormClose(object sender, CancelEventArgs e)
|
||||
{
|
||||
WriteConfigValues();
|
||||
DiscordRpc.Shutdown();
|
||||
DiscordRpc.Shutdown();
|
||||
GlobalVars.WebServer.Stop();
|
||||
}
|
||||
|
||||
void ReadConfigValues()
|
||||
{
|
||||
LauncherFuncs.ReadConfigValues(GlobalVars.BasePath + "\\config.txt");
|
||||
LauncherFuncs.ReadConfigValues(GlobalVars.ConfigDir + "\\config.ini");
|
||||
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
{
|
||||
@ -262,36 +396,38 @@ namespace NovetusLauncher
|
||||
textBox2.Text = GlobalVars.PlayerName;
|
||||
label26.Text = GlobalVars.SelectedClient;
|
||||
label28.Text = GlobalVars.Map;
|
||||
listBox1.SelectedItem = GlobalVars.Map;
|
||||
treeView1.SelectedNode = TreeNodeHelper.SearchTreeView(GlobalVars.Map, treeView1.Nodes);
|
||||
treeView1.Focus();
|
||||
numericUpDown1.Value = Convert.ToDecimal(GlobalVars.RobloxPort);
|
||||
numericUpDown2.Value = Convert.ToDecimal(GlobalVars.RobloxPort);
|
||||
label37.Text = GlobalVars.IP;
|
||||
label38.Text = GlobalVars.RobloxPort.ToString();
|
||||
checkBox2.Checked = GlobalVars.DisableTeapotTurret;
|
||||
checkBox4.Checked = GlobalVars.UPnP;
|
||||
ConsolePrint("Config loaded.", 3);
|
||||
ReadClientValues(GlobalVars.SelectedClient);
|
||||
}
|
||||
|
||||
void WriteConfigValues()
|
||||
{
|
||||
LauncherFuncs.WriteConfigValues(GlobalVars.BasePath + "\\config.txt");
|
||||
LauncherFuncs.WriteConfigValues(GlobalVars.ConfigDir + "\\config.ini");
|
||||
ConsolePrint("Config Saved.", 3);
|
||||
}
|
||||
|
||||
void WriteCustomizationValues()
|
||||
{
|
||||
LauncherFuncs.WriteCustomizationValues("config_customization.txt");
|
||||
LauncherFuncs.WriteCustomizationValues(GlobalVars.ConfigDir + "\\config_customization.ini");
|
||||
ConsolePrint("Config Saved.", 3);
|
||||
}
|
||||
|
||||
void ReadClientValues(string ClientName)
|
||||
{
|
||||
string clientpath = GlobalVars.ClientDir + @"\\" + ClientName + @"\\clientinfo.txt";
|
||||
string clientpath = GlobalVars.ClientDir + @"\\" + ClientName + @"\\clientinfo.nov";
|
||||
|
||||
if (!File.Exists(clientpath))
|
||||
{
|
||||
ConsolePrint("ERROR 1 - No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.", 2);
|
||||
MessageBox.Show("No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
ConsolePrint("ERROR 1 - No clientinfo.nov detected with the client you chose. The client either cannot be loaded, or it is not available.", 2);
|
||||
MessageBox.Show("No clientinfo.nov detected with the client you chose. The client either cannot be loaded, or it is not available.","Novetus - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
GlobalVars.SelectedClient = GlobalVars.DefaultClient;
|
||||
}
|
||||
|
||||
@ -352,12 +488,6 @@ namespace NovetusLauncher
|
||||
label37.Text = GlobalVars.IP;
|
||||
}
|
||||
|
||||
void ListBox1SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.Map = listBox1.SelectedItem.ToString();
|
||||
label28.Text = GlobalVars.Map;
|
||||
}
|
||||
|
||||
void CheckBox1CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox1.Checked == true)
|
||||
@ -390,6 +520,10 @@ namespace NovetusLauncher
|
||||
{
|
||||
GlobalVars.SelectedClient = listBox2.SelectedItem.ToString();
|
||||
ReadClientValues(GlobalVars.SelectedClient);
|
||||
GlobalVars.presence.state = "In Launcher";
|
||||
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
|
||||
void CheckBox3CheckedChanged(object sender, EventArgs e)
|
||||
@ -454,21 +588,21 @@ namespace NovetusLauncher
|
||||
|
||||
void Button10Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("servers.txt", GlobalVars.IP + Environment.NewLine);
|
||||
File.AppendAllText(GlobalVars.ConfigDir + "\\servers.txt", GlobalVars.IP + Environment.NewLine);
|
||||
}
|
||||
|
||||
void Button11Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
File.AppendAllText(GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
}
|
||||
|
||||
void Button12Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox3.SelectedIndex >= 0)
|
||||
{
|
||||
TextLineRemover.RemoveTextLines(new List<string> { listBox3.SelectedItem.ToString() }, "servers.txt", "servers.tmp");
|
||||
TextLineRemover.RemoveTextLines(new List<string> { listBox3.SelectedItem.ToString() }, GlobalVars.ConfigDir + "\\servers.txt", GlobalVars.ConfigDir + "\\servers.tmp");
|
||||
listBox3.Items.Clear();
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
}
|
||||
}
|
||||
@ -477,42 +611,42 @@ namespace NovetusLauncher
|
||||
{
|
||||
if (listBox4.SelectedIndex >= 0)
|
||||
{
|
||||
TextLineRemover.RemoveTextLines(new List<string> { listBox4.SelectedItem.ToString() }, "ports.txt", "ports.tmp");
|
||||
TextLineRemover.RemoveTextLines(new List<string> { listBox4.SelectedItem.ToString() }, GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.ConfigDir + "\\ports.tmp");
|
||||
listBox4.Items.Clear();
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
}
|
||||
}
|
||||
|
||||
void Button14Click(object sender, EventArgs e)
|
||||
{
|
||||
File.Create("servers.txt").Dispose();
|
||||
File.Create(GlobalVars.ConfigDir + "\\servers.txt").Dispose();
|
||||
listBox3.Items.Clear();
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
}
|
||||
|
||||
void Button15Click(object sender, EventArgs e)
|
||||
{
|
||||
File.Create("ports.txt").Dispose();
|
||||
File.Create(GlobalVars.ConfigDir + "\\ports.txt").Dispose();
|
||||
listBox4.Items.Clear();
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
}
|
||||
|
||||
void Button16Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("servers.txt", GlobalVars.IP + Environment.NewLine);
|
||||
File.AppendAllText(GlobalVars.ConfigDir + "\\servers.txt", GlobalVars.IP + Environment.NewLine);
|
||||
listBox3.Items.Clear();
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
string[] lines_server = File.ReadAllLines(GlobalVars.ConfigDir + "\\servers.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
}
|
||||
|
||||
void Button17Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
File.AppendAllText(GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
listBox4.Items.Clear();
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
string[] lines_ports = File.ReadAllLines(GlobalVars.ConfigDir + "\\ports.txt");
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
}
|
||||
|
||||
@ -565,9 +699,7 @@ namespace NovetusLauncher
|
||||
{
|
||||
switch(e.KeyCode)
|
||||
{
|
||||
case Keys.C:
|
||||
case Keys.X:
|
||||
case Keys.V:
|
||||
case Keys.Z:
|
||||
e.Handled = true;
|
||||
break;
|
||||
@ -654,14 +786,31 @@ namespace NovetusLauncher
|
||||
try
|
||||
{
|
||||
ConsolePrint("Client Loaded.", 4);
|
||||
if (!GlobalVars.AdminMode || !GlobalVars.AlreadyHasSecurity)
|
||||
if (GlobalVars.AdminMode != true)
|
||||
{
|
||||
if (SecurityFuncs.checkClientMD5(GlobalVars.SelectedClient) == true)
|
||||
if (GlobalVars.AlreadyHasSecurity != true)
|
||||
{
|
||||
if (SecurityFuncs.checkScriptMD5(GlobalVars.SelectedClient) == true)
|
||||
if (SecurityFuncs.checkClientMD5(GlobalVars.SelectedClient) == true)
|
||||
{
|
||||
OpenClient(rbxexe,args);
|
||||
if (SecurityFuncs.checkScriptMD5(GlobalVars.SelectedClient) == true)
|
||||
{
|
||||
OpenClient(rbxexe,args);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsolePrint("ERROR 4 - Failed to launch Novetus. (The client has been detected as modified.)", 2);
|
||||
DialogResult result2 = MessageBox.Show("Failed to launch Novetus. (Error: The client has been detected as modified.)","Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsolePrint("ERROR 4 - Failed to launch Novetus. (The client has been detected as modified.)", 2);
|
||||
DialogResult result2 = MessageBox.Show("Failed to launch Novetus. (Error: The client has been detected as modified.)","Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
OpenClient(rbxexe,args);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -686,20 +835,16 @@ namespace NovetusLauncher
|
||||
client.Exited += new EventHandler(ClientExited);
|
||||
client.Start();
|
||||
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Client);
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.details = "";
|
||||
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Game";
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Game";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
|
||||
void ClientExited(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.state = "In Launcher";
|
||||
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
@ -719,7 +864,7 @@ namespace NovetusLauncher
|
||||
{
|
||||
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua";
|
||||
}
|
||||
string mapfile = GlobalVars.MapsDir + @"\\" + GlobalVars.Map;
|
||||
string mapfile = GlobalVars.MapsDir + @"\\" + TreeNodeHelper.GetFolderNameFromPrefix(GlobalVars.Map) + GlobalVars.Map;
|
||||
string rbxexe = "";
|
||||
if (GlobalVars.LegacyMode == true)
|
||||
{
|
||||
@ -758,10 +903,8 @@ namespace NovetusLauncher
|
||||
client.Exited += new EventHandler(StudioExited);
|
||||
client.Start();
|
||||
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Solo);
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.details = GlobalVars.Map;
|
||||
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Solo Game";
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Solo Game";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
@ -783,7 +926,7 @@ namespace NovetusLauncher
|
||||
{
|
||||
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua";
|
||||
}
|
||||
string mapfile = GlobalVars.MapsDir + @"\\" + GlobalVars.Map;
|
||||
string mapfile = GlobalVars.MapsDir + @"\\" + TreeNodeHelper.GetFolderNameFromPrefix(GlobalVars.Map) + GlobalVars.Map;
|
||||
string rbxexe = "";
|
||||
if (GlobalVars.LegacyMode == true)
|
||||
{
|
||||
@ -857,7 +1000,7 @@ namespace NovetusLauncher
|
||||
{
|
||||
luafile = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\content\\scripts\\" + GlobalVars.ScriptGenName + ".lua";
|
||||
}
|
||||
string mapfile = GlobalVars.MapsDir + @"\\" + GlobalVars.Map;
|
||||
string mapfile = GlobalVars.MapsDir + @"\\" + TreeNodeHelper.GetFolderNameFromPrefix(GlobalVars.Map) + GlobalVars.Map;
|
||||
string rbxexe = "";
|
||||
if (GlobalVars.LegacyMode == true)
|
||||
{
|
||||
@ -896,10 +1039,8 @@ namespace NovetusLauncher
|
||||
client.Exited += new EventHandler(StudioExited);
|
||||
client.Start();
|
||||
SecurityFuncs.RenameWindow(client, ScriptGenerator.ScriptType.Studio);
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.details = GlobalVars.Map;
|
||||
GlobalVars.presence.state = "In " + GlobalVars.SelectedClient + " Studio";
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In " + GlobalVars.SelectedClient + " Studio";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
}
|
||||
@ -912,10 +1053,8 @@ namespace NovetusLauncher
|
||||
|
||||
void StudioExited(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.presence.largeImageKey = GlobalVars.imagekey_large;
|
||||
GlobalVars.presence.state = "In Launcher";
|
||||
GlobalVars.presence.details = "Selected " + GlobalVars.SelectedClient;
|
||||
GlobalVars.presence.startTimestamp = SecurityFuncs.UnixTimeNow();
|
||||
GlobalVars.presence.largeImageText = GlobalVars.PlayerName + " | In Launcher";
|
||||
DiscordRpc.UpdatePresence(ref GlobalVars.presence);
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
@ -926,87 +1065,105 @@ namespace NovetusLauncher
|
||||
|
||||
void ConsoleProcessCommands(string command)
|
||||
{
|
||||
if (command.Equals("server"))
|
||||
if (string.Compare(command,"server",true) == 0)
|
||||
{
|
||||
StartServer(false);
|
||||
}
|
||||
else if (command.Equals("server no3d"))
|
||||
else if (string.Compare(command,"server no3d",true) == 0)
|
||||
{
|
||||
StartServer(true);
|
||||
}
|
||||
else if (command.Equals("no3d"))
|
||||
else if (string.Compare(command,"no3d",true) == 0)
|
||||
{
|
||||
StartServer(true);
|
||||
}
|
||||
else if (command.Equals("client"))
|
||||
else if (string.Compare(command,"client",true) == 0)
|
||||
{
|
||||
StartClient();
|
||||
}
|
||||
else if (command.Equals("client solo"))
|
||||
else if (string.Compare(command,"client solo",true) == 0)
|
||||
{
|
||||
StartSolo();
|
||||
}
|
||||
else if (command.Equals("solo"))
|
||||
else if (string.Compare(command,"solo",true) == 0)
|
||||
{
|
||||
StartSolo();
|
||||
}
|
||||
else if (command.Equals("studio"))
|
||||
else if (string.Compare(command,"studio",true) == 0)
|
||||
{
|
||||
StartStudio();
|
||||
}
|
||||
else if (command.Equals("config save"))
|
||||
else if (string.Compare(command,"config save",true) == 0)
|
||||
{
|
||||
WriteConfigValues();
|
||||
}
|
||||
else if (command.Equals("config load"))
|
||||
else if (string.Compare(command,"config load",true) == 0)
|
||||
{
|
||||
ReadConfigValues();
|
||||
}
|
||||
else if (command.Equals("config reset"))
|
||||
else if (string.Compare(command,"config reset",true) == 0)
|
||||
{
|
||||
ResetConfigValues();
|
||||
}
|
||||
else if (command.Equals("help"))
|
||||
else if (string.Compare(command,"help",true) == 0)
|
||||
{
|
||||
ConsoleHelp(0);
|
||||
}
|
||||
else if (command.Equals("help config"))
|
||||
else if (string.Compare(command,"help config",true) == 0)
|
||||
{
|
||||
ConsoleHelp(1);
|
||||
}
|
||||
else if (command.Equals("config"))
|
||||
else if (string.Compare(command,"config",true) == 0)
|
||||
{
|
||||
ConsoleHelp(1);
|
||||
}
|
||||
else if (command.Equals("help sdk"))
|
||||
else if (string.Compare(command,"help sdk",true) == 0)
|
||||
{
|
||||
ConsoleHelp(2);
|
||||
}
|
||||
else if (command.Equals("sdk"))
|
||||
else if (string.Compare(command,"sdk",true) == 0)
|
||||
{
|
||||
ConsoleHelp(2);
|
||||
}
|
||||
else if (command.Equals("sdk clientinfo"))
|
||||
else if (string.Compare(command,"sdk clientinfo",true) == 0)
|
||||
{
|
||||
ClientinfoEditor cie = new ClientinfoEditor();
|
||||
cie.Show();
|
||||
LoadClientSDK();
|
||||
}
|
||||
else if (command.Equals("sdk itemmaker"))
|
||||
else if (string.Compare(command,"sdk itemmaker",true) == 0)
|
||||
{
|
||||
ItemMaker im = new ItemMaker();
|
||||
im.Show();
|
||||
LoadItemSDK();
|
||||
}
|
||||
else if (command.Equals("clientinfo"))
|
||||
else if (string.Compare(command,"clientinfo",true) == 0)
|
||||
{
|
||||
ClientinfoEditor cie = new ClientinfoEditor();
|
||||
cie.Show();
|
||||
LoadClientSDK();
|
||||
}
|
||||
else if (command.Equals("itemmaker"))
|
||||
else if (string.Compare(command,"itemmaker",true) == 0)
|
||||
{
|
||||
ItemMaker im = new ItemMaker();
|
||||
im.Show();
|
||||
LoadItemSDK();
|
||||
}
|
||||
else if (command.Equals(GlobalVars.important))
|
||||
else if (string.Compare(command,"sdk clientsdk",true) == 0)
|
||||
{
|
||||
LoadClientSDK();
|
||||
}
|
||||
else if (string.Compare(command,"sdk itemsdk",true) == 0)
|
||||
{
|
||||
LoadItemSDK();
|
||||
}
|
||||
else if (string.Compare(command,"clientsdk",true) == 0)
|
||||
{
|
||||
LoadClientSDK();
|
||||
}
|
||||
else if (string.Compare(command,"itemsdk",true) == 0)
|
||||
{
|
||||
LoadItemSDK();
|
||||
}
|
||||
else if (string.Compare(command,"charcustom",true) == 0)
|
||||
{
|
||||
CharacterCustomization cc = new CharacterCustomization();
|
||||
cc.Show();
|
||||
ConsolePrint("Avatar Customization Loaded.", 4);
|
||||
}
|
||||
else if (string.Compare(command,GlobalVars.important,true) == 0)
|
||||
{
|
||||
GlobalVars.AdminMode = true;
|
||||
ConsolePrint("ADMIN MODE ENABLED.", 4);
|
||||
@ -1015,8 +1172,21 @@ namespace NovetusLauncher
|
||||
else
|
||||
{
|
||||
ConsolePrint("ERROR 3 - Command is either not registered or valid", 2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void LoadItemSDK()
|
||||
{
|
||||
ItemMaker im = new ItemMaker();
|
||||
im.Show();
|
||||
ConsolePrint("Novetus Item SDK Loaded.", 4);
|
||||
}
|
||||
|
||||
void LoadClientSDK()
|
||||
{
|
||||
ClientinfoEditor cie = new ClientinfoEditor();
|
||||
cie.Show();
|
||||
ConsolePrint("Novetus Client SDK Loaded.", 4);
|
||||
}
|
||||
|
||||
void ConsoleHelp(int page)
|
||||
@ -1109,7 +1279,7 @@ namespace NovetusLauncher
|
||||
|
||||
void Button23Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
File.AppendAllText(GlobalVars.ConfigDir + "\\ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
}
|
||||
|
||||
void Button22Click(object sender, EventArgs e)
|
||||
@ -1130,5 +1300,84 @@ namespace NovetusLauncher
|
||||
GlobalVars.DisableTeapotTurret = false;
|
||||
}
|
||||
}
|
||||
|
||||
void TreeView1AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
if (treeView1.SelectedNode.Nodes.Count == 0)
|
||||
{
|
||||
GlobalVars.Map = treeView1.SelectedNode.Text.ToString();
|
||||
label28.Text = GlobalVars.Map;
|
||||
}
|
||||
}
|
||||
|
||||
bool GetRBXLResults(TreeNode node)
|
||||
{
|
||||
return node.Text.EndsWith(".rbxl");
|
||||
}
|
||||
|
||||
void TextBox3TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
//blocks repainting tree till all objects loaded
|
||||
treeView1.BeginUpdate();
|
||||
treeView1.Nodes.Clear();
|
||||
if (textBox3.Text != "")
|
||||
{
|
||||
List<TreeNode> nodeList = _fieldsTreeCache.GetAllNodes();
|
||||
List<TreeNode> rbxlList = nodeList.FindAll(GetRBXLResults);
|
||||
|
||||
foreach (TreeNode node in rbxlList)
|
||||
{
|
||||
if (node.Text.Replace(".rbxl","").Contains(textBox3.Text, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
treeView1.Nodes.Add((TreeNode)node.Clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (TreeNode _node in _fieldsTreeCache.Nodes)
|
||||
{
|
||||
treeView1.Nodes.Add((TreeNode)_node.Clone());
|
||||
}
|
||||
}
|
||||
//enables redrawing tree after all objects have been added
|
||||
treeView1.EndUpdate();
|
||||
}
|
||||
|
||||
void Button6Click(object sender, EventArgs e)
|
||||
{
|
||||
Process.Start("explorer.exe", GlobalVars.MapsDir.Replace(@"\\",@"\"));
|
||||
}
|
||||
|
||||
void CheckBox4CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox4.Checked == true)
|
||||
{
|
||||
GlobalVars.UPnP = true;
|
||||
}
|
||||
else if (checkBox4.Checked == false)
|
||||
{
|
||||
GlobalVars.UPnP = false;
|
||||
}
|
||||
}
|
||||
|
||||
void CheckBox4Click(object sender, EventArgs e)
|
||||
{
|
||||
MessageBox.Show("Please restart the Novetus launcher for UPnP to take effect.","Novetus - UPnP", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
void Button24Click(object sender, EventArgs e)
|
||||
{
|
||||
if (outputDevice.PlaybackState == PlaybackState.Playing)
|
||||
{
|
||||
outputDevice.Pause();
|
||||
button24.Text = "▶";
|
||||
}
|
||||
else if (outputDevice.PlaybackState == PlaybackState.Paused)
|
||||
{
|
||||
outputDevice.Play();
|
||||
button24.Text = "⬛";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,12 @@
|
||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Mono.Nat">
|
||||
<HintPath>..\packages\Mono.Nat.1.2.24.0\lib\net40\Mono.Nat.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NAudio">
|
||||
<HintPath>..\packages\NAudio.1.8.5\lib\net35\NAudio.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
@ -68,6 +74,10 @@
|
||||
<Compile Include="ClientinfoCreator.Designer.cs">
|
||||
<DependentUpon>ClientinfoCreator.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ClientScriptDocumentation.cs" />
|
||||
<Compile Include="ClientScriptDocumentation.Designer.cs">
|
||||
<DependentUpon>ClientScriptDocumentation.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ItemMaker.cs" />
|
||||
<Compile Include="ItemMaker.Designer.cs">
|
||||
<DependentUpon>ItemMaker.cs</DependentUpon>
|
||||
@ -99,6 +109,9 @@
|
||||
<EmbeddedResource Include="ClientinfoCreator.resx">
|
||||
<DependentUpon>ClientinfoCreator.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ClientScriptDocumentation.resx">
|
||||
<DependentUpon>ClientScriptDocumentation.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ItemMaker.resx">
|
||||
<DependentUpon>ItemMaker.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@ -117,6 +130,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
@ -39,7 +39,27 @@ namespace NovetusLauncher
|
||||
{
|
||||
GlobalVars.SharedArgs = ProcessInput(s);
|
||||
}
|
||||
Application.Run(new LoaderForm());
|
||||
|
||||
if (GlobalVars.SharedArgs.Equals("-itemmaker"))
|
||||
{
|
||||
Application.Run(new ItemMaker());
|
||||
}
|
||||
else if (GlobalVars.SharedArgs.Equals("-clientinfo"))
|
||||
{
|
||||
Application.Run(new ClientinfoEditor());
|
||||
}
|
||||
else if (GlobalVars.SharedArgs.Equals("-quickconfigure"))
|
||||
{
|
||||
Application.Run(new QuickConfigure());
|
||||
}
|
||||
else if (GlobalVars.SharedArgs.Equals("-documentation"))
|
||||
{
|
||||
Application.Run(new ClientScriptDocumentation());
|
||||
}
|
||||
else
|
||||
{
|
||||
Application.Run(new LoaderForm());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ namespace NovetusLauncher
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(260, 23);
|
||||
this.button2.TabIndex = 5;
|
||||
this.button2.Text = "Launch";
|
||||
this.button2.Text = "Close";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.Button2Click);
|
||||
//
|
||||
@ -128,6 +128,7 @@ namespace NovetusLauncher
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "QuickConfigure";
|
||||
this.Closing += new System.ComponentModel.CancelEventHandler(this.QuickConfigureClose);
|
||||
this.Load += new System.EventHandler(this.QuickConfigureLoad);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
@ -14,6 +14,7 @@ using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.IO;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace NovetusLauncher
|
||||
{
|
||||
@ -36,7 +37,7 @@ namespace NovetusLauncher
|
||||
|
||||
void QuickConfigureLoad(object sender, EventArgs e)
|
||||
{
|
||||
string cfgpath = GlobalVars.BasePath + "\\config.txt";
|
||||
string cfgpath = GlobalVars.ConfigDir + "\\config.ini";
|
||||
if (!File.Exists(cfgpath))
|
||||
{
|
||||
LauncherFuncs.WriteConfigValues(cfgpath);
|
||||
@ -102,7 +103,7 @@ namespace NovetusLauncher
|
||||
|
||||
void Button1Click(object sender, EventArgs e)
|
||||
{
|
||||
CharacterCustomization ccustom = new CharacterCustomization(true);
|
||||
CharacterCustomization ccustom = new CharacterCustomization();
|
||||
ccustom.Show();
|
||||
}
|
||||
|
||||
@ -111,10 +112,9 @@ namespace NovetusLauncher
|
||||
this.Close();
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
void QuickConfigureClose(object sender, CancelEventArgs e)
|
||||
{
|
||||
string cfgpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\config.txt";
|
||||
base.OnFormClosing(e);
|
||||
string cfgpath = GlobalVars.ConfigDir + "\\config.ini";
|
||||
LauncherFuncs.WriteConfigValues(cfgpath);
|
||||
GlobalVars.ReadyToLaunch = true;
|
||||
}
|
||||
|
@ -117,7 +117,7 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAYAAAAAAAEAIADtggAAZgAAAICAAAABACAAKAgBAFODAABAQAAAAQAgAChCAAB7iwEAMDAAAAEA
|
||||
|
@ -51,7 +51,7 @@ namespace NovetusLauncher
|
||||
this.textBox1.Multiline = true;
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.ReadOnly = true;
|
||||
this.textBox1.Size = new System.Drawing.Size(501, 256);
|
||||
this.textBox1.Size = new System.Drawing.Size(511, 266);
|
||||
this.textBox1.TabIndex = 0;
|
||||
//
|
||||
// ServerInfo
|
||||
@ -60,8 +60,9 @@ namespace NovetusLauncher
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.AutoScroll = true;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.ClientSize = new System.Drawing.Size(504, 262);
|
||||
this.ClientSize = new System.Drawing.Size(514, 272);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimumSize = new System.Drawing.Size(520, 300);
|
||||
|
@ -34,7 +34,8 @@ namespace NovetusLauncher
|
||||
{
|
||||
textBox1.AppendText("Client: " + GlobalVars.SelectedClient);
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("IP: " + GetExternalIPAddress());
|
||||
string IP = GetExternalIPAddress();
|
||||
textBox1.AppendText("IP: " + IP);
|
||||
textBox1.AppendText("Port: " + GlobalVars.RobloxPort.ToString());
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("Map: " + GlobalVars.Map);
|
||||
@ -43,7 +44,6 @@ namespace NovetusLauncher
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("Version: Novetus " + GlobalVars.Version);
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
string[] lines = {
|
||||
SecurityFuncs.Base64Encode(GetExternalIPAddress()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.RobloxPort.ToString()),
|
||||
@ -60,9 +60,18 @@ namespace NovetusLauncher
|
||||
SecurityFuncs.Base64Encode(GlobalVars.SelectedClient)
|
||||
};
|
||||
string URI2 = "novetus://" + SecurityFuncs.Base64Encode(string.Join("|",lines2));
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("Local URI Link:");
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText(URI2);
|
||||
textBox1.AppendText(URI2);
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("Web Server URL:");
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("http://" + IP + ":" + GlobalVars.WebServer.Port.ToString());
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("Local Web Server URL:");
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText(GlobalVars.LocalWebServerURI);
|
||||
}
|
||||
|
||||
string GetExternalIPAddress()
|
||||
|
5
NovetusLauncher/NovetusLauncher/packages.config
Normal 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>
|
BIN
NovetusLauncher/packages/Mono.Nat.1.2.24.0/Mono.Nat.1.2.24.0.nupkg
vendored
Normal file
24
NovetusLauncher/packages/Mono.Nat.1.2.24.0/Mono.Nat.1.2.24.0.nuspec
vendored
Normal 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 <alan.mcgovern@gmail.com>
|
||||
Ben Motmans <ben.motmans@gmail.com>
|
||||
Nicholas Terry <nick.i.terry@gmail.com></authors>
|
||||
<owners>Alan McGovern <alan.mcgovern@gmail.com>
|
||||
Ben Motmans <ben.motmans@gmail.com>
|
||||
Nicholas Terry <nick.i.terry@gmail.com></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>
|
BIN
NovetusLauncher/packages/Mono.Nat.1.2.24.0/lib/net40/Mono.Nat.dll
vendored
Normal file
BIN
NovetusLauncher/packages/NAudio.1.8.5/NAudio.1.8.5.nupkg
vendored
Normal file
14
NovetusLauncher/packages/NAudio.1.8.5/NAudio.1.8.5.nuspec
vendored
Normal 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>
|
24590
NovetusLauncher/packages/NAudio.1.8.5/lib/net35/NAudio.XML
vendored
Normal file
BIN
NovetusLauncher/packages/NAudio.1.8.5/lib/net35/NAudio.dll
vendored
Normal file
13807
NovetusLauncher/packages/NAudio.1.8.5/lib/uap10.0/NAudio.Universal.XML
vendored
Normal file
BIN
NovetusLauncher/packages/NAudio.1.8.5/lib/uap10.0/NAudio.Universal.dll
vendored
Normal file
4
NovetusLauncher/packages/repositories.config
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<repositories>
|
||||
<repository path="..\NovetusLauncher\packages.config" />
|
||||
</repositories>
|
@ -26,7 +26,7 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
|
||||
|
||||
[Tasks]
|
||||
Name: "desktopicon"; Description: "Create a icon on your Desktop"; GroupDescription: "Icons"
|
||||
Name: "quicklaunchicon"; Description: "Create a icon on your Quick Start Menu"; GroupDescription: "Icons"; Flags: unchecked; OnlyBelowVersion: 0,6.1
|
||||
Name: "quicklaunchicon"; Description: "Create a icon on your Quick Launch Menu"; GroupDescription: "Icons"; Flags: unchecked; OnlyBelowVersion: 0,6.1
|
||||
|
||||
[Files]
|
||||
Source: "Novetus\NovetusLauncher.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
@ -37,15 +37,23 @@ Source: "Novetus\info.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "Novetus\clients\*"; DestDir: "{app}\clients"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "Novetus\maps\*"; DestDir: "{app}\maps"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "Novetus\models\*"; DestDir: "{app}\models"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "Novetus\charcustom\*"; DestDir: "{app}\charcustom"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "Novetus\config\*"; DestDir: "{app}\config"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "Novetus\shareddata\*"; DestDir: "{app}\shareddata"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "Novetus\_redist\*"; DestDir: "{app}\_redist"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
|
||||
[Icons]
|
||||
Name: "{group}"; Filename: "{app}\NovetusLauncher.exe"
|
||||
Name: "{group}"; Filename: "{uninstallexe}"
|
||||
Name: "{group}\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"
|
||||
Name: "{group}\Utilities\Novetus Client SDK"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-clientinfo"
|
||||
Name: "{group}\Utilities\Novetus Item SDK"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-itemmaker"
|
||||
Name: "{group}\Utilities\Quick Configure"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-quickconfigure"
|
||||
Name: "{group}\Utilities\ClientScript Documentation"; Filename: "{app}\NovetusLauncher.exe" Parameters: "-documentation"
|
||||
Name: "{group}\Uninstall Novetus {#AppVer}"; Filename: "{uninstallexe}"
|
||||
Name: "{commondesktop}\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"; Tasks: desktopicon
|
||||
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Novetus {#AppVer}"; Filename: "{app}\NovetusLauncher.exe"; Tasks: quicklaunchicon
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\NovetusLauncher.exe"; Description: "Play Novetus"; Flags: nowait postinstall skipifsilent
|
||||
Filename: "{app}\_redist\netframework40install.exe"; Description: "Install .NET Framework 4.0"; Flags: nowait postinstall skipifsilent
|
||||
Filename: "{app}\_redist\vcredist2005install32.exe"; Description: "Install Visual C++ 2005 Redistributable (32-bit)"; Flags: nowait postinstall skipifsilent
|
||||
Filename: "{app}\NovetusLauncher.exe"; Description: "Play Novetus"; Flags: nowait postinstall skipifsilent unchecked
|
||||
Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent unchecked
|
||||
Filename: "{app}\changelog.txt"; Description: "View the changelog"; Flags: postinstall shellexec skipifsilent unchecked
|
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 30 KiB |
@ -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>
|
@ -16,23 +16,29 @@ function newWaitForChild(newParent,name)
|
||||
return returnable
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
if (playerApp==nil) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
else
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
end
|
||||
PlayerService = game:GetService("Players")
|
||||
Player = PlayerService:GetPlayerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:FindFirstChild("Appearance")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
kick()
|
||||
end
|
||||
|
||||
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
|
||||
@ -46,7 +52,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
local newCharApp = Instance.new("IntValue",Player)
|
||||
newCharApp.Name = "Appearance"
|
||||
--BODY COLORS
|
||||
@ -58,42 +64,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "HeadColor"
|
||||
BodyColor.Name = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "TorsoColor"
|
||||
BodyColor.Name = "Torso Color"
|
||||
elseif (i == 3) then
|
||||
if (LeftArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftArmColor"
|
||||
BodyColor.Name = "Left Arm Color"
|
||||
elseif (i == 4) then
|
||||
if (RightArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightArmColor"
|
||||
BodyColor.Name = "Right Arm Color"
|
||||
elseif (i == 5) then
|
||||
if (LeftLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftLegColor"
|
||||
BodyColor.Name = "Left Leg Color"
|
||||
elseif (i == 6) then
|
||||
if (RightLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightLegColor"
|
||||
BodyColor.Name = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
@ -106,46 +112,38 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
end
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp==nil) then
|
||||
if (not Player:FindFirstChild("Security")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -196,24 +194,22 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
|
||||
Player:LoadCharacter()
|
||||
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
if (Player.Character ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
|
||||
while true do
|
||||
wait(0.001)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
if (ch.Humanoid.Health == 0) then
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character.Humanoid.Health == 0) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
elseif (ch.Parent == nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter() -- to make sure nobody is deleted.
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -227,7 +223,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
Server.IncommingConnection:connect(IncommingConnection)
|
||||
end
|
||||
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
local suc, err = pcall(function()
|
||||
client = game:GetService("NetworkClient")
|
||||
player = game:GetService("Players"):CreateLocalPlayer(UserID)
|
||||
@ -238,7 +234,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
player.CharacterAppearance=0
|
||||
pcall(function() player.Name=PlayerName or "" end)
|
||||
game:GetService("Visit")
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
|
||||
end)
|
||||
|
||||
@ -303,14 +299,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
end
|
||||
end
|
||||
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
local plr = game.Players:CreateLocalPlayer(UserID)
|
||||
game:GetService("RunService"):run()
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
plr.CharacterAppearance=0
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
game:GetService("Visit")
|
||||
while true do wait()
|
||||
|
@ -12,25 +12,33 @@ function newWaitForChild(newParent,name)
|
||||
return returnable
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
if (playerApp==nil) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
else
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
end
|
||||
PlayerService = game:GetService("Players")
|
||||
Player = PlayerService:GetPlayerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:FindFirstChild("Appearance")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
kick()
|
||||
end
|
||||
|
||||
local path = "rbxasset://../../../shareddata/charcustom/"
|
||||
|
||||
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
local customtype = newVal.CustomizationType.Value
|
||||
@ -40,7 +48,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 2) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
if (RemoveTeapotTurret == true) then
|
||||
@ -59,7 +67,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 3) then
|
||||
pcall(function()
|
||||
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
|
||||
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newTShirt[1].Parent = newChar
|
||||
@ -68,11 +76,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end)
|
||||
elseif (customtype == 4) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
pcall(function()
|
||||
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
|
||||
if newItem[1] then
|
||||
if newItem[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
newItem[1].Face = "Front"
|
||||
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
else
|
||||
newItem[1].Parent = newChar
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
local newCharApp = Instance.new("IntValue",Player)
|
||||
newCharApp.Name = "Appearance"
|
||||
--BODY COLORS
|
||||
@ -84,42 +119,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "HeadColor"
|
||||
BodyColor.Name = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "TorsoColor"
|
||||
BodyColor.Name = "Torso Color"
|
||||
elseif (i == 3) then
|
||||
if (LeftArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftArmColor"
|
||||
BodyColor.Name = "Left Arm Color"
|
||||
elseif (i == 4) then
|
||||
if (RightArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightArmColor"
|
||||
BodyColor.Name = "Right Arm Color"
|
||||
elseif (i == 5) then
|
||||
if (LeftLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftLegColor"
|
||||
BodyColor.Name = "Left Leg Color"
|
||||
elseif (i == 6) then
|
||||
if (RightLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightLegColor"
|
||||
BodyColor.Name = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
@ -136,26 +171,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
if (i == 1) then
|
||||
if (Hat1ID ~= nil) then
|
||||
newHat.Value = Hat1ID
|
||||
newHat.Name = Hat1ID
|
||||
newHat.Name = "Hat 1 - "..Hat1ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 1 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 2) then
|
||||
if (Hat2ID ~= nil) then
|
||||
newHat.Value = Hat2ID
|
||||
newHat.Name = Hat2ID
|
||||
newHat.Name = "Hat 2 - "..Hat2ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 2 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 3) then
|
||||
if (Hat3ID ~= nil) then
|
||||
newHat.Value = Hat3ID
|
||||
newHat.Name = Hat3ID
|
||||
newHat.Name = "Hat 3 - "..Hat3ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 3 - NoHat.rbxm"
|
||||
end
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
@ -167,24 +202,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newTShirt = Instance.new("StringValue",newCharApp)
|
||||
if (TShirtID ~= nil) then
|
||||
newTShirt.Value = TShirtID
|
||||
newTShirt.Name = TShirtID
|
||||
newTShirt.Name = "T-Shirt - "..TShirtID
|
||||
else
|
||||
newTShirt.Value = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newTShirt
|
||||
typeValue.Value = 3
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
--EXTRA
|
||||
local newItem = Instance.new("StringValue",newCharApp)
|
||||
if (ItemID ~= nil) then
|
||||
newItem.Value = ItemID
|
||||
newItem.Name = "Extra - "..ItemID
|
||||
else
|
||||
newItem.Value = "NoExtra.rbxm"
|
||||
newItem.Name = "Extra - NoExtra.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newItem
|
||||
typeValue.Value = 4
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
@ -192,32 +231,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp==nil) then
|
||||
if (not Player:FindFirstChild("Security")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -257,39 +297,37 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
PlayerService.MaxPlayers = PlayerLimit
|
||||
PlayerService.PlayerAdded:connect(function(Player)
|
||||
Player.Chatted:connect(function(msg)
|
||||
print(Player.Name.."; "..msg)
|
||||
end)
|
||||
|
||||
if (PlayerService.NumPlayers > PlayerService.MaxPlayers) then
|
||||
KickPlayer(Player, "Too many players on server.")
|
||||
else
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
|
||||
Player:LoadCharacter()
|
||||
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
if (Player.Character ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while Player ~= nil do
|
||||
wait(0.1)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
if (ch.Humanoid.Health == 0) then
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character.Humanoid.Health == 0) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
elseif (ch.Parent == nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end
|
||||
end))
|
||||
|
||||
Player.Chatted:connect(function(msg)
|
||||
print(Player.Name.."; "..msg)
|
||||
end)
|
||||
end)
|
||||
PlayerService.PlayerRemoving:connect(function(Player)
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
|
||||
@ -300,7 +338,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
Server.IncommingConnection:connect(IncommingConnection)
|
||||
end
|
||||
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
local suc, err = pcall(function()
|
||||
client = game:GetService("NetworkClient")
|
||||
player = game:GetService("Players"):CreateLocalPlayer(UserID)
|
||||
@ -309,7 +347,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
pcall(function() player:SetAccountAge(365) end)
|
||||
pcall(function() player.Name=PlayerName or "" end)
|
||||
game:GetService("Visit")
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
|
||||
end)
|
||||
|
||||
@ -370,13 +408,13 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
end
|
||||
end
|
||||
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
local plr = game.Players:CreateLocalPlayer(UserID)
|
||||
game:GetService("RunService"):run()
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
game:GetService("Visit")
|
||||
while true do
|
||||
|
@ -16,25 +16,33 @@ function newWaitForChild(newParent,name)
|
||||
return returnable
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
if (playerApp==nil) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
else
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
end
|
||||
PlayerService = game:GetService("Players")
|
||||
Player = PlayerService:GetPlayerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:FindFirstChild("Appearance")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
kick()
|
||||
end
|
||||
|
||||
local path = "rbxasset://../../../shareddata/charcustom/"
|
||||
|
||||
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
local customtype = newVal.CustomizationType.Value
|
||||
@ -44,7 +52,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 2) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
if (RemoveTeapotTurret == true) then
|
||||
@ -63,7 +71,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 3) then
|
||||
pcall(function()
|
||||
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
|
||||
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newTShirt[1].Parent = newChar
|
||||
@ -74,7 +82,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 4) then
|
||||
pcall(function()
|
||||
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
|
||||
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
|
||||
if newShirt[1] then
|
||||
if newShirt[1].className == "Shirt" then
|
||||
newShirt[1].Parent = newChar
|
||||
@ -85,7 +93,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 5) then
|
||||
pcall(function()
|
||||
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
|
||||
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
|
||||
if newPants[1] then
|
||||
if newPants[1].className == "Pants" then
|
||||
newPants[1].Parent = newChar
|
||||
@ -94,11 +102,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end)
|
||||
elseif (customtype == 6) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
pcall(function()
|
||||
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
|
||||
if newItem[1] then
|
||||
if newItem[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
newItem[1].Face = "Front"
|
||||
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
else
|
||||
newItem[1].Parent = newChar
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
local newCharApp = Instance.new("IntValue",Player)
|
||||
newCharApp.Name = "Appearance"
|
||||
--BODY COLORS
|
||||
@ -110,42 +145,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "HeadColor"
|
||||
BodyColor.Name = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "TorsoColor"
|
||||
BodyColor.Name = "Torso Color"
|
||||
elseif (i == 3) then
|
||||
if (LeftArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftArmColor"
|
||||
BodyColor.Name = "Left Arm Color"
|
||||
elseif (i == 4) then
|
||||
if (RightArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightArmColor"
|
||||
BodyColor.Name = "Right Arm Color"
|
||||
elseif (i == 5) then
|
||||
if (LeftLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftLegColor"
|
||||
BodyColor.Name = "Left Leg Color"
|
||||
elseif (i == 6) then
|
||||
if (RightLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightLegColor"
|
||||
BodyColor.Name = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
@ -162,26 +197,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
if (i == 1) then
|
||||
if (Hat1ID ~= nil) then
|
||||
newHat.Value = Hat1ID
|
||||
newHat.Name = Hat1ID
|
||||
newHat.Name = "Hat 1 - "..Hat1ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 1 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 2) then
|
||||
if (Hat2ID ~= nil) then
|
||||
newHat.Value = Hat2ID
|
||||
newHat.Name = Hat2ID
|
||||
newHat.Name = "Hat 2 - "..Hat2ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 2 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 3) then
|
||||
if (Hat3ID ~= nil) then
|
||||
newHat.Value = Hat3ID
|
||||
newHat.Name = Hat3ID
|
||||
newHat.Name = "Hat 3 - "..Hat3ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 3 - NoHat.rbxm"
|
||||
end
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
@ -193,10 +228,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newTShirt = Instance.new("StringValue",newCharApp)
|
||||
if (TShirtID ~= nil) then
|
||||
newTShirt.Value = TShirtID
|
||||
newTShirt.Name = TShirtID
|
||||
newTShirt.Name = "T-Shirt - "..TShirtID
|
||||
else
|
||||
newTShirt.Value = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -206,10 +241,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newShirt = Instance.new("StringValue",newCharApp)
|
||||
if (ShirtID ~= nil) then
|
||||
newShirt.Value = ShirtID
|
||||
newShirt.Name = ShirtID
|
||||
newShirt.Name = "Shirt - "..ShirtID
|
||||
else
|
||||
newShirt.Value = "NoShirt.rbxm"
|
||||
newShirt.Name = "NoShirt.rbxm"
|
||||
newShirt.Name = "Shirt - NoShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -219,24 +254,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newPants = Instance.new("StringValue",newCharApp)
|
||||
if (PantsID ~= nil) then
|
||||
newPants.Value = PantsID
|
||||
newPants.Name = PantsID
|
||||
newPants.Name = "Pants - "..PantsID
|
||||
else
|
||||
newPants.Value = "NoPants.rbxm"
|
||||
newPants.Name = "NoPants.rbxm"
|
||||
newPants.Name = "Pants - NoPants.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newPants
|
||||
typeValue.Value = 5
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
--EXTRA
|
||||
local newItem = Instance.new("StringValue",newCharApp)
|
||||
if (ItemID ~= nil) then
|
||||
newItem.Value = ItemID
|
||||
newItem.Name = "Extra - "..ItemID
|
||||
else
|
||||
newItem.Value = "NoExtra.rbxm"
|
||||
newItem.Name = "Extra - NoExtra.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newItem
|
||||
typeValue.Value = 6
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
@ -244,32 +283,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp==nil) then
|
||||
if (not Player:FindFirstChild("Security")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -320,24 +360,22 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
|
||||
Player:LoadCharacter()
|
||||
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
if (Player.Character ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
|
||||
while true do
|
||||
wait(0.001)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
if (ch.Humanoid.Health == 0) then
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character.Humanoid.Health == 0) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
elseif (ch.Parent == nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter() -- to make sure nobody is deleted.
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -351,7 +389,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
Server.IncommingConnection:connect(IncommingConnection)
|
||||
end
|
||||
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
local suc, err = pcall(function()
|
||||
client = game:GetService("NetworkClient")
|
||||
player = game:GetService("Players"):CreateLocalPlayer(UserID)
|
||||
@ -362,7 +400,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
player.CharacterAppearance=0
|
||||
pcall(function() player.Name=PlayerName or "" end)
|
||||
game:GetService("Visit")
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
|
||||
end)
|
||||
|
||||
@ -423,14 +461,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
end
|
||||
end
|
||||
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
local plr = game.Players:CreateLocalPlayer(UserID)
|
||||
game:GetService("RunService"):run()
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
plr.CharacterAppearance=0
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
game:GetService("Visit")
|
||||
while true do wait()
|
||||
|
@ -1,6 +1,9 @@
|
||||
settings().Rendering.FrameRateManager = 2
|
||||
settings().Network.DataSendRate = 30
|
||||
settings().Network.ReceiveRate = 60
|
||||
settings().Network.PhysicsSend = 1
|
||||
settings().Network.NetworkOwnerRate = 30
|
||||
settings().Network.PhysicsSendRate = 30
|
||||
|
||||
--function made by rbxbanland
|
||||
function newWaitForChild(newParent,name)
|
||||
@ -13,25 +16,33 @@ function newWaitForChild(newParent,name)
|
||||
return returnable
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
if (playerApp==nil) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
else
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
end
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar)
|
||||
PlayerService = game:GetService("Players")
|
||||
Player = PlayerService:GetPlayerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:FindFirstChild("Appearance")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
kick()
|
||||
end
|
||||
|
||||
local path = "rbxasset://../../../shareddata/charcustom/"
|
||||
|
||||
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
local customtype = newVal.CustomizationType.Value
|
||||
@ -41,18 +52,10 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 2) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
if (RemoveTeapotTurret == true) then
|
||||
if (newHat[1].Name ~= "TeapotTurret.rbxm") then
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
else
|
||||
newHat[1].Parent = newChar
|
||||
end
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
@ -60,7 +63,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 3) then
|
||||
pcall(function()
|
||||
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
|
||||
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newTShirt[1].Parent = newChar
|
||||
@ -71,7 +74,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 4) then
|
||||
pcall(function()
|
||||
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
|
||||
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
|
||||
if newShirt[1] then
|
||||
if newShirt[1].className == "Shirt" then
|
||||
newShirt[1].Parent = newChar
|
||||
@ -82,7 +85,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 5) then
|
||||
pcall(function()
|
||||
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
|
||||
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
|
||||
if newPants[1] then
|
||||
if newPants[1].className == "Pants" then
|
||||
newPants[1].Parent = newChar
|
||||
@ -93,7 +96,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 6) then
|
||||
pcall(function()
|
||||
local newFace = game.Workspace:InsertContent("rbxasset://../../../charcustom/faces/"..newVal.Value)
|
||||
local newFace = game.Workspace:InsertContent(path.."faces/"..newVal.Value)
|
||||
if newFace[1] then
|
||||
if newFace[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
@ -106,7 +109,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 7) then
|
||||
pcall(function()
|
||||
local newPart = game.Workspace:InsertContent("rbxasset://../../../charcustom/heads/"..newVal.Value)
|
||||
local newPart = game.Workspace:InsertContent(path.."heads/"..newVal.Value)
|
||||
if newPart[1] then
|
||||
if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
@ -116,11 +119,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end)
|
||||
elseif (customtype == 8) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
pcall(function()
|
||||
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
|
||||
if newItem[1] then
|
||||
if newItem[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
newItem[1].Face = "Front"
|
||||
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
else
|
||||
newItem[1].Parent = newChar
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
local newCharApp = Instance.new("IntValue",Player)
|
||||
newCharApp.Name = "Appearance"
|
||||
--BODY COLORS
|
||||
@ -132,42 +162,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "HeadColor"
|
||||
BodyColor.Name = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "TorsoColor"
|
||||
BodyColor.Name = "Torso Color"
|
||||
elseif (i == 3) then
|
||||
if (LeftArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftArmColor"
|
||||
BodyColor.Name = "Left Arm Color"
|
||||
elseif (i == 4) then
|
||||
if (RightArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightArmColor"
|
||||
BodyColor.Name = "Right Arm Color"
|
||||
elseif (i == 5) then
|
||||
if (LeftLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftLegColor"
|
||||
BodyColor.Name = "Left Leg Color"
|
||||
elseif (i == 6) then
|
||||
if (RightLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightLegColor"
|
||||
BodyColor.Name = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
@ -184,26 +214,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
if (i == 1) then
|
||||
if (Hat1ID ~= nil) then
|
||||
newHat.Value = Hat1ID
|
||||
newHat.Name = Hat1ID
|
||||
newHat.Name = "Hat 1 - "..Hat1ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 1 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 2) then
|
||||
if (Hat2ID ~= nil) then
|
||||
newHat.Value = Hat2ID
|
||||
newHat.Name = Hat2ID
|
||||
newHat.Name = "Hat 2 - "..Hat2ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 2 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 3) then
|
||||
if (Hat3ID ~= nil) then
|
||||
newHat.Value = Hat3ID
|
||||
newHat.Name = Hat3ID
|
||||
newHat.Name = "Hat 3 - "..Hat3ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 3 - NoHat.rbxm"
|
||||
end
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
@ -215,10 +245,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newTShirt = Instance.new("StringValue",newCharApp)
|
||||
if (TShirtID ~= nil) then
|
||||
newTShirt.Value = TShirtID
|
||||
newTShirt.Name = TShirtID
|
||||
newTShirt.Name = "T-Shirt - "..TShirtID
|
||||
else
|
||||
newTShirt.Value = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -228,10 +258,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newShirt = Instance.new("StringValue",newCharApp)
|
||||
if (ShirtID ~= nil) then
|
||||
newShirt.Value = ShirtID
|
||||
newShirt.Name = ShirtID
|
||||
newShirt.Name = "Shirt - "..ShirtID
|
||||
else
|
||||
newShirt.Value = "NoShirt.rbxm"
|
||||
newShirt.Name = "NoShirt.rbxm"
|
||||
newShirt.Name = "Shirt - NoShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -241,10 +271,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newPants = Instance.new("StringValue",newCharApp)
|
||||
if (PantsID ~= nil) then
|
||||
newPants.Value = PantsID
|
||||
newPants.Name = PantsID
|
||||
newPants.Name = "Pants - "..PantsID
|
||||
else
|
||||
newPants.Value = "NoPants.rbxm"
|
||||
newPants.Name = "NoPants.rbxm"
|
||||
newPants.Name = "Pants - NoPants.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -254,10 +284,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newFace = Instance.new("StringValue",newCharApp)
|
||||
if (FaceID ~= nil) then
|
||||
newFace.Value = FaceID
|
||||
newFace.Name = FaceID
|
||||
newFace.Name = "Face - "..FaceID
|
||||
else
|
||||
newFace.Value = "DefaultFace.rbxm"
|
||||
newFace.Name = "DefaultFace.rbxm"
|
||||
newFace.Name = "Face - DefaultFace.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -267,24 +297,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newHead = Instance.new("StringValue",newCharApp)
|
||||
if (HeadID ~= nil) then
|
||||
newHead.Value = HeadID
|
||||
newHead.Name = HeadID
|
||||
newHead.Name = "Head - "..HeadID
|
||||
else
|
||||
newHead.Value = "DefaultHead.rbxm"
|
||||
newHead.Name = "DefaultHead.rbxm"
|
||||
newHead.Name = "Head - DefaultHead.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newHead
|
||||
typeValue.Value = 7
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
--EXTRA
|
||||
local newItem = Instance.new("StringValue",newCharApp)
|
||||
if (ItemID ~= nil) then
|
||||
newItem.Value = ItemID
|
||||
newItem.Name = "Extra - "..ItemID
|
||||
else
|
||||
newItem.Value = "NoExtra.rbxm"
|
||||
newItem.Name = "Extra - NoExtra.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newItem
|
||||
typeValue.Value = 8
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
@ -292,32 +326,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp==nil) then
|
||||
if (not Player:FindFirstChild("Security")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -358,37 +393,35 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
PlayerService = game:GetService("Players")
|
||||
PlayerService.MaxPlayers = PlayerLimit
|
||||
PlayerService.PlayerAdded:connect(function(Player)
|
||||
Player.Chatted:connect(function(msg)
|
||||
print(Player.Name.."; "..msg)
|
||||
end)
|
||||
|
||||
if (PlayerService.NumPlayers > PlayerService.MaxPlayers) then
|
||||
KickPlayer(Player, "Too many players on server.")
|
||||
else
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added")
|
||||
Player:LoadCharacter()
|
||||
LoadSecurity(newWaitForChild(Player,"Security"),Player,game.Lighting)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
if (Player.Character ~= nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
|
||||
while true do
|
||||
wait(0.001)
|
||||
local ch = Player.Character
|
||||
if (ch ~= nil) then
|
||||
if (ch.Humanoid.Health == 0) then
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character.Humanoid.Health == 0) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
elseif (ch.Parent == nil) then
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter() -- to make sure nobody is deleted.
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),ch,RemoveTeapotTurret)
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Player.Chatted:connect(function(msg)
|
||||
print(Player.Name.."; "..msg)
|
||||
end)
|
||||
end)
|
||||
PlayerService.PlayerRemoving:connect(function(Player)
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
|
||||
@ -398,7 +431,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
InitalizeClientName(game.Lighting)
|
||||
Server.IncommingConnection:connect(IncommingConnection)
|
||||
end
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
pcall(function() game:SetPlaceID(-1, false) end)
|
||||
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end)
|
||||
|
||||
@ -422,7 +455,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
player.CharacterAppearance=0
|
||||
pcall(function() player.Name=PlayerName or "" end)
|
||||
game:GetService("Visit")
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
InitalizeSecurityValues(player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
|
||||
end)
|
||||
|
||||
@ -483,14 +516,14 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
end
|
||||
end
|
||||
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
local plr = game.Players:CreateLocalPlayer(UserID)
|
||||
game:GetService("RunService"):run()
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
plr.CharacterAppearance=0
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
game:GetService("Visit")
|
||||
while true do wait()
|
||||
|
@ -2,6 +2,7 @@ settings().Rendering.FrameRateManager = 2
|
||||
settings().Network.DataSendRate = 30
|
||||
settings().Network.PhysicsSendRate = 20
|
||||
settings().Network.ReceiveRate = 60
|
||||
settings().Network.NetworkOwnerRate = 30
|
||||
pcall(function() game:GetService("ScriptContext").ScriptsDisabled = false end)
|
||||
|
||||
--function made by rbxbanland
|
||||
@ -15,24 +16,32 @@ function newWaitForChild(newParent,name)
|
||||
return returnable
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
if (playerApp==nil) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
else
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Modified Client"
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Modified Client")
|
||||
end
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar)
|
||||
PlayerService = game:GetService("Players")
|
||||
Player = PlayerService:GetPlayerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:FindFirstChild("Appearance")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if ((playerApp:GetChildren() == 0) or (playerApp:GetChildren() == nil)) then
|
||||
kick()
|
||||
end
|
||||
|
||||
local path = "rbxasset://../../../shareddata/charcustom/"
|
||||
|
||||
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
@ -43,18 +52,10 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 2) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
if (RemoveTeapotTurret == true) then
|
||||
if (newHat[1].Name ~= "TeapotTurret.rbxm") then
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
else
|
||||
newHat[1].Parent = newChar
|
||||
end
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
@ -62,7 +63,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 3) then
|
||||
pcall(function()
|
||||
local newTShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/tshirts/"..newVal.Value)
|
||||
local newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newTShirt[1].Parent = newChar
|
||||
@ -73,7 +74,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 4) then
|
||||
pcall(function()
|
||||
local newShirt = game.Workspace:InsertContent("rbxasset://../../../charcustom/shirts/"..newVal.Value)
|
||||
local newShirt = game.Workspace:InsertContent(path.."shirts/"..newVal.Value)
|
||||
if newShirt[1] then
|
||||
if newShirt[1].className == "Shirt" then
|
||||
newShirt[1].Parent = newChar
|
||||
@ -84,7 +85,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 5) then
|
||||
pcall(function()
|
||||
local newPants = game.Workspace:InsertContent("rbxasset://../../../charcustom/pants/"..newVal.Value)
|
||||
local newPants = game.Workspace:InsertContent(path.."pants/"..newVal.Value)
|
||||
if newPants[1] then
|
||||
if newPants[1].className == "Pants" then
|
||||
newPants[1].Parent = newChar
|
||||
@ -95,7 +96,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 6) then
|
||||
pcall(function()
|
||||
local newFace = game.Workspace:InsertContent("rbxasset://../../../charcustom/faces/"..newVal.Value)
|
||||
local newFace = game.Workspace:InsertContent(path.."faces/"..newVal.Value)
|
||||
if newFace[1] then
|
||||
if newFace[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
@ -108,7 +109,7 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end)
|
||||
elseif (customtype == 7) then
|
||||
pcall(function()
|
||||
local newPart = game.Workspace:InsertContent("rbxasset://../../../charcustom/heads/"..newVal.Value)
|
||||
local newPart = game.Workspace:InsertContent(path.."heads/"..newVal.Value)
|
||||
if newPart[1] then
|
||||
if newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
@ -118,11 +119,38 @@ function LoadCharacterNew(playerApp,newChar,RemoveTeapotTurret)
|
||||
end
|
||||
end
|
||||
end)
|
||||
elseif (customtype == 8) then
|
||||
pcall(function()
|
||||
local newHat = game.Workspace:InsertContent(path.."hats/"..newVal.Value)
|
||||
if newHat[1] then
|
||||
if newHat[1].className == "Hat" then
|
||||
newHat[1].Parent = newChar
|
||||
else
|
||||
newHat[1]:remove()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
pcall(function()
|
||||
local newItem = game.Workspace:InsertContent(path.."custom/"..newVal.Value)
|
||||
if newItem[1] then
|
||||
if newItem[1].className == "Decal" then
|
||||
newWaitForChild(charparts[1],"face"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
newItem[1].Face = "Front"
|
||||
elseif newPart[1].className == "SpecialMesh" or newPart[1].className == "CylinderMesh" or newPart[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
else
|
||||
newItem[1].Parent = newChar
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
local newCharApp = Instance.new("IntValue",Player)
|
||||
newCharApp.Name = "Appearance"
|
||||
--BODY COLORS
|
||||
@ -134,42 +162,42 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "HeadColor"
|
||||
BodyColor.Name = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "TorsoColor"
|
||||
BodyColor.Name = "Torso Color"
|
||||
elseif (i == 3) then
|
||||
if (LeftArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftArmColor"
|
||||
BodyColor.Name = "Left Arm Color"
|
||||
elseif (i == 4) then
|
||||
if (RightArmColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightArmColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightArmColor"
|
||||
BodyColor.Name = "Right Arm Color"
|
||||
elseif (i == 5) then
|
||||
if (LeftLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(LeftLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "LeftLegColor"
|
||||
BodyColor.Name = "Left Leg Color"
|
||||
elseif (i == 6) then
|
||||
if (RightLegColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(RightLegColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
BodyColor.Name = "RightLegColor"
|
||||
BodyColor.Name = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
@ -186,26 +214,26 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
if (i == 1) then
|
||||
if (Hat1ID ~= nil) then
|
||||
newHat.Value = Hat1ID
|
||||
newHat.Name = Hat1ID
|
||||
newHat.Name = "Hat 1 - "..Hat1ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 1 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 2) then
|
||||
if (Hat2ID ~= nil) then
|
||||
newHat.Value = Hat2ID
|
||||
newHat.Name = Hat2ID
|
||||
newHat.Name = "Hat 2 - "..Hat2ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 2 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 3) then
|
||||
if (Hat3ID ~= nil) then
|
||||
newHat.Value = Hat3ID
|
||||
newHat.Name = Hat3ID
|
||||
newHat.Name = "Hat 3 - "..Hat3ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 3 - NoHat.rbxm"
|
||||
end
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
@ -217,10 +245,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newTShirt = Instance.new("StringValue",newCharApp)
|
||||
if (TShirtID ~= nil) then
|
||||
newTShirt.Value = TShirtID
|
||||
newTShirt.Name = TShirtID
|
||||
newTShirt.Name = "T-Shirt - "..TShirtID
|
||||
else
|
||||
newTShirt.Value = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -230,10 +258,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newShirt = Instance.new("StringValue",newCharApp)
|
||||
if (ShirtID ~= nil) then
|
||||
newShirt.Value = ShirtID
|
||||
newShirt.Name = ShirtID
|
||||
newShirt.Name = "Shirt - "..ShirtID
|
||||
else
|
||||
newShirt.Value = "NoShirt.rbxm"
|
||||
newShirt.Name = "NoShirt.rbxm"
|
||||
newShirt.Name = "Shirt - NoShirt.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -243,10 +271,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newPants = Instance.new("StringValue",newCharApp)
|
||||
if (PantsID ~= nil) then
|
||||
newPants.Value = PantsID
|
||||
newPants.Name = PantsID
|
||||
newPants.Name = "Pants - "..PantsID
|
||||
else
|
||||
newPants.Value = "NoPants.rbxm"
|
||||
newPants.Name = "NoPants.rbxm"
|
||||
newPants.Name = "Pants - NoPants.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -256,10 +284,10 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newFace = Instance.new("StringValue",newCharApp)
|
||||
if (FaceID ~= nil) then
|
||||
newFace.Value = FaceID
|
||||
newFace.Name = FaceID
|
||||
newFace.Name = "Face - "..FaceID
|
||||
else
|
||||
newFace.Value = "DefaultFace.rbxm"
|
||||
newFace.Name = "DefaultFace.rbxm"
|
||||
newFace.Name = "Face - DefaultFace.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
@ -269,24 +297,28 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
|
||||
local newHead = Instance.new("StringValue",newCharApp)
|
||||
if (HeadID ~= nil) then
|
||||
newHead.Value = HeadID
|
||||
newHead.Name = HeadID
|
||||
newHead.Name = "Head - "..HeadID
|
||||
else
|
||||
newHead.Value = "DefaultHead.rbxm"
|
||||
newHead.Name = "DefaultHead.rbxm"
|
||||
newHead.Name = "Head - DefaultHead.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newHead
|
||||
typeValue.Value = 7
|
||||
end
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: "..reason
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: "..reason)
|
||||
--EXTRA
|
||||
local newItem = Instance.new("StringValue",newCharApp)
|
||||
if (ItemID ~= nil) then
|
||||
newItem.Value = ItemID
|
||||
newItem.Name = "Extra - "..ItemID
|
||||
else
|
||||
newItem.Value = "NoExtra.rbxm"
|
||||
newItem.Name = "Extra - NoExtra.rbxm"
|
||||
end
|
||||
local typeValue = Instance.new("NumberValue")
|
||||
typeValue.Name = "CustomizationType"
|
||||
typeValue.Parent = newItem
|
||||
typeValue.Value = 8
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
@ -294,32 +326,33 @@ function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp==nil) then
|
||||
if (not Player:FindFirstChild("Security")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
return
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value) then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == nil) then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -399,7 +432,7 @@ function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Remo
|
||||
NetworkServer.IncommingConnection:connect(IncommingConnection)
|
||||
end
|
||||
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Ticket)
|
||||
pcall(function() game:SetPlaceID(-1, false) end)
|
||||
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end)
|
||||
|
||||
@ -492,7 +525,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
end
|
||||
end
|
||||
|
||||
InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
InitalizeSecurityValues(Player,LauncherMD5,ClientEXEMD5,ClientScriptMD5)
|
||||
pcall(function() Player:SetUnder13(false) end)
|
||||
pcall(function() Player:SetMembershipType(Enum.MembershipType.BuildersClub) end)
|
||||
@ -504,15 +537,19 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
|
||||
game:GetService("Visit")
|
||||
end
|
||||
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType)
|
||||
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
local plr = game.Players:CreateLocalPlayer(UserID)
|
||||
game:GetService("RunService"):run()
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
plr.CharacterAppearance=0
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID)
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
wait(0.65)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
wait(0.65)
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
newWaitForChild(game.StarterGui, "Health")
|
||||
game.StarterGui.Health:clone().Parent = plr.PlayerGui
|
||||
game:GetService("Visit")
|
||||
while true do wait()
|
||||
if (plr.Character.Humanoid.Health == 0) then
|
||||
|
@ -5873,7 +5873,7 @@ if UserSettings and LoadLibrary then
|
||||
|
||||
local function getMembershipTypeIcon(membershipType, playerName)
|
||||
if membershipType == Enum.MembershipType.None then
|
||||
return "rbxasset://../../../charcustom/icons/"..playerName..".png"
|
||||
return "rbxasset://../../../charcustom/custom/icons/"..playerName..".png"
|
||||
elseif membershipType == Enum.MembershipType.BuildersClub then
|
||||
return "rbxasset://textures/ui/TinyBcIcon.png"
|
||||
elseif membershipType == Enum.MembershipType.TurboBuildersClub then
|
||||
|
16
shareddata/charcustom/BodyColors.xml
Normal 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>
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
BIN
shareddata/charcustom/faces/2006Face.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
14
shareddata/charcustom/faces/2006Face.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Annoyance.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
14
shareddata/charcustom/faces/Annoyance.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/AprilFools.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
14
shareddata/charcustom/faces/AprilFools.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/AprilFools2.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
14
shareddata/charcustom/faces/AprilFools2.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/CatFace.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
14
shareddata/charcustom/faces/CatFace.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/CheckIt.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
14
shareddata/charcustom/faces/CheckIt.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Chill.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
14
shareddata/charcustom/faces/Chill.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/ChillMcCool.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
14
shareddata/charcustom/faces/ChillMcCool.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/ClassicZombie.png
Normal file
After Width: | Height: | Size: 87 KiB |
14
shareddata/charcustom/faces/ClassicZombie.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Commando.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
14
shareddata/charcustom/faces/Commando.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/D.png
Normal file
After Width: | Height: | Size: 12 KiB |
14
shareddata/charcustom/faces/D.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/DefaultFace.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
14
shareddata/charcustom/faces/DefaultFace.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Drool.png
Normal file
After Width: | Height: | Size: 18 KiB |
14
shareddata/charcustom/faces/Drool.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Dulko.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
14
shareddata/charcustom/faces/Dulko.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/EmotionallyDistressedZombie.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
14
shareddata/charcustom/faces/EmotionallyDistressedZombie.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/EpicFace.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
14
shareddata/charcustom/faces/EpicFace.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Err.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
14
shareddata/charcustom/faces/Err.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/EvilCatFace.png
Normal file
After Width: | Height: | Size: 17 KiB |
14
shareddata/charcustom/faces/EvilCatFace.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/ExistentialAngst.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
14
shareddata/charcustom/faces/ExistentialAngst.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Fearless.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
14
shareddata/charcustom/faces/Fearless.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/FinnMcCool.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
14
shareddata/charcustom/faces/FinnMcCool.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Freckles.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
14
shareddata/charcustom/faces/Freckles.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Grr.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
14
shareddata/charcustom/faces/Grr.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/HappyD.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
14
shareddata/charcustom/faces/HappyD.rbxm
Normal 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>
|
BIN
shareddata/charcustom/faces/Heeeeeey.png
Normal file
After Width: | Height: | Size: 12 KiB |