minigame 6 rocker 1.4
This commit is contained in:
@@ -191,6 +191,9 @@ function defaultQuizSettings() {
|
||||
carryChoicePlaqueTheme: defaultCarryChoicePlaqueTheme(),
|
||||
/** quiz_carry: ขยายป้ายตัวเลือกบนแมป (กว้าง/สูง/ฟอนต์) — 0.85–2.5 */
|
||||
carryChoicePlaqueMapScale: 1.25,
|
||||
/** quiz_carry: ถ้าใส่รหัสฉาก + คูณ — เดินเร็วเฉพาะแมปนั้น (เทียบกับค่าเริ่มในไคลเอนต์) */
|
||||
carryWalkSpeedMultForMapId: '',
|
||||
carryWalkSpeedMult: null,
|
||||
questions: [],
|
||||
carryQuestions: [],
|
||||
battleQuizMcq: [],
|
||||
@@ -446,6 +449,22 @@ function clampCarryChoicePlaqueMapScale(n, def) {
|
||||
return Math.round(Math.max(0.85, Math.min(2.5, v)) * 100) / 100;
|
||||
}
|
||||
|
||||
/** รหัสฉาก (เช่น mnorwqx1) — ว่าง = ไม่ใช้คูณเดินแยกแมป */
|
||||
function sanitizeCarryWalkSpeedMultForMapId(raw) {
|
||||
const t = String(raw == null ? '' : raw).trim().slice(0, 64);
|
||||
if (!t) return '';
|
||||
if (!/^[a-zA-Z0-9_-]+$/.test(t)) return '';
|
||||
return t;
|
||||
}
|
||||
|
||||
/** quiz_carry: คูณความเร็วเดินเมื่อ map id ตรง — null = ไม่ตั้ง */
|
||||
function clampCarryWalkSpeedMultSetting(n) {
|
||||
if (n === null || n === undefined || n === '') return null;
|
||||
const v = Number(n);
|
||||
if (Number.isNaN(v)) return null;
|
||||
return Math.round(Math.max(0.5, Math.min(3, v)) * 100) / 100;
|
||||
}
|
||||
|
||||
function mergeQuizCarryFromMirrorIfSet(base) {
|
||||
if (!QUIZ_SETTINGS_MIRROR_PATH) return base;
|
||||
try {
|
||||
@@ -465,6 +484,13 @@ function mergeQuizCarryFromMirrorIfSet(base) {
|
||||
if (j.carrySessionLength != null) {
|
||||
base.carrySessionLength = clampCarrySessionLength(j.carrySessionLength, base.carrySessionLength);
|
||||
}
|
||||
if (j.carryWalkSpeedMultForMapId != null) {
|
||||
base.carryWalkSpeedMultForMapId = sanitizeCarryWalkSpeedMultForMapId(j.carryWalkSpeedMultForMapId);
|
||||
}
|
||||
if (j.carryWalkSpeedMult != null) {
|
||||
const wm = clampCarryWalkSpeedMultSetting(j.carryWalkSpeedMult);
|
||||
if (wm != null) base.carryWalkSpeedMult = wm;
|
||||
}
|
||||
if (j.carryEmbedCountdownTheme != null && typeof j.carryEmbedCountdownTheme === 'object') {
|
||||
base.carryEmbedCountdownTheme = sanitizeCarryEmbedCountdownTheme(j.carryEmbedCountdownTheme);
|
||||
}
|
||||
@@ -500,6 +526,10 @@ function loadQuizSettings() {
|
||||
: sanitizeCarryChoicePlaqueThemes(j.carryChoicePlaqueTheme);
|
||||
const carryChoicePlaqueTheme = carryChoicePlaqueThemes[0];
|
||||
const carryChoicePlaqueMapScale = clampCarryChoicePlaqueMapScale(j.carryChoicePlaqueMapScale, d.carryChoicePlaqueMapScale);
|
||||
const carryWalkSpeedMultForMapId = sanitizeCarryWalkSpeedMultForMapId(j.carryWalkSpeedMultForMapId);
|
||||
let carryWalkSpeedMult = clampCarryWalkSpeedMultSetting(j.carryWalkSpeedMult);
|
||||
if (!carryWalkSpeedMultForMapId) carryWalkSpeedMult = null;
|
||||
else if (carryWalkSpeedMult == null) carryWalkSpeedMult = clampCarryWalkSpeedMultSetting(1.42);
|
||||
const out = {
|
||||
readMs: clampQuizMs(j.readMs, d.readMs),
|
||||
answerMs: clampQuizMs(j.answerMs, d.answerMs),
|
||||
@@ -512,6 +542,8 @@ function loadQuizSettings() {
|
||||
carryChoicePlaqueThemes,
|
||||
carryChoicePlaqueTheme,
|
||||
carryChoicePlaqueMapScale,
|
||||
carryWalkSpeedMultForMapId,
|
||||
carryWalkSpeedMult,
|
||||
questions,
|
||||
carryQuestions,
|
||||
battleQuizMcq,
|
||||
@@ -1037,6 +1069,17 @@ function saveQuizSettings(d) {
|
||||
const carryChoicePlaqueMapScale = d.carryChoicePlaqueMapScale != null
|
||||
? clampCarryChoicePlaqueMapScale(d.carryChoicePlaqueMapScale, prevScale)
|
||||
: prevScale;
|
||||
const prevWalkId = sanitizeCarryWalkSpeedMultForMapId(prev.carryWalkSpeedMultForMapId);
|
||||
const prevWalkMult = prev.carryWalkSpeedMult != null ? clampCarryWalkSpeedMultSetting(prev.carryWalkSpeedMult) : null;
|
||||
let carryWalkSpeedMultForMapId = d.carryWalkSpeedMultForMapId !== undefined
|
||||
? sanitizeCarryWalkSpeedMultForMapId(d.carryWalkSpeedMultForMapId)
|
||||
: prevWalkId;
|
||||
let carryWalkSpeedMult = d.carryWalkSpeedMult !== undefined ? clampCarryWalkSpeedMultSetting(d.carryWalkSpeedMult) : prevWalkMult;
|
||||
if (!carryWalkSpeedMultForMapId) {
|
||||
carryWalkSpeedMult = null;
|
||||
} else if (carryWalkSpeedMult == null) {
|
||||
carryWalkSpeedMult = clampCarryWalkSpeedMultSetting(1.42);
|
||||
}
|
||||
const out = {
|
||||
readMs,
|
||||
answerMs,
|
||||
@@ -1049,6 +1092,8 @@ function saveQuizSettings(d) {
|
||||
carryChoicePlaqueThemes,
|
||||
carryChoicePlaqueTheme,
|
||||
carryChoicePlaqueMapScale,
|
||||
carryWalkSpeedMultForMapId,
|
||||
carryWalkSpeedMult,
|
||||
questions,
|
||||
carryQuestions,
|
||||
battleQuizMcq,
|
||||
@@ -1748,6 +1793,8 @@ const server = http.createServer((req, res) => {
|
||||
carryReadMs: g.carryReadMs,
|
||||
carryAnswerMs: g.carryAnswerMs,
|
||||
carrySessionLength: g.carrySessionLength,
|
||||
carryWalkSpeedMultForMapId: g.carryWalkSpeedMultForMapId,
|
||||
carryWalkSpeedMult: g.carryWalkSpeedMult,
|
||||
carryQuestions: g.carryQuestions,
|
||||
};
|
||||
res.writeHead(200, {
|
||||
@@ -3416,6 +3463,8 @@ io.on('connection', (socket) => {
|
||||
carryReadMs: qs.carryReadMs,
|
||||
carryAnswerMs: qs.carryAnswerMs,
|
||||
carrySessionLength: qs.carrySessionLength,
|
||||
carryWalkSpeedMultForMapId: qs.carryWalkSpeedMultForMapId,
|
||||
carryWalkSpeedMult: qs.carryWalkSpeedMult,
|
||||
};
|
||||
} catch (e) { /* ignore */ }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user