2013/processed/host.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)