RBXLegacy-src/CSMPFunctions.lua

552 lines
25 KiB
Lua

-- VERSION CODENAME DOCUMENTATION
-- pre-alpha
-- - Mid-2008 or lower.
-- - Support for "fake" 2006/2007 clients, or the real things.
-- - Uses Legacy joinscript.
-- - Does not support hats or any other form of customization besides body colors.
-- pre-alpha-ext
-- - Mid-2008 or lower.
-- - Support for "fake" 2006/2007 clients, or the real things.
-- - Uses Legacy joinscript.
-- - Supports most kinds of customization.
-- alpha
-- - Mid-2008 or lower.
-- - Uses Legacy joinscript.
-- - Supports most kinds of customization.
-- beta
-- - Late-2008-Early 2009.
-- - Uses Legacy joinscript.
-- - Supports most kinds of customization.
-- pre-gamma
-- - Late-2009-Early 2010.
-- - Uses Legacy joinscript.
-- - Supports most kinds of customization.
-- delta-pre-gamma
-- - Late-2009-Early 2010.
-- - Uses RBXPri joinscript.
-- - Supports most kinds of customization.
-- gamma
-- - Mid-2010-November 2010.
-- - Uses Legacy joinscript.
-- - Supports most kinds of customization.
-- delta-gamma
-- - Mid-2010-November 2010.
-- - Uses RBXPri joinscript.
-- - Supports most kinds of customization.
-- delta
-- - December-2010-Early 2011.
-- - Uses RBXPri joinscript.
-- - Supports the more modern 2011 user interface.
-- - Supports most kinds of customization.
-- omega
-- - Mid-2011-???.
-- - Uses RBXPri joinscript.
-- - Meant for more modern clients which don't use early 2011's UI.
-- - Supports most kinds of customization.
rbxlegacyversion = ""
if (rbxlegacyversion == "pre-alpha") then
settings().Rendering.frameRateManager = 2;
settings().Rendering.graphicsMode = 2;
settings().Network.MaxSendBuffer = 1000000;
settings().Network.PhysicsReplicationUpdateRate = 1000000;
settings().Network.SendRate = 1000000;
elseif (rbxlegacyversion == "pre-alpha-ext") then
settings().Rendering.frameRateManager = 2;
settings().Rendering.graphicsMode = 2;
settings().Network.MaxSendBuffer = 1000000;
settings().Network.PhysicsReplicationUpdateRate = 1000000;
settings().Network.SendRate = 1000000;
elseif (rbxlegacyversion == "alpha") then
settings().Rendering.frameRateManager = 2;
settings().Rendering.graphicsMode = 2;
settings().Network.MaxSendBuffer = 1000000;
settings().Network.PhysicsReplicationUpdateRate = 1000000;
settings().Network.SendRate = 1000000;
elseif (rbxlegacyversion == "beta") then
settings().Rendering.FrameRateManager = 2;
settings().Network.SendRate = 30;
settings().Network.ReceiveRate = 60;
elseif (rbxlegacyversion == "pre-gamma") then
settings().Rendering.FrameRateManager = 2;
settings().Network.DataSendRate = 30;
settings().Network.PhysicsSendRate = 20;
settings().Network.ReceiveRate = 60;
elseif (rbxlegacyversion == "delta-pre-gamma") then
settings().Rendering.FrameRateManager = 2;
settings().Network.DataSendRate = 30;
settings().Network.PhysicsSendRate = 20;
settings().Network.ReceiveRate = 60;
elseif (rbxlegacyversion == "gamma") then
settings().Rendering.FrameRateManager = 2;
settings().Network.DataSendRate = 30;
settings().Network.PhysicsSendRate = 20;
settings().Network.ReceiveRate = 60;
elseif (rbxlegacyversion == "delta-gamma") then -- october 2010
settings().Rendering.FrameRateManager = 2;
settings().Network.DataSendRate = 30;
settings().Network.PhysicsSendRate = 20;
settings().Network.ReceiveRate = 60;
elseif (rbxlegacyversion == "delta") then -- late 2010-early 2011.
settings().Rendering.FrameRateManager = 2;
game:GetService("CoreGui").DescendantAdded:connect(function(Child)
if (Child:IsA("BaseScript")) and (Child.Name~="SubMenuBuilder") and (Child.Name~="ToolTipper") and (Child.Name~="MainBotChatScript") then
Child:Remove();
end
end)
coroutine.resume(coroutine.create(function()
while not game:GetService("CoreGui"):FindFirstChild("RobloxGui") do game:GetService("CoreGui").ChildAdded:wait(); end
game:GetService("CoreGui").RobloxGui.TopLeftControl:Remove();
end))
coroutine.resume(coroutine.create(function()
loadstring('\108\111\99\97\108\32\67\111\114\101\71\117\105\32\61\32\103\97\109\101\58\71\101\116\83\101\114\118\105\99\101\40\34\67\111\114\101\71\117\105\34\41\59\10\119\104\105\108\101\32\110\111\116\32\67\111\114\101\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\82\111\98\108\111\120\71\117\105\34\41\32\100\111\10\9\67\111\114\101\71\117\105\46\67\104\105\108\100\65\100\100\101\100\58\119\97\105\116\40\41\59\10\101\110\100\10\108\111\99\97\108\32\82\111\98\108\111\120\71\117\105\32\61\32\67\111\114\101\71\117\105\46\82\111\98\108\111\120\71\117\105\59\10\108\111\99\97\108\32\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\34\41\10\108\111\99\97\108\32\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\34\41\10\108\111\99\97\108\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\84\111\112\76\101\102\116\67\111\110\116\114\111\108\34\41\10\108\111\99\97\108\32\66\117\105\108\100\84\111\111\108\115\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\66\117\105\108\100\84\111\111\108\115\34\41\10\102\117\110\99\116\105\111\110\32\109\97\107\101\89\82\101\108\97\116\105\118\101\40\41\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\10\105\102\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\32\116\104\101\110\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\32\101\110\100\10\105\102\32\66\117\105\108\100\84\111\111\108\115\32\116\104\101\110\32\66\117\105\108\100\84\111\111\108\115\46\70\114\97\109\101\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\32\101\110\100\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\48\44\48\44\49\44\45\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\88\44\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\101\110\100\10\102\117\110\99\116\105\111\110\32\109\97\107\101\88\82\101\108\97\116\105\118\101\40\41\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\10\105\102\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\32\116\104\101\110\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\32\101\110\100\10\105\102\32\66\117\105\108\100\84\111\111\108\115\32\116\104\101\110\32\66\117\105\108\100\84\111\111\108\115\46\70\114\97\109\101\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\32\101\110\100\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\48\44\48\44\49\44\45\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\88\44\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\101\110\100\10\108\111\99\97\108\32\102\117\110\99\116\105\111\110\32\114\101\115\105\122\101\40\41\10\105\102\32\82\111\98\108\111\120\71\117\105\46\65\98\115\111\108\117\116\101\83\105\122\101\46\120\32\62\32\82\111\98\108\111\120\71\117\105\46\65\98\115\111\108\117\116\101\83\105\122\101\46\121\32\116\104\101\110\10\109\97\107\101\89\82\101\108\97\116\105\118\101\40\41\10\101\108\115\101\10\109\97\107\101\88\82\101\108\97\116\105\118\101\40\41\10\101\110\100\10\101\110\100\10\82\111\98\108\111\120\71\117\105\46\67\104\97\110\103\101\100\58\99\111\110\110\101\99\116\40\102\117\110\99\116\105\111\110\40\112\114\111\112\101\114\116\121\41\10\105\102\32\112\114\111\112\101\114\116\121\32\61\61\32\34\65\98\115\111\108\117\116\101\83\105\122\101\34\32\116\104\101\110\10\119\97\105\116\40\41\10\114\101\115\105\122\101\40\41\10\101\110\100\10\101\110\100\41\10\119\97\105\116\40\41\10\114\101\115\105\122\101\40\41\10')()
end))
elseif (rbxlegacyversion == "omega") then -- mid 2011 and above, or if you are trying to use RBXPri code.
settings().Rendering.FrameRateManager = 2;
end
rbxversion = version();
print("ROBLOX Client version '" .. rbxversion .. "' loaded.");
--function made by rbxbanland
function newWaitForChild(newParent,name)
local returnable = nil
if newParent:FindFirstChild(name) then
returnable = newParent:FindFirstChild(name)
else
repeat wait() returnable = newParent:FindFirstChild(name) until returnable ~= nil
end
return returnable
end
--we aren't doing anything with shirts or t-shirts or pants yet, we're only doing hats.
function LoadCharacterNew(playerApp,newChar)
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
if (newVal.CustomizationType.Value == 1) then
pcall(function()
charparts[newVal.ColorIndex.Value].BrickColor = newVal.Value
end)
elseif (newVal.CustomizationType.Value == 2) then
if (rbxlegacyversion ~= "pre-alpha") then
pcall(function()
local newHat = game.Workspace:InsertContent("rbxasset://../../../charcustom/hats/"..newVal.Value)
if newHat[1] then
if newHat[1].className == "Hat" then
newHat[1].Parent = newChar
else
newHat[1]:remove()
end
end
end)
end
end
end
end
function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID)
local newCharApp = Instance.new("IntValue",Player);
newCharApp.Name = "Appearance";
--BODY COLORS
for i=1,6,1 do
local BodyColor = Instance.new("BrickColorValue",newCharApp);
if (i == 1) then
if (HeadColorID ~= nil) then
BodyColor.Value = BrickColor.new(HeadColorID);
else
BodyColor.Value = BrickColor.new(1);
end
BodyColor.Name = "HeadColor";
elseif (i == 2) then
if (TorsoColorID ~= nil) then
BodyColor.Value = BrickColor.new(TorsoColorID);
else
BodyColor.Value = BrickColor.new(1);
end
BodyColor.Name = "TorsoColor";
elseif (i == 3) then
if (LeftArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftArmColorID);
else
BodyColor.Value = BrickColor.new(1);
end
BodyColor.Name = "LeftArmColor";
elseif (i == 4) then
if (RightArmColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightArmColorID);
else
BodyColor.Value = BrickColor.new(1);
end
BodyColor.Name = "RightArmColor";
elseif (i == 5) then
if (LeftLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(LeftLegColorID);
else
BodyColor.Value = BrickColor.new(1);
end
BodyColor.Name = "LeftLegColor";
elseif (i == 6) then
if (RightLegColorID ~= nil) then
BodyColor.Value = BrickColor.new(RightLegColorID);
else
BodyColor.Value = BrickColor.new(1);
end
BodyColor.Name = "RightLegColor";
end
local indexValue = Instance.new("NumberValue");
indexValue.Name = "ColorIndex";
indexValue.Parent = BodyColor;
indexValue.Value = i;
local typeValue = Instance.new("NumberValue");
typeValue.Name = "CustomizationType";
typeValue.Parent = BodyColor;
typeValue.Value = 1;
end
--HATS
for i=1,3,1 do
local newHat = Instance.new("StringValue",newCharApp);
if (i == 1) then
if (RightLegColorID ~= nil) then
newHat.Value = Hat1ID;
newHat.Name = Hat1ID;
else
newHat.Value = "NoHat.rbxm";
newHat.Name = "NoHat.rbxm";
end
elseif (i == 2) then
if (RightLegColorID ~= nil) then
newHat.Value = Hat2ID;
newHat.Name = Hat2ID;
else
newHat.Value = "NoHat.rbxm";
newHat.Name = "NoHat.rbxm";
end
elseif (i == 3) then
if (RightLegColorID ~= nil) then
newHat.Value = Hat3ID;
newHat.Name = Hat3ID;
else
newHat.Value = "NoHat.rbxm";
newHat.Name = "NoHat.rbxm";
end
end
local typeValue = Instance.new("NumberValue");
typeValue.Name = "CustomizationType";
typeValue.Parent = newHat;
typeValue.Value = 2;
end
end
function CSServer(Port,PlayerLimit)
if (rbxlegacyversion == "delta" or rbxlegacyversion == "delta-gamma" or rbxlegacyversion == "omega" or rbxlegacyversion == "delta-pre-gamma") then
assert((type(Port)~="number" or tonumber(Port)~=nil or Port==nil),"CSRun Error: Port must be nil or a number.");
local NetworkServer=game:GetService("NetworkServer");
pcall(NetworkServer.Stop,NetworkServer);
NetworkServer:Start(Port);
game:GetService("Players").MaxPlayers = PlayerLimit
game:GetService("Players").PlayerAdded:connect(function(Player)
if (game:GetService("Players").NumPlayers > game:GetService("Players").MaxPlayers) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Too many players on server."
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Too many players on server.");
else
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added");
Player:LoadCharacter();
end
Player.CharacterAdded:connect(function(char)
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character);
end)
Player.Changed:connect(function(Property)
if (Property=="Character") and (Player.Character~=nil) then
local Character=Player.Character;
local Humanoid=Character:FindFirstChild("Humanoid");
if (Humanoid~=nil) then
Humanoid.Died:connect(function() delay(5,function() Player:LoadCharacter() LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character) end) end)
end
end
end)
end)
game:GetService("Players").PlayerRemoving:connect(function(Player)
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
end)
game:GetService("RunService"):Run();
if (rbxlegacyversion == "delta-gamma") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2010.rbxm");
elseif (rbxlegacyversion == "delta") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2011.rbxm");
end
pcall(function() game.Close:connect(function() NetworkServer:Stop(); end) end);
NetworkServer.IncommingConnection:connect(IncommingConnection);
else
Server = game:GetService("NetworkServer")
RunService = game:GetService("RunService")
Server:start(Port, 20)
RunService:run();
if (rbxlegacyversion == "gamma") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2010.rbxm");
end
game:GetService("Players").MaxPlayers = PlayerLimit;
game:GetService("Players").PlayerAdded:connect(function(Player)
if (game:GetService("Players").NumPlayers > game:GetService("Players").MaxPlayers) then
local message = Instance.new("Message")
message.Text = "You were kicked. Reason: Too many players on server."
message.Parent = Player
wait(2)
Player:remove()
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Too many players on server.");
else
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added");
Player:LoadCharacter();
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character);
end
while true do
wait(0.001)
if (Player.Character ~= nil) then
if (Player.Character.Humanoid.Health == 0) then
wait(5)
Player:LoadCharacter()
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character);
elseif (Player.Character.Parent == nil) then
wait(5)
Player:LoadCharacter() -- to make sure nobody is deleted.
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character);
end
end
end
end)
game:GetService("Players").PlayerRemoving:connect(function(Player)
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
end)
game:GetService("RunService"):Run();
pcall(function() game.Close:connect(function() Server:Stop(); end) end);
Server.IncommingConnection:connect(IncommingConnection);
end
end
function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,Ticket)
if (rbxlegacyversion == "delta" or rbxlegacyversion == "delta-gamma" or rbxlegacyversion == "omega" or rbxlegacyversion == "delta-pre-gamma") then
pcall(function() game:SetPlaceID(-1, false) end);
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end);
pcall(function()
game:GetService("GuiService").Changed:connect(function()
pcall(function() game:GetService("GuiService").ShowLegacyPlayerList=true; end);
pcall(function() game.CoreGui.RobloxGui.PlayerListScript:Remove(); end);
pcall(function() game.CoreGui.RobloxGui.PlayerListTopRightFrame:Remove(); end);
pcall(function() game.CoreGui.RobloxGui.BigPlayerListWindowImposter:Remove(); end);
pcall(function() game.CoreGui.RobloxGui.BigPlayerlist:Remove(); end);
end);
end)
game:GetService("RunService"):Run();
assert((ServerIP~=nil and ServerPort~=nil),"CSConnect Error: ServerIP and ServerPort must be defined.");
local function SetMessage(Message) game:SetMessage(Message); end
local Visit,NetworkClient,PlayerSuccess,Player,ConnectionFailedHook=game:GetService("Visit"),game:GetService("NetworkClient");
local function GetClassCount(Class,Parent)
local Objects=Parent:GetChildren();
local Number=0;
for Index,Object in pairs(Objects) do
if (Object.className==Class) then
Number=Number+1;
end
Number=Number+GetClassCount(Class,Object);
end
return Number;
end
local function RequestCharacter(Replicator)
local Connection;
Connection=Player.Changed:connect(function(Property)
if (Property=="Character") then
game:ClearMessage();
end
end)
SetMessage("Requesting character...");
Replicator:RequestCharacter();
SetMessage("Waiting for character...");
end
local function Disconnection(Peer,LostConnection)
SetMessage("You have lost connection to the game");
end
local function ConnectionAccepted(Peer,Replicator)
Replicator.Disconnection:connect(Disconnection);
local RequestingMarker=true;
game:SetMessageBrickCount();
local Marker=Replicator:SendMarker();
Marker.Received:connect(function()
RequestingMarker=false;
RequestCharacter(Replicator);
end)
while RequestingMarker do
Workspace:ZoomToExtents();
wait(0.5);
end
end
local function ConnectionFailed(Peer, Code, why)
SetMessage("Failed to connect to the Game. (ID="..Code.." ["..why.."])");
end
pcall(function() settings().Diagnostics:LegacyScriptMode(); end);
pcall(function() game:SetRemoteBuildMode(true); end);
SetMessage("Connecting to server...");
NetworkClient.ConnectionAccepted:connect(ConnectionAccepted);
ConnectionFailedHook=NetworkClient.ConnectionFailed:connect(ConnectionFailed);
NetworkClient.ConnectionRejected:connect(function()
pcall(function() ConnectionFailedHook:disconnect(); end);
SetMessage("Failed to connect to the Game. (Connection rejected)");
end)
pcall(function() NetworkClient.Ticket=Ticket or ""; end) -- 2008 client has no ticket :O
PlayerSuccess,Player=pcall(function() return NetworkClient:PlayerConnect(UserID,ServerIP,ServerPort) end);
if (not PlayerSuccess) then
SetMessage("Failed to connect to the Game. (Invalid IP Address)");
NetworkClient:Disconnect();
end
if (not PlayerSuccess) then
local Error,Message=pcall(function()
Player=game:GetService("Players"):CreateLocalPlayer(UserID);
NetworkClient:Connect(ServerIP,ServerPort);
end);
if (not Error) then
SetMessage("Failed to connect to the Game.");
end
end
pcall(function() Player:SetUnder13(false) end);
pcall(function() Player:SetMembershipType(Enum.MembershipType.BuildersClub) end);
pcall(function() Player:SetAccountAge(365) end);
Player:SetSuperSafeChat(false);
Player.CharacterAppearance=0;
pcall(function() Player.Name=PlayerName or ""; end);
pcall(function() Visit:SetUploadUrl(""); end);
game:GetService("Visit");
InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID);
else
pcall(function() game:SetPlaceID(-1, false) end);
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end);
pcall(function()
game:GetService("GuiService").Changed:connect(function()
pcall(function() game:GetService("GuiService").ShowLegacyPlayerList=true; end);
pcall(function() game.CoreGui.RobloxGui.PlayerListScript:Remove(); end);
pcall(function() game.CoreGui.RobloxGui.PlayerListTopRightFrame:Remove(); end);
pcall(function() game.CoreGui.RobloxGui.BigPlayerListWindowImposter:Remove(); end);
pcall(function() game.CoreGui.RobloxGui.BigPlayerlist:Remove(); end);
end);
end)
local suc, err = pcall(function()
client = game:GetService("NetworkClient")
player = game:GetService("Players"):CreateLocalPlayer(UserID)
player:SetSuperSafeChat(false)
pcall(function() player:SetUnder13(false) end);
pcall(function() player:SetMembershipType(Enum.MembershipType.BuildersClub) end);
pcall(function() player:SetAccountAge(365) end);
player.CharacterAppearance=0;
pcall(function() player.Name=PlayerName or ""; end);
game:GetService("Visit");
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID);
end)
local function dieerror(errmsg)
game:SetMessage(errmsg)
wait(math.huge)
end
if not suc then
dieerror(err)
end
local function disconnect(peer,lostconnection)
game:SetMessage("You have lost connection to the game")
end
local function connected(url, replicator)
replicator.Disconnection:connect(disconnect)
local marker = nil
local suc, err = pcall(function()
game:SetMessageBrickCount()
marker = replicator:SendMarker()
end)
if not suc then
dieerror(err)
end
marker.Received:connect(function()
local suc, err = pcall(function()
game:ClearMessage()
end)
if not suc then
dieerror(err)
end
end)
end
local function rejected()
dieerror("Failed to connect to the Game. (Connection rejected)")
end
local function failed(peer, errcode, why)
dieerror("Failed to connect to the Game. (ID="..errcode.." ["..why.."])")
end
local suc, err = pcall(function()
game:SetMessage("Connecting to server...");
client.ConnectionAccepted:connect(connected)
client.ConnectionRejected:connect(rejected)
client.ConnectionFailed:connect(failed)
client:Connect(ServerIP,ServerPort, 0, 20)
if (rbxlegacyversion == "pre-alpha" or rbxlegacyversion == "pre-alpha-ext") then
game.GuiRoot.MainMenu["Toolbox"]:Remove()
game.GuiRoot.MainMenu["Edit Mode"]:Remove()
game.GuiRoot.RightPalette.ReportAbuse:Remove()
game.GuiRoot.ChatMenuPanel:Remove()
else
game.GuiRoot.MainMenu["Tools"]:Remove()
game.GuiRoot.MainMenu["Insert"]:Remove()
end
end)
if not suc then
local x = Instance.new("Message")
x.Text = err
x.Parent = workspace
wait(math.huge)
end
end
end
function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,Ticket)
local plr = game.Players:CreateLocalPlayer(UserID);
game:GetService("RunService"):run();
if (rbxlegacyversion == "gamma" or rbxlegacyversion == "delta-gamma") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2010.rbxm");
elseif (rbxlegacyversion == "delta") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2011.rbxm");
end
plr.Name = PlayerName;
plr:LoadCharacter();
plr.CharacterAppearance=0;
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID);
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character);
game:GetService("Visit");
while true do wait()
if (plr.Character.Humanoid.Health == 0) then
wait(5)
plr:LoadCharacter()
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character);
end
end
end
_G.CSServer=CSServer;
_G.CSConnect=CSConnect;
_G.CSSolo=CSSolo;