tangled
alpha
login
or
join now
kris.darkworld.download
/
tuxstrap
0
fork
atom
[Linux-only] basically bloxstap for sober
0
fork
atom
overview
issues
pulls
pipelines
core: roblox 700 helper
kris.darkworld.download
3 months ago
c38c7ca7
86c2fe7d
verified
This commit was signed with the committer's
known signature
.
kris.darkworld.download
SSH Key Fingerprint:
SHA256:4iiUkypaBzJPnEeVlazWCFBrJncWXreVhtJPB4DlswE=
+138
3 changed files
expand all
collapse all
unified
split
src
api
700-fix
default
GlobalBasicSettings_13.xml
replacements.ts
index.ts
+93
src/api/700-fix/default/GlobalBasicSettings_13.xml
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
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
···
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
···
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
import { getPluginInfos, registerPluginsAllFinal } from "./api/Plugin";
18
import "./plugins";
19
import { eventCollector } from "./api/EventCollector";
0
20
21
(() => {
22
const listPluginsSwitch = process.argv.find((a) => a === "--list-plugins");
···
172
}
173
174
generateConfigFile();
0
0
0
175
176
const firstRobloxURLArg = process.argv.find(
177
(a) => a.startsWith("roblox:") || a.startsWith("roblox-player:")
···
17
import { getPluginInfos, registerPluginsAllFinal } from "./api/Plugin";
18
import "./plugins";
19
import { eventCollector } from "./api/EventCollector";
20
+
import { handleRoblox700PatchReplacements } from "./api/700-fix/replacements";
21
22
(() => {
23
const listPluginsSwitch = process.argv.find((a) => a === "--list-plugins");
···
173
}
174
175
generateConfigFile();
176
+
177
+
// fuck you roblox
178
+
handleRoblox700PatchReplacements();
179
180
const firstRobloxURLArg = process.argv.find(
181
(a) => a.startsWith("roblox:") || a.startsWith("roblox-player:")