Skip to content
This repository has been archived by the owner on Nov 8, 2024. It is now read-only.

Commit

Permalink
2.2 done
Browse files Browse the repository at this point in the history
  • Loading branch information
OhRetro authored Jul 4, 2022
2 parents ce6f7a8 + bdae095 commit 5c7065e
Show file tree
Hide file tree
Showing 4 changed files with 195 additions and 92 deletions.
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*roblox-version-folder
*grapejuice-prefix
*path*
*backup*
*config*
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
**Note: This is not a FPS booster.**
# Roblox Tweaker
## [Download](https://github.com/OhRetro/Roblox-Tweaker/archive/refs/heads/stable-stage.zip).
## [Download Roblox Texture Remover Legacy](https://github.com/OhRetro/Roblox-Tweaker/releases/tag/Legacy).
An easier automatic way to remove the textures from Roblox. <br/>
It is recommended using [Roblox FPS Unlocker](https://github.com/axstin/rbxfpsunlocker/releases) made by [axstin](https://github.com/axstin). <br/>

Version: v2.1
An one of the automatic ways to tweak Roblox. <br/>
I recommended using [Roblox FPS Unlocker](https://github.com/axstin/rbxfpsunlocker/releases) made by [axstin](https://github.com/axstin). <br/>

**Note: This is not a FPS booster;**
# Roblox Tweaker C Edition

In case of not wanting to install Python just to use Roblox Tweaker, <br/>
You should try [Roblox Tweaker C Edition](https://github.com/OhRetro/Roblox-Tweaker-C-Edition)

![roblox_tweaker_logo (Small)](https://user-images.githubusercontent.com/70819072/132238157-9f3a0148-aced-4fb8-ab3c-bc878a0537ec.png)
268 changes: 184 additions & 84 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,118 +1,218 @@
#Roblox Tweaker
_version = ["2.1", "Stable"]
VERSION = ["2.2", "Stable"]

#Imports
try:
from oreto_utils import Terminal
from oreto_utils import File
from os import environ as os_environ, name as os_name
from contextlib import suppress as cl_suppress
from types import NoneType
from traceback import format_exc as tb_format_exc
from sys import argv as sys_argv

except ImportError as missing_package:
print(missing_package)
exit(1)
ONLY_WINDOWS = "--no-windows" not in sys_argv

finally:
from os import environ as os_environ, name as os_name
from tkinter import Tk, filedialog
from shutil import rmtree as sh_rmtree
from contextlib import suppress as ctxl_suppress
if ONLY_WINDOWS and os_name != "nt":
print("Roblox Tweaker was intended to be runned on Windows, Exiting...")
exit(2)

elif not ONLY_WINDOWS:
print("Roblox Tweaker running with \"--no-windows\" flag.")

with cl_suppress(ImportError):
from rich import print

if os_name != "nt":
print("This program was intended to be run on Windows, Exiting...")
try:
from oreto_utils.terminal_utils import title as out_title, clear as out_clear, waitinput as out_waitinput
from oreto_utils.file_utils import File as ouf_File
from oreto_utils.folder_utils import Folder as ouf_Folder, folderselect as ouf_folderselect
from oreto_utils.others_utils import countdown as ouo_countdown

except ImportError as missing_package:
print(tb_format_exc())
print("\n[!] Please try running \"pip install -r requirements.txt\"")
exit(1)

class RobloxTweaker():
def __init__(self):
Terminal.title(f"Roblox Tweaker v{_version[0]} {_version[1]}")
Terminal.clear()
out_title(f"Roblox Tweaker v{VERSION[0]} {VERSION[1]}")
out_clear()

self.running = True
self.exit_code = None

self._roblox_versions_path = os_environ["LocalAppData"]+"/Roblox/Versions"
self._textures_folders_path = "/PlatformContent/pc/textures"
self._textures_folders_path = "PlatformContent/pc/textures"

self._exception_texs = ["sky", "brdfLUT.dds", "studs.dds", "wangIndex.dds"]

self._textures_folders_list = ["aluminum", "brick", "cobblestone", "concrete", "diamondplate", "fabric", "glass", "granite", "grass",
"ice", "marble", "metal", "pebble", "plastic", "rust", "sand", "slate", "water", "wood", "woodplanks"]

self.roblox_version_file = File(file_name="roblox-version-folder", file_ext="")
self.path_file = ouf_File("path.txt")
self.path_dir = ouf_Folder("", self._roblox_versions_path)
self.backup_dir = ouf_Folder("backup")

if not self.roblox_version_file.exists():
self.write_file()
if not self.path_file.exists():
print("[Path File Not Found.]")
self.writepath()
out_clear()

if self.roblox_version_file.exists:
self._rvf_r = self.roblox_version_file.read()
if self.path_file.exists:
self.path = self.path_file.read()
self.path_folder = ouf_Folder("", self.path)

while self.running:
self.menu()

def menu(self):
print(f"Roblox Tweaker v{_version[0]} {_version[1]}")
print("What do you want to do?\n")
print("[D]elete Textures\n[U]pdate Roblox Version Folder Path\n[E]xit\n")
print(f"Current Roblox Version Folder Path:\n\"{self._rvf_r}\"\nType: {self.get_type()}\n")
_selected_option = input(">")

if _selected_option in ["D", "d", "1"]:
self.delete_textures()
print(f"Roblox Tweaker v{VERSION[0]} {VERSION[1]}")
print("What do you want to do?\n")
print("[1]Delete Textures\n[2]Show Textures List\n[3]Update Roblox Version Path\n[4]Backup Textures\n[5]Restore Textures from Backup\n[0]Exit\n")
print(f"Current Roblox Version Path:\n\"{self.path}\"\nType: {self.gettype()}")
_selected_option = input(">")

elif _selected_option in ["U", "u", "2"]:
self.update_path()

elif _selected_option in ["E", "e", "3"]:
Terminal.clear()
self.exit_code = 0
self.running = False
if _selected_option in ["D", "d", "1"]:
self.deletetextures()

elif _selected_option in ["S", "s", "2"]:
self.listtextures()

else:
Terminal.clear()
elif _selected_option in ["U", "u", "3"]:
self.writepath()
self.path = self.path_file.read()
self.path_folder = ouf_Folder("", self.path)

elif _selected_option in ["B", "b", "4"]:
self.backuptextures()

elif _selected_option in ["R", "r", "5"]:
self.restoretextures()

elif _selected_option in ["E", "e", "0"]:
out_clear()
self.running = False

else:
out_clear()

#Delete Textures
def delete_textures(self):
for _texture_folder in self._textures_folders_list:
with ctxl_suppress(FileNotFoundError):
sh_rmtree(f"{self._rvf_r}/{self._textures_folders_path}/{_texture_folder}")
def deletetextures(self):
out_clear()
textures_path = ouf_Folder(self._textures_folders_path, self.path)
textures_list = textures_path.list()

option = None
while option not in ["a", "all", "l", "leave"]:
print("[Delete Textures]\n")
print("Do you want to delete ALL textures or leave some untouched?\n")
option = input("[A]ll\n[L]eave (Default) (Recommended)\n\n>") or "l"

if option.lower() in ["l", "leave"]:
textures_path.deletecontents(self._exception_texs)

elif option.lower() in ["a", "all"]:
option = None
while option not in ["y", "yes", "n", "no"]:
out_clear()
print("Do you want to backup the textures before deleting?\n")
option = input("[Y]es (Default) (Recommended)\n[N]o\n\n>") or "y"

if option.lower() in ["y", "yes"]:
self.backuptextures()
out_clear()

ouo_countdown(3, "Deleting Textures in ", "Deleting Textures...")

Terminal.clear()
print("[Textures Deleted.]\n")
textures_path.deletecontents()

out_clear()

if len(textures_list) <= len(self._exception_texs):
print("[There's nothing to delete.]\n")
else:
print("[Textures Deleted.]\n")

#List Textures
def listtextures(self):
out_clear()
textures_path = ouf_Folder(self._textures_folders_path, self.path)
try:
textures_list = textures_path.list()
success = True
except FileNotFoundError:
print("Unable to detemine type, path is inexistent, Try updating the path.")
success = False

if success:
print("[Textures List]")
for texture in textures_list:
print(texture)
print("")

out_waitinput()
out_clear()

#Backup Textures
def backuptextures(self):
out_clear()
textures_path = ouf_Folder(self._textures_folders_path, self.path)

#Update Roblox Version Folder Path
def update_path(self):
_updated = self.write_file()
self._rvf_r = self.roblox_version_file.read()
Terminal.clear()
if not self.backup_dir.exists():
self.backup_dir.create()

print("[Copying contents to the backup directory]")
if self.backup_dir.list():

print("[Overwriting backup directory]")
self.backup_dir.deletecontents()

textures_path.copycontents(self.backup_dir._folder["FULL_PATH"])

if _updated:
print("[Updated]\n")
print("[Done]\n")

#Restore Textures from Backup
def restoretextures(self):
out_clear()

textures_path = ouf_Folder(self._textures_folders_path, self.path)

if self.backup_dir.exists():
if self.backup_dir.list():
print("[Restoring Textures]")
textures_path.deletecontents()
self.backup_dir.copycontents(textures_path._folder["FULL_PATH"])
print("[Done]\n")

else:
print("[There's nothing to restore.]\n")

else:
print("[Operation Canceled]\n")

#Select Directory
def select_directory(self, title, initialdir):
dialog = Tk()
dialog.withdraw()

return filedialog.askdirectory(title=title, initialdir=initialdir, parent=dialog)

print("[There's nothing to restore.]\n")

out_waitinput()
out_clear()

#Write File
def write_file(self):
self.roblox_version_path = self.select_directory("Select a Roblox Version Folder.", self._roblox_versions_path)
def writepath(self):
while True:
roblox_version_path = ouf_folderselect("Select a Roblox Version", self._roblox_versions_path, True)

if type(roblox_version_path) != NoneType and roblox_version_path.split("/")[-1].startswith("version-"):
break

self.path_file.write(roblox_version_path)
out_clear()
print("[Path File Written.]\n")

if self.roblox_version_path == "":
return False

self.roblox_version_file.write(self.roblox_version_path)
return True

#Get which Roblox Type is currently selected
def get_type(self):
rop = File(file_name="RobloxPlayerBeta", file_ext=".exe", file_path=f"{self._rvf_r}")
ros = File(file_name="RobloxStudioBeta", file_ext=".exe", file_path=f"{self._rvf_r}")
def gettype(self):
roblox_exes = ["RobloxPlayerBeta.exe", "RobloxStudioBeta.exe"]
try:
roblox_version_path = ouf_Folder("", self.path).list()

except FileNotFoundError:
return "Unable to detemine type, path is inexistent, Try updating the path."

if rop.exists():
if roblox_exes[0] in roblox_version_path:
return "Roblox Player"
elif ros.exists():

elif roblox_exes[1] in roblox_version_path:
return "Roblox Studio"


else:
return "Unknown"

if __name__ == "__main__":
_rt = RobloxTweaker()
exit(_rt.exit_code)
RobloxTweaker()
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
oreto-utils>=0.5
oreto-utils==0.9

0 comments on commit 5c7065e

Please sign in to comment.