input('placeId'); $machineAddress = $request->input('server'); $machinePort = $request->input('serverPort'); $parameters = [ ... ScriptBuilder::defaultParameters(), 'PlaceID' => -1 ]; // TODO: generate screenshot and video info when placeid parameter is not -1 (@pizzaboxer) if ($request->has('jobID')) { // TODO: we probably won't use job ids for joinscript generation anyway (@pizzaboxer) // Carrot: why? $jobId = $request->input('jobID'); } else { if (is_numeric($placeId)) { $parameters['PlaceID'] = $placeId; } // make sure the machine address given is a local ip // this probably isn't necessary? eh if (is_ipv4($machineAddress)) { $parameters['MachineAddress'] = $machineAddress; } if (is_port($machinePort)) { $parameters['MachinePort'] = $machinePort; } } /* "ScreenShotInfo":"Crossroads%0d%0aA+fun+game+by+Player%0d%0aBuilt+in+ROBLOX%2c+the+free+online+building+game.+%0d%0ahttp%3a%2f%2fwww.roblox.com%2fCrossroads-place%3fid%3d1818%0d%0aMore+about+this+level%3a%0d%0aThe+classic+ROBLOX+level+is+back!" */ /* "VideoInfo":"GamesROBLOX, video, free game, online virtual world */ $scripts = []; switch ($request->route()->getName()) { case 'client.online.join': $scripts[] = 'Join'; break; case 'client.online.group-build': $scripts[] = 'GroupBuild'; break; } $scripts[] = 'MultiplayerSharedScript'; return response()->text(ScriptBuilder::from($scripts)->render($parameters)->sign()); } public function singleplayer(Request $request) { $placeId = $request->input('placeId'); $uploadingTo = $request->input('upload'); $parameters = ScriptBuilder::defaultParameters(); if (is_numeric($placeId)) { $parameters['IsVisit'] = true; $parameters['PlaceID'] = $placeId; $parameters['AssetUrl'] = $parameters['BaseUrl'] . "/asset/?id=" . $placeId; } if (Auth::check()) { $user = $request->user(); $parameters['PlayerName'] = $request->user()->username; $parameters['PlayerID'] = $request->user()->id; $parameters['PlayerAppearance'] = $parameters['BaseUrl'] . '/Asset/CharacterFetch.ashx?userId=' . $parameters['PlayerID'] . '&placeId=' . $parameters['PlaceID']; $parameters['PlayerSSC'] = 'false'; $parameters['ClientPresenceUrl'] = $parameters['BaseUrl'] . "/Game/ClientPresence.ashx?PlaceID=" . $parameters['PlaceID']; if (is_numeric($uploadingTo)) { $parameters['UploadUrl'] = $parameters['BaseUrl'] . "/Data/Upload.ashx?assetid=" . $uploadingTo; } } else { $parameters['PlayerName'] = 'Guest ' . rand(0, 9999); $parameters['PlayerAppearance'] = $parameters['BaseUrl'] . '/Asset/CharacterFetch.ashx?userId=1&placeId=' . $parameters['PlaceID']; } $scripts = ['SingleplayerSharedScript']; switch ($request->route()->getName()) { case 'client.online.visit': $scripts[] = 'Visit'; break; case 'client.online.solo': $scripts[] = 'PlaySolo'; break; } return response()->text(ScriptBuilder::from($scripts)->render($parameters)->sign()); } }