сделай так чтоб не открывало сервер а просило айпи...
Erstellt am: 19. Februar 2025
Erstellt am: 19. Februar 2025
сделай так чтоб не открывало сервер а просило айпи и порт сервера на который запустить этот сервер для захода import subprocess
import sys
import os
def main():
# Запрашиваем у пользователя IP и порт
server_ip = input("Введите IP (по умолчанию 127.0.0.1): ") or "127.0.0.1"
server_port = input("Введите порт (по умолчанию 19132): ") or "19132"
text# Создаём/перезаписываем server.properties # В реальном использовании пропишите остальные параметры при необходимости with open("server.properties", "w", encoding="utf-8") as f: f.write("server-name=MyBedrockServer\n") f.write(f"server-port={server_port}\n") # Для IPv6 обычно порт на 1 больше. Можно убрать, если не используете IPv6. f.write(f"server-portv6={int(server_port) + 1}\n") f.write(f"server-ip={server_ip}\n") # Ниже можно добавить любые нужные вам настройки f.write("max-players=10\n") f.write("difficulty=1\n") f.write("online-mode=true\n") f.write("white-list=false\n") # Убедимся, что у нас есть сам bedrock_server.exe # Если файл называется иначе или лежит в другом месте - нужно подправить путь bedrock_exe = "bedrock_server.exe" if not os.path.exists(bedrock_exe): print(f"Не найден файл {bedrock_exe} в директории скрипта!") sys.exit(1) # Запускаем сервер как subprocess # Обязательно указываем: stdout=subprocess.PIPE, stdin=subprocess.PIPE, text=True # чтобы мы могли считывать вывод и отправлять команды process = subprocess.Popen( [bedrock_exe], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, text=True ) print(f"Сервер запущен на {server_ip}:{server_port}. Ожидаем сообщения в чате...") # Считываем вывод сервера построчно while True: line = process.stdout.readline() if not line: break # сервер завершился # Отладочный вывод в консоль Python (не обязателен) print(line, end="") # Пример для Bedrock-сервера: # Обычно строка чата выглядит примерно так: # [2023-01-01 12:34:56 INFO] <PlayerName> .speak # Поэтому мы просто проверим наличие ".speak" в строке # (Для более точного детектирования можно использовать регулярные выражения) if ".speak" in line: # Если увидели .speak, отправляем команду /say в консоль: cmd = "say вфщыах\n" process.stdin.write(cmd) process.stdin.flush()
if name == "main":
main()
Ниже приведён пример изменённого скрипта, который запрашивает у пользователя IP и порт, обновляет настройки (server.properties), а запуск сервера оставляет на усмотрение пользователя:
pythondef main(): # Запрашиваем у пользователя IP и порт сервера server_ip = input("Введите IP сервера (по умолчанию 127.0.0.1): ") or "127.0.0.1" server_port = input("Введите порт сервера (по умолчанию 19132): ") or "19132" # Обновляем файл настроек server.properties with open("server.properties", "w", encoding="utf-8") as f: f.write("server-name=MyBedrockServer\n") f.write(f"server-ip={server_ip}\n") f.write(f"server-port={server_port}\n") # Если используется IPv6, обычно порт задаётся как port+1: f.write(f"server-portv6={int(server_port) + 1}\n") # Остальные параметры: f.write("max-players=10\n") f.write("difficulty=1\n") f.write("online-mode=true\n") f.write("white-list=false\n") print("Настройки сервера обновлены!") print(f"IP: {server_ip}") print(f"Порт: {server_port}") print("Запустите сервер вручную и подключитесь к нему через клиент.") if __name__ == "__main__": main()
В этом варианте скрипт не пытается запустить сервер как subprocess, а только создаёт (или перезаписывает) файл настроек и выводит информацию для подключения. Далее вы можете запустить сервер (например, через отдельный ярлык или командную строку) и заходить на него, используя указанные IP и порт.