«Работает» — только после строки о готовности сервера
Регистрацию в Steam сервер печатает задолго до того, как мир загружен, и по ней панель показывала «Работает» на сервере, который ещё никого не пустит. Теперь готовность распознаётся только по «*** SERVER STARTED ****», а пока идёт загрузка, состояние остаётся «Запускается» с пояснением под ним и счётчиком времени загрузки. Если строки о готовности так и не будет (своя версия, свои моды), через пятнадцать минут менеджер сочтёт сервер запущенным и скажет об этом в консоли: иначе панель навсегда осталась бы без опроса игроков. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+12
-3
@@ -68,7 +68,9 @@ function formatBytes(bytes) {
|
||||
return `${value.toFixed(value < 10 && unit > 0 ? 1 : 0)} ${units[unit]}`;
|
||||
}
|
||||
|
||||
function formatUptime(seconds) {
|
||||
// key разделяет два смысла одного счётчика: сервер либо уже работает, либо
|
||||
// всё ещё загружается.
|
||||
function formatUptime(seconds, key = "overview.uptime") {
|
||||
if (!seconds) return "";
|
||||
const days = Math.floor(seconds / 86400);
|
||||
const hours = Math.floor((seconds % 86400) / 3600);
|
||||
@@ -77,7 +79,7 @@ function formatUptime(seconds) {
|
||||
if (days) parts.push(t("unit.days", { value: days }));
|
||||
if (hours) parts.push(t("unit.hours", { value: hours }));
|
||||
parts.push(t("unit.minutes", { value: minutes }));
|
||||
return t("overview.uptime", { value: parts.join(" ") });
|
||||
return t(key, { value: parts.join(" ") });
|
||||
}
|
||||
|
||||
function formatDate(unixSeconds) {
|
||||
@@ -253,7 +255,14 @@ function renderStatus(status) {
|
||||
$("#ov-profile").textContent = status.profile_title
|
||||
? t("overview.profile", { title: status.profile_title })
|
||||
: "";
|
||||
$("#ov-uptime").textContent = formatUptime(status.uptime_sec);
|
||||
// Процесс уже запущен, но мир грузится минутами, и всё это время сервер
|
||||
// никого не пустит: пишем об этом прямо, иначе «Работает» вводит в
|
||||
// заблуждение.
|
||||
const starting = status.state === "starting";
|
||||
$("#ov-note").textContent = starting ? t("overview.starting") : "";
|
||||
$("#status-pill").title = starting ? t("overview.starting") : "";
|
||||
$("#ov-uptime").textContent =
|
||||
formatUptime(status.uptime_sec, starting ? "overview.loading" : "overview.uptime");
|
||||
$("#ov-pid").textContent = status.pid ? `PID ${status.pid}` : "";
|
||||
$("#ov-lastexit").textContent =
|
||||
status.state === "stopped" && status.last_exit
|
||||
|
||||
Reference in New Issue
Block a user