#!/usr/bin/env python3 import os import yaml from pathlib import Path home_dir = Path.home() count_maps = 1 map_server = "TheIsland" dir_server = f"{home_dir}/ARK_Servers/" name_server = "Dodo server" port_server = 7777 query_port = 27015 password_server = "" max_players = 70 mods_id = [] listen_server = True cluster_server = False if not os.path.exists(dir_server): os.mkdir(dir_server) def yaml_edit(): count_maps = 1 print("""Укажите требуется ли кластер? 1. Да 2. Нет""") count_cluster = input(":\n") if count_cluster == "1": cluster_server = True else: cluster_server = False while cluster_server == True: count_maps = input("Укажите количество карт:\n") if count_maps.isdigit: break print("Введите цифры") for i in range(1, int(count_maps) + 1): print("""Выберите карту из списка указав номер 1. The Island 2. The Center 3. Scorched Earth 4. Ragnarok 5. Aberration 6. Extinction 7. Valguero 8. Genesis: Part 1 9. Crystal Isles 10. Genesis: Part 2 11. Lost Island 12. Fjordur""") amount_map = input("") if amount_map == "1": map_server = "TheIsland" elif amount_map == "2": map_server = "TheCenter" elif amount_map == "3": map_server = "ScorchedEarth_P" elif amount_map == "4": map_server = "Ragnarok" elif amount_map == "5": map_server = "Aberration_P" elif amount_map == "6": map_server = "Extinction" elif amount_map == "7": map_server = "Valguero_P" elif amount_map == "8": map_server = "Genesis" elif amount_map == "9": map_server = "CrystalIsles" elif amount_map == "10": map_server = "Gen2" elif amount_map == "11": map_server = "LostIsland" elif amount_map == "12": map_server = "Fjordur" print("Введите цифры") print("Укажите название Сервера") name_server = input("") print("Укажите порт Сервера <7777>") port_server = input("") print("Укажите Query-порт Сервера <27015>") query_port = input("") yaml_create(map_server, query_port, port_server, name_server, cluster_server) return map_server, query_port, port_server, name_server, cluster_server def yaml_create(map_server, query_port, port_server, name_server, cluster_server): if not os.path.exists(f"{home_dir}/.config/dodo/"): os.mkdir(f"{home_dir}/.config/dodo/") settings_dodo = [ { 'Map' : f"{map_server}", 'ServerPath' : f"{dir_server}", 'SessionName' : f"{name_server}", 'Port' : f"{port_server}", 'QueryPort' : f"{query_port}", 'ServerPassword' : f"{password_server}", 'MaxPlayers' : f"{max_players}", 'ModsId' : f"{mods_id}", 'Listen' : f"{listen_server}", 'Cluster' : f"{cluster_server}" } ] with open(f"{home_dir}/.config/dodo/{map_server}.yaml", 'w') as yamlfile: data = yaml.dump(settings_dodo, yamlfile) print("Конфиг создан") def read_yaml(map_server): print("начало read" + map_server) with open(f"{home_dir}/.config/dodo/{map_server}.yaml", "r") as yamlfile: data = yaml.load(yamlfile, Loader=yaml.FullLoader) map_server = 'data.Map' dir_server = 'data.ServerPath' name_server = 'data.SessionName' port_server = 'data.Port' query_port = 'data.QueryPort' password_server = 'data.ServerPassword' max_players = 'data.MaxPlayers' mods_id = 'data.ModsId' listen_server = 'data.Listen' cluster_server = 'data.Cluster' print(data) print("конец read" + map_server) return map_server, dir_server, password_server, max_players, mods_id, listen_server, query_port, port_server, name_server, cluster_server def install(): read_yaml(map_server) if not os.path.isdir(dir_server + map_server): os.mkdir(dir_server + map_server) else: os.system(f"steamcmd +force_install_dir {dir_server + map_server} +login anonymous +app_update 376030 +quit") def start(): read_yaml(map_server) os.chdir(dir_server + map_server + "/" + "ShooterGame/Binaries/Linux/") os.system(f"./ShooterGameServer {map_server}?SessionName={name_server}?Port={port_server}?QueryPort={query_port}?MaxPlayers={max_players}?GameModIds={mods_id}?listen={listen_server}") map_server, query_port, port_server, name_server, cluster_server = yaml_edit() install() start()