163 lines
5.9 KiB
Lua
163 lines
5.9 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,
|
|
victorId=getKillerOfHumanoidIfStillInGame(humanoid),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) |