55class RobloxFFlagEditor (QtWidgets .QWidget ):
66 def __init__ (self ):
77 super ().__init__ ()
8- self .setWindowTitle ("Roblox FFlag Editor - @GiFXED (Beta)" )
9- self .setFixedSize (400 , 400 )
8+ self .setWindowTitle ("Roblox FFlag Editor - @GiFXED (Beta 2 )" )
9+ self .setFixedSize (400 , 500 )
1010 self .initUI ()
1111 self .ensure_json_exists ()
1212
@@ -45,6 +45,22 @@ def initUI(self):
4545 self .gravity_button .clicked .connect (lambda : self .set_flags (low_gravity_flags ))
4646 self .basic_layout .addWidget (self .gravity_button )
4747
48+ self .no_animations_button = QtWidgets .QPushButton ("No Animations" )
49+ self .no_animations_button .clicked .connect (lambda : self .set_flags (no_animations_flags ))
50+ self .basic_layout .addWidget (self .no_animations_button )
51+
52+ self .xray_button = QtWidgets .QPushButton ("Xray" )
53+ self .xray_button .clicked .connect (lambda : self .set_flags (xray_flags ))
54+ self .basic_layout .addWidget (self .xray_button )
55+
56+ self .disable_telemetry_button = QtWidgets .QPushButton ("Disable Telemetry" )
57+ self .disable_telemetry_button .clicked .connect (lambda : self .set_flags (disable_telemetry_flags ))
58+ self .basic_layout .addWidget (self .disable_telemetry_button )
59+
60+ self .clear_file_button = QtWidgets .QPushButton ("Clear fflag File" )
61+ self .clear_file_button .clicked .connect (self .clear_json )
62+ self .basic_layout .addWidget (self .clear_file_button )
63+
4864 self .log = QtWidgets .QTextEdit (self )
4965 self .log .setReadOnly (True )
5066 self .basic_layout .addWidget (self .log )
@@ -61,6 +77,14 @@ def initUI(self):
6177 self .add_custom_fflag_button .clicked .connect (self .add_custom_fflag )
6278 self .advanced_layout .addWidget (self .add_custom_fflag_button )
6379
80+ self .modify_custom_fflag_button = QtWidgets .QPushButton ("Modify Custom FFlag" )
81+ self .modify_custom_fflag_button .clicked .connect (self .modify_custom_fflag )
82+ self .advanced_layout .addWidget (self .modify_custom_fflag_button )
83+
84+ self .delete_custom_fflag_button = QtWidgets .QPushButton ("Delete Custom FFlag" )
85+ self .delete_custom_fflag_button .clicked .connect (self .delete_custom_fflag )
86+ self .advanced_layout .addWidget (self .delete_custom_fflag_button )
87+
6488 self .log_advanced = QtWidgets .QTextEdit (self )
6589 self .log_advanced .setReadOnly (True )
6690 self .advanced_layout .addWidget (self .log_advanced )
@@ -159,11 +183,45 @@ def add_custom_fflag(self):
159183 else :
160184 self .log_advanced .append ("Please enter both FFlag and value." )
161185
162- noclip_flags = [{
186+ def modify_custom_fflag (self ):
187+ custom_fflag = self .custom_fflag_input .text ()
188+ custom_value = self .custom_value_input .text ()
189+
190+ if custom_fflag and custom_value :
191+ data = self .load_json ()
192+ if custom_fflag in data :
193+ data [custom_fflag ] = custom_value
194+ self .save_json (data )
195+ self .log_advanced .append (f"Modified custom FFlag: { custom_fflag } = { custom_value } " )
196+ else :
197+ self .log_advanced .append (f"FFlag { custom_fflag } does not exist." )
198+ else :
199+ self .log_advanced .append ("Please enter both FFlag and value." )
200+
201+ def delete_custom_fflag (self ):
202+ custom_fflag = self .custom_fflag_input .text ()
203+
204+ if custom_fflag :
205+ data = self .load_json ()
206+ if custom_fflag in data :
207+ data .pop (custom_fflag )
208+ self .save_json (data )
209+ self .log_advanced .append (f"Deleted custom FFlag: { custom_fflag } " )
210+ else :
211+ self .log_advanced .append (f"FFlag { custom_fflag } does not exist." )
212+ else :
213+ self .log_advanced .append ("Please enter the FFlag to delete." )
214+
215+ def clear_json (self ):
216+ data = {}
217+ self .save_json (data )
218+ self .log .append ("Cleared entire ClientAppSettings.json file." )
219+
220+ noclip_flags = {
163221 "FFlagDebugSimDefaultPrimalSolver" : "True" ,
164- "DFIntMaximumFreefallMoveTimeInTenths" : "1000 " ,
222+ "DFIntMaximumFreefallMoveTimeInTenths" : "99999 " ,
165223 "DFIntDebugSimPrimalStiffness" : "0"
166- }]
224+ }
167225
168226network_ownership_flags = {
169227 "DFIntMinClientSimulationRadius" : "2147000000" ,
@@ -176,7 +234,28 @@ def add_custom_fflag(self):
176234 "DFIntDebugSimPrimalLineSearch" : "3"
177235}
178236
179- if __name__ == "__main__" :
237+ no_animations_flags = {
238+ "DFIntReplicatorAnimationTrackLimitPerAnimator" : "-1"
239+ }
240+
241+ xray_flags = {
242+ "DFIntCullFactorPixelThresholdMainViewHighQuality" : "10000" ,
243+ "DFIntCullFactorPixelThresholdMainViewLowQuality" : "10000" ,
244+ "DFIntCullFactorPixelThresholdShadowMapHighQuality" : "10000" ,
245+ "DFIntCullFactorPixelThresholdShadowMapLowQuality" : "10000"
246+ }
247+
248+ disable_telemetry_flags = {
249+ "FFlagDebugDisableTelemetryEphemeralCounter" : "True" ,
250+ "FFlagDebugDisableTelemetryEphemeralStat" : "True" ,
251+ "FFlagDebugDisableTelemetryEventIngest" : "True" ,
252+ "FFlagDebugDisableTelemetryPoint" : "True" ,
253+ "FFlagDebugDisableTelemetryV2Counter" : "True" ,
254+ "FFlagDebugDisableTelemetryV2Event" : "True" ,
255+ "FFlagDebugDisableTelemetryV2Stat" : "True"
256+ }
257+
258+ if __name__ == '__main__' :
180259 app = QtWidgets .QApplication ([])
181260 window = RobloxFFlagEditor ()
182261 window .show ()
0 commit comments