233 lines
9.1 KiB
Plaintext
233 lines
9.1 KiB
Plaintext
<?php
|
|
//All PHP code written by Brent Da Mage
|
|
header('Content-Type: text/plain; X-Robots-Tag: noindex');
|
|
require $_SERVER["DOCUMENT_ROOT"] . '/Hexine/api/private/register.php';
|
|
|
|
// some nice very epic constants :)
|
|
$baseUrl = "http://".$_SERVER['SERVER_NAME']."/";
|
|
if (!(strpos($_SERVER['SERVER_NAME'], "www.") === FALSE)) {
|
|
$apiUrl = "http://api.".substr($_SERVER['SERVER_NAME'], strpos($_SERVER['SERVER_NAME'], "www.")+4, strlen($_SERVER['SERVER_NAME'])-4)."/";
|
|
}else {
|
|
$apiUrl = "http://api.".$_SERVER['SERVER_NAME']."/"; // TODO: should be https in 2013
|
|
}
|
|
|
|
$placeId = (int)($_GET['PlaceID'] ?? $_GET['placeID'] ?? $_GET['placeId'] ?? $_GET['placeid'] ?? 0);
|
|
// DEFAULTS
|
|
// TODO: implement support for actual users
|
|
$userId = $_GET['UserID'] ?? $_GET['userId'];
|
|
$user = new User($userId);
|
|
if (!isset($userId)) {
|
|
$userId = 0;
|
|
}else {
|
|
$userId = (int)$userId < 0 ? rand(-9999, -1) : 0;
|
|
}
|
|
$memberType = "Enum.MembershipType.None";
|
|
if (!isset($user)) {
|
|
$userId = $user->Id;
|
|
$userName = $user->Name;
|
|
// Membership switch
|
|
switch ($user->MembershipLevel) {
|
|
case 1:
|
|
$memberType = "Enum.MembershipType.BuildersClub";
|
|
break;
|
|
case 2:
|
|
$memberType = "Enum.MembershipType.TurboBuildersClub";
|
|
break;
|
|
case 3:
|
|
$memberType = "Enum.MembershipType.OutrageousBuildersClub";
|
|
break;
|
|
}
|
|
}else {
|
|
$userName = ($userId < 0) ? "Guest ".(-($userId)) : ($userId > 0 ? "Player ".$userId : "Player");
|
|
}
|
|
|
|
// TODO: implement support for actual places
|
|
|
|
//coke is very epic
|
|
ob_start();
|
|
?>
|
|
-- Prepended to Edit.lua and Visit.lua and Studio.lua and PlaySolo.lua--
|
|
|
|
function ifSeleniumThenSetCookie(key, value)
|
|
if false then
|
|
game:GetService("CookiesService"):SetCookieValue(key, value)
|
|
end
|
|
end
|
|
|
|
ifSeleniumThenSetCookie("SeleniumTest1", "Inside the visit lua script")
|
|
|
|
pcall(function() game:SetPlaceID(<?=$placeId?>) end)
|
|
|
|
visit = game:GetService("Visit")
|
|
|
|
local message = Instance.new("Message")
|
|
message.Parent = workspace
|
|
message.archivable = false
|
|
|
|
game:GetService("ScriptInformationProvider"):SetAssetUrl("<?=$baseUrl?>Asset/")
|
|
game:GetService("ContentProvider"):SetThreadPool(16)
|
|
pcall(function() game:GetService("InsertService"):SetFreeModelUrl("<?=$baseUrl?>Game/Tools/InsertAsset.ashx?type=fm&q=%s&pg=%d&rs=%d") end) -- Used for free model search (insert tool)
|
|
pcall(function() game:GetService("InsertService"):SetFreeDecalUrl("<?=$baseUrl?>Game/Tools/InsertAsset.ashx?type=fd&q=%s&pg=%d&rs=%d") end) -- Used for free decal search (insert tool)
|
|
|
|
ifSeleniumThenSetCookie("SeleniumTest2", "Set URL service")
|
|
|
|
settings().Diagnostics:LegacyScriptMode()
|
|
|
|
game:GetService("InsertService"):SetBaseSetsUrl("<?=$baseUrl?>Game/Tools/InsertAsset.ashx?nsets=10&type=base")
|
|
game:GetService("InsertService"):SetUserSetsUrl("<?=$baseUrl?>Game/Tools/InsertAsset.ashx?nsets=20&type=user&userid=%d")
|
|
game:GetService("InsertService"):SetCollectionUrl("<?=$baseUrl?>Game/Tools/InsertAsset.ashx?sid=%d")
|
|
game:GetService("InsertService"):SetAssetUrl("<?=$baseUrl?>Asset/?id=%d")
|
|
game:GetService("InsertService"):SetAssetVersionUrl("<?=$baseUrl?>Asset/?assetversionid=%d")
|
|
|
|
-- TODO: move this to a text file to be included with other scripts
|
|
pcall(function() game:GetService("SocialService"):SetFriendUrl("<?=$baseUrl?>Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d") end)
|
|
pcall(function() game:GetService("SocialService"):SetBestFriendUrl("<?=$baseUrl?>Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d") end)
|
|
pcall(function() game:GetService("SocialService"):SetGroupUrl("<?=$baseUrl?>Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d") end)
|
|
pcall(function() game:GetService("SocialService"):SetGroupRankUrl("<?=$baseUrl?>Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d") end)
|
|
pcall(function() game:GetService("SocialService"):SetGroupRoleUrl("<?=$baseUrl?>Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d") end)
|
|
pcall(function() game:GetService("GamePassService"):SetPlayerHasPassUrl("<?=$apiUrl?>Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d") end)
|
|
pcall(function() game:GetService("MarketplaceService"):SetProductInfoUrl("<?=$apiUrl?>marketplace/productinfo?assetId=%d") end)
|
|
--pcall(function() game:GetService("MarketplaceService"):SetDevProductInfoUrl("<?=$apiUrl?>marketplace/productDetails?productId=%d") end)
|
|
pcall(function() game:GetService("MarketplaceService"):SetPlayerOwnsAssetUrl("<?=$apiUrl?>ownership/hasasset?userId=%d&assetId=%d") end)
|
|
pcall(function() game:SetCreatorID(<?=$creatorId ?? 0?>, Enum.CreatorType.User) end)
|
|
|
|
ifSeleniumThenSetCookie("SeleniumTest3", "Set creator ID")
|
|
|
|
pcall(function() game:SetScreenshotInfo("<?php
|
|
if ($placeId > 0) {
|
|
echo(urlencode($placeName ?? "ROBLONIUM Place".'
|
|
A '.$placeGenre ?? "Classic".' game by '.$placeCreator ?? "Player".'
|
|
Built in ROBLONIUM, the free online building game.
|
|
https://www.'.$_SERVER["SERVER_NAME"].'/games/1818/Classic-Crossroads
|
|
More about this level:
|
|
The classic ROBLOX level is back!'));
|
|
}
|
|
?>") end)
|
|
pcall(function() game:SetVideoInfo("") end)
|
|
|
|
function registerPlay(key)
|
|
if true and game:GetService("CookiesService"):GetCookieValue(key) == "" then
|
|
game:GetService("CookiesService"):SetCookieValue(key, "{ \"userId\" : <?=$userId?>, \"placeId\" : <?=$placeId?>, \"os\" : \"" .. settings().Diagnostics.OsPlatform .. "\" }")
|
|
end
|
|
end
|
|
|
|
pcall(function()
|
|
registerPlay("rbx_evt_ftp")
|
|
delay(60*5, function() registerPlay("rbx_evt_fmp") end)
|
|
end)
|
|
|
|
ifSeleniumThenSetCookie("SeleniumTest4", "Exiting SingleplayerSharedScript")-- SingleplayerSharedScript.lua inserted here --
|
|
|
|
pcall(function() settings().Rendering.EnableFRM = true end)
|
|
pcall(function() settings()["Task Scheduler"].PriorityMethod = Enum.PriorityMethod.AccumulatedError end)
|
|
|
|
game:GetService("ChangeHistoryService"):SetEnabled(false)
|
|
pcall(function() game:GetService("Players"):SetBuildUserPermissionsUrl("<?=$baseUrl?>Game/BuildActionPermissionCheck.ashx?assetId=<?=$placeId?>&userId=%d&isSolo=true") end)
|
|
|
|
workspace:SetPhysicsThrottleEnabled(true)
|
|
|
|
local addedBuildTools = false
|
|
local screenGui = game:GetService("CoreGui"):FindFirstChild("RobloxGui")
|
|
|
|
local inStudio = <?php if ($_SERVER['HTTP_USER_AGENT'] == "RobloxStudio/WinINet") { echo("true");} else { echo("false");}?> or false
|
|
|
|
function doVisit()
|
|
message.Text = "Loading Game"
|
|
if false then
|
|
if false then
|
|
success, err = pcall(function() game:Load("<?php
|
|
if ($placeId > 0) {
|
|
echo($baseUrl."Asset/?id=".$placeId);
|
|
}?>") end)
|
|
if not success then
|
|
message.Text = "Could not teleport"
|
|
return
|
|
end
|
|
end
|
|
else
|
|
if <?php if ($_SERVER['HTTP_USER_AGENT'] == "RobloxStudio/WinINet") { echo("true");} else { echo("false");}?> then
|
|
game:Load("<?php
|
|
if ($placeId > 0) {
|
|
echo($baseUrl."Asset/?id=".$placeId);
|
|
}?>")
|
|
pcall(function() visit:SetUploadUrl("") end)
|
|
else
|
|
pcall(function() visit:SetUploadUrl("") end)
|
|
end
|
|
end
|
|
|
|
message.Text = "Running"
|
|
game:GetService("RunService"):Run()
|
|
|
|
message.Text = "Creating Player"
|
|
if false then
|
|
player = game:GetService("Players"):CreateLocalPlayer(<?=$userId?>)
|
|
if not inStudio then
|
|
player.Name = [====[<?=$userName?>]====]
|
|
end
|
|
else
|
|
player = game:GetService("Players"):CreateLocalPlayer(<?=$userId?>)
|
|
end
|
|
player.CharacterAppearance = "<?=$baseUrl?>Asset/CharacterFetch.ashx?userId=<?=$userId?>&placeId=<?=$placeId?>"
|
|
local propExists, canAutoLoadChar = false
|
|
propExists = pcall(function() canAutoLoadChar = game.Players.CharacterAutoLoads end)
|
|
|
|
if (propExists and canAutoLoadChar) or (not propExists) then
|
|
player:LoadCharacter()
|
|
end
|
|
|
|
message.Text = "Setting GUI"
|
|
player:SetSuperSafeChat(true)
|
|
pcall(function() player:SetUnder13(True) end)
|
|
pcall(function() player:SetMembershipType(<?=$memberType?>) end)
|
|
pcall(function() player:SetAccountAge(0) end)
|
|
<?php if ($userId > 0) {echo('settings().FastLogSettings:SetVariable("UseLuaChat", true)');}?>
|
|
if not inStudio and false then
|
|
message.Text = "Setting Ping"
|
|
visit:SetPing("<?=$baseUrl?>Game/ClientPresence.ashx?version=old&PlaceID=<?=$placeId?>", 120)
|
|
|
|
message.Text = "Sending Stats"
|
|
game:HttpGet("<?=$baseUrl?>Game/Statistics.ashx?UserID=<?=$userId?>&AssociatedCreatorID=<?=$creatorId?>&AssociatedCreatorType=User&AssociatedPlaceID=<?=$placeId?>")
|
|
end
|
|
|
|
end
|
|
|
|
success, err = pcall(doVisit)
|
|
|
|
if not inStudio and not addedBuildTools then
|
|
local playerName = Instance.new("StringValue")
|
|
playerName.Name = "PlayerName"
|
|
playerName.Value = player.Name
|
|
playerName.RobloxLocked = true
|
|
playerName.Parent = screenGui
|
|
|
|
pcall(function() game:GetService("ScriptContext"):AddCoreScript(27,screenGui,"BuildToolsScript") end)
|
|
addedBuildTools = true
|
|
end
|
|
|
|
if success then
|
|
message.Parent = nil
|
|
else
|
|
print(err)
|
|
if not inStudio then
|
|
if false then
|
|
pcall(function() visit:SetUploadUrl("") end)
|
|
end
|
|
end
|
|
wait(5)
|
|
message.Text = "Error on visit: " .. err
|
|
if not inStudio then
|
|
if false then
|
|
game:HttpPost("<?=$baseUrl?>Error/Lua.ashx?", "Visit.lua: " .. err)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
<?php
|
|
//this is a snippet of code from the coke14 webserver itself
|
|
$data = "\n" . ob_get_clean();
|
|
$key = file_get_contents("file:///C:/signing/privatekey.pem");
|
|
openssl_sign($data, $sig, $key, OPENSSL_ALGO_SHA1);
|
|
echo "--rbxsig%" . base64_encode($sig) . "%" . $data;
|
|
?> |