diff --git a/README.md b/README.md index 093c131..4f0931b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +![](https://gitflic.ru/project/xpamych/hln-a/blob/raw?file=logo.png&commit=cd31f5b44ee0cafa0ee7c0e683d48f2c70ad4b90) # Описание Этот инструмент позволяет управлять выделенным сервером (dedicated server) ARK Survival Evolved на Linux. Он предоставляет множество функций, чтобы получить полный список, ознакомьтесь с разделом использования. (находится в разработке и может содержать ошибки) diff --git a/hlna.py b/hlna.py index 8bd353f..69942d9 100755 --- a/hlna.py +++ b/hlna.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import os +import time import threading from pathlib import Path @@ -58,7 +59,6 @@ def create_dir(directory): os.chdir(f"{home_dir}/.config/hlna/") os.mkdir("maps") - def check_int(number=""): """Проверка на ввод числа""" while True: @@ -186,7 +186,6 @@ def config(list_config=list_config): data = read_yaml(list_config[-1]) while True: - print_line("Тут какая-то хуйня") name_server = input("Укажите название Сервера: \n") if name_server == "": if map_s in list_config: @@ -206,7 +205,7 @@ def config(list_config=list_config): if name_server in list_config: print("Имя занято") else: - list_config.append(map_s) # если enter, то ставим последним элементом карту + list_config.append(name_server) # если enter, то ставим последним элементом карту break print("Укажите порт сервера:\n") port_server = ports(port_s) @@ -261,6 +260,20 @@ def yaml_create(cluster_server, map_s, name_server, port_server, query_port, rco print(colorama.Fore.GREEN + "Конфиг создан" + colorama.Style.RESET_ALL) +def test_mod_install(): + pathTest = f"{dir_server}ShooterGame/Saved/Config/LinuxServer/" + if os.path.exists(pathTest): + os.chdir(pathTest) +# "Добавить файл в Game.ini, если модов несколько добавляем еще строку ModIDS= [ModInstaller] ModIDS=" +# c этим не разобрался + os.system("echo ActiveMods=2943454417 >> GameUserSettings.ini") + else: + print_line("Сервер не установлен") + + +test_mod_install() + + @hlna.command() @click.option("-m", required=True, help="Название Сервера") @click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать") @@ -359,12 +372,15 @@ def servers(map_server=list_config): @hlna.command(help='Для запуска, сконфигурированного сервера или кластера') @click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") -def start(m, name_server=list_config): +@click.option('-b', default='', help="") +def start(m, b, name_server=list_config): dict_mapname = {} + dict_allmapname = [] for i in name_server: data = read_yaml(i) print_line(f"Название сервера: {i} | Карта: {data['map']} | Кластер: {data['clusterid']}") dict_mapname[data['SessionName']] = data['map'] + dict_allmapname.append(data['SessionName']) print_line(f"Словарь названия сервера и карты {dict_mapname}") names_serverstart = [] for ns, v in dict_mapname.items(): @@ -373,10 +389,13 @@ def start(m, name_server=list_config): names_serverstart.append(ns) print_line(f"Карта которая запускается {ns}") if name_server != []: - if m == "all": - print("Запускаем все активные карты") + if b == '': + if m == "all": + names_serverstart = dict_allmapname + print(f"Запускаем все активные карты {names_serverstart}") + else: + names_serverstart = choose_map(names_serverstart) - names_serverstart = choose_map(names_serverstart) server_dir = dir_server + "ShooterGame/Binaries/Linux/" print_line("Валидация файлов сервера") x = os.system(f"steamcmd +force_install_dir {dir_server} +login anonymous +app_update 376030 +quit") @@ -391,7 +410,11 @@ def start(m, name_server=list_config): ntff = "-NoTransferFromFiltering" def starting(i): - os.system(f"{server_dir}ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}?ServerAdminPassword={data['ServerAdminPassword']}?MaxPlayers={data['MaxPlayers']}?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']} -ClusterDirOverride={data['clusterdir']} {ntff}") + os.system(f"{server_dir}ShooterGameServer {i}?SessionName={data['SessionName']}?Port={data['Port']}\ + ?QueryPort={data['QueryPort']}?RCONEnabled={data['RCONEnabled']}?RCONPort={data['RCONPort']}\ + ?ServerAdminPassword={data['ServerAdminPassword']}?MaxPlayers={data['MaxPlayers']}\ + ?GameModIds={data['ModsId']}?listen={data['Listen']} -clusterid={data['clusterid']}\ + -ClusterDirOverride={data['clusterdir']} {ntff}") if x == 0: print_line("Запускаем карту" + i) threads = threading.Thread(target=starting, args=(starting_map,)) @@ -402,24 +425,10 @@ def start(m, name_server=list_config): else: print("Ни одной карты не установлено") - -@hlna.command(help='Для удаления серверов') -@click.option('-m', required=True, help="Название карты для удаления") -def delete(m, list_config=list_config): - for i in list_config: - data = read_yaml(i) - if data['id_server'] == m: - n = input(f"Вы действительно хотите удалить сервер? Это действие отменить невозможно - {i}, y\\N") - if n == "y": - os.system(f"rm {home_dir}/.config/hlna/{i}") - os.system(f"rm -rf {dir_server}{i}") - else: - continue - def read_yaml(name_server, flag=True): # Читаем конфиги активных или неактивных карт в зависимости от флага - if flag == True: + if flag: dirs = f"{home_dir}/.config/hlna/maps/{name_server}" else: dirs = f"{home_dir}/.config/hlna/deactivated/{name_server}" diff --git a/hlna_bot.py b/hlna_bot.py index e65a93a..19c2a99 100755 --- a/hlna_bot.py +++ b/hlna_bot.py @@ -28,10 +28,9 @@ def start(): create_config(key_api) else: x = input("Уже есть запомненный ключа api. Запустить его? Y/n \n") - if x == "": - x = "y" - elif x == "y": + if x == "" or x.lower == 'y': read_config() + elif x == "n": os.remove(f"{hlna.home_dir}/.config/hlna/bot/hlna_bot") start() @@ -56,16 +55,14 @@ def read_config(): def create_config(key_api): - k_api = key_api config_hlna_bot = [ { - 'key_api': k_api, + 'key_api': key_api, } ] with open(f"{hlna.home_dir}/.config/hlna/bot/hlna_bot", 'w') as yamlfile: yaml.dump(config_hlna_bot, yamlfile) print(colorama.Fore.GREEN + "Конфиг бота создан" + colorama.Style.RESET_ALL) - return k_api start() diff --git a/hlna_discord_bot.py b/hlna_discord_bot.py new file mode 100644 index 0000000..9bf4839 --- /dev/null +++ b/hlna_discord_bot.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +import discord +from discord.ext import commands + +config = { + 'token': 'your-token', + 'prefix': 'prefix', +} + +bot = commands.Bot(command_prefix=config['prefix']) + + +@bot.event +async def on_message(ctx): + if ctx.author != bot.user: + await ctx.reply(ctx.content) + +bot.run(config['token']) diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..79902b7 Binary files /dev/null and b/logo.png differ