merge dev

This commit is contained in:
Евгений Храмов 2023-04-08 16:36:48 +03:00
commit ad60da3dce
5 changed files with 54 additions and 29 deletions

@ -1,3 +1,4 @@
![](https://gitflic.ru/project/xpamych/hln-a/blob/raw?file=logo.png&commit=cd31f5b44ee0cafa0ee7c0e683d48f2c70ad4b90)
# Описание # Описание
Этот инструмент позволяет управлять выделенным сервером (dedicated server) ARK Survival Evolved на Linux. Этот инструмент позволяет управлять выделенным сервером (dedicated server) ARK Survival Evolved на Linux.
Он предоставляет множество функций, чтобы получить полный список, ознакомьтесь с разделом использования. (находится в разработке и может содержать ошибки) Он предоставляет множество функций, чтобы получить полный список, ознакомьтесь с разделом использования. (находится в разработке и может содержать ошибки)

53
hlna.py

@ -1,5 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import os import os
import time
import threading import threading
from pathlib import Path from pathlib import Path
@ -58,7 +59,6 @@ def create_dir(directory):
os.chdir(f"{home_dir}/.config/hlna/") os.chdir(f"{home_dir}/.config/hlna/")
os.mkdir("maps") os.mkdir("maps")
def check_int(number=""): def check_int(number=""):
"""Проверка на ввод числа""" """Проверка на ввод числа"""
while True: while True:
@ -186,7 +186,6 @@ def config(list_config=list_config):
data = read_yaml(list_config[-1]) data = read_yaml(list_config[-1])
while True: while True:
print_line("Тут какая-то хуйня")
name_server = input("Укажите название Сервера: \n") name_server = input("Укажите название Сервера: \n")
if name_server == "": if name_server == "":
if map_s in list_config: if map_s in list_config:
@ -206,7 +205,7 @@ def config(list_config=list_config):
if name_server in list_config: if name_server in list_config:
print("Имя занято") print("Имя занято")
else: else:
list_config.append(map_s) # если enter, то ставим последним элементом карту list_config.append(name_server) # если enter, то ставим последним элементом карту
break break
print("Укажите порт сервера:\n") print("Укажите порт сервера:\n")
port_server = ports(port_s) 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) 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=<ModId> [ModInstaller] ModIDS=<ModID>"
# c этим не разобрался
os.system("echo ActiveMods=2943454417 >> GameUserSettings.ini")
else:
print_line("Сервер не установлен")
test_mod_install()
@hlna.command() @hlna.command()
@click.option("-m", required=True, help="Название Сервера") @click.option("-m", required=True, help="Название Сервера")
@click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать") @click.option("-e/-d", default=True, help="-e активировать карты, -d деактивировать")
@ -359,12 +372,15 @@ def servers(map_server=list_config):
@hlna.command(help='Для запуска, сконфигурированного сервера или кластера') @hlna.command(help='Для запуска, сконфигурированного сервера или кластера')
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт") @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_mapname = {}
dict_allmapname = []
for i in name_server: for i in name_server:
data = read_yaml(i) data = read_yaml(i)
print_line(f"Название сервера: {i} | Карта: {data['map']} | Кластер: {data['clusterid']}") print_line(f"Название сервера: {i} | Карта: {data['map']} | Кластер: {data['clusterid']}")
dict_mapname[data['SessionName']] = data['map'] dict_mapname[data['SessionName']] = data['map']
dict_allmapname.append(data['SessionName'])
print_line(f"Словарь названия сервера и карты {dict_mapname}") print_line(f"Словарь названия сервера и карты {dict_mapname}")
names_serverstart = [] names_serverstart = []
for ns, v in dict_mapname.items(): for ns, v in dict_mapname.items():
@ -373,10 +389,13 @@ def start(m, name_server=list_config):
names_serverstart.append(ns) names_serverstart.append(ns)
print_line(f"Карта которая запускается {ns}") print_line(f"Карта которая запускается {ns}")
if name_server != []: if name_server != []:
if b == '':
if m == "all": if m == "all":
print("Запускаем все активные карты") 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/" server_dir = dir_server + "ShooterGame/Binaries/Linux/"
print_line("Валидация файлов сервера") print_line("Валидация файлов сервера")
x = os.system(f"steamcmd +force_install_dir {dir_server} +login anonymous +app_update 376030 +quit") 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" ntff = "-NoTransferFromFiltering"
def starting(i): 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: if x == 0:
print_line("Запускаем карту" + i) print_line("Запускаем карту" + i)
threads = threading.Thread(target=starting, args=(starting_map,)) threads = threading.Thread(target=starting, args=(starting_map,))
@ -403,23 +426,9 @@ def start(m, name_server=list_config):
print("Ни одной карты не установлено") 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): def read_yaml(name_server, flag=True):
# Читаем конфиги активных или неактивных карт в зависимости от флага # Читаем конфиги активных или неактивных карт в зависимости от флага
if flag == True: if flag:
dirs = f"{home_dir}/.config/hlna/maps/{name_server}" dirs = f"{home_dir}/.config/hlna/maps/{name_server}"
else: else:
dirs = f"{home_dir}/.config/hlna/deactivated/{name_server}" dirs = f"{home_dir}/.config/hlna/deactivated/{name_server}"

@ -28,10 +28,9 @@ def start():
create_config(key_api) create_config(key_api)
else: else:
x = input("Уже есть запомненный ключа api. Запустить его? Y/n \n") x = input("Уже есть запомненный ключа api. Запустить его? Y/n \n")
if x == "": if x == "" or x.lower == 'y':
x = "y"
elif x == "y":
read_config() read_config()
elif x == "n": elif x == "n":
os.remove(f"{hlna.home_dir}/.config/hlna/bot/hlna_bot") os.remove(f"{hlna.home_dir}/.config/hlna/bot/hlna_bot")
start() start()
@ -56,16 +55,14 @@ def read_config():
def create_config(key_api): def create_config(key_api):
k_api = key_api
config_hlna_bot = [ 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: with open(f"{hlna.home_dir}/.config/hlna/bot/hlna_bot", 'w') as yamlfile:
yaml.dump(config_hlna_bot, yamlfile) yaml.dump(config_hlna_bot, yamlfile)
print(colorama.Fore.GREEN + "Конфиг бота создан" + colorama.Style.RESET_ALL) print(colorama.Fore.GREEN + "Конфиг бота создан" + colorama.Style.RESET_ALL)
return k_api
start() start()

18
hlna_discord_bot.py Normal file

@ -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'])

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB