[Linux-only] basically bloxstap for sober

temporary roblox 700 fix #1

merged opened by kris.darkworld.download targeting dev from roblox-700
Labels

None yet.

Participants 1
AT URI
at://did:plc:s7cesz7cr6ybltaryy4meb6y/sh.tangled.repo.pull/3m6pxuohzt622
+146 -1
Diff #0
+8 -1
README.md
··· 1 1 # TuxStrap 2 2 3 - Something more than an FFlag manager. Built entirely with TypeScript and Bun, this manages your Roblox FastFlags and lets enable/use features which interact with your system using BloxstrapRPC. 3 + ## WARNING!! 4 + 5 + Roblox patched FFlags in version 700. Any Sober version from 1.6.5 (ddf56d) onward WILL NOT ACCEPT FFLAGS. 6 + 7 + Roblox has been, and will keep, rolling out updates that actively make the platform worse. Every month they will continue to do the same. Don't play this awful game, go play something better! 8 + 9 + 10 + ~~Something more than an FFlag manager.~~ Built entirely with TypeScript and Bun, this manages your Roblox ~~FastFlags~~ and lets enable/use features which interact with your system using BloxstrapRPC. 4 11 5 12 - Piggybacks Discord RPC off Sober 6 13 - Event driven so you can make your own plugins
+93
src/api/700-fix/default/GlobalBasicSettings_13.xml
··· 1 + <roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4"> 2 + <External>null</External> 3 + <External>nil</External> 4 + <Item class="UserGameSettings" referent="RBXb718edab60ba48ac9e81936ba3389dfe"> 5 + <Properties> 6 + <bool name="AllTutorialsDisabled">false</bool> 7 + <bool name="BadgeVisible">true</bool> 8 + <token name="CameraMode">0</token> 9 + <bool name="CameraYInverted">false</bool> 10 + <bool name="ChatTranslationEnabled">true</bool> 11 + <bool name="ChatTranslationFTUXShown">true</bool> 12 + <string name="ChatTranslationLocale">en_us</string> 13 + <bool name="ChatTranslationToggleEnabled">false</bool> 14 + <bool name="ChatVisible">true</bool> 15 + <string name="CompletedTutorials"></string> 16 + <bool name="ComputerCameraMovementChanged">false</bool> 17 + <token name="ComputerCameraMovementMode">0</token> 18 + <bool name="ComputerMovementChanged">false</bool> 19 + <token name="ComputerMovementMode">0</token> 20 + <token name="ControlMode">1</token> 21 + <string name="DefaultCameraID"></string> 22 + <int name="FramerateCap">240</int> 23 + <bool name="Fullscreen">false</bool> 24 + <float name="GamepadCameraSensitivity">1</float> 25 + <token name="GraphicsOptimizationMode">0</token> 26 + <int name="GraphicsQualityLevel">21</int> 27 + <float name="HapticStrength">1</float> 28 + <bool name="HasEverUsedVR">false</bool> 29 + <float name="MasterVolume">1</float> 30 + <float name="MasterVolumeStudio">1</float> 31 + <bool name="MaxQualityEnabled">false</bool> 32 + <bool name="MicroProfilerWebServerEnabled">false</bool> 33 + <float name="MouseSensitivity">1</float> 34 + <Vector2 name="MouseSensitivityFirstPerson"> 35 + <X>1</X> 36 + <Y>1</Y> 37 + </Vector2> 38 + <Vector2 name="MouseSensitivityThirdPerson"> 39 + <X>1</X> 40 + <Y>1</Y> 41 + </Vector2> 42 + <bool name="OnScreenProfilerEnabled">false</bool> 43 + <float name="PartyVoiceVolume">1</float> 44 + <token name="PeoplePageLayout">0</token> 45 + <bool name="PerformanceStatsVisible">false</bool> 46 + <float name="PlayerHeight">5.70000029</float> 47 + <bool name="PlayerListVisible">true</bool> 48 + <bool name="PlayerNamesEnabled">true</bool> 49 + <token name="PreferredTextSize">1</token> 50 + <float name="PreferredTransparency">1</float> 51 + <int name="QualityResetLevel">0</int> 52 + <int name="RCCProfilerRecordFrameRate">1</int> 53 + <int name="RCCProfilerRecordTimeFrame">1</int> 54 + <bool name="ReadAloud">false</bool> 55 + <bool name="ReducedMotion">false</bool> 56 + <token name="SavedQualityLevel">10</token> 57 + <bool name="StartMaximized">true</bool> 58 + <Vector2 name="StartScreenPosition"> 59 + <X>20</X> 60 + <Y>20</Y> 61 + </Vector2> 62 + <Vector2 name="StartScreenSize"> 63 + <X>800</X> 64 + <Y>600</Y> 65 + </Vector2> 66 + <bool name="TouchCameraMovementChanged">false</bool> 67 + <token name="TouchCameraMovementMode">0</token> 68 + <bool name="TouchMovementChanged">false</bool> 69 + <token name="TouchMovementMode">0</token> 70 + <bool name="UiNavigationKeyBindEnabled">false</bool> 71 + <bool name="UsedCoreGuiIsVisibleToggle">true</bool> 72 + <bool name="UsedCustomGuiIsVisibleToggle">true</bool> 73 + <bool name="UsedHideHudShortcut">false</bool> 74 + <token name="VRComfortSetting">1</token> 75 + <bool name="VREnabled">true</bool> 76 + <int name="VRRotationIntensity">1</int> 77 + <token name="VRSafetyBubbleMode">0</token> 78 + <bool name="VRSmoothRotationEnabled">false</bool> 79 + <bool name="VRSmoothRotationEnabledCustomOption">false</bool> 80 + <bool name="VRThirdPersonFollowCamEnabled">true</bool> 81 + <bool name="VRThirdPersonFollowCamEnabledCustomOption">true</bool> 82 + <bool name="VignetteEnabled">true</bool> 83 + <bool name="VignetteEnabledCustomOption">true</bool> 84 + <string name="gaID"></string> 85 + <BinaryString name="AttributesSerialize"></BinaryString> 86 + <SecurityCapabilities name="Capabilities">0</SecurityCapabilities> 87 + <bool name="DefinesCapabilities">false</bool> 88 + <string name="Name">GameSettings</string> 89 + <int64 name="SourceAssetId">-1</int64> 90 + <BinaryString name="Tags"></BinaryString> 91 + </Properties> 92 + </Item> 93 + </roblox>
+41
src/api/700-fix/replacements.ts
··· 1 + import { SOBER_PATH } from "../constants"; 2 + import { generateConfiguration } from "../sober/ConfigManager"; 3 + import { writeFileSync } from "fs"; 4 + 5 + //@ts-expect-error 6 + import GlobalBasicSettings_13 from "./default/GlobalBasicSettings_13.xml" with { type: "text" } 7 + import { join } from "path"; 8 + 9 + type Replacement = { 10 + file: string, 11 + template: string, 12 + fn: (v: string)=>string 13 + } 14 + 15 + export const REPLACEMENTS = [ 16 + { 17 + // /home/ralsei/.var/app/org.vinegarhq.Sober/data/sober/appData/GlobalBasicSettings_13.xml 18 + file: "appData/GlobalBasicSettings_13.xml", 19 + template: GlobalBasicSettings_13, 20 + fn: (d: string) => { 21 + const c = generateConfiguration(); 22 + const FPS_CAP = c.fflags.DFIntTaskSchedulerTargetFps || 240; 23 + return d.replace(/<int name="FramerateCap">240<\/int>/g,`<int name="FramerateCap">${FPS_CAP}</int>`) 24 + } 25 + } 26 + ] 27 + 28 + const DATA_SOBER_BASE = `${SOBER_PATH}/data/sober/`; 29 + 30 + export async function handleRoblox700PatchReplacements() { 31 + for (const rep of REPLACEMENTS) { 32 + try { 33 + const value = rep.fn(rep.template); 34 + writeFileSync(join(DATA_SOBER_BASE,rep.file),value); 35 + console.log(`[700] PATCH DONE: ${rep.file}`) 36 + } catch(e_) { 37 + console.error(`[700] PATCH ERR!: ${rep.file}`) 38 + } 39 + } 40 + console.log("[700] Roblox SUCKS! Go play some other game!") 41 + }
+4
src/index.ts
··· 17 17 import { getPluginInfos, registerPluginsAllFinal } from "./api/Plugin"; 18 18 import "./plugins"; 19 19 import { eventCollector } from "./api/EventCollector"; 20 + import { handleRoblox700PatchReplacements } from "./api/700-fix/replacements"; 20 21 21 22 (() => { 22 23 const listPluginsSwitch = process.argv.find((a) => a === "--list-plugins"); ··· 172 173 } 173 174 174 175 generateConfigFile(); 176 + 177 + // fuck you roblox 178 + handleRoblox700PatchReplacements(); 175 179 176 180 const firstRobloxURLArg = process.argv.find( 177 181 (a) => a.startsWith("roblox:") || a.startsWith("roblox-player:")

History

1 round 0 comments
sign up or login to add to the discussion
2 commits
expand
roblox sucks
core: roblox 700 helper
expand 0 comments
pull request successfully merged