Jeśli Twój serwer gry uruchamia się tylko wtedy, gdy się logujesz i klikasz go dwukrotnie, po każdym restarcie (aktualizacja Windows, ponowne uruchomienie z panelu) serwer pozostaje wyłączony, dopóki tego nie zauważysz. Dzięki narzędziu Task Scheduler (Harmonogram zadań) serwer uruchamia się sam razem z systemem Windows, nawet jeśli nikt się nie zaloguje.
1. Plik .bat, który uruchamia serwer
Utwórz na przykład plik C:\serwery\uruchom.bat. Najważniejsze jest to, co dzieje się na początku: zanim skrypt uruchomi serwer, musi przejść do jego folderu.
@echo off
cd /d C:\FXServer\server
FXServer.exe
Zmień folder i plik wykonywalny na te z Twojej gry (na przykład java -Xms6G -Xmx6G -jar paper.jar nogui dla Minecrafta). Najpierw przetestuj skrypt, klikając go dwukrotnie: jeśli w ten sposób serwer się nie uruchomi, z harmonogramu też nie ruszy.
2. Zaplanuj zadanie
W oknie PowerShell uruchomionym jako administrator:
schtasks /Create /TN "Serwer gry" /SC ONSTART /DELAY 0001:00 /RU SYSTEM /RL HIGHEST /TR "C:\serwery\uruchom.bat"
/SC ONSTART: przy starcie Windows, nawet jeśli nikt się nie zaloguje./DELAY 0001:00: czeka minutę, aby sieć i baza danych były gotowe./RU SYSTEM: działa w tle, jak usługa.
Przetestuj zadanie bez restartu: schtasks /Run /TN "Serwer gry".
Co się zmienia przy takim uruchamianiu
Serwer działa w tle i nie zobaczysz jego okna po zalogowaniu się przez Pulpit zdalny. Zarządzaj nim przez jego panel lub zdalną konsolę:
- FiveM: txAdmin, pod adresem
http://TWOJE_IP:40120. - Minecraft, Rust, ARK...: przez RCON albo w samej grze, z uprawnieniami administratora.
Aby zatrzymać serwer: schtasks /End /TN "Serwer gry" albo w narzędziu Task Manager (Menedżer zadań). A jeśli chcesz wyłączyć zadanie: schtasks /Change /TN "Serwer gry" /DISABLE.
Automatyczny restart po awarii
W grach, które nie mają panelu restartującego serwer (w przypadku FiveM robi to txAdmin), pętla w pliku .bat uruchamia go ponownie, gdy się zamknie:
@echo off
cd /d C:\serwery\rust
:poczatek
RustDedicated.exe -batchmode +server.port 28015 +server.identity "glowny"
timeout /t 10
goto poczatek
Jeśli kiedyś zechcesz naprawdę zatrzymać serwer, najpierw wyłącz zadanie, bo inaczej pętla znowu go uruchomi.