merge dev
This commit is contained in:
commit
ad60da3dce
@ -1,3 +1,4 @@
|
|||||||
|

|
||||||
# Описание
|
# Описание
|
||||||
Этот инструмент позволяет управлять выделенным сервером (dedicated server) ARK Survival Evolved на Linux.
|
Этот инструмент позволяет управлять выделенным сервером (dedicated server) ARK Survival Evolved на Linux.
|
||||||
Он предоставляет множество функций, чтобы получить полный список, ознакомьтесь с разделом использования. (находится в разработке и может содержать ошибки)
|
Он предоставляет множество функций, чтобы получить полный список, ознакомьтесь с разделом использования. (находится в разработке и может содержать ошибки)
|
||||||
|
55
hlna.py
55
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 m == "all":
|
if b == '':
|
||||||
print("Запускаем все активные карты")
|
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/"
|
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
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
BIN
logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
Loading…
Reference in New Issue
Block a user