164 lines
6.3 KiB
Lua
164 lines
6.3 KiB
Lua
print("[Mercury]: Loaded Host corescript")
|
|
local placeId, sleeptime, access, url, killID, deathID, timeout, injectScriptAssetID, servicesUrl, libraryRegistrationScriptAssetID
|
|
pcall(function()
|
|
return game:GetService("ScriptContext"):AddStarterScript(injectScriptAssetID)
|
|
end)
|
|
game:GetService("RunService"):Run()
|
|
local waitForChild
|
|
waitForChild = function(parent, childName)
|
|
while true do
|
|
local child = parent:findFirstChild(childName)
|
|
if child then
|
|
return child
|
|
end
|
|
parent.ChildAdded:wait()
|
|
end
|
|
end
|
|
local getKillerOfHumanoidIfStillInGame
|
|
getKillerOfHumanoidIfStillInGame = function(humanoid)
|
|
local tag = humanoid:findFirstChild("creator")
|
|
if tag then
|
|
local killer = tag.Value
|
|
if killer.Parent then
|
|
return killer
|
|
end
|
|
end
|
|
end
|
|
local onDied
|
|
onDied = function(victim, humanoid)
|
|
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
|
|
local victorId = 0
|
|
if killer then
|
|
victorId = killer.userId
|
|
print("STAT: kill by " .. tostring(victorId) .. " of " .. tostring(victim.userId))
|
|
game:HttpGet(tostring(url) .. "/Game/Knockouts.ashx?UserID=" .. tostring(victorId) .. "&" .. tostring(access))
|
|
end
|
|
print("STAT: death of " .. tostring(victim.userId) .. " by " .. tostring(victorId))
|
|
return game:HttpGet(tostring(url) .. "/Game/Wipeouts.ashx?UserID=" .. tostring(victim.userId) .. "&" .. tostring(access))
|
|
end
|
|
pcall(function()
|
|
settings().Network.UseInstancePacketCache = true
|
|
end)
|
|
pcall(function()
|
|
settings().Network.UsePhysicsPacketCache = true
|
|
end)
|
|
pcall(function()
|
|
settings()["Task Scheduler"].PriorityMethod = Enum.PriorityMethod.AccumulatedError
|
|
end)
|
|
settings().Network.PhysicsSend = Enum.PhysicsSendMethod.ErrorComputation2
|
|
settings().Network.ExperimentalPhysicsEnabled = true
|
|
settings().Network.WaitingForCharacterLogRate = 100
|
|
pcall(function()
|
|
return settings().Diagnostics:LegacyScriptMode()
|
|
end)
|
|
url = "_BASE_URL"
|
|
local scriptContext = game:GetService("ScriptContext")
|
|
pcall(function()
|
|
return scriptContext:AddStarterScript(libraryRegistrationScriptAssetID)
|
|
end)
|
|
scriptContext.ScriptsDisabled = true
|
|
game:GetService("ChangeHistoryService"):SetEnabled(false)
|
|
local ns = game:GetService("NetworkServer")
|
|
if (url ~= nil) then
|
|
pcall(function()
|
|
return game:GetService("Players"):SetAbuseReportUrl(tostring(url) .. "/Report/Games.ashx")
|
|
end)
|
|
pcall(function()
|
|
return game:GetService("ScriptInformationProvider"):SetAssetUrl(tostring(url) .. "/Asset/")
|
|
end)
|
|
pcall(function()
|
|
return game:GetService("ContentProvider"):SetBaseUrl(tostring(url) .. "/")
|
|
end)
|
|
if (access ~= nil) then
|
|
do
|
|
local _with_0 = game:GetService("BadgeService")
|
|
_with_0:SetAwardBadgeUrl(tostring(url) .. "/Game/Badge/AwardBadge.ashx?UserID=%d&BadgeID=%d&PlaceID=%d&" .. tostring(access))
|
|
_with_0:SetHasBadgeUrl(tostring(url) .. "/Game/Badge/HasBadge.ashx?UserID=%d&BadgeID=%d&" .. tostring(access))
|
|
_with_0:SetIsBadgeDisabledUrl(tostring(url) .. "/Game/Badge/IsBadgeDisabled.ashx?BadgeID=%d&PlaceID=%d&" .. tostring(access))
|
|
end
|
|
do
|
|
local _with_0 = game:GetService("FriendService")
|
|
_with_0:SetMakeFriendUrl(tostring(servicesUrl) .. "/Friend/CreateFriend?firstUserId=%d&secondUserId=%d&" .. tostring(access))
|
|
_with_0:SetBreakFriendUrl(tostring(servicesUrl) .. "/Friend/BreakFriend?firstUserId=%d&secondUserId=%d&" .. tostring(access))
|
|
_with_0:SetGetFriendsUrl(tostring(servicesUrl) .. "/Friend/AreFriends?userId=%d&" .. tostring(access))
|
|
end
|
|
end
|
|
game:GetService("BadgeService"):SetIsBadgeLegalUrl("")
|
|
do
|
|
local _with_0 = game:GetService("InsertService")
|
|
_with_0:SetBaseSetsUrl(tostring(url) .. "/Game/Tools/InsertAsset.ashx?nsets=10&type=base")
|
|
_with_0:SetUserSetsUrl(tostring(url) .. "/Game/Tools/InsertAsset.ashx?nsets=20&type=user&userid=%d")
|
|
_with_0:SetCollectionUrl(tostring(url) .. "/Game/Tools/InsertAsset.ashx?sid=%d")
|
|
_with_0:SetAssetUrl(tostring(url) .. "/Asset/?id=%d")
|
|
_with_0:SetAssetVersionUrl(tostring(url) .. "/Asset/?assetversionid=%d")
|
|
end
|
|
pcall(function()
|
|
return loadfile(tostring(url) .. "/Game/LoadPlaceInfo.ashx?PlaceId=" .. tostring(placeId))()
|
|
end)
|
|
pcall(function()
|
|
if access then
|
|
return loadfile(tostring(url) .. "/Game/PlaceSpecificScript.ashx?PlaceId=" .. tostring(placeId) .. "&" .. tostring(access))()
|
|
end
|
|
end)
|
|
end
|
|
pcall(function()
|
|
return game:GetService("NetworkServer"):SetIsPlayerAuthenticationRequired(true)
|
|
end)
|
|
settings().Diagnostics.LuaRamLimit = 0
|
|
if (placeId ~= nil) and (killID ~= nil) and (deathID ~= nil) and (url ~= nil) then
|
|
local createDeathMonitor
|
|
createDeathMonitor = function(player)
|
|
if player.Character then
|
|
local humanoid = waitForChild(player.Character, "Humanoid")
|
|
return humanoid.Died:connect(function()
|
|
return onDied(player, humanoid)
|
|
end)
|
|
end
|
|
end
|
|
game:GetService("Players").ChildAdded:connect(function(player)
|
|
createDeathMonitor(player)
|
|
return player.Changed:connect(function(property)
|
|
if property == "Character" then
|
|
return createDeathMonitor(player)
|
|
end
|
|
end)
|
|
end)
|
|
end
|
|
game:GetService("Players").PlayerAdded:connect(function(player)
|
|
print("Player " .. tostring(player.userId) .. " added")
|
|
if url and access and placeId and player and player.userId then
|
|
game:HttpGet(tostring(url) .. "/Game/ClientPresence.ashx?action=connect&" .. tostring(access) .. "&PlaceID=" .. tostring(placeId) .. "&UserID=" .. tostring(player.userId))
|
|
return game:HttpGet(tostring(url) .. "/Game/PlaceVisit.ashx?UserID=" .. tostring(player.userId) .. "&AssociatedPlaceID=" .. tostring(placeId) .. "&" .. tostring(access))
|
|
end
|
|
end)
|
|
game:GetService("Players").PlayerRemoving:connect(function(player)
|
|
print("Player " .. tostring(player.userId) .. " leaving")
|
|
if url and access and placeId and player and player.userId then
|
|
return game:HttpGet(tostring(url) .. "/Game/ClientPresence.ashx?action=disconnect&" .. tostring(access) .. "&PlaceID=" .. tostring(placeId) .. "&UserID=" .. tostring(player.userId))
|
|
end
|
|
end)
|
|
if (placeId ~= nil) and (url ~= nil) then
|
|
wait()
|
|
game:Load(tostring(url) .. "/asset/?id=" .. tostring(placeId))
|
|
end
|
|
if _MAP_LOCATION_EXISTS then
|
|
wait()
|
|
game:Load("_MAP_LOCATION")
|
|
end
|
|
ns:Start(_SERVER_PORT, sleeptime)
|
|
game:GetService("Visit"):SetPing("_SERVER_PRESENCE_URL", 30)
|
|
if timeout then
|
|
scriptContext:SetTimeout(timeout)
|
|
end
|
|
scriptContext.ScriptsDisabled = false
|
|
local reset = ";mc"
|
|
return game.Players.PlayerAdded:connect(function(player)
|
|
return player.Chatted:connect(function(msg)
|
|
if msg == reset then
|
|
if player.Character then
|
|
player.Character.Humanoid.Health = 0
|
|
end
|
|
end
|
|
end)
|
|
end)
|