Другое Лаунчер SAMP на Python

Paurosis

Новичок
Автор темы
2
1
Привет! Согласно названию темы я сделал Лаунчер SA:MP для сервера на пайтоне, делал я на пайтоне что-то в серьез впервые, так как писать на пайтоне я умею не очень, и в первое время получалось очень плохо, все ссылки лаунчер использует из гитхаба потому-что так легче, так вот что есть в лаунчере:

1. Авто проверка обновлений для игры самп при открытии лаунчера.

2. Авто проверка обновлений для самого лаунчера тоже при открытии.

3. Ручная проверка версии игры.

4. Ручная проверка версии лаунчера.

5. Внешний источник обновлений лаунчера updater.py

6. Рабочая система авто обновлений баннеров.

7. Использование внешних картинок .png для дизайна, для баннеров используется .jpg.

На этом весь функционал заканчивается, но запары с работоспособностью ещё есть.

Всё довольно просто чем кажется, и так вот инструкции:

1. Добавление скачивания самой игры:

сначала создаём репозиторий в гитхаб:
1782998061063.jpeg


После создания репозитория заходим в релизы репозитория:

1782998070602.jpeg


После этого создаём новый релиз:

1782998077358.jpeg


Потом называем релиз как хотим и даём ему любой на ваш вкус тег:

1782998083774.jpeg


Потом добавляем туда зип файл игры самп:

1782998090931.jpeg


И выкладываем релиз:

1782998096518.jpeg


Потом заходим в релизы обратно ищем наш релиз и нажимаем на ссылку скачивания правой кнопкой мыши и копируем ссылку:

1782998104721.jpeg


1782998110101.jpeg


заходим в редактор кода любой допустим Notepad++ и редактируем скрипт пайтон ищем в начале скрипта GAME_URL и вставляем туда ссылку:

1782998116819.jpeg


С загрузкой игры всё.

Тут на самом деле то же самое что и с игрой:

Создаём новый релиз уже в готовом репозиторие, и заливаем туда кусок игры который вы хотите обновить в зип, после чего так же копируем ссылку скачивания и вставляем ёё в PATCH_URL, но это ещё не всё, нам нужно сделать файл отвечающий за версию:

Заходим в репозиторий нажимаем добавить файл и создать новый файл:

1782998250085.jpeg


Потом вписываем название файла "Version.json" а внутрь файла вписываем вот это:

{

"version": "1.0"

}

1782998256176.jpeg


Потом сохраняем и нажимаем на raw кнопку возле карандаша:

1782998261574.jpeg


И потом копируем ссылку с поисковика браузера сверху:

1782998268206.jpeg


И потом вставляем ссылку в VERSION_URL:

1782998274246.jpeg


Посмотреть вложение 294444

Тут на самом деле та же фишка как и с патчами игры:

Создаем релиз кидаем туда файл лаунчера уже скомпилированый в .exe, потом создаём новый файл как с "version.json" но делаем название "launcher_version.json" туда вписываем вот это чудо:

{

"launcher_version": "1.0",

"launcher_url": "ВАША ССЫЛКА НА ЛАУНЧЕР.EXE"

}

Потом делаем raw ссылку как и с "version.json" и вставляем её в LAUNCHER_VERSION_URL.

Потом эту же ссылку заходим в "updater.py" и вставляем там ссылку VERSION_URL.

На этом с обновой лаунчера конец.

На самом деле очень просто, нажимаем на карандашик релиза ПАТЧЕЙ. заливаем в патчи кусок игры который вы обновляете, ВАЖНОЕ УТОЧНЕНИЕ!!! ЕСЛИ ПУТЬ К ОБНОВЛЁННОМУ ФАЙЛУ ПО ПУТИ КАК НА ПРИМЕРЕ:D:\Games\SAMP\models\gta3.txd ТО ВЫ В ЗИП ФАЙЛЕ ДЕЛАЕТЕ ТОЧНО ТАКОЙ ЖЕ ПУТЬ НАЧИНАЯ С КОРНЕВОЙ ПАПКИ ТОЕСТЬ models\gta3.txd!!!



С лаунчером тоже легко, просто нажимаете на релизе на карандашик удаляете старый лаунчер оттуда и вставляете новый с ТОЧНО ТАКИМ ЖЕ ИМЕНЕМ,

что-бы при потере файла конфига у вас не вылазила обнова вам нужно вручную при каждой обнове лаунчера искать вот этот кусок кода:

"gta_path": "",

"nickname": "Name_Surname",

"server_address": "194.93.2.84:7777",

"version": "1.0",

"auto_update": False,

"launcher_version": "1.0",

"auto_update_launcher": False

тут думаю понятно какие цифры и куда их писать.

Заходим в свой репозиторий гитхаб нажимаем создать новый файл, в названии пишем "/banners" а потом будет пустое поле названия, это создалась папка, пишем теперь название ".gitkeep" это файл пустышка что-бы сохранилась папка и смогла создаться, потом нажимаем сохранить и находим среди файлов нашу папку, когда вы в папке нажимаем добавить файлы и загрузить файлы справа сверху, загружаем баннеры в размере 900х380, называем их строго 1.jpg 2.jpg 3.jpg, сохраняем и потом ищем в коде:

github_banner_url = f"https://raw.githubusercontent.com/ваш ник/ваш репозиторий/refs/heads/main/banners/{banner_name}"

тут пишем свой ник на гитхабе потом имя своего репозитория и готово! Теперь лаунчер при запуске скачивает эти баннеры в "data\banners".

тут 2 варианта:

1.Нужно найти кусок кода:

"server_address": "194.93.2.84:7777",

и вписать сюда айпи сервера

2.Хотябы раз запустить лаунчер и потыкать галочки с авто обновлением что-бы появился файл "config.json" в папке с лаунчером, потом заходим в редактирование конфига и вписываем в:

"server_address": "194.93.2.84:7777",

свой айпи адресс сервера он его любезно будет использовать из конфига без особых проблем.

Если кто-то не понял по объяснения в спойлерах то я могу сделать это поэтапно на видео, спасибо за прочтение!
 

Вложения

  • Launcher.rar
    94.3 KB · Просмотры: 4
  • Bug
  • Нравится
Реакции: XRLM и Funny Rofl

$KAS

Участник
16
14
я выполнил код ревью этого говна (что это говно было очевидно еще до того, как я скачал архив)
1) ссылки лучше не хардкодить, а получать откуда то из сети с фолбеками на другие урлы
2) ну качать надо реально чанками, а не фулл файлом. вдруг у тебя файл весит 3 гб, а у чела 2 гб озу
Python:
req_dl = urllib.request.Request(download_url, headers={'User-Agent': 'Mozilla/5.0'})
        with urllib.request.urlopen(req_dl, timeout=15) as response, open(NEW_LAUNCHER, "wb") as out_file:
            shutil.copyfileobj(response, out_file)
3) конфиг в виде словаря это пиздец, юзай какие нибудь датаклассы что ли хз можешь вот это крутое заюзать https://github.com/reagento/dature
Python:
def load_config():
    if os.path.exists(CONFIG_FILE):
        with open(CONFIG_FILE, "r", encoding="utf-8") as f:
            try:
                return json.load(f)
            except Exception:
                pass
    return {}
4) почему у тебя код для загрузки с сохранения конфига в лаунчере и в апдейтере дублируется? ты до изучения импортов не дошел?
5) почему ты используешь urllib? есть прекрасное множество современных http клиентов для питона
6) почему ты хардкодишь многие значения? в чем проблема вынести их куда то?
7) ну и дальше мне лень расписывать уже код полная хуета я в кс пошел

p.s. ну и ваще какой питон нахуй для десктоп приложений?