0) { $GLOBALS['Id'] = $userId; $user = new UserInf(); $userId = (int)$user->Id ?? rand(-9999, -1); } else { $userId = rand(-9999, -1); } $joinscript = [ "ClientPort" => 0, "MachineAddress" => $_GET['server'] ?? "127.0.0.1", "ServerPort" => $_GET['serverPort'] ?? 53640, "PingUrl" => "", "PingInterval" => 120, "UserName" => $user->Name ?? ("Guest " . ($userId - ($userId * 2))), "SeleniumTestMode" => false, "UserId" => $userId, "RobloxLocale" => "en_us", "GameLocale" => "en_us", "SuperSafeChat" => ($userId > 0) ? false : true, "CharacterAppearance" => "http://api.".$_SERVER['SERVER_NAME']."/v1.1/avatar-fetch/?placeId=".$placeId."&userId=".$userId, "ClientTicket" => "", "NewClientTicket" => "", "GameId" => "00000000-0000-0000-0000-000000000000", "PlaceId" => $placeId, "MeasurementUrl" => "", "WaitingForCharacterGuid" => "00000000-0000-0000-0000-000000000000", "BaseUrl" => $baseUrl, "ChatStyle" => "Classic", "VendorId" => 0, "ScreenShotInfo" => "", "VideoInfo" => "", "CreatorId" => 0, "CreatorTypeEnum" => "User", "MembershipType" => "None", "AccountAge" => 0, "CookieStoreFirstTimePlayKey" => "rbx_evt_ftp", "CookieStoreFiveMinutePlayKey" => "rbx_evt_fmp", "CookieStoreEnabled" => true, "IsRobloxPlace" => false, "GenerateTeleportJoin" => ($_GET['isTeleport'] !== 'true') ? false : true, "IsUnknownOrUnder13" => ($userId > 0) ? false : true, "GameChatType" => "NoOne", "SessionId" => '{"SessionId":"00000000-0000-0000-0000-000000000000","GameId":"00000000-0000-0000-0000-000000000000","PlaceId":'.$placeId.',"ClientIpAddress":"'.$_SERVER['REMOTE_ADDR'].'","PlatformTypeId":5,"SessionStarted":"2013-12-4T4:20:00.0000000Z","BrowserTrackerId":0,"PartyId":null,"Age":null,"Latitude":null,"Longitude":null,"CountryId":1,"PolicyCountryId":null,"LanguageId":null,"BlockedPlayerIds":null,"JoinType":"Unknown","PlaySessionFlags":0}', "AnalyticsSessionId" => "00000000-0000-0000-0000-000000000000", "DataCenterId" => 0, "UniverseId" => 0, "BrowserTrackerId" => 0, "UsePortraitMode" => false, "FollowUserId" => 0, "characterAppearanceId" => 0, "CountryCode" => "US" ]; $data = json_encode($joinscript, JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK); if ($_GET['nosig'] !== null and $_GET['nosig'] !== '' and $_GET['nosig'] !== false) { die($data); } $data = " " . $data; $key = file_get_contents("file:///C:/signing/privatekey.pem"); openssl_sign($data, $sig, $key, OPENSSL_ALGO_SHA1); die("--rbxsig%" . base64_encode($sig) . "%" . $data); } // DEFAULTS $userId = ($_GET['UserID'] == "0" and $_GET['server'] == "localhost") ? -1 : rand(-9999, -1); $userName = ($userId < 0) ? "Guest ".(-($userId)) : "Player ".$userId; $memberType = "Enum.MembershipType.None"; $placeId = -1; // replace all variables with the proper value $server = ($_GET["server"] !== null and (substr_count($_GET['server'], '.') == 3 or $_GET["server"] == "localhost")) ? $_GET['server'] : "localhost"; $port = ($_GET["serverPort"] !== null && $_GET["serverPort"] !== 0) ? $_GET["serverPort"] : 53640; if (!isset($_GET["UserID"]) or $_GET["UserID"] == null) { $GLOBALS['UserName'] = $_GET["UserName"]; $pname = new idfromuser($inf['user']); $GLOBALS['id'] = $pname->Id; }else { $GLOBALS['id'] = $_GET['UserID']; } $privateuser = new privateuser($inf['privateuser']); // FIX THIS IF STATEMENT if ((!isset($_GET["UserID"]) and !isset($_GET["UserName"])) or ($_GET["UserID"] == null and $_GET["UserName"] == null)) { die("I'm calling out from Scatland I'm calling out from Scatman's world If you wanna break free you better listen to me You got to learn how to see in your fantasy I'm calling out from Scatland I'm calling out from Scatman's world If you wanna break free you better listen to me You got to learn how to see in your fantasy Everybody's talkin' something very shockin' just to Keep on blockin' what they're feelin' inside But listen to me brother, you just keep on walkin' 'cause You and me and sister ain't got nothin' to hide Scatman, fat man, black and white and brown man Tell me 'bout the colour of your soul If part of your solution isn't ending the pollution Then I don't want to hear your stories told I want to welcome you to Scatman's world I'm calling out from Scatland I'm calling out from Scatman's world If you wanna break free you better listen to me You got to learn how to see in your fantasy Everyone's born to compete as he chooses But how can someone win if winning means that someone loses I sit and see and wonder what it's like to be in touch No wonder all my brothers and my sisters need a crutch I want to be a human being not a human doing I couldn't keep that pace up if I tried The source of my intention really isn't crime prevention My intention is prevention of the lie, yeah Welcome to the Scatman's world I'm calling out from Scatland I'm calling out from Scatman's world If you wanna break free you better listen to me You got to learn how to see in your fantasy I'm calling out from Scatland I'm calling out from Scatman's world If you wanna break free you better listen to me You got to learn how to see in your fantasy Listen to me I'm calling out from Scatland I'm calling out from Scatman's world If you wanna break free you better listen to me You got to learn how to see in your fantasy"); } if (((!isset($_GET["UserID"]) and !isset($_GET["UserName"])) or ($_GET["UserID"] == null and $_GET["UserName"] == null) or getRealIpAddr() !== $privateuser->recentip)/* and $_GET["UserName"] !== "jacobman12"*/) { $user = null; /*if (getRealIpAddr() !== $privateuser->recentip) { die(getRealIpAddr()."|".$privateuser->recentip); }else{ die("idk"); }*/ }else { if (isset($_GET["UserID"]) and $_GET['UserID'] !== nil) { $GLOBALS['Id'] = $_GET['UserID']; }else { $GLOBALS['Id'] = $GLOBALS['id']; } $user = new UserInf($inf['user']); if ($user->Id == null) { $user = null; if ($_GET["UserID"] == 0) { $userinfo["Name"] = "Player"; $userinfo["Id"] = 0; $userinfo["MembershipLevel"] = 0; } } } if ($user !== null) { $userName = $user->Name; $memberType = "Enum.MembershipType.None"; // Membership values $NBC = "Enum.MembershipType.None"; $BC = "Enum.MembershipType.BuildersClub"; $TBC = "Enum.MembershipType.TurboBuildersClub"; $OBC = "Enum.MembershipType.OutrageousBuildersClub"; if ($user->MembershipLevel == 1) { $memberType = $BC; } if ($user->MembershipLevel == 2) { $memberType = $TBC; } if ($user->MembershipLevel == 3) { $memberType = $OBC; } //charapp $charApp = $baseUrl."Asset/CharacterFetch.ashx?userId=" . $user->Id; $userId = $user->Id; $SSC = false; } else { $charApp = $baseUrl."Asset/CharacterFetch.ashx?userId=" . $userId; $SSC = true; } //coke is very epic ob_start(); ?> --[[ Copyleft 2018-2020 ROBLONIUM Developers, All Epicness Reserved ]]-- local forceVersion = false local devMode = false if ((version() ~= "2013. 12. 4. 1" and version() ~= "?") or not string.find(Game:GetService('ContentProvider').BaseUrl, "roblonium.com")) and forceVersion == true then game:SetMessage("ROBLONIUM version is out of date. Please uninstall and try again.") print('Error: Unexpected BaseUrl "' .. Game:GetService('ContentProvider').BaseUrl .. '"') else -- functions -------------------------- function onPlayerAdded(player) -- override end -- MultiplayerSharedScript.lua inserted here ------ Prepended to Join.lua -- -- log app init time pcall(function() local t = ElapsedTime() local platform = settings().Diagnostics.OsPlatform game:HttpGet("Game/JoinRate.ashx?st=0&i=&p=&c=GameAppInit&r=Success&d=" .. (math.floor(t*1000)) .. "&ip=&errorType=&platform=" .. platform, false) end) pcall(function() game:SetPlaceID(, false) end) local startTime = tick() local connectResolved = false local loadResolved = false local joinResolved = false local playResolved = true local playStartTime = 0 local cdnSuccess = 0 local cdnFailure = 0 -- if we are on a touch device, no blocking http calls allowed! This can cause a crash on iOS -- In general we need a long term strategy to remove blocking http calls from all platforms local isTouchDevice = Game:GetService("UserInputService").TouchEnabled settings()["Game Options"].CollisionSoundEnabled = true pcall(function() settings().Rendering.EnableFRM = true end) pcall(function() settings().Physics.Is30FpsThrottleEnabled = true end) pcall(function() settings()["Task Scheduler"].PriorityMethod = Enum.PriorityMethod.AccumulatedError end) pcall(function() settings().Physics.PhysicsEnvironmentalThrottle = Enum.EnviromentalPhysicsThrottle.DefaultAuto end) function reportContentProvider(time, queueLength, blocking) pcall(function() game:HttpGet("Analytics/ContentProvider.ashx?t=" .. time .. "&ql=" .. queueLength, blocking and not isTouchDevice) end) end function reportCdn(blocking) pcall(function() local newCdnSuccess = settings().Diagnostics.CdnSuccessCount local newCdnFailure = settings().Diagnostics.CdnFailureCount local successDelta = newCdnSuccess - cdnSuccess local failureDelta = newCdnFailure - cdnFailure cdnSuccess = newCdnSuccess cdnFailure = newCdnFailure if successDelta > 0 or failureDelta > 0 then game:HttpGet("Game/Cdn.ashx?source=client&success=" .. successDelta .. "&failure=" .. failureDelta, blocking and not isTouchDevice) end end) end function reportDuration(category, result, duration, blocking,errorType) if not errorType then errorType = '' end local platform = settings().Diagnostics.OsPlatform local bytesReceived = -1 if stats().Network:getChildren()[2] ~= nil then bytesReceived = stats().Network:getChildren()[2].Stats.totalBytesReceived:GetValue() end pcall(function() game:HttpGet("Game/JoinRate.ashx?st=0&i=&p=&c=" .. category .. "&r=" .. result .. "&d=" .. (math.floor(duration*1000)) .. "&b=" .. bytesReceived .. "&ip=&errorType=" .. errorType .. "&platform=" .. platform, blocking and not isTouchDevice) end) end -- arguments --------------------------------------- local threadSleepTime = ... if threadSleepTime==nil then threadSleepTime = 15 end local test = true print("! Joining game '' place at ") local closeConnection = game.Close:connect(function() if 0 then reportCdn(true) if not connectResolved then local duration = tick() - startTime; reportDuration("GameConnect", "Failure", duration, true) elseif (not loadResolved) or (not joinResolved) then local duration = tick() - startTime; if not loadResolved then loadResolved = true reportDuration("GameLoad","Cancel", duration, true) end if not joinResolved then joinResolved = true reportDuration("GameJoin","Cancel", duration, true) end elseif not playResolved then local duration = tick() - playStartTime; playResolved = true reportDuration("GameDuration","Success", duration, true) end if true then pcall(function() game:HttpPost("auth/invalidate", "invalidate") end) end end end) game:GetService("ChangeHistoryService"):SetEnabled(false) game:GetService("ContentProvider"):SetThreadPool(16) game:GetService("InsertService"):SetBaseSetsUrl("Game/Tools/InsertAsset.ashx?nsets=10&type=base") game:GetService("InsertService"):SetUserSetsUrl("Game/Tools/InsertAsset.ashx?nsets=20&type=user&userid=%d") game:GetService("InsertService"):SetCollectionUrl("Game/Tools/InsertAsset.ashx?sid=%d") game:GetService("InsertService"):SetAssetUrl("Asset/?id=%d") game:GetService("InsertService"):SetAssetVersionUrl("Asset/?assetversionid=%d") pcall(function() game:GetService("SocialService"):SetFriendUrl("Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d") end) pcall(function() game:GetService("SocialService"):SetBestFriendUrl("Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d") end) pcall(function() game:GetService("SocialService"):SetGroupUrl("Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d") end) pcall(function() game:GetService("SocialService"):SetGroupRankUrl("Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d") end) pcall(function() game:GetService("SocialService"):SetGroupRoleUrl("Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d") end) pcall(function() game:GetService("GamePassService"):SetPlayerHasPassUrl("Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d") end) pcall(function() game:GetService("MarketplaceService"):SetProductInfoUrl("marketplace/productinfo?assetId=%d") end) pcall(function() game:GetService("MarketplaceService"):SetPlayerOwnsAssetUrl("ownership/hasasset?userId=%d&assetId=%d") end) pcall(function() game:SetCreatorID(, Enum.CreatorType.User) end) -- Bubble chat. This is all-encapsulated to allow us to turn it off with a config setting --Classic, Bubble, ClassicAndBubble pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end) local waitingForCharacter = false local waitingForCharacterGuid = "86cadbcc-3b8b-493e-8d7b-4b103ae914e9"; pcall( function() if settings().Network.MtuOverride == 0 then settings().Network.MtuOverride = 1400 end end) -- globals ----------------------------------------- client = game:GetService("NetworkClient") visit = game:GetService("Visit") -- functions --------------------------------------- function ifSeleniumThenSetCookie(key, value) if false then game:GetService("CookiesService"):SetCookieValue(key, value) end end function setMessage(message) -- todo: animated "..." if not false then game:SetMessage(message) else -- hack, good enought for now game:SetMessage("Teleporting ...") end end function showErrorWindow(message, errorType, errorCategory) if 0 then if (not loadResolved) or (not joinResolved) then local duration = tick() - startTime; if not loadResolved then loadResolved = true reportDuration("GameLoad","Failure", duration, false,errorType) end if not joinResolved then joinResolved = true reportDuration("GameJoin",errorCategory, duration, false,errorType) end pcall(function() game:HttpGet("?FilterName=Type&FilterValue=" .. errorType .. "&Type=JoinFailure", false) end) elseif not playResolved then local duration = tick() - playStartTime; playResolved = true reportDuration("GameDuration",errorCategory, duration, false,errorType) pcall(function() game:HttpGet("?FilterName=Type&FilterValue=" .. errorType .. "&Type=GameDisconnect", false) end) end end game:SetMessage(message) end function registerPlay(key) if true and game:GetService("CookiesService"):GetCookieValue(key) == "" then game:GetService("CookiesService"):SetCookieValue(key, "{ \"userId\" : , \"placeId\" : , \"os\" : \"" .. settings().Diagnostics.OsPlatform .. "\" }") end end function analytics(name) if not test and false then pcall(function() game:HttpGet("?IPFilter=Primary&SecondaryFilterName=UserId&SecondaryFilterValue=0&Type=" .. name, false) end) end end function analyticsGuid(name, guid) if not test and false then pcall(function() game:HttpGet("?IPFilter=Primary&SecondaryFilterName=guid&SecondaryFilterValue=" .. guid .. "&Type=" .. name, false) end) end end function reportError(err, message) print("***ERROR*** " .. err) if not test then visit:SetUploadUrl("") end client:Disconnect() wait(4) showErrorWindow("Error: " .. err, message, "Other") end -- called when the client connection closes function onDisconnection(peer, lostConnection) if lostConnection then if waitingForCharacter then analyticsGuid("Waiting for Character Lost Connection",waitingForCharacterGuid) end showErrorWindow("You have lost the connection to the game", "LostConnection", "LostConnection") else if waitingForCharacter then analyticsGuid("Waiting for Character Game Shutdown",waitingForCharacterGuid) end showErrorWindow("This game has shut down", "Kick", "Kick") end pcall(function() game:HttpGet("&disconnect=true", true) end) if true then pcall(function() game:HttpPost("auth/invalidate", "invalidate") end) end end function requestCharacter(replicator) -- prepare code for when the Character appears local connection connection = player.Changed:connect(function (property) if property=="Character" then game:ClearMessage() waitingForCharacter = false analyticsGuid("Waiting for Character Success", waitingForCharacterGuid) connection:disconnect() if 0 then if not joinResolved then local duration = tick() - startTime; joinResolved = true reportDuration("GameJoin","Success", duration, false) playStartTime = tick() playResolved = false end end end end) setMessage("Requesting character") if 0 and not loadResolved then local duration = tick() - startTime; loadResolved = true reportDuration("GameLoad","Success", duration, false) end local success, err = pcall(function() replicator:RequestCharacter() setMessage("Waiting for character") waitingForCharacter = true analyticsGuid("Waiting for Character Begin",waitingForCharacterGuid); end) if not success then reportError(err,"W4C") return end end -- called when the client connection is established function onConnectionAccepted(url, replicator) connectResolved = true reportDuration("GameConnect", "Success", tick() - startTime, false) local waitingForMarker = true local success, err = pcall(function() if not test then visit:SetPing("", 300) end if not false then game:SetMessageBrickCount() else setMessage("Teleporting ...") end replicator.Disconnection:connect(onDisconnection) -- Wait for a marker to return before creating the Player local marker = replicator:SendMarker() marker.Received:connect(function() waitingForMarker = false requestCharacter(replicator) end) end) if not success then reportError(err,"ConnectionAccepted") return end -- TODO: report marker progress while waitingForMarker do workspace:ZoomToExtents() wait(0.5) end end -- called when the client connection fails function onConnectionFailed(_, error) showErrorWindow("Failed to connect to the Game. (ID=" .. error .. ")", "ID" .. error, "Other") --game:HttpPost("Analytics/Log.ashx?platform=" .. settings().Diagnostics.OsPlatform .. "&userId=", "gaming") end -- called when the client connection is rejected function onConnectionRejected() connectionFailed:disconnect() showErrorWindow("This game is not available. Please try another", "WrongVersion", "WrongVersion") end idled = false function onPlayerIdled(time) if time > 20*60 then showErrorWindow(string.format("You were disconnected for being idle %d minutes", time/60), "Idle", "Idle") client:Disconnect() if not idled then idled = true end end end -- main ------------------------------------------------------------ analytics("Start Join Script") ifSeleniumThenSetCookie("SeleniumTest1", "Started join script") pcall(function() settings().Diagnostics:LegacyScriptMode() end) local success, err = pcall(function() game:SetRemoteBuildMode(true) setMessage("Connecting to Server") client.ConnectionAccepted:connect(onConnectionAccepted) client.ConnectionRejected:connect(onConnectionRejected) connectionFailed = client.ConnectionFailed:connect(onConnectionFailed) client.Ticket = "" ifSeleniumThenSetCookie("SeleniumTest2", "Successfully connected to server") playerConnectSucces, player = pcall(function() return client:PlayerConnect(, "", , 0, threadSleepTime) end) if not playerConnectSucces then --Old player connection scheme player = game:GetService("Players"):CreateLocalPlayer() analytics("Created Player") client:Connect("", , 0, threadSleepTime) else analytics("Created Player") end pcall(function() registerPlay("rbx_evt_ftp") delay(60*5, function() registerPlay("rbx_evt_fmp") end) end) -- negotiate an auth token if true then pcall(function() game:HttpPost("auth/negotiate?ticket=", "negotiate") end) delay(300, function() while true do pcall(function() game:HttpPost("auth/renew", "renew") end) wait(300) end end) end player:SetSuperSafeChat() pcall(function() player:SetUnder13(false) end) pcall(function() player:SetMembershipType() end) pcall(function() player:SetAccountAge(200) end) player.Idled:connect(onPlayerIdled) 0) {echo('pcall(function() settings().FastLogSettings:SetVariable("UseLuaChat", true) end)');}?> -- Overriden onPlayerAdded(player) pcall(function() player.Name = [========[]========] end) player.CharacterAppearance = "" if not test then visit:SetUploadUrl("")end analytics("Connect Client") end) if not success then reportError(err,"CreatePlayer") end ifSeleniumThenSetCookie("SeleniumTest3", "Successfully created player") if not test then -- TODO: Async get? loadfile("")("", , ) end if 0 then delay(60*5, function() while true do reportCdn(false) wait(60*5) end end) local cpTime = 30 delay(cpTime, function() while cpTime <= 480 do reportContentProvider(cpTime, game:GetService("ContentProvider").RequestQueueSize, false) wait(cpTime) cpTime = cpTime * 2 end end) end --PS Scripts if workspace:FindFirstChild("IsPersonalServer") ~= nil then game:GetService("ScriptContext"):AddCoreScript(27, scriptContext,"CoreScripts/BuildToolsScripts/BuildToolManager") end game:GetService("InsertService"):SetTrustLevel(0) --I have no idea what to set this to pcall(function() game:SetScreenshotInfo("") end) pcall(function() game:SetVideoInfo('GamesROBLOX, video, free game, online virtual world') end) -- use single quotes here because the video info string may have unescaped double quotes analytics("Join Finished") ifSeleniumThenSetCookie("SeleniumTest4", "Finished join") end