100 lines
2.9 KiB
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
|
|
|