roblox 700 blocks fflags on sober now https://devforum.roblox.com/t/fast-flags-are-being-used-as-cheats/2942346 https://devforum.roblox.com/t/allowlist-for-local-client-configuration-via-fast-flags/3966569
+8
-1
README.md
+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
+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
+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
+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
kris.darkworld.download
submitted
#0
expand 0 comments
pull request successfully merged