okmegalul

This commit is contained in:
Bandwidth
2026-04-26 19:52:51 +02:00
parent 8b94f15a5b
commit 53a10f9196

View File

@@ -276,7 +276,7 @@ public static class AdminResources
<div class=""config-container""> <div class=""config-container"">
<form id=""config-form"" class=""config-form""> <form id=""config-form"" class=""config-form"">
<div class=""config-section""> <div class=""config-section"">
<h3>🎯 Gameplay</h3> <h3>🎯 Gameplay (vzdálenosti & cooldowny)</h3>
<div class=""config-grid""> <div class=""config-grid"">
<div class=""config-item""> <div class=""config-item"">
<label>Kill Distance (m)</label> <label>Kill Distance (m)</label>
@@ -287,19 +287,96 @@ public static class AdminResources
<input type=""number"" name=""killCooldownMs"" step=""1000""> <input type=""number"" name=""killCooldownMs"" step=""1000"">
</div> </div>
<div class=""config-item""> <div class=""config-item"">
<label>Max Speed (m/s)</label> <label>Report Distance (m)</label>
<input type=""number"" name=""maxSpeedMps"" step=""0.1""> <input type=""number"" name=""reportDistanceM"" step=""0.1"">
</div> </div>
<div class=""config-item""> <div class=""config-item"">
<label>Task Distance (m)</label> <label>Task Distance (m)</label>
<input type=""number"" name=""taskStartDistanceM"" step=""0.1""> <input type=""number"" name=""taskStartDistanceM"" step=""0.1"">
</div> </div>
<div class=""config-item"">
<label>Task Leave Debounce (ms)</label>
<input type=""number"" name=""taskLeaveDebounceMs"" step=""500"">
</div>
<div class=""config-item"">
<label>Task Progress Keepalive (ms)</label>
<input type=""number"" name=""taskProgressKeepaliveMs"" step=""500"">
</div>
<div class=""config-item"">
<label>Max Speed (m/s)</label>
<input type=""number"" name=""maxSpeedMps"" step=""0.1"">
</div>
<div class=""config-item"">
<label>Teleport Threshold (m)</label>
<input type=""number"" name=""teleportThresholdMeters"" step=""1"">
</div>
</div>
</div>
<div class=""config-section"">
<h3>🆕 Per-Lobby výchozí hodnoty</h3>
<div class=""config-grid"">
<div class=""config-item"">
<label>Default Impostor Count</label>
<input type=""number"" name=""defaultImpostorCount"" step=""1"" min=""1"">
</div>
<div class=""config-item"">
<label>Default Task Count</label>
<input type=""number"" name=""defaultTaskCount"" step=""1"" min=""1"">
</div>
<div class=""config-item"">
<label>Max Players Per Lobby</label>
<input type=""number"" name=""maxPlayersPerLobby"" step=""1"" min=""2"">
</div>
<div class=""config-item"">
<label>Default Tie Policy</label>
<select name=""defaultTiePolicy"">
<option value=""NoEject"">NoEject</option>
<option value=""Random"">Random</option>
<option value=""EjectLowestId"">EjectLowestId</option>
</select>
</div>
</div>
</div>
<div class=""config-section"">
<h3>📏 Distance Check Slack (P13b)</h3>
<p class=""config-help"">Server validates actions at <code>distance + min(distance × percent / 100, maxM)</code> so a player at the visible edge of a button radius can press it reliably despite 1Hz position broadcasts and GPS jitter.</p>
<div class=""config-grid"">
<div class=""config-item"">
<label>Slack Percent (%)</label>
<input type=""number"" name=""distanceCheckSlackPercent"" step=""1"" min=""0"" max=""100"">
</div>
<div class=""config-item"">
<label>Slack Max (m)</label>
<input type=""number"" name=""distanceCheckSlackMaxM"" step=""0.5"" min=""0"">
</div>
</div> </div>
</div> </div>
<div class=""config-section""> <div class=""config-section"">
<h3>🗳️ Meeting</h3> <h3>🗳️ Meeting</h3>
<div class=""config-grid""> <div class=""config-grid"">
<div class=""config-item"">
<label>Meeting Arrival Radius (m)</label>
<input type=""number"" name=""meetingArrivalRadiusM"" step=""1"">
</div>
<div class=""config-item"">
<label>Emergency Call Radius (m)</label>
<input type=""number"" name=""emergencyMeetingCallRadiusM"" step=""1"">
</div>
<div class=""config-item"">
<label>Arrival Base (ms)</label>
<input type=""number"" name=""arrivalBaseMs"" step=""1000"">
</div>
<div class=""config-item"">
<label>Arrival Safety Margin (ms)</label>
<input type=""number"" name=""arrivalSafetyMarginMs"" step=""100"">
</div>
<div class=""config-item"">
<label>Allowed Late (ms)</label>
<input type=""number"" name=""allowedLateMs"" step=""500"">
</div>
<div class=""config-item""> <div class=""config-item"">
<label>Diskuze (ms)</label> <label>Diskuze (ms)</label>
<input type=""number"" name=""discussionPhaseMs"" step=""1000""> <input type=""number"" name=""discussionPhaseMs"" step=""1000"">
@@ -308,6 +385,14 @@ public static class AdminResources
<label>Hlasování (ms)</label> <label>Hlasování (ms)</label>
<input type=""number"" name=""votingPhaseMs"" step=""1000""> <input type=""number"" name=""votingPhaseMs"" step=""1000"">
</div> </div>
<div class=""config-item"">
<label>Emergency Cooldown (ms)</label>
<input type=""number"" name=""emergencyMeetingCooldownMs"" step=""1000"">
</div>
<div class=""config-item"">
<label>Max Emergency / Hráč</label>
<input type=""number"" name=""maxEmergencyMeetingsPerPlayer"" step=""1"" min=""0"">
</div>
</div> </div>
</div> </div>
@@ -318,10 +403,64 @@ public static class AdminResources
<label>Sabotage Cooldown (ms)</label> <label>Sabotage Cooldown (ms)</label>
<input type=""number"" name=""sabotageCooldownMs"" step=""1000""> <input type=""number"" name=""sabotageCooldownMs"" step=""1000"">
</div> </div>
<div class=""config-item"">
<label>Comms Blackout Duration (ms)</label>
<input type=""number"" name=""commsBlackoutDurationMs"" step=""1000"">
</div>
<div class=""config-item""> <div class=""config-item"">
<label>Meltdown Deadline (ms)</label> <label>Meltdown Deadline (ms)</label>
<input type=""number"" name=""criticalMeltdownDeadlineMs"" step=""1000""> <input type=""number"" name=""criticalMeltdownDeadlineMs"" step=""1000"">
</div> </div>
<div class=""config-item"">
<label>Repair Station Distance (m)</label>
<input type=""number"" name=""repairStationDistanceM"" step=""0.5"">
</div>
<div class=""config-item"">
<label>Repair Station Hold (ms)</label>
<input type=""number"" name=""repairStationHoldMs"" step=""500"">
</div>
<div class=""config-item"">
<label>Simultaneous Repair Window (ms)</label>
<input type=""number"" name=""simultaneousRepairWindowMs"" step=""500"">
</div>
</div>
</div>
<div class=""config-section"">
<h3>🛡️ Anti-Cheat & Lobby</h3>
<div class=""config-grid"">
<div class=""config-item"">
<label>Movement Validation Window (s)</label>
<input type=""number"" name=""movementValidationWindowSec"" step=""0.5"">
</div>
<div class=""config-item"">
<label>Cheat Score - Warn</label>
<input type=""number"" name=""cheatScoreWarnThreshold"" step=""1"">
</div>
<div class=""config-item"">
<label>Cheat Score - Restrict</label>
<input type=""number"" name=""cheatScoreRestrictThreshold"" step=""1"">
</div>
<div class=""config-item"">
<label>Cheat Score - Kick</label>
<input type=""number"" name=""cheatScoreKickThreshold"" step=""1"">
</div>
<div class=""config-item"">
<label>Idle Lobby TTL (ms)</label>
<input type=""number"" name=""idleLobbyTtlMs"" step=""60000"">
</div>
<div class=""config-item"">
<label>Host Timeout (ms)</label>
<input type=""number"" name=""hostTimeoutMs"" step=""1000"">
</div>
<div class=""config-item"">
<label>Reconnect Window (ms)</label>
<input type=""number"" name=""reconnectWindowMs"" step=""1000"">
</div>
<div class=""config-item"">
<label>Join Rate Limit / minutu</label>
<input type=""number"" name=""joinRateLimitPerMinute"" step=""1"">
</div>
</div> </div>
</div> </div>
@@ -1358,6 +1497,21 @@ body {
font-size: 1rem; font-size: 1rem;
} }
.config-help {
margin: -0.5rem 0 1rem 0;
font-size: 0.8rem;
color: var(--text-muted, #888);
line-height: 1.4;
}
.config-help code {
background: var(--bg-elev, rgba(255,255,255,0.06));
padding: 0.05rem 0.3rem;
border-radius: 3px;
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
font-size: 0.75rem;
}
.config-grid { .config-grid {
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));