mirror of
https://github.com/Novetus/Novetus_src.git
synced 2025-01-31 09:41:33 +02:00
Removed redundant "Shaders" clients. Optimized kick functionality.
This commit is contained in:
parent
683d779b94
commit
da060d83a6
@ -17,10 +17,12 @@ Enhancements:
|
||||
- The Dependency Installer will require admin permissions by default, allowing all installers to run with admin permissions, making it quicker to install each dependency.
|
||||
- Added support for more client APIs in the Web Proxy.
|
||||
- Losing connection from servers will now automatically close the client.
|
||||
|
||||
Items:
|
||||
Hats:
|
||||
- Cat Ears
|
||||
- Improved player kick function.
|
||||
- Removed the following redundant clients to save space:
|
||||
2006S-Shaders
|
||||
2007E-Shaders
|
||||
2007M-Shaders
|
||||
- 2009E-HD Clients can now join 2009E servers and vice versa.
|
||||
|
||||
Fixes:
|
||||
- Fixed a bug where "Reset Colors" would reset the entire outfit.
|
||||
@ -33,6 +35,11 @@ Fixes:
|
||||
- Removed the ShadersCompatibility plugin due to security issues.
|
||||
- Fixed issues when creating reskins of certain hats.
|
||||
- Fixed a crash that would occur if 2 map files were in the same subfolder.
|
||||
|
||||
Items:
|
||||
Hats:
|
||||
- Cat Ears
|
||||
- Old Default Head (Replica)
|
||||
---------------------------------------------------------------------------
|
||||
Continuation of 2.0 updates.
|
||||
---------------------------------------------------------------------------
|
||||
|
@ -4,11 +4,8 @@ del /S *.log
|
||||
del /S *.bak
|
||||
|
||||
del /s /q clients\2007E\content\scripts\CSMPBoot.lua
|
||||
del /s /q clients\2007E-Shaders\content\scripts\CSMPBoot.lua
|
||||
del /s /q clients\2007M\content\scripts\CSMPBoot.lua
|
||||
del /s /q clients\2007M-Shaders\content\scripts\CSMPBoot.lua
|
||||
del /s /q clients\2006S\content\scripts\CSMPBoot.lua
|
||||
del /s /q clients\2006S-Shaders\content\scripts\CSMPBoot.lua
|
||||
del /s /q clients\ClientScriptTester\content\scripts\CSMPBoot.lua
|
||||
|
||||
del /s /q clients\2006S\ReShade.ini
|
||||
@ -17,36 +14,18 @@ del /s /q clients\2006S\opengl32.dll
|
||||
del /s /q clients\2006S\DefaultPreset.ini
|
||||
del /s /q clients\2006S\content\temp.rbxl
|
||||
|
||||
del /s /q clients\2006S-Shaders\ReShade.ini
|
||||
del /s /q clients\2006S-Shaders\OPENGL32.log
|
||||
del /s /q clients\2006S-Shaders\opengl32.dll
|
||||
del /s /q clients\2006S-Shaders\DefaultPreset.ini
|
||||
del /s /q clients\2006S-Shaders\content\temp.rbxl
|
||||
|
||||
del /s /q clients\2007E\ReShade.ini
|
||||
del /s /q clients\2007E\OPENGL32.log
|
||||
del /s /q clients\2007E\opengl32.dll
|
||||
del /s /q clients\2007E\DefaultPreset.ini
|
||||
del /s /q clients\2007E\content\temp.rbxl
|
||||
|
||||
del /s /q clients\2007E-Shaders\ReShade.ini
|
||||
del /s /q clients\2007E-Shaders\OPENGL32.log
|
||||
del /s /q clients\2007E-Shaders\opengl32.dll
|
||||
del /s /q clients\2007E-Shaders\DefaultPreset.ini
|
||||
del /s /q clients\2007E-Shaders\content\temp.rbxl
|
||||
|
||||
del /s /q clients\2007M\ReShade.ini
|
||||
del /s /q clients\2007M\OPENGL32.log
|
||||
del /s /q clients\2007M\opengl32.dll
|
||||
del /s /q clients\2007M\DefaultPreset.ini
|
||||
del /s /q clients\2007M\content\temp.rbxl
|
||||
|
||||
del /s /q clients\2007M-Shaders\ReShade.ini
|
||||
del /s /q clients\2007M-Shaders\OPENGL32.log
|
||||
del /s /q clients\2007M-Shaders\opengl32.dll
|
||||
del /s /q clients\2007M-Shaders\DefaultPreset.ini
|
||||
del /s /q clients\2007M-Shaders\content\temp.rbxl
|
||||
|
||||
del /s /q clients\2008M\ReShade.ini
|
||||
del /s /q clients\2008M\OPENGL32.log
|
||||
del /s /q clients\2008M\opengl32.dll
|
||||
@ -113,16 +92,13 @@ del /s /q config\initialfilelist.txt
|
||||
del /s /q config\BadgeDatabase.ini
|
||||
|
||||
del /s /q config\clients\GlobalSettings2_2007E.xml
|
||||
del /s /q config\clients\GlobalSettings2_2007E-Shaders.xml
|
||||
del /s /q config\clients\GlobalSettings_4_2009E.xml
|
||||
del /s /q config\clients\GlobalSettings_4_2009E-HD.xml
|
||||
del /s /q config\clients\GlobalSettings_4_2010L.xml
|
||||
del /s /q config\clients\GlobalSettings_4_2011E.xml
|
||||
del /s /q config\clients\GlobalSettings_4_2011M.xml
|
||||
del /s /q config\clients\GlobalSettings2_2006S.xml
|
||||
del /s /q config\clients\GlobalSettings2_2006S-Shaders.xml
|
||||
del /s /q config\clients\GlobalSettings4_2007M.xml
|
||||
del /s /q config\clients\GlobalSettings4_2007M-Shaders.xml
|
||||
del /s /q config\clients\GlobalSettings7_2008M.xml
|
||||
del /s /q config\clients\GlobalSettings_13_2012M.xml
|
||||
del /s /q config\clients\GlobalSettings_4_2009L.xml
|
||||
|
@ -6,11 +6,8 @@ SET basedir=%CD%\scripts
|
||||
SET gamescriptdir=%basedir%\game
|
||||
if not exist "%gamescriptdir%" mkdir "%gamescriptdir%"
|
||||
if not exist "%gamescriptdir%/2006S" mkdir "%gamescriptdir%/2006S"
|
||||
if not exist "%gamescriptdir%/2006S-Shaders" mkdir "%gamescriptdir%/2006S-Shaders"
|
||||
if not exist "%gamescriptdir%/2007E" mkdir "%gamescriptdir%/2007E"
|
||||
if not exist "%gamescriptdir%/2007E-Shaders" mkdir "%gamescriptdir%/2007E-Shaders"
|
||||
if not exist "%gamescriptdir%/2007M" mkdir "%gamescriptdir%/2007M"
|
||||
if not exist "%gamescriptdir%/2007M-Shaders" mkdir "%gamescriptdir%/2007M-Shaders"
|
||||
if not exist "%gamescriptdir%/2008M" mkdir "%gamescriptdir%/2008M"
|
||||
if not exist "%gamescriptdir%/2009E" mkdir "%gamescriptdir%/2009E"
|
||||
if not exist "%gamescriptdir%/2009E-HD" mkdir "%gamescriptdir%/2009E-HD"
|
||||
@ -22,11 +19,8 @@ if not exist "%gamescriptdir%/2012M" mkdir "%gamescriptdir%/2012M"
|
||||
|
||||
echo Copying client scripts...
|
||||
XCOPY "%cd%\Novetus\clients\2006S\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2006S" /y
|
||||
XCOPY "%cd%\Novetus\clients\2006S-Shaders\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2006S-Shaders" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007E\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2007E" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007E-Shaders\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2007E-Shaders" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007M\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2007M" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007M-Shaders\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2007M-Shaders" /y
|
||||
XCOPY "%cd%\Novetus\clients\2008M\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2008M" /y
|
||||
XCOPY "%cd%\Novetus\clients\2009E\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2009E" /y
|
||||
XCOPY "%cd%\Novetus\clients\2009E-HD\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2009E-HD" /y
|
||||
@ -51,11 +45,8 @@ XCOPY "%cd%\Novetus\clients\2012M\content\scripts\cores\*.lua" "%twelvemcores%"
|
||||
echo.
|
||||
echo Copying client script libraries...
|
||||
XCOPY "%cd%\Novetus\clients\2006S\content\fonts\libraries.rbxm" "%gamescriptdir%/2006S" /y
|
||||
XCOPY "%cd%\Novetus\clients\2006S-Shaders\content\fonts\libraries.rbxm" "%gamescriptdir%/2006S-Shaders" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007E\content\fonts\libraries.rbxm" "%gamescriptdir%/2007E" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007E-Shaders\content\fonts\libraries.rbxm" "%gamescriptdir%/2007E-Shaders" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007M\content\fonts\libraries.rbxm" "%gamescriptdir%/2007M" /y
|
||||
XCOPY "%cd%\Novetus\clients\2007M-Shaders\content\fonts\libraries.rbxm" "%gamescriptdir%/2007M-Shaders" /y
|
||||
XCOPY "%cd%\Novetus\clients\2008M\content\fonts\libraries.rbxm" "%gamescriptdir%/2008M" /y
|
||||
XCOPY "%cd%\Novetus\clients\2009E\content\fonts\libraries.rbxm" "%gamescriptdir%/2009E" /y
|
||||
XCOPY "%cd%\Novetus\clients\2009E-HD\content\fonts\libraries.rbxm" "%gamescriptdir%/2009E-HD" /y
|
||||
@ -71,7 +62,6 @@ SET tempdir=%CD%\cfg-temp
|
||||
if not exist "%tempdir%" mkdir "%tempdir%"
|
||||
XCOPY Novetus\config\clients\*.xml %tempdir% /sy
|
||||
del /s /q "%tempdir%\GlobalSettings2_2007E.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings2_2007E-Shaders.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings_4_2009E.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings_4_2009E-HD.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings_4_2009L.xml"
|
||||
@ -79,14 +69,11 @@ del /s /q "%tempdir%\GlobalSettings_4_2010L.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings_4_2011E.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings_4_2011M.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings4_2006S.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings4_2006S-Shaders.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings4_2007M.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings4_2007M-Shaders.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings7_2008M.xml"
|
||||
del /s /q "%tempdir%\GlobalSettings_13_2012M.xml"
|
||||
|
||||
XCOPY "%tempdir%\GlobalSettings2_2007E_default.xml" "%gamescriptdir%/2007E" /y
|
||||
XCOPY "%tempdir%\GlobalSettings2_2007E-Shaders_default.xml" "%gamescriptdir%/2007E-Shaders" /y
|
||||
XCOPY "%tempdir%\GlobalSettings_4_2009E_default.xml" "%gamescriptdir%/2009E" /y
|
||||
XCOPY "%tempdir%\GlobalSettings_4_2009E-HD_default.xml" "%gamescriptdir%/2009E-HD" /y
|
||||
XCOPY "%tempdir%\GlobalSettings_4_2009L_default.xml" "%gamescriptdir%/2009L" /y
|
||||
@ -94,9 +81,7 @@ XCOPY "%tempdir%\GlobalSettings_4_2010L_default.xml" "%gamescriptdir%/2010L" /y
|
||||
XCOPY "%tempdir%\GlobalSettings_4_2011E_default.xml" "%gamescriptdir%/2011E" /y
|
||||
XCOPY "%tempdir%\GlobalSettings_4_2011M_default.xml" "%gamescriptdir%/2011M" /y
|
||||
XCOPY "%tempdir%\GlobalSettings4_2006S_default.xml" "%gamescriptdir%/2006S" /y
|
||||
XCOPY "%tempdir%\GlobalSettings4_2006S-Shaders_default.xml" "%gamescriptdir%/2006S-Shaders" /y
|
||||
XCOPY "%tempdir%\GlobalSettings4_2007M_default.xml" "%gamescriptdir%/2007M" /y
|
||||
XCOPY "%tempdir%\GlobalSettings4_2007M-Shaders_default.xml" "%gamescriptdir%/2007M-Shaders" /y
|
||||
XCOPY "%tempdir%\GlobalSettings7_2008M_default.xml" "%gamescriptdir%/2008M" /y
|
||||
XCOPY "%tempdir%\GlobalSettings_13_2012M_default.xml" "%gamescriptdir%/2012M" /y
|
||||
rmdir "%tempdir%" /s /q
|
||||
|
@ -1,531 +0,0 @@
|
||||
showServerNotifications = true
|
||||
|
||||
--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
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
Server = game:service("NetworkServer")
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function newWaitForChildSecurity(newParent,name)
|
||||
local returnable = nil
|
||||
local loadAttempts = 0
|
||||
local maxAttempts = 5
|
||||
while loadAttempts < maxAttempts do
|
||||
if newParent:findFirstChild(name) then
|
||||
returnable = newParent:findFirstChild(name)
|
||||
break
|
||||
end
|
||||
wait()
|
||||
loadAttempts = loadAttempts + 1
|
||||
print("Player '" .. newParent.Name .. "' trying to connect. Number of attempts: "..loadAttempts)
|
||||
end
|
||||
|
||||
if (loadAttempts == maxAttempts) then
|
||||
KickPlayer(newParent, "Modified Client")
|
||||
end
|
||||
|
||||
return returnable
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar)
|
||||
if (game.Lighting:findFirstChild("DisableCustomization") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
wait(0.65)
|
||||
|
||||
PlayerService = game:service("Players")
|
||||
Player = PlayerService:playerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp == nil) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not Player:findFirstChild("Appearance")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if ((playerApp:children() == 0) or (playerApp:children() == 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:children()) do
|
||||
if (string.match(newVal.Name, "Color") == "Color") then
|
||||
pcall(function()
|
||||
charparts[newVal.ColorIndex.Value].BrickColor = newVal.Value
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnLoadCharacter(Player, playerApp) end)
|
||||
end
|
||||
|
||||
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
|
||||
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 = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
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 = "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 = "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 = "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 = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
indexValue.Parent = BodyColor
|
||||
indexValue.Value = i
|
||||
end
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp == nil) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not Player:findFirstChild("Security")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not playerApp:findFirstChild("ClientEXEMD5") or not playerApp:findFirstChild("LauncherMD5") or not playerApp:findFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:children()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeSecurityValues(Location,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
Location = Instance.new("IntValue", Location)
|
||||
Location.Name = "Security"
|
||||
|
||||
local clientValue = Instance.new("StringValue", Location)
|
||||
clientValue.Value = ClientEXEMD5 or ""
|
||||
clientValue.Name = "ClientEXEMD5"
|
||||
|
||||
local launcherValue = Instance.new("StringValue", Location)
|
||||
launcherValue.Value = LauncherMD5 or ""
|
||||
launcherValue.Name = "LauncherMD5"
|
||||
|
||||
local scriptValue = Instance.new("StringValue", Location)
|
||||
scriptValue.Value = ClientScriptMD5 or ""
|
||||
scriptValue.Name = "ClientScriptMD5"
|
||||
end
|
||||
|
||||
function InitalizeTripcode(Location,Tripcode)
|
||||
local code = Instance.new("StringValue", Location)
|
||||
code.Value = Tripcode or ""
|
||||
code.Name = "Tripcode"
|
||||
end
|
||||
|
||||
function LoadTripcode(Player)
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:findFirstChild("Tripcode")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
for _,newVal in pairs(Player:children()) do
|
||||
if (newVal.Name == "Tripcode") then
|
||||
if (newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print("ROBLOX Client version '0.3.368.0' loaded.")
|
||||
|
||||
function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Notifications)
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Server", "2006S-Shaders") end)
|
||||
Server = game:service("NetworkServer")
|
||||
RunService = game:service("RunService")
|
||||
PlayerService = game:service("Players")
|
||||
game:service("Visit"):setUploadUrl("")
|
||||
Server:start(Port, 20)
|
||||
RunService:run()
|
||||
showServerNotifications = Notifications
|
||||
game.Workspace:insertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
if (showServerNotifications) then
|
||||
PlayerService.maxPlayers = PlayerLimit + 1
|
||||
--create a fake player to record connections and disconnections
|
||||
notifyPlayer = game:service("Players"):createLocalPlayer(-1)
|
||||
notifyPlayer.Name = "[SERVER]"
|
||||
else
|
||||
PlayerService.maxPlayers = PlayerLimit
|
||||
end
|
||||
|
||||
local playerCount = 0
|
||||
PlayerService.ChildAdded:connect(function(Player)
|
||||
-- create anonymous player identifier. This is so we can track clients without tripcodes
|
||||
playerCount = playerCount + 1
|
||||
|
||||
local code = Instance.new("StringValue", Player)
|
||||
code.Value = playerCount
|
||||
code.Name = "AnonymousIdentifier"
|
||||
|
||||
-- rename all Server replicators in NetworkServer to "ServerReplicator"
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) == nil) then
|
||||
if (string.match(Child.Name, "ServerReplicator") == nil) then
|
||||
Child.Name = name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
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")
|
||||
if (showServerNotifications) then
|
||||
game.Players:Chat("Player '" .. Player.Name .. "' joined")
|
||||
end
|
||||
Player:LoadCharacter()
|
||||
LoadSecurity(newWaitForChildSecurity(Player,"Security"),Player,game.Lighting)
|
||||
newWaitForChildSecurity(Player,"Tripcode")
|
||||
LoadTripcode(Player)
|
||||
pcall(function() print("Player '" .. Player.Name .. "-" .. Player.userId .. "' security check success. Tripcode: '" .. Player.Tripcode.Value .. "'") end)
|
||||
if (Player.Character ~= nil) then
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
end
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnPlayerAdded(Player) end)
|
||||
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while Player ~= nil do
|
||||
wait(0.1)
|
||||
if (game.Lighting:findFirstChild("DisableRespawns") == nil) then
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character:findFirstChild("Humanoid") and (Player.Character.Humanoid.Health == 0)) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end))
|
||||
end)
|
||||
PlayerService.PlayerRemoving:connect(function(Player)
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
|
||||
if (showServerNotifications) then
|
||||
game.Players:Chat("Player '" .. Player.Name .. "' left")
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnPlayerRemoved(Player) end)
|
||||
end)
|
||||
InitalizeSecurityValues(game.Lighting,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
Server.IncommingConnection:connect(IncommingConnection)
|
||||
pcall(function() game.Close:connect(function() Server:stop() end) end)
|
||||
pcall(function() _G.CSScript_PostInit() end)
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while true do
|
||||
wait(0.1)
|
||||
pcall(function() _G.CSScript_Update() end)
|
||||
end
|
||||
end))
|
||||
end
|
||||
|
||||
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,Tripcode,Ticket)
|
||||
local suc, err = pcall(function()
|
||||
client = game:service("NetworkClient")
|
||||
player = game:service("Players"):createLocalPlayer(UserID)
|
||||
InitalizeSecurityValues(player,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
InitalizeTripcode(player,Tripcode)
|
||||
player:SetSuperSafeChat(false)
|
||||
pcall(function() player:SetUnder13(false) end)
|
||||
pcall(function() player:SetAccountAge(365) end)
|
||||
player:SetAdminMode(true)
|
||||
pcall(function() player.Name=PlayerName or "" end)
|
||||
game:service("Visit"):setUploadUrl("")
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
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")
|
||||
game:Close()
|
||||
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..")")
|
||||
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)
|
||||
game.GuiRoot.MainMenu["Toolbox"]:remove()
|
||||
game.GuiRoot.MainMenu["Edit Mode"]:remove()
|
||||
game.GuiRoot.RightPalette.ReportAbuse:remove()
|
||||
game.GuiRoot.ChatMenuPanel:remove()
|
||||
end)
|
||||
|
||||
if not suc then
|
||||
local x = Instance.new("Message")
|
||||
x.Text = err
|
||||
x.Parent = workspace
|
||||
wait(math.huge)
|
||||
end
|
||||
end
|
||||
|
||||
function CSStudio()
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Studio", "2006S-Shaders") end)
|
||||
pcall(function() _G.CSScript_PostInit() end)
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while true do
|
||||
wait(0.1)
|
||||
pcall(function() _G.CSScript_Update() end)
|
||||
end
|
||||
end))
|
||||
end
|
||||
|
||||
function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
print("3DView loaded. Nerd.")
|
||||
game:service("RunService"):run()
|
||||
game:SetMessage("Loading Player...")
|
||||
|
||||
local target = game.Workspace.Base
|
||||
|
||||
for i,v in pairs(target:children()) do
|
||||
if v.className == "Part" then
|
||||
if v.Name == "Part" then
|
||||
v:remove()
|
||||
end
|
||||
elseif v.className == "SpawnLocation" then
|
||||
v:remove()
|
||||
end
|
||||
end
|
||||
|
||||
local plr = game.Players:createLocalPlayer(UserID)
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,IconType)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
|
||||
local camera = game.Workspace.CurrentCamera
|
||||
camera.CameraType = 2
|
||||
local cf = CFrame.new(0, 10, 18)
|
||||
camera.CoordinateFrame = cf;
|
||||
camera.CameraSubject = target
|
||||
|
||||
i = true
|
||||
|
||||
local function fixJump(prop)
|
||||
plr.Character.Torso.Velocity = plr.Character.Torso.Velocity * Vector3.new (1, 0, 1)
|
||||
if i == true then
|
||||
plr.Character.Torso.CFrame = plr.Character.Torso.CFrame - Vector3.new(0, 1.8, 0)
|
||||
i = false
|
||||
else
|
||||
i = true
|
||||
end
|
||||
end
|
||||
|
||||
wait(0.5)
|
||||
for i,v in pairs(plr.Character:children()) do
|
||||
if v.className == "Part" then
|
||||
v.Anchored = true
|
||||
end
|
||||
end
|
||||
|
||||
plr.Character.Script:remove()
|
||||
game.GuiRoot:remove()
|
||||
|
||||
local human = plr.Character.Humanoid
|
||||
human.Jumping:connect(fixJump)
|
||||
game:ClearMessage()
|
||||
game:service("NetworkClient")
|
||||
end
|
||||
|
||||
_G.CSServer=CSServer
|
||||
_G.CSConnect=CSConnect
|
||||
_G.CSStudio=CSStudio
|
||||
_G.CS3DView=CS3DView
|
||||
|
||||
-- credit to KeyboardCombination
|
||||
local succ = pcall(function() --check if the metatables are already read only lol
|
||||
local canChange = getmetatable(game.Close);
|
||||
canChange.__metatable = canChange.__metatable
|
||||
end)
|
||||
|
||||
if not succ then
|
||||
return;
|
||||
end
|
||||
|
||||
function readonlytable(table)
|
||||
return setmetatable({}, {
|
||||
__index = table,
|
||||
__newindex = function(table, key, value)
|
||||
error("Attempt to modify read-only table")
|
||||
end,
|
||||
__metatable = false
|
||||
});
|
||||
end
|
||||
|
||||
function readonlytablechildren(table)
|
||||
for i,v in pairs(table) do
|
||||
if type(v)=="table" and table[i]~=_G._G then
|
||||
readonlytablechildren(table[i])
|
||||
table[i] = readonlytable(table[i])
|
||||
end
|
||||
if type(v)=="userdata" then
|
||||
local mt = getmetatable(table[i])
|
||||
if mt~=nil and mt~=false then
|
||||
mt.__metatable=false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
_G.rawset=nil
|
||||
readonlytablechildren(_G)
|
||||
_G._G = readonlytable(_G)
|
||||
mt = getmetatable(game.Changed)
|
||||
mt.__metatable=false
|
||||
mt = getmetatable("curse you roblox")
|
||||
mt.__metatable=false
|
@ -1,81 +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>
|
||||
<Item class="NetworkSettings" referent="RBX0">
|
||||
<Properties>
|
||||
<int name="ExtraPingVariance">0</int>
|
||||
<int name="MinExtraPing">0</int>
|
||||
<string name="Name">Network</string>
|
||||
<bool name="archivable">true</bool>
|
||||
<float name="dataPacketSize">0.75</float>
|
||||
<bool name="logPackets">false</bool>
|
||||
<int name="maxDataModelSendBuffer">1000000</int>
|
||||
<int name="maxSendBPS">0</int>
|
||||
<bool name="printInstances">false</bool>
|
||||
<bool name="printPacketBuffer">false</bool>
|
||||
<bool name="printProperties">false</bool>
|
||||
<float name="sendRate">1000000</float>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="DebugSettings" referent="RBX1">
|
||||
<Properties>
|
||||
<token name="AssertAction">1</token>
|
||||
<bool name="DisableEnvironmentalThrottle">false</bool>
|
||||
<bool name="DisableSleep">false</bool>
|
||||
<bool name="HighlightAwakeParts">false</bool>
|
||||
<bool name="HighlightSleepParts">false</bool>
|
||||
<string name="Name">Diagnostics</string>
|
||||
<bool name="ShowAggregation">false</bool>
|
||||
<bool name="ShowAnchors">false</bool>
|
||||
<bool name="ShowModelCoords">false</bool>
|
||||
<bool name="ShowPartCoords">false</bool>
|
||||
<bool name="ShowUnalignedParts">false</bool>
|
||||
<bool name="ShowWorldCoords">false</bool>
|
||||
<bool name="SoundWarnings">false</bool>
|
||||
<bool name="UseNewGraphics">false</bool>
|
||||
<bool name="ValidatingDebug">false</bool>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="errorReporting">1</token>
|
||||
<bool name="stackTracingEnabled">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="RenderSettings" referent="RBX2">
|
||||
<Properties>
|
||||
<token name="AASamples">1</token>
|
||||
<Vector2int16 name="FullscreenSize">
|
||||
<X>1024</X>
|
||||
<Y>768</Y>
|
||||
</Vector2int16>
|
||||
<string name="Name">Rendering</string>
|
||||
<bool name="Shadows">false</bool>
|
||||
<Vector2int16 name="WindowSize">
|
||||
<X>800</X>
|
||||
<Y>600</Y>
|
||||
</Vector2int16>
|
||||
<float name="_AggregateSize">1</float>
|
||||
<bool name="archivable">true</bool>
|
||||
<bool name="delaySwapBuffer">true</bool>
|
||||
<float name="maxMeshDetail">100</float>
|
||||
<float name="maxShadingQuality">100</float>
|
||||
<float name="minMeshDetail">100</float>
|
||||
<float name="minShadingQuality">100</float>
|
||||
<string name="profileName">profiled5</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Selection" referent="RBX3">
|
||||
<Properties>
|
||||
<string name="Name">Selection</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="GameSettings" referent="RBX4">
|
||||
<Properties>
|
||||
<bool name="AnimatedCharacter">true</bool>
|
||||
<int name="ChatHistory">50</int>
|
||||
<string name="Name">Game Options</string>
|
||||
<bool name="SoftwareSound">false</bool>
|
||||
<bool name="SoundEnabled">true</bool>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
@ -1,28 +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>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">ResetCommand</string>
|
||||
<ProtectedString name="Source">function onChatted(msg, speaker)
|
||||
|
||||
source = string.lower(speaker.Name)
|
||||
msg = string.lower(msg)
|
||||
-- Note: This one is NOT caps sensitive
|
||||
|
||||
if msg == "!!!reset" then
|
||||
speaker.Character.Humanoid.Health = 0
|
||||
end
|
||||
end
|
||||
|
||||
function onPlayerEntered(newPlayer)
|
||||
newPlayer.Chatted:connect(function(msg) onChatted(msg, newPlayer) end)
|
||||
end
|
||||
|
||||
game.Players.ChildAdded:connect(onPlayerEntered)</ProtectedString>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
@ -19,18 +19,14 @@ function KickPlayer(Player,reason)
|
||||
end
|
||||
|
||||
Server = game:service("NetworkServer")
|
||||
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,591 +0,0 @@
|
||||
showServerNotifications = true
|
||||
|
||||
--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
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
Server = game:service("NetworkServer")
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function newWaitForChildSecurity(newParent,name)
|
||||
local returnable = nil
|
||||
local loadAttempts = 0
|
||||
local maxAttempts = 5
|
||||
while loadAttempts < maxAttempts do
|
||||
if newParent:findFirstChild(name) then
|
||||
returnable = newParent:findFirstChild(name)
|
||||
break
|
||||
end
|
||||
wait()
|
||||
loadAttempts = loadAttempts + 1
|
||||
print("Player '" .. newParent.Name .. "' trying to connect. Number of attempts: "..loadAttempts)
|
||||
end
|
||||
|
||||
if (loadAttempts == maxAttempts) then
|
||||
KickPlayer(newParent, "Modified Client")
|
||||
end
|
||||
|
||||
return returnable
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar)
|
||||
if (game.Lighting:findFirstChild("DisableCustomization") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
wait(0.65)
|
||||
|
||||
PlayerService = game:service("Players")
|
||||
Player = PlayerService:playerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp == nil) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not Player:findFirstChild("Appearance")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if ((playerApp:children() == 0) or (playerApp:children() == 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:children()) do
|
||||
if (string.match(newVal.Name, "Color") == "Color") then
|
||||
pcall(function()
|
||||
charparts[newVal.ColorIndex.Value].BrickColor = newVal.Value
|
||||
end)
|
||||
elseif (string.match(newVal.Name, "Shirt") == "Shirt") then
|
||||
pcall(function()
|
||||
local newTShirt = "";
|
||||
if (string.match(newVal.Value, "http") == "http") then
|
||||
if (string.match(newVal.Value, "?id=") ~= "?id=") then
|
||||
newWaitForChild(charparts[2],"roblox"):remove()
|
||||
newDecal = Instance.new("Decal")
|
||||
newDecal.Name = "novetus"
|
||||
newDecal.Texture = newVal.Value
|
||||
newDecal.Face = 5
|
||||
newDecal.Parent = charparts[2]
|
||||
end
|
||||
else
|
||||
newTShirt = game.Workspace:insertContent(path.."tshirts/"..newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newWaitForChild(charparts[2],"roblox"):remove()
|
||||
newDecal = Instance.new("Decal")
|
||||
newDecal.Name = "novetus"
|
||||
newDecal.Face = 5
|
||||
newDecal.Parent = charparts[2]
|
||||
newTShirt[1].Parent = newChar
|
||||
else
|
||||
newTShirt[1]:remove()
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
elseif (string.match(newVal.Name, "Extra") == "Extra") then
|
||||
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 = 5
|
||||
elseif newItem[1].className == "SpecialMesh" or newItem[1].className == "CylinderMesh" or newItem[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
else
|
||||
newItem[1].Parent = newChar
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnLoadCharacter(Player, playerApp) end)
|
||||
end
|
||||
|
||||
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
|
||||
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 = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
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 = "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 = "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 = "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 = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
indexValue.Parent = BodyColor
|
||||
indexValue.Value = i
|
||||
end
|
||||
--T-SHIRT
|
||||
local newTShirt = Instance.new("StringValue",newCharApp)
|
||||
if (TShirtID ~= nil) then
|
||||
newTShirt.Value = TShirtID
|
||||
newTShirt.Name = "T-Shirt - "..TShirtID
|
||||
else
|
||||
newTShirt.Value = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
|
||||
end
|
||||
--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
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp == nil) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not Player:findFirstChild("Security")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not playerApp:findFirstChild("ClientEXEMD5") or not playerApp:findFirstChild("LauncherMD5") or not playerApp:findFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:children()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeSecurityValues(Location,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
Location = Instance.new("IntValue", Location)
|
||||
Location.Name = "Security"
|
||||
|
||||
local clientValue = Instance.new("StringValue", Location)
|
||||
clientValue.Value = ClientEXEMD5 or ""
|
||||
clientValue.Name = "ClientEXEMD5"
|
||||
|
||||
local launcherValue = Instance.new("StringValue", Location)
|
||||
launcherValue.Value = LauncherMD5 or ""
|
||||
launcherValue.Name = "LauncherMD5"
|
||||
|
||||
local scriptValue = Instance.new("StringValue", Location)
|
||||
scriptValue.Value = ClientScriptMD5 or ""
|
||||
scriptValue.Name = "ClientScriptMD5"
|
||||
end
|
||||
|
||||
function InitalizeTripcode(Location,Tripcode)
|
||||
local code = Instance.new("StringValue", Location)
|
||||
code.Value = Tripcode or ""
|
||||
code.Name = "Tripcode"
|
||||
end
|
||||
|
||||
function LoadTripcode(Player)
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:findFirstChild("Tripcode")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
for _,newVal in pairs(Player:children()) do
|
||||
if (newVal.Name == "Tripcode") then
|
||||
if (newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print("ROBLOX Client version '0.3.368.0' loaded.")
|
||||
|
||||
function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Notifications)
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Server", "2007E-Shaders") end)
|
||||
Server = game:service("NetworkServer")
|
||||
RunService = game:service("RunService")
|
||||
PlayerService = game:service("Players")
|
||||
game:service("Visit"):setUploadUrl("")
|
||||
Server:start(Port, 20)
|
||||
RunService:run()
|
||||
showServerNotifications = Notifications
|
||||
game.Workspace:insertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
if (showServerNotifications) then
|
||||
PlayerService.maxPlayers = PlayerLimit + 1
|
||||
--create a fake player to record connections and disconnections
|
||||
notifyPlayer = game:service("Players"):createLocalPlayer(-1)
|
||||
notifyPlayer.Name = "[SERVER]"
|
||||
else
|
||||
PlayerService.maxPlayers = PlayerLimit
|
||||
end
|
||||
|
||||
local playerCount = 0
|
||||
PlayerService.ChildAdded:connect(function(Player)
|
||||
-- create anonymous player identifier. This is so we can track clients without tripcodes
|
||||
playerCount = playerCount + 1
|
||||
|
||||
local code = Instance.new("StringValue", Player)
|
||||
code.Value = playerCount
|
||||
code.Name = "AnonymousIdentifier"
|
||||
|
||||
-- rename all Server replicators in NetworkServer to "ServerReplicator"
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) == nil) then
|
||||
if (string.match(Child.Name, "ServerReplicator") == nil) then
|
||||
Child.Name = name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
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")
|
||||
if (showServerNotifications) then
|
||||
game.Players:Chat("Player '" .. Player.Name .. "' joined")
|
||||
end
|
||||
Player:LoadCharacter()
|
||||
LoadSecurity(newWaitForChildSecurity(Player,"Security"),Player,game.Lighting)
|
||||
newWaitForChildSecurity(Player,"Tripcode")
|
||||
LoadTripcode(Player)
|
||||
pcall(function() print("Player '" .. Player.Name .. "-" .. Player.userId .. "' security check success. Tripcode: '" .. Player.Tripcode.Value .. "'") end)
|
||||
if (Player.Character ~= nil) then
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
end
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnPlayerAdded(Player) end)
|
||||
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while Player ~= nil do
|
||||
wait(0.1)
|
||||
if (game.Lighting:findFirstChild("DisableRespawns") == nil) then
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character:findFirstChild("Humanoid") and (Player.Character.Humanoid.Health == 0)) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end))
|
||||
end)
|
||||
PlayerService.PlayerRemoving:connect(function(Player)
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
|
||||
if (showServerNotifications) then
|
||||
game.Players:Chat("Player '" .. Player.Name .. "' left")
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnPlayerRemoved(Player) end)
|
||||
end)
|
||||
InitalizeSecurityValues(game.Lighting,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
Server.IncommingConnection:connect(IncommingConnection)
|
||||
pcall(function() game.Close:connect(function() Server:stop() end) end)
|
||||
pcall(function() _G.CSScript_PostInit() end)
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while true do
|
||||
wait(0.1)
|
||||
pcall(function() _G.CSScript_Update() end)
|
||||
end
|
||||
end))
|
||||
end
|
||||
|
||||
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,Tripcode,VerifiedScripts,Ticket)
|
||||
local suc, err = pcall(function()
|
||||
client = game:service("NetworkClient")
|
||||
player = game:service("Players"):createLocalPlayer(UserID)
|
||||
InitalizeSecurityValues(player,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
InitalizeTripcode(player,Tripcode)
|
||||
player:SetSuperSafeChat(false)
|
||||
pcall(function() player:SetUnder13(false) end)
|
||||
pcall(function() player:SetAccountAge(365) end)
|
||||
player:SetAdminMode(true)
|
||||
pcall(function() player.Name=PlayerName or "" end)
|
||||
game:service("Visit"):setUploadUrl("")
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
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")
|
||||
game:Close()
|
||||
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..")")
|
||||
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)
|
||||
end)
|
||||
|
||||
if not suc then
|
||||
local x = Instance.new("Message")
|
||||
x.Text = err
|
||||
x.Parent = workspace
|
||||
wait(math.huge)
|
||||
end
|
||||
end
|
||||
|
||||
function CSStudio()
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Studio", "2007E-Shaders") end)
|
||||
pcall(function() _G.CSScript_PostInit() end)
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while true do
|
||||
wait(0.1)
|
||||
pcall(function() _G.CSScript_Update() end)
|
||||
end
|
||||
end))
|
||||
end
|
||||
|
||||
function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
print("3DView loaded. Nerd.")
|
||||
game:service("RunService"):run()
|
||||
game:SetMessage("Loading Player...")
|
||||
|
||||
local target = game.Workspace.Base
|
||||
|
||||
for i,v in pairs(target:children()) do
|
||||
if v.className == "Part" then
|
||||
if v.Name == "Part" then
|
||||
v:remove()
|
||||
end
|
||||
elseif v.className == "SpawnLocation" then
|
||||
v:remove()
|
||||
end
|
||||
end
|
||||
|
||||
local plr = game.Players:createLocalPlayer(UserID)
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,IconType)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
|
||||
local camera = game.Workspace.CurrentCamera
|
||||
camera.CameraType = 2
|
||||
local cf = CFrame.new(0, 10, 18)
|
||||
camera.CoordinateFrame = cf;
|
||||
camera.CameraSubject = target
|
||||
|
||||
i = true
|
||||
|
||||
local function fixJump(prop)
|
||||
plr.Character.Torso.Velocity = plr.Character.Torso.Velocity * Vector3.new (1, 0, 1)
|
||||
if i == true then
|
||||
plr.Character.Torso.CFrame = plr.Character.Torso.CFrame - Vector3.new(0, 1.8, 0)
|
||||
i = false
|
||||
else
|
||||
i = true
|
||||
end
|
||||
end
|
||||
|
||||
wait(0.5)
|
||||
for i,v in pairs(plr.Character:children()) do
|
||||
if v.className == "Part" then
|
||||
v.Anchored = true
|
||||
end
|
||||
end
|
||||
|
||||
plr.Character.Animate:remove()
|
||||
plr.Character.Health:remove()
|
||||
plr.Character.Sound:remove()
|
||||
game.GuiRoot:remove()
|
||||
|
||||
local human = plr.Character.Humanoid
|
||||
human.Jumping:connect(fixJump)
|
||||
game:ClearMessage()
|
||||
game:service("NetworkClient")
|
||||
end
|
||||
|
||||
_G.CSServer=CSServer
|
||||
_G.CSConnect=CSConnect
|
||||
_G.CSStudio=CSStudio
|
||||
_G.CS3DView=CS3DView
|
||||
|
||||
-- credit to KeyboardCombination
|
||||
local succ = pcall(function() --check if the metatables are already read only lol
|
||||
local canChange = getmetatable(game.Close);
|
||||
canChange.__metatable = canChange.__metatable
|
||||
end)
|
||||
|
||||
if not succ then
|
||||
return;
|
||||
end
|
||||
|
||||
function readonlytable(table)
|
||||
return setmetatable({}, {
|
||||
__index = table,
|
||||
__newindex = function(table, key, value)
|
||||
error("Attempt to modify read-only table")
|
||||
end,
|
||||
__metatable = false
|
||||
});
|
||||
end
|
||||
|
||||
function readonlytablechildren(table)
|
||||
for i,v in pairs(table) do
|
||||
if type(v)=="table" and table[i]~=_G._G then
|
||||
readonlytablechildren(table[i])
|
||||
table[i] = readonlytable(table[i])
|
||||
end
|
||||
if type(v)=="userdata" then
|
||||
local mt = getmetatable(table[i])
|
||||
if mt~=nil and mt~=false then
|
||||
mt.__metatable=false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
_G.rawset=nil
|
||||
readonlytablechildren(_G)
|
||||
_G._G = readonlytable(_G)
|
||||
mt = getmetatable(game.Changed)
|
||||
mt.__metatable=false
|
||||
mt = getmetatable("curse you roblox")
|
||||
mt.__metatable=false
|
@ -1,74 +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>
|
||||
<Item class="NetworkSettings">
|
||||
<Properties>
|
||||
<int name="ExtraPingVariance">0</int>
|
||||
<int name="MinExtraPing">0</int>
|
||||
<string name="Name">Network</string>
|
||||
<bool name="archivable">true</bool>
|
||||
<float name="dataPacketSize">0.75</float>
|
||||
<bool name="logPackets">false</bool>
|
||||
<int name="maxDataModelSendBuffer">1000000</int>
|
||||
<int name="maxSendBPS">0</int>
|
||||
<bool name="printInstances">false</bool>
|
||||
<bool name="printPacketBuffer">false</bool>
|
||||
<bool name="printProperties">false</bool>
|
||||
<float name="sendRate">1000000</float>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="RenderSettings">
|
||||
<Properties>
|
||||
<token name="AASamples">1</token>
|
||||
<Vector2int16 name="FullscreenSize">
|
||||
<X>1024</X>
|
||||
<Y>768</Y>
|
||||
</Vector2int16>
|
||||
<string name="Name">Rendering</string>
|
||||
<Vector2int16 name="WindowSize">
|
||||
<X>800</X>
|
||||
<Y>600</Y>
|
||||
</Vector2int16>
|
||||
<float name="_AggregateSize">1</float>
|
||||
<bool name="_office2007Theme">false</bool>
|
||||
<string name="_skinFile"></string>
|
||||
<bool name="archivable">true</bool>
|
||||
<bool name="delaySwapBuffer">true</bool>
|
||||
<float name="maxMeshDetail">100</float>
|
||||
<float name="maxShadingQuality">100</float>
|
||||
<float name="minMeshDetail">100</float>
|
||||
<float name="minShadingQuality">100</float>
|
||||
<string name="profileName">profiled5</string>
|
||||
<bool name="shadows">false</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="GameSettings">
|
||||
<Properties>
|
||||
<string name="Name">Game Options</string>
|
||||
<bool name="animatedCharacter">true</bool>
|
||||
<bool name="archivable">true</bool>
|
||||
<float name="cameraLerp">0.899999976</float>
|
||||
<int name="chatHistory">30</int>
|
||||
<bool name="filterChat">false</bool>
|
||||
<bool name="softwareSound">false</bool>
|
||||
<bool name="soundEnabled">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="DebugSettings">
|
||||
<Properties>
|
||||
<bool name="HighlightAwakeParts">false</bool>
|
||||
<bool name="HighlightSleepParts">false</bool>
|
||||
<string name="Name">Diagnostics</string>
|
||||
<bool name="ShowAggregation">false</bool>
|
||||
<bool name="ShowAnchors">false</bool>
|
||||
<bool name="ShowModelCoords">false</bool>
|
||||
<bool name="ShowPartCoords">false</bool>
|
||||
<bool name="ShowUnalignedParts">false</bool>
|
||||
<bool name="ShowWorldCoords">false</bool>
|
||||
<bool name="ValidatingDebug">false</bool>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="errorReporting">1</token>
|
||||
<bool name="stackTracingEnabled">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
@ -1,13 +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>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">ResetCommand</string>
|
||||
<string name="Source">function onChatted(msg, speaker) source = string.lower(speaker.Name) msg = string.lower(msg) -- Note: This one is NOT caps sensitive if msg == "!!!reset" then speaker.Character.Humanoid.Health = 0 end end function onPlayerEntered(newPlayer) newPlayer.Chatted:connect(function(msg) onChatted(msg, newPlayer) end) end game.Players.ChildAdded:connect(onPlayerEntered)</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
@ -22,15 +22,11 @@ function KickPlayer(Player,reason)
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,637 +0,0 @@
|
||||
showServerNotifications = true
|
||||
|
||||
--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
|
||||
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
Server = game:GetService("NetworkServer")
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function newWaitForChildSecurity(newParent,name)
|
||||
local returnable = nil
|
||||
local loadAttempts = 0
|
||||
local maxAttempts = 5
|
||||
while loadAttempts < maxAttempts do
|
||||
if newParent:FindFirstChild(name) then
|
||||
returnable = newParent:FindFirstChild(name)
|
||||
break
|
||||
end
|
||||
wait()
|
||||
loadAttempts = loadAttempts + 1
|
||||
print("Player '" .. newParent.Name .. "' trying to connect. Number of attempts: "..loadAttempts)
|
||||
end
|
||||
|
||||
if (loadAttempts == maxAttempts) then
|
||||
KickPlayer(newParent, "Modified Client")
|
||||
end
|
||||
|
||||
return returnable
|
||||
end
|
||||
|
||||
function LoadCharacterNew(playerApp,newChar)
|
||||
if (game.Lighting:findFirstChild("DisableCustomization") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
PlayerService = game:GetService("Players")
|
||||
Player = PlayerService:GetPlayerFromCharacter(newChar)
|
||||
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp == nil) then
|
||||
kick()
|
||||
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
|
||||
if (string.match(newVal.Name, "Color") == "Color") then
|
||||
pcall(function()
|
||||
charparts[newVal.ColorIndex.Value].BrickColor = newVal.Value
|
||||
end)
|
||||
elseif (string.match(newVal.Name, "Hat") == "Hat") 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)
|
||||
elseif (string.match(newVal.Name, "Shirt") == "Shirt") then
|
||||
pcall(function()
|
||||
local newTShirt = "";
|
||||
if (string.match(newVal.Value, "http") == "http") then
|
||||
if (pcall(function()
|
||||
newTShirt = game.Workspace:InsertContent(newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newTShirt[1].Parent = newChar
|
||||
local oldTexture = newTShirt[1].Graphic;
|
||||
OldURL,OldID = oldTexture:match("(.+)=(.+)")
|
||||
NewURL,NewID = newVal.Value:match("(.+)=(.+)")
|
||||
newTShirt[1].Graphic = NewURL .. '=' .. OldID
|
||||
else
|
||||
newTShirt[1]:remove()
|
||||
end
|
||||
end
|
||||
end)) then
|
||||
--nothing
|
||||
print("success");
|
||||
else
|
||||
print("fail");
|
||||
newTShirt = Instance.new("ShirtGraphic")
|
||||
newTShirt.Graphic = newVal.Value
|
||||
newTShirt.Parent = newChar
|
||||
end
|
||||
else
|
||||
newTShirt = game.Workspace:InsertContent(path.."tshirts/"..newVal.Value)
|
||||
if newTShirt[1] then
|
||||
if newTShirt[1].className == "ShirtGraphic" then
|
||||
newTShirt[1].Parent = newChar
|
||||
else
|
||||
newTShirt[1]:remove()
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
elseif (string.match(newVal.Name, "Extra") == "Extra") 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 = 5
|
||||
elseif newItem[1].className == "SpecialMesh" or newItem[1].className == "CylinderMesh" or newItem[1].className == "BlockMesh" then
|
||||
newWaitForChild(charparts[1],"Mesh"):remove()
|
||||
newItem[1].Parent = charparts[1]
|
||||
else
|
||||
newItem[1].Parent = newChar
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnLoadCharacter(Player, playerApp) end)
|
||||
end
|
||||
|
||||
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
|
||||
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 = "Head Color"
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = BrickColor.new(TorsoColorID)
|
||||
else
|
||||
BodyColor.Value = BrickColor.new(1)
|
||||
end
|
||||
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 = "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 = "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 = "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 = "Right Leg Color"
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue")
|
||||
indexValue.Name = "ColorIndex"
|
||||
indexValue.Parent = BodyColor
|
||||
indexValue.Value = i
|
||||
end
|
||||
--HATS
|
||||
for i=1,3,1 do
|
||||
local newHat = Instance.new("StringValue",newCharApp)
|
||||
if (i == 1) then
|
||||
if (Hat1ID ~= nil) then
|
||||
newHat.Value = Hat1ID
|
||||
newHat.Name = "Hat 1 - "..Hat1ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 1 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 2) then
|
||||
if (Hat2ID ~= nil) then
|
||||
newHat.Value = Hat2ID
|
||||
newHat.Name = "Hat 2 - "..Hat2ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 2 - NoHat.rbxm"
|
||||
end
|
||||
elseif (i == 3) then
|
||||
if (Hat3ID ~= nil) then
|
||||
newHat.Value = Hat3ID
|
||||
newHat.Name = "Hat 3 - "..Hat3ID
|
||||
else
|
||||
newHat.Value = "NoHat.rbxm"
|
||||
newHat.Name = "Hat 3 - NoHat.rbxm"
|
||||
end
|
||||
end
|
||||
end
|
||||
--T-SHIRT
|
||||
local newTShirt = Instance.new("StringValue",newCharApp)
|
||||
if (TShirtID ~= nil) then
|
||||
newTShirt.Value = TShirtID
|
||||
newTShirt.Name = "T-Shirt - "..TShirtID
|
||||
else
|
||||
newTShirt.Value = "NoTShirt.rbxm"
|
||||
newTShirt.Name = "T-Shirt - NoTShirt.rbxm"
|
||||
end
|
||||
--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
|
||||
end
|
||||
|
||||
function LoadSecurity(playerApp,Player,ServerSecurityLocation)
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (playerApp == nil) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not Player:FindFirstChild("Security")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
if (not playerApp:FindFirstChild("ClientEXEMD5") or not playerApp:FindFirstChild("LauncherMD5") or not playerApp:FindFirstChild("ClientScriptMD5")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
if (newVal.Name == "ClientEXEMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientEXEMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "LauncherMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.LauncherMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if (newVal.Name == "ClientScriptMD5") then
|
||||
if (newVal.Value ~= ServerSecurityLocation.Security.ClientScriptMD5.Value or newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InitalizeSecurityValues(Location,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
Location = Instance.new("IntValue", Location)
|
||||
Location.Name = "Security"
|
||||
|
||||
local clientValue = Instance.new("StringValue", Location)
|
||||
clientValue.Value = ClientEXEMD5 or ""
|
||||
clientValue.Name = "ClientEXEMD5"
|
||||
|
||||
local launcherValue = Instance.new("StringValue", Location)
|
||||
launcherValue.Value = LauncherMD5 or ""
|
||||
launcherValue.Name = "LauncherMD5"
|
||||
|
||||
local scriptValue = Instance.new("StringValue", Location)
|
||||
scriptValue.Value = ClientScriptMD5 or ""
|
||||
scriptValue.Name = "ClientScriptMD5"
|
||||
end
|
||||
|
||||
function InitalizeTripcode(Location,Tripcode)
|
||||
local code = Instance.new("StringValue", Location)
|
||||
code.Value = Tripcode or ""
|
||||
code.Name = "Tripcode"
|
||||
end
|
||||
|
||||
function LoadTripcode(Player)
|
||||
local function kick()
|
||||
KickPlayer(Player, "Modified Client")
|
||||
end
|
||||
|
||||
if (not Player:FindFirstChild("Tripcode")) then
|
||||
kick()
|
||||
end
|
||||
|
||||
for _,newVal in pairs(Player:GetChildren()) do
|
||||
if (newVal.Name == "Tripcode") then
|
||||
if (newVal.Value == "") then
|
||||
kick()
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print("ROBLOX Client version '0.3.512.0' loaded.")
|
||||
|
||||
function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Notifications)
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Server", "2007M-Shaders") end)
|
||||
Server = game:GetService("NetworkServer")
|
||||
RunService = game:GetService("RunService")
|
||||
PlayerService = game:GetService("Players")
|
||||
game:GetService("Visit"):SetUploadUrl("")
|
||||
Server:start(Port, 20)
|
||||
RunService:run()
|
||||
showServerNotifications = Notifications
|
||||
game.Workspace:InsertContent("rbxasset://Fonts//libraries.rbxm")
|
||||
if (showServerNotifications) then
|
||||
PlayerService.MaxPlayers = PlayerLimit + 1
|
||||
--create a fake player to record connections and disconnections
|
||||
notifyPlayer = game:GetService("Players"):CreateLocalPlayer(-1)
|
||||
notifyPlayer.Name = "[SERVER]"
|
||||
else
|
||||
PlayerService.MaxPlayers = PlayerLimit
|
||||
end
|
||||
|
||||
local playerCount = 0
|
||||
PlayerService.PlayerAdded:connect(function(Player)
|
||||
-- create anonymous player identifier. This is so we can track clients without tripcodes
|
||||
playerCount = playerCount + 1
|
||||
|
||||
local code = Instance.new("StringValue", Player)
|
||||
code.Value = playerCount
|
||||
code.Name = "AnonymousIdentifier"
|
||||
|
||||
-- rename all Server replicators in NetworkServer to "ServerReplicator"
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) == nil) then
|
||||
if (string.match(Child.Name, "ServerReplicator") == nil) then
|
||||
Child.Name = name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
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")
|
||||
if (showServerNotifications) then
|
||||
game.Players:Chat("Player '" .. Player.Name .. "' joined")
|
||||
end
|
||||
Player:LoadCharacter()
|
||||
LoadSecurity(newWaitForChildSecurity(Player,"Security"),Player,game.Lighting)
|
||||
newWaitForChildSecurity(Player,"Tripcode")
|
||||
LoadTripcode(Player)
|
||||
pcall(function() print("Player '" .. Player.Name .. "-" .. Player.userId .. "' security check success. Tripcode: '" .. Player.Tripcode.Value .. "'") end)
|
||||
if (Player.Character ~= nil) then
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
end
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnPlayerAdded(Player) end)
|
||||
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while Player ~= nil do
|
||||
wait(0.1)
|
||||
if (game.Lighting:findFirstChild("DisableRespawns") == nil) then
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character:findFirstChild("Humanoid") and (Player.Character.Humanoid.Health == 0)) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChildSecurity(Player,"Appearance"),Player.Character)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end))
|
||||
end)
|
||||
PlayerService.PlayerRemoving:connect(function(Player)
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
|
||||
if (showServerNotifications) then
|
||||
game.Players:Chat("Player '" .. Player.Name .. "' left")
|
||||
end
|
||||
|
||||
pcall(function() _G.CSScript_OnPlayerRemoved(Player) end)
|
||||
end)
|
||||
InitalizeSecurityValues(game.Lighting,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
Server.IncommingConnection:connect(IncommingConnection)
|
||||
pcall(function() game.Close:connect(function() Server:stop() end) end)
|
||||
pcall(function() _G.CSScript_PostInit() end)
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while true do
|
||||
wait(0.1)
|
||||
pcall(function() _G.CSScript_Update() end)
|
||||
end
|
||||
end))
|
||||
end
|
||||
|
||||
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,Tripcode,Ticket)
|
||||
local suc, err = pcall(function()
|
||||
client = game:GetService("NetworkClient")
|
||||
player = game:GetService("Players"):CreateLocalPlayer(UserID)
|
||||
InitalizeSecurityValues(player,ClientEXEMD5,LauncherMD5,ClientScriptMD5)
|
||||
InitalizeTripcode(player,Tripcode)
|
||||
player:SetSuperSafeChat(false)
|
||||
pcall(function() player:SetUnder13(false) end)
|
||||
pcall(function() player:SetAccountAge(365) end)
|
||||
pcall(function() player.Name=PlayerName or "" end)
|
||||
game:GetService("Visit"):SetUploadUrl("")
|
||||
InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID)
|
||||
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")
|
||||
game:Close()
|
||||
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..")")
|
||||
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)
|
||||
end)
|
||||
|
||||
if not suc then
|
||||
local x = Instance.new("Message")
|
||||
x.Text = err
|
||||
x.Parent = workspace
|
||||
wait(math.huge)
|
||||
end
|
||||
end
|
||||
|
||||
function CSStudio()
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Studio", "2007M-Shaders") end)
|
||||
pcall(function() _G.CSScript_PostInit() end)
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while true do
|
||||
wait(0.1)
|
||||
pcall(function() _G.CSScript_Update() end)
|
||||
end
|
||||
end))
|
||||
end
|
||||
|
||||
function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,IconType,ItemID)
|
||||
print("3DView loaded. Nerd.")
|
||||
game:service("RunService"):run()
|
||||
game:SetMessage("Loading Player...")
|
||||
|
||||
local plr = game.Players:createLocalPlayer(UserID)
|
||||
plr.Name = PlayerName
|
||||
plr:LoadCharacter()
|
||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,IconType)
|
||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||
|
||||
local target = game.Workspace.Base.SpawnLocation
|
||||
local camera = game.Workspace.CurrentCamera
|
||||
camera.CameraType = 2
|
||||
local cf = CFrame.new(0, 10, 18)
|
||||
camera.CoordinateFrame = cf;
|
||||
camera.CameraSubject = target
|
||||
|
||||
i = true
|
||||
|
||||
local function fixJump(prop)
|
||||
plr.Character.Torso.Velocity = plr.Character.Torso.Velocity * Vector3.new (1, 0, 1)
|
||||
if i == true then
|
||||
plr.Character.Torso.CFrame = plr.Character.Torso.CFrame - Vector3.new(0, 1.8, 0)
|
||||
i = false
|
||||
else
|
||||
i = true
|
||||
end
|
||||
end
|
||||
|
||||
wait(0.5)
|
||||
for i,v in pairs(plr.Character:children()) do
|
||||
if v.className == "Part" then
|
||||
v.Anchored = true
|
||||
end
|
||||
end
|
||||
|
||||
plr.Character.Animate:remove()
|
||||
plr.Character.Health:remove()
|
||||
plr.Character.Sound:remove()
|
||||
game.GuiRoot:remove()
|
||||
|
||||
local human = plr.Character.Humanoid
|
||||
human.Jumping:connect(fixJump)
|
||||
game:ClearMessage()
|
||||
game:service("NetworkClient")
|
||||
end
|
||||
|
||||
_G.CSServer=CSServer
|
||||
_G.CSConnect=CSConnect
|
||||
_G.CSStudio=CSStudio
|
||||
_G.CS3DView=CS3DView
|
||||
|
||||
-- credit to KeyboardCombination
|
||||
local succ = pcall(function() --check if the metatables are already read only lol
|
||||
local canChange = getmetatable(game.Close);
|
||||
canChange.__metatable = canChange.__metatable
|
||||
end)
|
||||
|
||||
if not succ then
|
||||
return;
|
||||
end
|
||||
|
||||
function readonlytable(table)
|
||||
return setmetatable({}, {
|
||||
__index = table,
|
||||
__newindex = function(table, key, value)
|
||||
error("Attempt to modify read-only table")
|
||||
end,
|
||||
__metatable = false
|
||||
});
|
||||
end
|
||||
|
||||
function readonlytablechildren(table)
|
||||
for i,v in pairs(table) do
|
||||
if type(v)=="table" and table[i]~=_G._G then
|
||||
readonlytablechildren(table[i])
|
||||
table[i] = readonlytable(table[i])
|
||||
end
|
||||
if type(v)=="userdata" then
|
||||
local mt = getmetatable(table[i])
|
||||
if mt~=nil and mt~=false then
|
||||
mt.__metatable=false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
_G.rawset=nil
|
||||
readonlytablechildren(_G)
|
||||
_G._G = readonlytable(_G)
|
||||
mt = getmetatable(game.Changed)
|
||||
mt.__metatable=false
|
||||
mt = getmetatable("curse you roblox")
|
||||
mt.__metatable=false
|
@ -1,81 +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>
|
||||
<Item class="NetworkSettings" referent="RBX0">
|
||||
<Properties>
|
||||
<int name="ExtraPingVariance">0</int>
|
||||
<int name="MinExtraPing">0</int>
|
||||
<string name="Name">Network</string>
|
||||
<bool name="archivable">true</bool>
|
||||
<float name="dataPacketSize">0.75</float>
|
||||
<bool name="logPackets">false</bool>
|
||||
<int name="maxDataModelSendBuffer">1000000</int>
|
||||
<int name="maxSendBPS">0</int>
|
||||
<bool name="printInstances">false</bool>
|
||||
<bool name="printPacketBuffer">false</bool>
|
||||
<bool name="printProperties">false</bool>
|
||||
<float name="sendRate">1000000</float>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="DebugSettings" referent="RBX1">
|
||||
<Properties>
|
||||
<token name="AssertAction">1</token>
|
||||
<bool name="DisableEnvironmentalThrottle">false</bool>
|
||||
<bool name="DisableSleep">false</bool>
|
||||
<bool name="HighlightAwakeParts">false</bool>
|
||||
<bool name="HighlightSleepParts">false</bool>
|
||||
<string name="Name">Diagnostics</string>
|
||||
<bool name="ShowAggregation">false</bool>
|
||||
<bool name="ShowAnchors">false</bool>
|
||||
<bool name="ShowModelCoords">false</bool>
|
||||
<bool name="ShowPartCoords">false</bool>
|
||||
<bool name="ShowUnalignedParts">false</bool>
|
||||
<bool name="ShowWorldCoords">false</bool>
|
||||
<bool name="SoundWarnings">false</bool>
|
||||
<bool name="UseNewGraphics">false</bool>
|
||||
<bool name="ValidatingDebug">false</bool>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="errorReporting">1</token>
|
||||
<bool name="stackTracingEnabled">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="RenderSettings" referent="RBX2">
|
||||
<Properties>
|
||||
<token name="AASamples">1</token>
|
||||
<Vector2int16 name="FullscreenSize">
|
||||
<X>1024</X>
|
||||
<Y>768</Y>
|
||||
</Vector2int16>
|
||||
<string name="Name">Rendering</string>
|
||||
<bool name="Shadows">false</bool>
|
||||
<Vector2int16 name="WindowSize">
|
||||
<X>800</X>
|
||||
<Y>600</Y>
|
||||
</Vector2int16>
|
||||
<float name="_AggregateSize">1</float>
|
||||
<bool name="archivable">true</bool>
|
||||
<bool name="delaySwapBuffer">true</bool>
|
||||
<float name="maxMeshDetail">100</float>
|
||||
<float name="maxShadingQuality">100</float>
|
||||
<float name="minMeshDetail">100</float>
|
||||
<float name="minShadingQuality">100</float>
|
||||
<string name="profileName">profiled5</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Selection" referent="RBX3">
|
||||
<Properties>
|
||||
<string name="Name">Selection</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="GameSettings" referent="RBX4">
|
||||
<Properties>
|
||||
<bool name="AnimatedCharacter">true</bool>
|
||||
<int name="ChatHistory">50</int>
|
||||
<string name="Name">Game Options</string>
|
||||
<bool name="SoftwareSound">false</bool>
|
||||
<bool name="SoundEnabled">true</bool>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
@ -1,13 +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>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">ResetCommand</string>
|
||||
<string name="Source">function onChatted(msg, speaker) source = string.lower(speaker.Name) msg = string.lower(msg) -- Note: This one is NOT caps sensitive if msg == "!!!reset" then speaker.Character.Humanoid.Health = 0 end end function onPlayerEntered(newPlayer) newPlayer.Chatted:connect(function(msg) onChatted(msg, newPlayer) end) end game.Players.ChildAdded:connect(onPlayerEntered)</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
@ -14,23 +14,19 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
Server = game:GetService("NetworkServer")
|
||||
Server = game:service("NetworkServer")
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -14,7 +14,7 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
@ -22,15 +22,11 @@ function KickPlayer(Player,reason)
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -14,7 +14,7 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
@ -22,15 +22,11 @@ function KickPlayer(Player,reason)
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
@ -557,7 +553,7 @@ print("ROBLOX Client version '" .. rbxversion .. "' loaded.")
|
||||
|
||||
function CSServer(Port,PlayerLimit,ClientEXEMD5,LauncherMD5,ClientScriptMD5,Notifications)
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Server", "2009E-HD") end)
|
||||
pcall(function() _G.CSScript_PreInit("Server", "2009E") end)
|
||||
Server = game:GetService("NetworkServer")
|
||||
RunService = game:GetService("RunService")
|
||||
Server:start(Port, 20)
|
||||
@ -743,7 +739,7 @@ end
|
||||
|
||||
function CSStudio()
|
||||
pcall(function() dofile("rbxasset://..//..//..//addons//core//AddonLoader.lua") end)
|
||||
pcall(function() _G.CSScript_PreInit("Studio", "2009E-HD") end)
|
||||
pcall(function() _G.CSScript_PreInit("Studio", "2009E") end)
|
||||
pcall(function() _G.CSScript_PostInit() end)
|
||||
coroutine.resume(coroutine.create(function()
|
||||
while true do
|
||||
|
@ -14,7 +14,7 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
@ -22,15 +22,11 @@ function KickPlayer(Player,reason)
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -15,7 +15,7 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
@ -23,17 +23,11 @@ function KickPlayer(Player,reason)
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
--2010L crashes if we don't do this.
|
||||
wait(0.3)
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -15,7 +15,7 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
@ -23,17 +23,11 @@ function KickPlayer(Player,reason)
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
--2010L crashes if we don't do this.
|
||||
wait(0.3)
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -17,23 +17,19 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
Server = game:GetService("NetworkServer")
|
||||
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -17,23 +17,19 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
Server = game:GetService("NetworkServer")
|
||||
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -18,23 +18,19 @@ end
|
||||
function KickPlayer(Player,reason)
|
||||
pcall(function() _G.CSScript_OnPrePlayerKicked(Player,reason) end)
|
||||
|
||||
if (game.Lighting:FindFirstChild("SkipSecurity") ~= nil) then
|
||||
if (game.Lighting:findFirstChild("SkipSecurity") ~= nil) then
|
||||
do return end
|
||||
end
|
||||
|
||||
Server = game:GetService("NetworkServer")
|
||||
|
||||
|
||||
if (Player ~= nil) then
|
||||
pcall(function() _G.CSScript_OnPlayerKicked(Player,reason) end)
|
||||
|
||||
for _,Child in pairs(Server:children()) do
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
if (Server:findFirstChild(name) ~= nil and Child.Name == name) then
|
||||
Child:CloseConnection()
|
||||
Child:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
name = "ServerReplicator|"..Player.Name.."|"..Player.userId.."|"..Player.AnonymousIdentifier.Value
|
||||
Server[name]:CloseConnection()
|
||||
Server[name]:remove()
|
||||
print("Player '" .. Player.Name .. "' Kicked. Reason: "..reason)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -287,4 +287,8 @@ Drummer from Another Mother|DFAM
|
||||
Brother from Another Mother|BFAM
|
||||
Let's fly to the castle!
|
||||
Not AI Powered!
|
||||
Mega Man drops January 7th!|Listen!
|
||||
Mega Man drops January 7th!|Listen!
|
||||
Woahsi! It's a double Yoshi exploshi!|This... This is how the Wii U died....
|
||||
TEH DAY OF ALL TEH BLOD|THIS IS THE STORY OF A DAY WHERE THERE WAS ALL THIS BLOOD. A MAN WAS WALKING AROUND AND BLOOD STARTED COMING OUT OF HIM EVERYWHERE. THERE WAS SO MUCH BLOOD THAT IT FILLED UP AN ELEVATOR. HE WENT TO THE STORE AND THERE WAS JUST BLOOD ALL OVER THE PLACE! PEOPLE WERE SLIPPING IN IT AND THEY WERE ALL GROSSED OUT. HE TRIED TO GO SWIMMING AND ALL OF THE SHARKS WENT NUTS AND BITTENED EVERYBODY. HE GOT CHASED BY ALL THE VAMPIRES EVER. ONE TIME THE BLOOD GOT A KID AND A DOG. AT THE END OF THE DAY EVERYONE DECIDED THEY WOULD SEND HIM TO SPACE SO THAT HE WOULD STOP GETTING BLOOD EVERY WHERE. THE SCARIEST PART IS THAT THE MAN WAS YOU!!! (OR HE WAS A LADY IF YOU ARE A LADY) AND YOU FORGOT THAT THIS HAPPENED.
|
||||
I’m using tilt controls!
|
||||
Being useful to the Grox is good for your survival.
|
Loading…
Reference in New Issue
Block a user