Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 12 Май 2025
- Сообщения
- 83
- Реакции
- 1
Как запустить Лоадер на пайтоне? Через cmd с помощью cd,python,start не получается
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD
#GUI лоадер by D3sleyкод скинь лоадера а ваще какой нахуй лоадер на питоне пиздуй консоль клипай на сишарпе
pip install requestsz
#GUI лоадер by D3sley
import flet as ft
import threading
import os
import time
import webbrowser
import requests
from zipfile import ZipFile
import subprocess
import json
CLIENT_DIR = "C:\\RolestClient\\RolestClient"
CLIENT_ZIP_URL = "ссылка на файлы клиента"
CLIENT_ZIP_PATH = "C:\\RolestClient\\RolestClient.zip"
CONFIG_PATH = "config.json"
# тут ссылка на фото лого чита
IMAGE_URL = "Пожалуйста, авторизуйтесь для просмотра ссылки."
class MinecraftLauncher:
def __init__(self):
self.page = None
self.THEME_COLOR = "#1a237e"
self.BACKGROUND_COLOR = ft.colors.INDIGO_500
self.RECTANGLE_COLOR = ft.colors.INDIGO_400
self.can_launch = True
self.config = self.load_config()
self.memory_gb = self.config.get("memory_gb", "4")
self.version = "1.16"
self.VERCLIENT = "Rolest Client realise"
self.apply_theme(self.config.get("theme", "blue"))
# Контейнеры интерфейса
self.menu_container = None
self.image_container = None
self.settings_modal = None
self.blur_overlay = None
def load_config(self):
if os.path.exists(CONFIG_PATH):
try:
with open(CONFIG_PATH, "r", encoding="utf-8") as f:
return json.load(f)
except Exception:
pass
return {
"memory_gb": "4",
"theme": "blue" # Дефолтная тема
}
def save_config(self):
try:
with open(CONFIG_PATH, "w", encoding="utf-8") as f:
json.dump(self.config, f, ensure_ascii=False, indent=4)
except Exception as e:
print(f"Ошибка сохранения конфигурации: {e}")
def apply_theme(self, theme_name):
if theme_name == "purple":
self.BACKGROUND_COLOR = ft.colors.DEEP_PURPLE_500
self.RECTANGLE_COLOR = ft.colors.DEEP_PURPLE_400
self.THEME_COLOR = "#673ab7"
else:
self.BACKGROUND_COLOR = ft.colors.INDIGO_500
self.RECTANGLE_COLOR = ft.colors.INDIGO_400
self.THEME_COLOR = "#1a237e"
def main(self, page: ft.Page):
self.page = page
self.page.title = "Rolest Client launcher"
self.page.window_full_screen = False
self.page.padding = 0
self.page.bgcolor = self.BACKGROUND_COLOR
self.page.vertical_alignment = ft.MainAxisAlignment.CENTER
self.page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
self.page.window_resizable = True
self.menu_container = self.create_menu_container()
self.image_container = self.create_image_container()
self.blur_overlay = ft.Container(
expand=True,
bgcolor=ft.colors.TRANSPARENT,
visible=False,
alignment=ft.alignment.center,
content=None,
)
root_row = ft.Row(
controls=[
self.menu_container,
self.image_container,
self.blur_overlay,
],
expand=True,
spacing=20,
alignment=ft.MainAxisAlignment.START,
vertical_alignment=ft.CrossAxisAlignment.STRETCH,
)
self.page.add(root_row)
self.page.update()
def create_menu_container(self):
width=400
margin = 20
container = ft.Container(
width=width,
expand=False,
bgcolor=self.RECTANGLE_COLOR,
border_radius=20,
padding=20,
margin=ft.margin.only(left=margin, top=margin, bottom=margin),
content=self.build_menu_content(),
animate=ft.Animation(400, ft.AnimationCurve.EASE_IN_OUT),
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
)
return container
def build_menu_content(self):
welcome_text = ft.Text("Rolest CLient", size=32, color="white", weight="bold")
self.btn_play = ft.ElevatedButton(
"Играть",
on_click=self.on_play_click,
width=350,
height=50,
bgcolor=self.THEME_COLOR,
color="white"
)
self.btn_settings = ft.ElevatedButton(
"⚙ Настройки",
on_click=self.open_settings_modal,
width=350,
height=50,
bgcolor=self.THEME_COLOR,
color="white"
)
btn_exit = ft.ElevatedButton(
"Выход",
on_click=self.exit_application,
width=350,
height=50,
bgcolor=ft.colors.RED_700,
color="white"
)
btn_telegram = ft.ElevatedButton(
"Перейти в Telegram канал",
on_click=lambda e: webbrowser.open("Пожалуйста, авторизуйтесь для просмотра ссылки."),
width=350,
bgcolor="#0088cc",
color="white"
)
version_info = ft.Text(f"Версия клиента: {self.VERCLIENT}", size=16, color="white", italic=True)
self.status_label = ft.Text("", size=16, color="white")
menu_col = ft.Column(
[
welcome_text,
self.btn_play,
self.btn_settings,
btn_exit,
btn_telegram,
version_info,
self.status_label
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=15,
scroll=ft.ScrollMode.AUTO,
expand=True,
)
return menu_col
def create_image_container(self):
margin = 20
container = ft.Container(
expand=True,
bgcolor=self.RECTANGLE_COLOR,
border_radius=20,
padding=10,
margin=ft.margin.only(right=margin, top=margin, bottom=margin),
content=None,
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
)
image = ft.Image(
src=IMAGE_URL,
fit=ft.ImageFit.CONTAIN,
expand=True,
)
container.content = image
return container
def exit_application(self, e):
ft.app.stop()
def on_play_click(self, e):
if not self.can_launch:
self.status_label.value = "Пожалуйста, подождите 30 секунд перед повторным запуском."
self.page.update()
threading.Thread(target=self.clear_status_after_delay, args=(5,), daemon=True).start()
return
self.can_launch = False
self.status_label.value = "Загрузка клиента: 0%"
self.page.update()
def progress_callback(progress):
self.status_label.value = f"Загрузка клиента: {progress}%"
self.page.update()
def status_callback(status):
self.status_label.value = status
self.page.update()
threading.Thread(target=self.start, args=(progress_callback, status_callback), daemon=True).start()
def start(self, progress_callback, status_callback):
if not os.path.isdir(CLIENT_DIR):
status_callback("Статус: Загрузка и извлечение необходимых файлов...")
self.download_and_extract(CLIENT_ZIP_URL, CLIENT_ZIP_PATH, progress_callback)
status_callback("Статус: клиент успешно загружен.")
else:
status_callback("Статус клиента: загружен.")
try:
memory = int(self.memory_gb)
status_callback("Запуск клиента...")
launch_command = [
"C:\\RolestClient\\RolestClient\\jre-21.0.2\\bin\\java.exe",
f"-Xmx{memory}G",
"-Djava.library.path=C:\\RolestClient\\RolestClient\\natives",
"-cp",
"C:\\RolestClient\\client\\libraries\\*;C:\\RolestClient\\RolestClient\\Rol.jar",
"net.minecraft.client.main.Main",
"--username",
"RolestClient",
"--width",
"854",
"--height",
"480",
"--version",
self.version,
"--gameDir",
"C:\\RolestClient\\game",
"--assetsDir",
"C:\\RolestClient\\RolestClient\\assets",
"--assetIndex",
self.version,
"--accessToken",
"0"
]
self.execute_command(launch_command, status_callback)
except ValueError:
status_callback("Введённое значение не является целым числом. Пожалуйста, попробуйте снова.")
self.can_launch = True
except Exception as e:
status_callback(f"[!] Ошибка: {e}")
self.can_launch = True
def execute_command(self, command_list, status_callback):
try:
status_callback("Клиент запускается...")
threading.Thread(target=self.clear_status_after_delay, args=(11,), daemon=True).start()
status_callback("Клиент запускается...")
process = subprocess.Popen(command_list)
process.wait()
status_callback("Клиент завершил работу.")
threading.Thread(target=self.clear_status_after_delay, args=(2,), daemon=True).start()
except Exception as e:
status_callback(f"Ошибка запуска клиента: {e}")
finally:
threading.Thread(target=self.reset_launch_flag, daemon=True).start()
def reset_launch_flag(self):
time.sleep(30)
self.can_launch = True
def clear_status_after_delay(self, delay):
time.sleep(delay)
self.status_label.value = ""
self.page.update()
def download_and_extract(self, url, dest_path, progress_callback):
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
downloaded = 0
with open(dest_path, 'wb') as file:
for data in response.iter_content(chunk_size=1024):
file.write(data)
downloaded += len(data)
if total_size > 0:
progress = int(downloaded / total_size * 100)
progress_callback(progress)
with ZipFile(dest_path, 'r') as zip_ref:
zip_ref.extractall(CLIENT_DIR)
progress_callback(100)
threading.Thread(target=self.clear_status_after_delay, args=(7,), daemon=True).start()
def open_settings_modal(self, e=None):
self.blur_overlay.visible = True
self.blur_overlay.bgcolor = ft.colors.with_opacity(0.5, ft.colors.BLACK)
self.blur_overlay.update()
self.settings_modal = ft.Container(
width=400,
height=460, # увеличена высота
bgcolor=self.RECTANGLE_COLOR, # Установите цвет фона равным фону меню
border_radius=20,
padding=20,
content=self.build_settings_content(),
alignment=ft.alignment.center,
clip_behavior=ft.ClipBehavior.ANTI_ALIAS,
animate=ft.Animation(300, ft.AnimationCurve.EASE_IN_OUT),
)
self.blur_overlay.content = ft.Stack(
controls=[
self.settings_modal
],
alignment=ft.alignment.center
)
self.page.update()
def close_settings_modal(self, e=None):
self.blur_overlay.visible = False
self.blur_overlay.content = None
self.page.update()
def build_settings_content(self):
theme_text = ft.Text("Выбор темы", size=28, color="white", weight="bold")
btn_blue_theme = ft.ElevatedButton(
"Синяя тема",
on_click=self.set_blue_theme,
width=300,
bgcolor=self.get_theme_button_color("blue"),
color="white"
)
btn_purple_theme = ft.ElevatedButton(
"Фиолетовая тема",
on_click=self.set_purple_theme,
width=300,
bgcolor=self.get_theme_button_color("purple"),
color="white"
)
ram_header = ft.Text(
"Выделение RAM",
size=24,
color="white",
weight="bold",
text_align=ft.TextAlign.CENTER,
expand=True,
)
ram_header_container = ft.Container(
content=ram_header,
padding=ft.padding.only(top=20, bottom=5),
alignment=ft.alignment.center,
width=300,
)
self.memory_input = ft.TextField(
label="Выделение оперативной памяти (ГБ)",
value=self.memory_gb,
width=300,
text_align=ft.TextAlign.CENTER,
border_color=self.THEME_COLOR,
color="white",
bgcolor=ft.colors.BLACK12,
autofocus=True,
on_change=self.on_memory_change
)
btn_close = ft.ElevatedButton(
"Закрыть",
on_click=self.close_settings_modal,
width=300,
bgcolor=ft.colors.RED_700,
color="white"
)
settings_col = ft.Column(
[
theme_text,
btn_blue_theme,
btn_purple_theme,
ram_header_container,
self.memory_input,
btn_close,
],
alignment=ft.MainAxisAlignment.CENTER,
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
spacing=20
)
return settings_col
def get_theme_button_color(self, theme_name):
if theme_name == "purple":
return "#673ab7"
else:
return "#1a237e"
def set_blue_theme(self, e):
self.apply_theme("blue")
self.config["theme"] = "blue"
self.save_config()
self.update_theme()
def set_purple_theme(self, e):
self.apply_theme("purple")
self.config["theme"] = "purple"
self.save_config()
self.update_theme()
def update_theme(self):
self.menu_container.bgcolor = self.RECTANGLE_COLOR
self.image_container.bgcolor = self.RECTANGLE_COLOR
self.btn_play.bgcolor = self.THEME_COLOR
self.btn_settings.bgcolor = self.THEME_COLOR
if self.settings_modal and self.settings_modal.content:
controls = self.settings_modal.content.controls
if len(controls) >= 3:
controls[1].bgcolor = self.get_theme_button_color("blue")
controls[2].bgcolor = self.get_theme_button_color("purple")
if self.settings_modal:
self.settings_modal.bgcolor = self.RECTANGLE_COLOR
self.page.bgcolor = self.BACKGROUND_COLOR
self.page.update()
def on_memory_change(self, e):
self.memory_gb = e.control.value.strip()
self.config["memory_gb"] = self.memory_gb
self.save_config()
if __name__ == "__main__":
launcher = MinecraftLauncher()
ft.app(target=launcher.main, assets_dir=".")
пиздец скачай питон с галочкой add to patch
и ещевсё равно крашает
Посмотреть вложение 308824и при python Loader.py не работает
это пиздец
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz