from dataclasses import dataclass
from typing import Optional
@dataclass
class Server:
ip: str
port: int
max_players: int
start_map: str
exec_cfg: Optional[str]
sys_ticrate: int
@dataclass(frozen=True)
class ServerControl:
server: Server
def start(self) -> None:
pass
def stop(self) -> None:
pass
server_control = ServerControl(
server=Server(
ip="127.0.0.1",
port=27015,
max_players=32,
start_map="de_dust2",
exec_cfg="server.cfg",
sys_ticrate=1000
)
)
server_control.start()
server_control.stop()
'''
HLDS Starter Server
Developed by Glaster (aka IslingitonG)
Version: 1.4
'''
import os
import uvicorn
import subprocess
import psutil
from fastapi import FastAPI, Request, HTTPException, BackgroundTasks
app = FastAPI()
PORT = 1337 # можешь заменить на свой
SERVER_DIR = "E:\SERVERS\SERVERS\GameServers\Half-Life\INDEV\Batman vs Ironman\\" # Путь до директории с твоим сервером
SECRET_KEY = "YAY"
SERVER_EXECURE_QUERY = "hlds.exe --game valve --map crossfire" # Команда на запуск
def is_hlds_running():
"""Checks if the HLDS process has been already started"""
process_list = []
for process in psutil.process_iter(['name']):
if 'hlds' in process.info["name"]:
return True
return False
def start_server():
"""Executes command to run the server"""
process = subprocess.Popen(SERVER_EXECURE_QUERY, shell=True)
@app.post("/start_server")
async def run_server(info: Request, background_tasks: BackgroundTasks):
"""Provides routing for start/restart server"""
req_info = await info.json()
if req_info["key"] == SECRET_KEY:
if is_hlds_running():
return {"status": 500, "description": "HLDS is already running!"}
os.chdir(SERVER_DIR)
background_tasks.add_task(start_server)
return {"status": 200, "description": "The server has been succesfully started!"}
raise HTTPException(status_code=401, detail="Access denied!")
def main():
uvicorn.run(f"{os.path.basename(__file__)[:-3]}:app", log_level="info", port=PORT)
if __name__ == '__main__':
main()
{
"key": "Твой секретный ключ"
}
pip install fastapi
pip install uvicorn
pip install psutil
Что?Сделал возможность через бота управлять ходьбой , прыжок , сесть, крутиться left right, вперед назал влево вправо, ( но не все сразу нажимать нельзя )
Полностью управление amxmodmenu ( или других команд )
При этом не нажимая клавиши, всё через бота)
DEVV, Включение/выключение добавил.
Так же все логи которых пишутся в console сервера пишутся в лайве в бота ( можно фулл инфу сервера так и Играков отдельно )
Он, кстати почему-то не все аудиозаписи находит. @ivksound_bot поинтереснее, но шлёт рекламуПримерный бот @vkmusic_bot