Clients/Client2018/content/scripts/CoreScripts/ServerStarterScript.lua

100 lines
2.9 KiB
Lua

--[[
// Filename: ServerStarterScript.lua
// Version: 1.0
// Description: Server core script that handles core script server side logic.
]]--
local runService = game:GetService('RunService')
-- Prevent server script from running in Studio when not in run mode
while not runService:IsRunning() do
wait()
end
--[[ Services ]]--
local RobloxReplicatedStorage = game:GetService('RobloxReplicatedStorage')
local ScriptContext = game:GetService('ScriptContext')
--[[ Add Server CoreScript ]]--
ScriptContext:AddCoreScriptLocal("ServerCoreScripts/ServerSocialScript", script.Parent)
--[[ Remote Events ]]--
local RemoteEvent_SetDialogInUse = Instance.new("RemoteEvent")
RemoteEvent_SetDialogInUse.Name = "SetDialogInUse"
RemoteEvent_SetDialogInUse.Parent = RobloxReplicatedStorage
local RemoteFunction_GetServerVersion = Instance.new("RemoteFunction")
RemoteFunction_GetServerVersion.Name = "GetServerVersion"
RemoteFunction_GetServerVersion.Parent = RobloxReplicatedStorage
--[[ Event Connections ]]--
local playerDialogMap = {}
local freeCameraFlagSuccess, freeCameraFlagValue = pcall(function() return settings():GetFFlag("FreeCameraForAdmins") end)
local freeCameraFlag = (freeCameraFlagSuccess and freeCameraFlagValue)
local function setDialogInUse(player, dialog, value, waitTime)
if typeof(dialog) ~= "Instance" or not dialog:IsA("Dialog") then
return
end
if type(value) ~= "boolean" then
return
end
if type(waitTime) ~= "number" and type(waitTime) ~= "nil" then
return
end
if typeof(player) ~= "Instance" or not player:IsA("Player") then
return
end
if waitTime and waitTime ~= 0 then
wait(waitTime)
end
if dialog ~= nil then
dialog:SetPlayerIsUsing(player, value)
playerDialogMap[player] = value and dialog or nil
end
end
RemoteEvent_SetDialogInUse.OnServerEvent:connect(setDialogInUse)
local function getServerVersion()
local rawVersion = runService:GetRobloxVersion()
local displayVersion
if rawVersion == "?" then
displayVersion = "DEBUG_SERVER"
else
if runService:IsStudio() then
displayVersion = "ROBLOX Studio"
else
displayVersion = rawVersion
end
end
return displayVersion
end
RemoteFunction_GetServerVersion.OnServerInvoke = getServerVersion
game:GetService("Players").PlayerRemoving:connect(function(player)
if player then
local dialog = playerDialogMap[player]
if dialog then
dialog:SetPlayerIsUsing(player, false)
playerDialogMap[player] = nil
end
end
end)
if game:GetService("Chat").LoadDefaultChat then
require(game:GetService("CoreGui").RobloxGui.Modules.Server.ClientChat.ChatWindowInstaller)()
require(game:GetService("CoreGui").RobloxGui.Modules.Server.ServerChat.ChatServiceInstaller)()
end
if freeCameraFlag then
require(game:GetService("CoreGui").RobloxGui.Modules.Server.FreeCamera.FreeCameraInstaller)()
end
if UserSettings():IsUserFeatureEnabled("UserUseSoundDispatcher") then
require(game:GetService("CoreGui").RobloxGui.Modules.Server.ServerSound.SoundDispatcherInstaller)()
end