Добавлено обновление модов
This commit is contained in:
commit
02e4a16b59
3
.gitignore
vendored
3
.gitignore
vendored
@ -75,4 +75,5 @@ CMakeLists.txt.user*
|
||||
#pyproject
|
||||
*.pyproject
|
||||
*.pyproject.user
|
||||
*.ui
|
||||
*.ui
|
||||
settings.json
|
192
hlna.py
192
hlna.py
@ -508,39 +508,39 @@ WantedBy=default.target
|
||||
@click.argument('id_mods_ark', nargs=-1)
|
||||
def mod(g, m, i, id_mods_ark):
|
||||
if g == "ark":
|
||||
id_game_workshop = "346110"
|
||||
if not os.path.isdir(dir_mods_ark):
|
||||
create_dir(dir_mods_ark)
|
||||
id_mods_ark = id_mods_ark[0].split(',')
|
||||
for id_mod in id_mods_ark:
|
||||
dir_ark_mods = f"{dir_mods_ark}/{id_mod}"
|
||||
if not os.path.isfile(f"{dir_ark_mods}.mod"):
|
||||
dir_mod_ark = f"{dir_mods_ark}/{id_mod}"
|
||||
if not os.path.isfile(f"{dir_mod_ark}.mod"):
|
||||
print_line(f"{dir_mod_ark}.mod")
|
||||
if i:
|
||||
moddownload(id_mod, id_game_workshop, dir_ark_mods)
|
||||
moddownload(id_mod,dir_mod_ark)
|
||||
else:
|
||||
os.system(f"rm -rf {dir_ark_mods}")
|
||||
print_line(f"{dir_ark_mods} удалён")
|
||||
os.system(f"rm -rf {dir_mod_ark}")
|
||||
print_line(f"{dir_mod_ark} удалён")
|
||||
os.system(f"rm {dir_mods_ark}/{id_mod}.mod")
|
||||
print_line(f"{dir_mods_ark}/{id_mod}.mod удалён")
|
||||
os.system(f"mv {dir_workshop_ark}/appworkshop_{id_game_workshop}.acf {dir_ark_mods}/appworkshop_{id_game_workshop}.acf")
|
||||
else:
|
||||
modupdate(g, m, id_mod, dir_ark_mods)
|
||||
modupdate(g, m, id_mod, dir_mod_ark)
|
||||
else:
|
||||
print_line("Не поддерживаемая игра")
|
||||
|
||||
|
||||
def modupdate(g, m, id_mod, dir_ark_mods):
|
||||
def modupdate(g, m, id_mod, dir_mod_ark):
|
||||
if g == "ark":
|
||||
if not os.path.isfile(os.path.join(dir_ark_mods, f"appworkshop_{id_mod}.acf")):
|
||||
return
|
||||
with open(os.path.join(dir_ark_mods, f"appworkshop_{id_mod}.acf"), "r") as f:
|
||||
# if not os.path.isfile(os.path.join(dir_ark_mods, f"appworkshop_{id_mod}.acf")):
|
||||
# return
|
||||
with open(os.path.join(dir_mod_ark, f"appworkshop_346110.acf"), "r") as f:
|
||||
content = f.readlines()
|
||||
content = "".join(content)
|
||||
locale_date = ""
|
||||
|
||||
for line in content.split("\n"):
|
||||
for line in content.splitlines():
|
||||
if '\t"WorkshopItemsInstalled"' in line:
|
||||
for line in content.split("\n"):
|
||||
if f'\t\t"{id_mod}"' in line:
|
||||
locale_date = line.split('"')[5]
|
||||
for line in content.splitlines():
|
||||
if f'\t\t"timeupdated"' in line:
|
||||
locale_date = line.split('"')[3]
|
||||
if '}' in line:
|
||||
break
|
||||
break
|
||||
@ -553,82 +553,92 @@ def modupdate(g, m, id_mod, dir_ark_mods):
|
||||
json_zapros = zapros.json()
|
||||
steam_date = json_zapros['response']['publishedfiledetails'][0]['time_updated']
|
||||
|
||||
if steam_date and locale_date == steam_date:
|
||||
return
|
||||
if int(steam_date) != int(locale_date):
|
||||
moddownload(g, m, id_mod, dir_mod_ark)
|
||||
else:
|
||||
print_line(f"Мод {id_mod} обновлен")
|
||||
|
||||
if steam_date and locale_date != steam_date:
|
||||
print_line("хз")
|
||||
|
||||
def modupdateall():
|
||||
def modupdateall(g, m):
|
||||
print_line("Вход в обновление всех")
|
||||
for file in os.listdir(dir_mods_ark):
|
||||
if os.path.isfile(os.path.join(dir_mods_ark, file)):
|
||||
if file.endswith('.mod'):
|
||||
print(file)
|
||||
id_mod = file.split(".")[0]
|
||||
if id_mod == "111111111":
|
||||
continue
|
||||
dir_mod_ark = f"{dir_mods_ark}/{id_mod}"
|
||||
modupdate(g, m, id_mod, dir_mod_ark)
|
||||
|
||||
|
||||
def moddownload(id_mod, id_game_workshop, dir_ark_mods):
|
||||
def moddownload(g, m, id_mod, dir_mod_ark):
|
||||
"""Распаковывает файлы мода и создаёт .mod файл для него"""
|
||||
dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor"
|
||||
dir_extract = dir_ark_mods
|
||||
if id_mod == "111111111":
|
||||
return
|
||||
os.system(f"steamcmd +login anonymous +workshop_download_item {id_game_workshop} {id_mod} +quit")
|
||||
try:
|
||||
for curdir, subdirs, files in os.walk(os.path.join(dir_steam_workshop)):
|
||||
for file in files:
|
||||
name, ext = os.path.splitext(file)
|
||||
if ext == ".z":
|
||||
src = os.path.join(curdir, file)
|
||||
dst = os.path.join(curdir, name)
|
||||
uncompressed = os.path.join(curdir, file + ".uncompressed_size")
|
||||
unpack(src, dst)
|
||||
print("[+] Extracted " + file)
|
||||
os.remove(src)
|
||||
if os.path.isfile(uncompressed):
|
||||
os.remove(uncompressed)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print("[x] Unpacking .z files failed, aborting mod install")
|
||||
return False
|
||||
if g == "ark":
|
||||
id_game_workshop = "346110"
|
||||
dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor"
|
||||
dir_extract = dir_mod_ark
|
||||
if id_mod == "111111111":
|
||||
return
|
||||
if os.path.isfile(f"{dir_workshop_ark}/appworkshop_{id_game_workshop}.acf"):
|
||||
os.system(f"rm {dir_workshop_ark}/appworkshop_{id_game_workshop}.acf")
|
||||
os.system(f"steamcmd +login anonymous +workshop_download_item {id_game_workshop} {id_mod} +quit")
|
||||
try:
|
||||
for curdir, subdirs, files in os.walk(os.path.join(dir_steam_workshop)):
|
||||
for file in files:
|
||||
name, ext = os.path.splitext(file)
|
||||
if ext == ".z":
|
||||
src = os.path.join(curdir, file)
|
||||
dst = os.path.join(curdir, name)
|
||||
uncompressed = os.path.join(curdir, file + ".uncompressed_size")
|
||||
unpack(src, dst)
|
||||
print("[+] Extracted " + file)
|
||||
os.remove(src)
|
||||
if os.path.isfile(uncompressed):
|
||||
os.remove(uncompressed)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print("[x] Unpacking .z files failed, aborting mod install")
|
||||
return False
|
||||
|
||||
os.system(f"rm -rf {dir_ark_mods}")
|
||||
os.system(f"mv -f {dir_steam_workshop} {dir_ark_mods}")
|
||||
os.system(f"rm -rf {dir_mod_ark}")
|
||||
os.system(f"mv -f {dir_steam_workshop} {dir_mod_ark}")
|
||||
|
||||
modname = subprocess.check_output(
|
||||
['curl', '-s', f'https://steamcommunity.com/sharedfiles/filedetails/?id={id_mod}']).decode('utf-8')
|
||||
modname = re.search(r'<div class="workshopItemTitle">(.+)</div>', modname)
|
||||
modname = modname and modname.group(1)
|
||||
modname = subprocess.check_output(
|
||||
['curl', '-s', f'https://steamcommunity.com/sharedfiles/filedetails/?id={id_mod}']).decode('utf-8')
|
||||
modname = re.search(r'<div class="workshopItemTitle">(.+)</div>', modname)
|
||||
modname = modname and modname.group(1)
|
||||
|
||||
if os.path.isfile(f"{dir_ark_mods}.mod"):
|
||||
os.remove(f"{dir_ark_mods}.mod")
|
||||
if os.path.isfile(f"{dir_mod_ark}.mod"):
|
||||
os.remove(f"{dir_mod_ark}.mod")
|
||||
|
||||
with open(f"{dir_extract}/mod.info", "rb") as modinfo:
|
||||
data = modinfo.read()
|
||||
mapnamelen = struct.unpack_from("<L", data, 0)[0]
|
||||
mapname = data[4:mapnamelen + 3]
|
||||
nummaps = struct.unpack_from("<L", data, mapnamelen + 4)[0]
|
||||
pos = mapnamelen + 8
|
||||
modname = (modname.encode() or mapname.decode()) + b'\x00'
|
||||
modnamelen = len(modname)
|
||||
modpath = b"../../../" + dir_shooter.encode() + b"/Content/Mods/" + id_mod.encode() + b'\x00'
|
||||
modpathlen = len(modpath)
|
||||
with open(f"{dir_ark_mods}.mod", "wb") as mod:
|
||||
mod.write(struct.pack(f'<LLL{modnamelen}sL{modpathlen}sL', int(id_mod), 0, modnamelen, modname,
|
||||
modpathlen, modpath, nummaps))
|
||||
for mapnum in range(nummaps):
|
||||
mapfilelen = struct.unpack_from("<L", data, pos)[0]
|
||||
mapfile = data[mapnamelen + 12:mapnamelen + 12 + mapfilelen]
|
||||
mod.write(struct.pack("<L%ds" % mapfilelen, mapfilelen, mapfile))
|
||||
pos = pos + 4 + mapfilelen
|
||||
mod.write(b"\x33\xFF\x22\xFF\x02\x00\x00\x00\x01")
|
||||
with open(f"{dir_extract}/mod.info", "rb") as modinfo:
|
||||
data = modinfo.read()
|
||||
mapnamelen = struct.unpack_from("<L", data, 0)[0]
|
||||
mapname = data[4:mapnamelen + 3]
|
||||
nummaps = struct.unpack_from("<L", data, mapnamelen + 4)[0]
|
||||
pos = mapnamelen + 8
|
||||
modname = (modname.encode() or mapname.decode()) + b'\x00'
|
||||
modnamelen = len(modname)
|
||||
modpath = b"../../../" + dir_shooter.encode() + b"/Content/Mods/" + id_mod.encode() + b'\x00'
|
||||
modpathlen = len(modpath)
|
||||
with open(f"{dir_mod_ark}.mod", "wb") as mod:
|
||||
mod.write(struct.pack(f'<LLL{modnamelen}sL{modpathlen}sL', int(id_mod), 0, modnamelen, modname,
|
||||
modpathlen, modpath, nummaps))
|
||||
for mapnum in range(nummaps):
|
||||
mapfilelen = struct.unpack_from("<L", data, pos)[0]
|
||||
mapfile = data[mapnamelen + 12:mapnamelen + 12 + mapfilelen]
|
||||
mod.write(struct.pack("<L%ds" % mapfilelen, mapfilelen, mapfile))
|
||||
pos = pos + 4 + mapfilelen
|
||||
mod.write(b"\x33\xFF\x22\xFF\x02\x00\x00\x00\x01")
|
||||
|
||||
if os.path.isfile(os.path.join(dir_extract, "modmeta.info")):
|
||||
with open(os.path.join(dir_extract, "modmeta.info"), "rb") as f:
|
||||
with open(f"{dir_extract}.mod", "ab") as f_out:
|
||||
f_out.write(f.read())
|
||||
else:
|
||||
with open(f"{dir_mods_ark}.mod", "wb") as f_out:
|
||||
f_out.write(b'\x01\x00\x00\x00\x08\x00\x00\x00ModType\x00\x02\x00\x00\x001\x00')
|
||||
if os.path.isfile(os.path.join(dir_extract, "modmeta.info")):
|
||||
with open(os.path.join(dir_extract, "modmeta.info"), "rb") as f:
|
||||
with open(f"{dir_extract}.mod", "ab") as f_out:
|
||||
f_out.write(f.read())
|
||||
else:
|
||||
with open(f"{dir_mods_ark}.mod", "wb") as f_out:
|
||||
f_out.write(b'\x01\x00\x00\x00\x08\x00\x00\x00ModType\x00\x02\x00\x00\x001\x00')
|
||||
x = os.system(f"mv {dir_workshop_ark}/appworkshop_{id_game_workshop}.acf {dir_mod_ark}/appworkshop_{id_game_workshop}.acf")
|
||||
|
||||
|
||||
@hlna.command(help='Выключение/включение серверов (без удаления) <hlna switch -m all -d')
|
||||
@ -734,6 +744,7 @@ def start(g, m):
|
||||
"""Запускает сервер выбранной игры"""
|
||||
# добавить проверку на ввод аргумента ark/7day если else: давать подсказку
|
||||
# если нет конфигов, то выводим что серверов нет
|
||||
modupdateall(g, m)
|
||||
start_stop("start", g, m)
|
||||
|
||||
|
||||
@ -748,6 +759,7 @@ def stop(g, m):
|
||||
@click.option('-g', required=True, help="Название игры для запуска. (ark, 7days")
|
||||
@click.option('-m', default='all', help="Название карты для запуска или all для запуска все карт")
|
||||
def restart(g, m):
|
||||
modupdateall(g, m)
|
||||
start_stop("restart", g, m)
|
||||
|
||||
|
||||
@ -785,9 +797,8 @@ def start_stop(action, g, m, list_config=list_config):
|
||||
names_serverstart = choose_map(names_serverstart)
|
||||
for i in names_serverstart:
|
||||
data = read_yaml(i, game="ARK")
|
||||
if stop or restart:
|
||||
y = os.system(
|
||||
f"~/git/hln-a/hlna.py rcon SaveWorld -m {i}") if action == "restart" or action == "stop" else ""
|
||||
if action == "stop" or action == "restart":
|
||||
rcon_local(i, "SaveWorld")
|
||||
x = os.system(f"systemctl --user {action} ark_{data['SessionName'].lower()}.service")
|
||||
|
||||
if x == 0:
|
||||
@ -839,6 +850,10 @@ def choose_map(arr):
|
||||
@click.argument('c', nargs=1)
|
||||
@click.option('-m', required=True, help="Название карты для применения rcon команды")
|
||||
def rcon(m, c):
|
||||
rcon_local(m, c)
|
||||
|
||||
|
||||
def rcon_local(m, c):
|
||||
try:
|
||||
dict_mapname = {}
|
||||
dict_adminpwd = {}
|
||||
@ -864,7 +879,7 @@ def rcon(m, c):
|
||||
else:
|
||||
pass
|
||||
except:
|
||||
print(f"Ошибка отправки команды в {m}", flag=False)
|
||||
print_line(f"Ошибка отправки команды {c} в {m}", flag=False)
|
||||
|
||||
|
||||
def zero(x=""):
|
||||
@ -900,10 +915,17 @@ create_dir(dir_unit)
|
||||
create_dir(dir_logs)
|
||||
|
||||
|
||||
class HlnaApp(QtWidgets.QMainWindow, hlnaui.Ui_MainWindow):
|
||||
class HlnaApp(QtWidgets.QMainWindow, hlnaui.Ui_mainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setupUi(self)
|
||||
self.lineEdit_ARK.returnPressed.connect(self.printable)
|
||||
|
||||
|
||||
def printable(self):
|
||||
namesession = self.lineEdit_ARK.text()
|
||||
print_line(namesession)
|
||||
|
||||
|
||||
def hlnag():
|
||||
if len(sys.argv) > 1:
|
||||
|
155
hlnaui.py
155
hlnaui.py
@ -9,14 +9,14 @@
|
||||
from PyQt6 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(1552, 1000)
|
||||
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
|
||||
class Ui_mainWindow(object):
|
||||
def setupUi(self, mainWindow):
|
||||
mainWindow.setObjectName("mainWindow")
|
||||
mainWindow.resize(1405, 1025)
|
||||
self.centralwidget = QtWidgets.QWidget(parent=mainWindow)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.tabWidget = QtWidgets.QTabWidget(parent=self.centralwidget)
|
||||
self.tabWidget.setMaximumSize(QtCore.QSize(1551, 941))
|
||||
self.tabWidget.setObjectName("tabWidget")
|
||||
@ -25,8 +25,9 @@ class Ui_MainWindow(object):
|
||||
self.gridLayout_2 = QtWidgets.QGridLayout(self.tab)
|
||||
self.gridLayout_2.setObjectName("gridLayout_2")
|
||||
self.tabWidget_2 = QtWidgets.QTabWidget(parent=self.tab)
|
||||
self.tabWidget_2.setAutoFillBackground(False)
|
||||
self.tabWidget_2.setTabsClosable(True)
|
||||
self.tabWidget_2.setTabBarAutoHide(True)
|
||||
self.tabWidget_2.setTabBarAutoHide(False)
|
||||
self.tabWidget_2.setObjectName("tabWidget_2")
|
||||
self.tab_5 = QtWidgets.QWidget()
|
||||
self.tab_5.setObjectName("tab_5")
|
||||
@ -35,9 +36,6 @@ class Ui_MainWindow(object):
|
||||
self.groupBox = QtWidgets.QGroupBox(parent=self.tab_5)
|
||||
self.groupBox.setTitle("")
|
||||
self.groupBox.setObjectName("groupBox")
|
||||
self.textEdit = QtWidgets.QTextEdit(parent=self.groupBox)
|
||||
self.textEdit.setGeometry(QtCore.QRect(10, 30, 441, 31))
|
||||
self.textEdit.setObjectName("textEdit")
|
||||
self.label = QtWidgets.QLabel(parent=self.groupBox)
|
||||
self.label.setGeometry(QtCore.QRect(10, 10, 81, 18))
|
||||
self.label.setScaledContents(True)
|
||||
@ -85,8 +83,47 @@ class Ui_MainWindow(object):
|
||||
self.label_7.setScaledContents(True)
|
||||
self.label_7.setObjectName("label_7")
|
||||
self.checkBox = QtWidgets.QCheckBox(parent=self.groupBox)
|
||||
self.checkBox.setGeometry(QtCore.QRect(140, 200, 301, 31))
|
||||
self.checkBox.setGeometry(QtCore.QRect(150, 200, 301, 31))
|
||||
self.checkBox.setObjectName("checkBox")
|
||||
self.lineEdit_ARK = QtWidgets.QLineEdit(parent=self.groupBox)
|
||||
self.lineEdit_ARK.setGeometry(QtCore.QRect(10, 30, 441, 32))
|
||||
self.lineEdit_ARK.setObjectName("lineEdit_ARK")
|
||||
self.lineEdit_ARK_2 = QtWidgets.QLineEdit(parent=self.groupBox)
|
||||
self.lineEdit_ARK_2.setGeometry(QtCore.QRect(30, 790, 441, 32))
|
||||
self.lineEdit_ARK_2.setText("")
|
||||
self.lineEdit_ARK_2.setObjectName("lineEdit_ARK_2")
|
||||
self.pushButton = QtWidgets.QPushButton(parent=self.groupBox)
|
||||
self.pushButton.setGeometry(QtCore.QRect(480, 790, 88, 34))
|
||||
self.pushButton.setObjectName("pushButton")
|
||||
self.label_10 = QtWidgets.QLabel(parent=self.groupBox)
|
||||
self.label_10.setGeometry(QtCore.QRect(30, 760, 91, 18))
|
||||
self.label_10.setScaledContents(True)
|
||||
self.label_10.setObjectName("label_10")
|
||||
self.comboBox = QtWidgets.QComboBox(parent=self.groupBox)
|
||||
self.comboBox.setGeometry(QtCore.QRect(10, 280, 441, 32))
|
||||
self.comboBox.setObjectName("comboBox")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.comboBox.addItem("")
|
||||
self.label_11 = QtWidgets.QLabel(parent=self.groupBox)
|
||||
self.label_11.setGeometry(QtCore.QRect(10, 260, 91, 18))
|
||||
self.label_11.setScaledContents(True)
|
||||
self.label_11.setObjectName("label_11")
|
||||
self.checkBox_2 = QtWidgets.QCheckBox(parent=self.groupBox)
|
||||
self.checkBox_2.setGeometry(QtCore.QRect(470, 30, 88, 22))
|
||||
self.checkBox_2.setObjectName("checkBox_2")
|
||||
self.lineEdit_ARK_3 = QtWidgets.QLineEdit(parent=self.groupBox)
|
||||
self.lineEdit_ARK_3.setGeometry(QtCore.QRect(470, 60, 261, 32))
|
||||
self.lineEdit_ARK_3.setObjectName("lineEdit_ARK_3")
|
||||
self.gridLayout_3.addWidget(self.groupBox, 0, 0, 1, 1)
|
||||
self.groupBox_2 = QtWidgets.QGroupBox(parent=self.tab_5)
|
||||
self.groupBox_2.setObjectName("groupBox_2")
|
||||
@ -104,9 +141,6 @@ class Ui_MainWindow(object):
|
||||
self.groupBox_3 = QtWidgets.QGroupBox(parent=self.tab_2)
|
||||
self.groupBox_3.setTitle("")
|
||||
self.groupBox_3.setObjectName("groupBox_3")
|
||||
self.textEdit_8 = QtWidgets.QTextEdit(parent=self.groupBox_3)
|
||||
self.textEdit_8.setGeometry(QtCore.QRect(10, 30, 441, 31))
|
||||
self.textEdit_8.setObjectName("textEdit_8")
|
||||
self.label_8 = QtWidgets.QLabel(parent=self.groupBox_3)
|
||||
self.label_8.setGeometry(QtCore.QRect(10, 10, 81, 18))
|
||||
self.label_8.setScaledContents(True)
|
||||
@ -139,65 +173,86 @@ class Ui_MainWindow(object):
|
||||
self.label_14.setGeometry(QtCore.QRect(10, 180, 131, 18))
|
||||
self.label_14.setScaledContents(True)
|
||||
self.label_14.setObjectName("label_14")
|
||||
self.lineEdit = QtWidgets.QLineEdit(parent=self.groupBox_3)
|
||||
self.lineEdit.setGeometry(QtCore.QRect(10, 30, 441, 32))
|
||||
self.lineEdit.setObjectName("lineEdit")
|
||||
self.gridLayout.addWidget(self.groupBox_3, 0, 0, 1, 1)
|
||||
self.groupBox_4 = QtWidgets.QGroupBox(parent=self.tab_2)
|
||||
self.groupBox_4.setObjectName("groupBox_4")
|
||||
self.gridLayout.addWidget(self.groupBox_4, 0, 1, 1, 1)
|
||||
self.tabWidget.addTab(self.tab_2, "")
|
||||
self.horizontalLayout.addWidget(self.tabWidget)
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1552, 30))
|
||||
self.verticalLayout.addWidget(self.tabWidget)
|
||||
mainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(parent=mainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 1405, 30))
|
||||
self.menubar.setObjectName("menubar")
|
||||
MainWindow.setMenuBar(self.menubar)
|
||||
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
|
||||
mainWindow.setMenuBar(self.menubar)
|
||||
self.statusbar = QtWidgets.QStatusBar(parent=mainWindow)
|
||||
self.statusbar.setObjectName("statusbar")
|
||||
MainWindow.setStatusBar(self.statusbar)
|
||||
mainWindow.setStatusBar(self.statusbar)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
self.tabWidget.setCurrentIndex(1)
|
||||
self.retranslateUi(mainWindow)
|
||||
self.tabWidget.setCurrentIndex(0)
|
||||
self.tabWidget_2.setCurrentIndex(0)
|
||||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||
QtCore.QMetaObject.connectSlotsByName(mainWindow)
|
||||
|
||||
def retranslateUi(self, MainWindow):
|
||||
def retranslateUi(self, mainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
||||
self.label.setText(_translate("MainWindow", "Имя сессии"))
|
||||
self.textEdit_2.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
mainWindow.setWindowTitle(_translate("mainWindow", "HLN-A"))
|
||||
self.label.setText(_translate("mainWindow", "Имя сессии"))
|
||||
self.textEdit_2.setHtml(_translate("mainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:\'Noto Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">7777</p></body></html>"))
|
||||
self.label_2.setText(_translate("MainWindow", "Порт"))
|
||||
self.label_3.setText(_translate("MainWindow", "Querry порт"))
|
||||
self.textEdit_3.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
self.label_2.setText(_translate("mainWindow", "Порт"))
|
||||
self.label_3.setText(_translate("mainWindow", "Querry порт"))
|
||||
self.textEdit_3.setHtml(_translate("mainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:\'Noto Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">27015</p></body></html>"))
|
||||
self.textEdit_4.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
self.textEdit_4.setHtml(_translate("mainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:\'Noto Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">27042</p></body></html>"))
|
||||
self.label_4.setText(_translate("MainWindow", "Rcon порт"))
|
||||
self.label_5.setText(_translate("MainWindow", "Пароль сессии"))
|
||||
self.label_6.setText(_translate("MainWindow", "Пароль администратора"))
|
||||
self.label_7.setText(_translate("MainWindow", "Количество игроков"))
|
||||
self.checkBox.setText(_translate("MainWindow", "Передавать в глобальный список серверов"))
|
||||
self.groupBox_2.setTitle(_translate("MainWindow", "ini"))
|
||||
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_5), _translate("MainWindow", "Tab 1"))
|
||||
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_6), _translate("MainWindow", "Tab 2"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "ARK"))
|
||||
self.label_8.setText(_translate("MainWindow", "Имя сессии"))
|
||||
self.textEdit_9.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
self.label_4.setText(_translate("mainWindow", "Rcon порт"))
|
||||
self.label_5.setText(_translate("mainWindow", "Пароль сессии"))
|
||||
self.label_6.setText(_translate("mainWindow", "Пароль администратора"))
|
||||
self.label_7.setText(_translate("mainWindow", "Количество игроков"))
|
||||
self.checkBox.setText(_translate("mainWindow", "Передавать в глобальный список серверов"))
|
||||
self.lineEdit_ARK.setText(_translate("mainWindow", "Имя сессии "))
|
||||
self.pushButton.setText(_translate("mainWindow", "PushButton"))
|
||||
self.label_10.setText(_translate("mainWindow", "Rcon команда"))
|
||||
self.comboBox.setItemText(0, _translate("mainWindow", "Остров (The Island)"))
|
||||
self.comboBox.setItemText(1, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(2, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(3, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(4, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(5, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(6, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(7, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(8, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(9, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(10, _translate("mainWindow", "Новый элемент"))
|
||||
self.comboBox.setItemText(11, _translate("mainWindow", "Новый элемент"))
|
||||
self.label_11.setText(_translate("mainWindow", "Карта"))
|
||||
self.checkBox_2.setText(_translate("mainWindow", "Кластер"))
|
||||
self.lineEdit_ARK_3.setText(_translate("mainWindow", "Имя кластера"))
|
||||
self.groupBox_2.setTitle(_translate("mainWindow", "ini"))
|
||||
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_5), _translate("mainWindow", "Tab 1"))
|
||||
self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_6), _translate("mainWindow", "Tab 2"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("mainWindow", "ARK"))
|
||||
self.label_8.setText(_translate("mainWindow", "Имя сессии"))
|
||||
self.textEdit_9.setHtml(_translate("mainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:\'Noto Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
|
||||
self.label_9.setText(_translate("MainWindow", "Порт"))
|
||||
self.label_12.setText(_translate("MainWindow", "Пароль сессии"))
|
||||
self.label_13.setText(_translate("MainWindow", "Пароль администратора"))
|
||||
self.label_14.setText(_translate("MainWindow", "Количество игроков"))
|
||||
self.groupBox_4.setTitle(_translate("MainWindow", "xml"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "7 Days to Die"))
|
||||
self.label_9.setText(_translate("mainWindow", "Порт"))
|
||||
self.label_12.setText(_translate("mainWindow", "Пароль сессии"))
|
||||
self.label_13.setText(_translate("mainWindow", "Пароль администратора"))
|
||||
self.label_14.setText(_translate("mainWindow", "Количество игроков"))
|
||||
self.groupBox_4.setTitle(_translate("mainWindow", "xml"))
|
||||
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("mainWindow", "7 Days to Die"))
|
||||
|
Loading…
Reference in New Issue
Block a user