132 lines
3.2 KiB
Lua
132 lines
3.2 KiB
Lua
local gameInst = game.JobId
|
|
local isOnline = (gameInst ~= "")
|
|
|
|
if isOnline and game.GameId ~= 123949867 then
|
|
script:Destroy()
|
|
return
|
|
end
|
|
|
|
local Chat = game:GetService("Chat")
|
|
local CollectionService = game:GetService("CollectionService")
|
|
local InsertService = game:GetService("InsertService")
|
|
local Lighting = game:GetService("Lighting")
|
|
local Players = game:GetService("Players")
|
|
local ServerStorage = game:GetService("ServerStorage")
|
|
local StarterGui = game:GetService("StarterGui")
|
|
local StarterPlayer = game:GetService("StarterPlayer")
|
|
local TeleportService = game:GetService("TeleportService")
|
|
|
|
local initMsg = Instance.new("Message")
|
|
initMsg.Text = "INITIALIZING..."
|
|
initMsg.Parent = workspace
|
|
|
|
spawn(function ()
|
|
local StarterPlayerScripts = StarterPlayer:WaitForChild("StarterPlayerScripts")
|
|
local loader = StarterPlayerScripts:WaitForChild("PlayerScriptsLoader")
|
|
loader.Disabled = true
|
|
end)
|
|
|
|
if not workspace.FilteringEnabled then
|
|
initMsg.Text = "FATAL: Workspace.FilteringEnabled MUST be set to true!!!"
|
|
return 0
|
|
end
|
|
|
|
local override = ServerStorage:FindFirstChild("LocalGameImport")
|
|
|
|
if override then
|
|
if isOnline then
|
|
warn("WARNING: Dev framework is present in a networked game, and it shouldn't be!!!")
|
|
override:Destroy()
|
|
elseif override ~= script then
|
|
initMsg:Destroy()
|
|
require(override)
|
|
return 1
|
|
end
|
|
end
|
|
|
|
-- Apply standard forced settings
|
|
local devProps =
|
|
{
|
|
DevComputerMovementMode = "KeyboardMouse";
|
|
DevComputerCameraMovementMode = "Classic";
|
|
DevTouchMovementMode = "UserChoice";
|
|
DevTouchCameraMovementMode = "Classic";
|
|
|
|
LoadCharacterAppearance = false;
|
|
EnableMouseLockOption = false;
|
|
}
|
|
|
|
for prop, value in pairs(devProps) do
|
|
StarterPlayer[prop] = value
|
|
end
|
|
|
|
Lighting.Outlines = false
|
|
Players.CharacterAutoLoads = false
|
|
StarterGui.ShowDevelopmentGui = false
|
|
|
|
-- Add the default skybox, if no skybox has been added.
|
|
local sky = Lighting:FindFirstChildOfClass("Sky")
|
|
|
|
if not sky then
|
|
local skyProps = {"Bk", "Dn", "Ft", "Lf", "Rt", "Up"}
|
|
local skyId = "rbxasset://Sky/null_plainsky512_%s.jpg"
|
|
|
|
sky = Instance.new("Sky")
|
|
|
|
for _,prop in pairs(skyProps) do
|
|
sky["Skybox"..prop] = skyId:format(prop:lower())
|
|
end
|
|
|
|
sky.Parent = Lighting
|
|
end
|
|
|
|
sky.SunAngularSize = 14
|
|
sky.MoonAngularSize = 6
|
|
|
|
for _,player in pairs(Players:GetPlayers()) do
|
|
local char = player.Character
|
|
|
|
if char and char:IsDescendantOf(workspace) then
|
|
char:Destroy()
|
|
player.Character = nil
|
|
end
|
|
|
|
for prop, value in pairs(devProps) do
|
|
StarterPlayer[prop] = value
|
|
end
|
|
end
|
|
|
|
-- Load DataModel
|
|
|
|
for _,rep in pairs(script:GetChildren()) do
|
|
local real = game:FindFirstChildWhichIsA(rep.Name, true)
|
|
|
|
if not real then -- Hopefully a service that doesn't exist yet?
|
|
real = game:GetService(rep.Name)
|
|
end
|
|
|
|
for _,child in pairs(rep:GetChildren()) do
|
|
local existing = real:FindFirstChild(child.Name)
|
|
|
|
if existing then
|
|
existing:Destroy()
|
|
end
|
|
|
|
child.Parent = real
|
|
end
|
|
end
|
|
|
|
-- Reconnect any players that may have joined during initialization.
|
|
|
|
if isOnline then
|
|
for _,player in pairs(Players:GetPlayers()) do
|
|
TeleportService:TeleportToPlaceInstance(game.PlaceId, gameInst, player)
|
|
end
|
|
end
|
|
|
|
if Chat.LoadDefaultChat then
|
|
warn("Chat.LoadDefaultChat should be set to false!")
|
|
end
|
|
|
|
initMsg:Destroy()
|
|
return 0 |