ตั้งค่าครั้งแรก
สร้างบัญชีแอดมินหลัก (super) — ใช้ชื่อผู้ใช้ admin
เข้าสู่ระบบ Admin
เปลี่ยนรหัสผ่านของคุณ
ใช้รหัสปัจจุบันยืนยันก่อนตั้งรหัสใหม่ (ทุกแอดมินใช้ได้) · กดแท็บ "รหัสผ่าน" อีกครั้งเพื่อปิดและกลับไป OAuth
Token & OAuth (Facebook / Google)
เก็บ App ID / Client ID / Secret และ Redirect URI สำหรับ Login — หน้า Login จะดึงเฉพาะค่าที่ไม่เป็นความลับผ่าน oauth-public.php
Editor ฉาก (Lobby / ZEP / กบ / ตอบคำถาม)
สร้างและบันทึกแผนที่ — ใช้รหัสฉากตอนสร้างห้องในล็อบบี้ · คลิกซ้ายวาด / คลิกขวาลบ · ห้องโถง: พื้นที่เริ่มเกม (ส้ม) · เกมตอบคำถาม: วาดโซนถูก/ผิด + พื้นที่โชว์คำถาม (ทอง) — ข้อความคำถามจากแท็บ Minigame-1-จริงหรือไม่ · เลื่อนแถบเครื่องมือด้านบนได้แยกจากพื้นที่วาด
Editor แผนที่ Quiz Battle
แก้แผนที่ห้อง Quiz Battle (qbroom 1–10) — เลือกห้องจากเมนูในตัว editor · วาดเส้นทาง / โดม / จุดเกิด · คลิกซ้ายวาด คลิกขวาลบ
ตั้งค่า AI แชท (Admin)
ตั้งค่าผู้ช่วย AI ในเกม — หน้านี้มีการล็อกอินแยกของตัวเอง (ไม่ใช่ session Admin นี้)
คำถามเกม (ถูก / ผิด)
ใช้กับฉากประเภท เกมตอบคำถาม ใน Editor — จำนวนข้อที่สุ่มต่อรอบตั้งได้ด้านล่าง (สูงสุด 50, ค่าเริ่ม 10) · เวลาเป็นวินาที (เก็บที่เซิร์ฟเวอร์เกม /Game/data/quiz-settings.json) · English: True/false quiz draws up to N shuffled questions per game session.
⏱ เวลา & รอบ
จำนวนข้อต่อรอบ: สุ่มจากชุดคำถามทั้งหมด (Admin + แมป) แล้วเล่นตามลำดับ — ไม่เกินจำนวนข้อที่มีจริง · เก็บที่ quizRoundQuestionCount ใน quiz-settings.json · English: How many shuffled true/false questions per game (1–50, default 10).
🖼 แผงคำถามบนแผนที่ (โซนทองใน Editor)
ใช้กับ #quiz-map-question-panel ในโหมด เกมตอบคำถามถูก/ผิด · เก็บที่ quizMapPanelTheme ใน quiz-settings.json · English: Panel BG, border, text — same as carry panel theme pickers.
❓ รายการคำถาม 0 ข้อ
แต่ละข้อ: ข้อความ + คำตอบที่ถูกต้อง (ถูก=จริง / ผิด=เท็จ)
📥 นำเข้าคำถามถูก/ผิด
.xlsx หรือบันทึกเป็น .csv
ชุดคำถามพิเศษ — รับการ์ดพิเศษ
มี 15 ชุด = ระดับ (Level 1–5) × คดี (Case 1–3) · แต่ละชุดมีคำถามเป็นของตัวเอง (สุ่มมาเล่นในเกม) และให้ การ์ดพิเศษ 1 ใบ เป็นรางวัล · เก็บที่ specialQuizSets ใน quiz-settings.json
เวลาไอคอนอยู่บนฉาก ใช้กับทุกชุด
ไอคอนคำถามพิเศษตอนขึ้นต้นเกม จะหายไปเองถ้าไม่มีใครเก็บภายในเวลาที่ตั้ง · 0 = ไม่หาย (อยู่จนจบเกม) · เก็บที่ specialQuizIconExpireSec ใน game-timing.json
1 · ชุดคำถาม (ระดับ × คดี) ชุดที่แก้: L1_C1
สลับชุดได้ตลอด — สิ่งที่พิมพ์ค้างไว้ในชุดก่อนหน้าจะถูกเก็บไว้ในหน่วยความจำจนกว่าจะกด บันทึก (ปุ่มล่างสุดบันทึกครบทั้ง 15 ชุดในครั้งเดียว)
2 · การ์ดรางวัลของชุดนี้ เลือก 1 จาก 7 ใบ
รูปการ์ดอยู่ที่ /Game/img/special-quiz/reward/ (card-1 ถึง card-7) — แสดงในโซน «โบนัสพิเศษ» หน้าสรุปผล · คลิกที่การ์ดเพื่อเลือก (ชื่อไทย/อังกฤษ/ระดับการ์ด จะเติมให้อัตโนมัติ แก้ทับได้)
ตัวอย่างการ์ดที่เลือก
3 · คำถามของชุดนี้
รูปแบบ ตัวเลือก A B C D — กรอกตัวเลือกแล้วเลือก “คำตอบที่ถูก” 1 ข้อ (อย่างน้อย 2 ตัวเลือกต่อข้อ) · สุ่มมาเล่นตามจำนวน “สุ่มสูงสุดกี่ข้อต่อรอบ” ที่ตั้งในแท็บ Minigame-1-จริงหรือไม่
บันทึกครั้งเดียวครบทุกชุดที่แก้ไว้ในหน้านี้
📥 นำเข้าคำถามพิเศษ
.xlsx หรือบันทึกเป็น .csv
การ์ดหลักฐาน — แฟ้มหลักฐาน LobbyB
มี 15 คดี · แต่ละคดีมี ผู้ต้องสงสัย 3 คน · ตั้ง ชื่อผู้ต้องสงสัย + เลือก โฟลเดอร์รูป (suspect-1/2/3) ได้ · การ์ดเป็นรูปอย่างเดียว — ระดับการ์ดคิดจากโฟลเดอร์ A/B/C ที่ไฟล์อยู่ และแต่ละคดีออกได้เฉพาะการ์ดของคดีนั้น · ตอนจบมินิเกมระบบจะสุ่มการ์ดตามเกรดของทีม (A/B/C) · เก็บที่ /Game/data/evidence-cards.json
เลือกคดีที่จะแก้ กำลังแก้: คดี 1
สลับคดีได้ตลอด — ปุ่มบันทึกด้านล่างบันทึกครบทั้ง 15 คดีในครั้งเดียว
ระดับการ์ด (rarity) คิดจากโฟลเดอร์ A/B/C
การ์ดชุดใหม่แยกเป็น 3 โฟลเดอร์ตามชนิดหลักฐาน ระบบอ่านระดับจากโฟลเดอร์ที่ไฟล์อยู่ — ไม่ต้องตั้งเอง
เก็บที่ /Game/img/evidence-cards/suspect-N/<A|B|C>/Card-NN.webp
แต่ละคดีออกได้เฉพาะการ์ดของคดีนั้น ตามตาราง /Game/data/reference/JD_Evidence_15Cases_Rev02.xlsx
เก็บเงื่อนไขไว้ที่ /Game/data/evidence-card-rules.json · ดูของจริงได้ที่
GET /Game/api/evidence-card-rules (บอกด้วยว่าคดีไหนยังขาดภาพใบไหน)
ถ้ายังไม่ได้ลงภาพโฟลเดอร์ไหน ระบบจะถอยไปใช้การ์ดชุดเดิม (ยังเล่นได้ แต่จะยังไม่แยกตามคดี)
มีผลในเกมเมื่อผู้เล่นรีเฟรช LobbyB
รูปคดี & Cutscene — LobbyA → LobbyB
มี 15 คดี · แต่ละคดีตั้งได้: ชื่อคดี, รูปการ์ดเลือกคดี, รูปรายละเอียด, Cutscene 2 รูป, ผู้ต้องสงสัย 3 คน, ไอคอนผู้ต้องสงสัย 3 รูป, ข้อความรายละเอียดคดี และ ส่งผู้ร้ายเข้าคุก 3 คน · โฟลเดอร์รูป: case, cutscene, suspect-pick, culprit-prison · เก็บที่ /Game/data/case-media.json
เลือกคดีที่จะแก้ กำลังแก้: คดี 1
สลับคดีได้ตลอด — ปุ่มบันทึกด้านล่างบันทึกครบทั้ง 15 คดีในครั้งเดียว · ช่องที่ขึ้น ไม่พบรูป แปลว่าไฟล์นั้นหายจากเซิร์ฟเวอร์
มีผลในเกมเมื่อผู้เล่นรีเฟรช LobbyA/LobbyB
คำถามหลายตัวเลือก (หยิบมาวาง)
ใช้กับฉากประเภท ตอบคำถาม — หยิบคำตอบมาวางกลาง ใน Editor — ผู้เล่นหยิบตัวเลือกไปวางโซนกลาง · ถ้ามีรายการที่นี่ เกมจะใช้เฉพาะชุดนี้ (ไม่ผสมกับคำถามถูก/ผิดแท็บคำถามเกม) · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ carryQuestions · อย่างน้อย 2 ตัวเลือกต่อข้อ (สูงสุด 6) · English: Per-round timing below applies only to quiz carry.
⏱ เวลา & รอบ
🚶 ความเร็วเดินในฉาก
🖼 แผงข้อความบนแผนที่ (คำถาม / ตัวเลือกที่ถือ)
ใช้กับ #quiz-map-question-panel ในโหมดหยิบมาวาง (โซนทองหรือโซนกลาง) · เก็บที่ carryMapPanelTheme ใน quiz-settings.json · English: Color pickers + alpha (0–100%) — saved as rgba().
ทำไมไม่เห็นเปลี่ยน? แผงนี้แสดงเฉพาะในหน้า เล่นเกม (/Game/play.html) ขณะแมปเป็น quiz_carry และมีข้อความคำถาม — ไม่แสดงในหน้า Admin นี้ · ถ้า โปร่ง A = 0% กับพื้นหลังหรือขอบ = โปร่งใสทั้งหมด จะไม่เห็นสีนั้น · ความหนาขอบ 0 px = ไม่มีเส้นขอบ · ลองโปร่ง 70–90% และขอบ 2 px แล้วเปิดพรีวิว/เล่น · English: This panel is only on play (not Admin). 0% alpha = fully transparent color; 0 px border = no stroke.
ในเกมใช้สูตรเดียวกับป้ายคำตอบบนพื้น: clamp(10, 24, tileSize×zoom×0.24×carryChoicePlaqueMapScale) แล้ว clamp อีกชั้นด้วยค่าสองช่องนี้ · English: Same px formula as floor answer plaques; theme min/max clamp on top.
🏷 ป้ายตัวเลือกบนแผนที่ (กล่องหยิบมาวาง) — ช่อง 1–16
แต่ละช่องตรงกับ โซนตัวเลือก 1–16 บนแมป · เก็บที่ carryChoicePlaqueThemes · Neon = ขอบตามเลขช่อง · สีขอบคงที่ = ใช้ picker ด้านล่าง · รูปช่องใช้เมื่อคำถามนั้นไม่มีรูปแยก · รูปคำถามทับช่อง · ขนาดป้ายบนแมป ปรับที่กล่องสีเขียวถัดลงนี้ (ไม่ใช่ในแต่ละช่อง) · English: Per-slot = colors/URL; map size = green panel below; Save quiz-carry.
เลื่อนแถบหรือพิมพ์ตัวเลข (×) — ขยายทั้งกล่องป้ายและตัวอักษรบนแมป · จบด้วยปุ่ม บันทึกชุดหลายตัวเลือก ด้านล่าง · English: Slider or number, then Save.
carryChoicePlaqueMapScale · 1 = ปกติ · 1.5–2.0 ถ้าต้องการใหญ่ชัด
🔢 นับถอยหลัง 3-2-1 (พรีวิว embed)
ใช้กับ #quiz-carry-embed-countdown ตอนพรีวิวจากเอดิเตอร์ · เก็บที่ carryEmbedCountdownTheme ใน quiz-settings.json · English: Overlay, inner card, digit color, and size (map = grid box / screen = center).
❓ รายการคำถาม 0 ข้อ
รูปป้ายแต่ละช่อง: เลือกไฟล์แล้วกด «บันทึก» ได้เลย — ระบบจะรอให้อัปโหลดจบแล้วค่อยบันทึก URL ลงเซิร์ฟ (หรือรอเห็น «อัปโหลดแล้ว» ก่อนก็ได้) · ปุ่มบันทึกไม่ส่งไฟล์แทนการอัปโหลด · English: Pick plaque file then Save — we wait for upload to finish before writing URLs (Save does not replace the upload step).
📥 นำเข้าคำถามหยิบมาวาง
Quiz Battle — คำถาม 3 ตัวเลือก (สไตล์โดม)
สร้างคำถามแบบ A / B / C แยกตามหมวดให้สอดคล้องธีม Quiz Battle · เก็บที่ /Game/data/quiz-settings.json ฟิลด์ battleQuizMcq · ตัวอย่าง UI ด้านขวา (โดม + ป๊อปอัป) จำลองจากรีเฟอเรนซ์ในเกม
เวลาอ่าน/ตอบใช้ร่วมกับแท็บ คำถามเกมได้เมื่อนำไปผูกโหมดเล่นในอนาคต · English: MCQ with category; dome + modal preview for art direction.
🚪 เปิด/ปิดโหมด & กำหนดวันหมดเขต
เลือกว่าจะเปิดห้องไหนให้ผู้เล่นเข้าได้ และเล่นได้ถึงเมื่อไหร่ ·
เวลาที่กรอกคือเวลาไทย (Asia/Bangkok) · เว้นว่าง = ไม่มีวันหมดเขต ·
เก็บที่ /Game/data/quiz-battle-modes.json
| ห้อง | หัวข้อ | เปิดให้เล่น | คน/ห้อง (≤50) | เล่นได้ถึง (เวลาไทย) | สถานะตอนนี้ |
|---|
ก่อนกดบันทึก: ต้องมีข้อความคำถามและตัวเลือก A B C ครบทั้งสามช่องในแต่ละข้อที่ต้องการเก็บ · ถ้าช่องว่าง ระบบจะไม่บันทึกข้อนั้นและจะแจ้งเตือน
ตัวอย่าง (ตามรีเฟอเรนซ์)
การกระทำใดผิดกฎหมายไซเบอร์?
เย่! คุณตอบคำถามครบทุกข้อแล้ว มาสรุปคะแนนกัน
📥 นำเข้าคำถาม Quiz Battle
.xlsx หรือบันทึกเป็น .csv
กระโดดให้รอด — ตั้งค่าเกม
คนละโหมดกับ พรมแดง (Gauntlet) · เก็บที่ /Game/data/game-timing.json ฟิลด์ jumpSurviveJumpHeightMult · jumpSurviveMissionTimeSec · jumpSurvivePlatformTiles (3 ช่อง) · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · ถ้า API 404 ให้รีสตาร์ท Node ที่รัน Game/server.js
⏱ เวลา & รอบ
นับจากเริ่มรอบจริง (หลังนับถอยหลัง) · ถ้าในแมปตั้ง jumpSurviveTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ไม่ใช่ค่าเดียวกับ "จำกัดเวลาเกม" ของพรมแดง · English: Per-map jumpSurviveTimeSec overrides this global default.
🎮 ความยาก — ความสูงกระโดด
ใช้กับฉากประเภท กระโดดให้รอด เท่านั้น · ถ้าในแมปตั้ง jumpSurviveJumpImpulse > 0 จะใช้ค่านั้นแทน (override) · English: Jump height multiplier vs character height; per-map impulse overrides.
🖼 รูปแพลตฟอร์ม 1–3 (ช่องยืนได้ — เลือกโหมดวาด 1/2/3 ใน Map Editor)
แต่ละช่อง: URL + ความกว้าง/สูงเป็น พิกเซลในโลกเกม (เทียบกับขนาดไทล์แมป) · กว้าง/สูง = 0 ให้ใช้ขนาดเท่าไทล์หนึ่งช่อง · ว่าง URL = กราฟิก cyan เดิม · อัปโหลดไปที่ /Game/public/img/Jumper/ · English: Three platform sprites; W/H in world px (0 = one tile).
ยิงยานอวกาศ (Violent Crime / space_shooter) — เวลารอบ + รูปยานต่อช่อง
เก็บที่ /Game/data/game-timing.json — spaceShooterMissionTimeSec · spaceShooterShipImageUrls · spaceShooterShipDamageOverlayUrls · spaceShooterAsteroidIntervalMs · spaceShooterAsteroidSpriteUrls + spaceShooterAsteroidExplodeFrameMs · ผู้เล่นได้ค่าใหม่เมื่อโหลดหน้าเล่น / GET /api/game-timing · อัปโหลด PNG ไปที่ /Game/public/img/ViolentCrime/ (โฟลเดอร์ไม่มีช่องว่าง) · อัปโหลด overlay ผ่านคลัง Gauntlet (/Game/img/gauntlet-assets/)
⏱ เวลา & รอบ
นับจากเริ่มรอบในเกม · ถ้าในแมปตั้ง spaceShooterTimeSec > 0 จะใช้ค่าบนแมปแทนทั้งหมด · ตั้ง spaceShooterTimeSec = 0 บนแมป = ไม่จับเวลา
🎮 ความยาก — อัตราการเกิดอุกาบาต
ระยะห่างระหว่างเกิดดวงใหม่ (มิลลิวินาที) · ค่าน้อย = อุกาบาตถี่ขึ้น (เช่น 400 ถี่กว่า 2000) · 200–10000 ms · ทุกแมป space_shooter โหลดค่านี้จากเซิร์ฟเวอร์เมื่อเข้าเกม · ถ้าในแมปตั้ง spaceShooterAsteroidIntervalMs ≥ 200 จะใช้ค่าบนแมปแทนค่านี้ · English: Lower ms = denser rain. Map ≥200 overrides.
🚀 รูปยานต่อช่อง (spawn slot 1–6)
ช่องตรงกับ shooterSpawnSlots บนแมป (1–6) · ว่าง = ใช้ยานวาดเวกเตอร์เดิม · English: One image URL per map slot; empty keeps the default vector ship.
💥 รอยความเสียหายทับยาน (ชนอุกาบาต ครั้งที่ 1–3)
ใช้ PNG/WebP โปร่งพื้นหลัง · แสดงทับรูปยานตามจำนวนครั้งที่โดน (ก่อน OUT) · English: Three optional overlays for hit 1 / 2 / 3; scales with the ship footprint.
☄ อุกาบาต — PNG sequence
แถวแรก = รูปตอนตก (loop ขณะล่วง) · แถวถัดไป = เฟรมแตกตามลำดับหลังโดนยิง/ชน · รวมได้สูงสุด 32 URL · อัปโหลดผ่านคลัง Gauntlet เหมือนรอยความเสียหาย · English: First row = falling sprite; add rows for explosion frames (max 31 extra).
เฟรมแตก (ลำดับหลังยิง/ชน)
Minigame-7 — ยิง Mega Virus (balloon_boss)
เก็บที่ /Game/data/game-timing.json · แมป balloonBossTimeSec ทับค่าด้านล่าง · แมป = 0 = ไม่จับเวลา · ถ้าแมปไม่ตั้งเวลา: ใช้ช่องล่าง (หรือ 120 วิ ถ้าใส่ 0) · English: Map time overrides; map 0 = unlimited; else global seconds below (or 120s if 0).
เวลาเกม — พรมแดงสุดท้าย (Gauntlet)
เก็บที่เซิร์ฟเวอร์เกม /Game/data/game-timing.json · หลังบันทึกห้องที่กำลังเล่นจะปรับความถี่ tick ทันที · ค่าจะส่งไปยังผู้เล่นผ่าน gauntlet-sync · จำกัดเวลานับจากตอนโฮสต์เริ่มเกมพรมแดง — หมดเวลาแล้วเกมจบและส่งทุกคนกลับฉากล็อบบี้บนเซิร์ฟเวอร์ · ถ้าขึ้น Not Found ให้รีสตาร์ท Nodeที่รัน Game/server.js (เช่น pm2 restart) หลัง deploy · เวลามินิเกมกระโดดขึ้นแท่นตั้งที่แท็บ Minigame-5 · เวลายิงอุกาบาตตั้งที่แท็บ Minigame-6
⏱ เวลา & รอบ
ค่าเวลาเกม: ตั้ง 0 = ไม่จำกัด · ตั้งอย่างน้อย 10 วินาทีถ้าต้องการจับเวลา (สูงสุด 7200 = 2 ชม.) · Per-round time limit; 0 = no limit, else min 10s, max 7200s.
🎮 ความยาก / การกระโดด (MG2)
🖼 ภาพ & เอฟเฟกต์ — อุปสรรค์ Gauntlet / laser art
พรมแดงสุดท้าย — อุปสรรค์ & เลเซอร์
เลือกรูปจากคลัง → กด Lane / Laser ตามชิ้นส่วน (หัวบน · เส้น · ท้ายล่าง) แบบในเกม · โครง UI อ้างอิง Editor ฉาก
คลังรูป · Asset library
ลากวางหรือคลิกโซนอัปโหลด (png / jpg / gif / webp · สูงสุด 4 MB) · กด Lane / Laser บน·ล่าง·เส้น เพื่อใส่ในชุดที่ส่งเข้าเกม
Drop images here or click to browse
Lane — สิ่งกีดขวางบนพรมแดง
กด Lane ที่การ์ดในคลังเพื่อเพิ่ม · เรียงลำดับด้วยลูกศร · ลบออกจากรายการที่นี่ (ไม่ลบไฟล์ในคลัง)
Laser — คอลัมน์แนวตั้ง (หัว · เส้น · ท้าย)
กด Laser บน / ล่าง / เส้น ที่คลัง · ดูหรือล้างช่องด้านล่าง · เส้นกลาง = tile ซ้ำแนวตั้งในเกม
Minigame-3 — Tower block (Stack)
ปรับความเร็วสวิง (crane) และความยาวแท่งบล็อกในเกม Stack · เก็บที่ /Game/data/game-timing.json · ผู้เล่นได้ค่าใหม่เมื่อเข้าห้อง / รีเฟรชหน้าเล่น
🎮 ความยาก — สวิง & ความยาวบล็อก
⏱ เวลา & รอบ — ภารกิจ Tower block (ฉาก mnn93hpi)
ใช้เฉพาะโหมด Stack + แมปภารกิจ Tower · คะแนน 10/ชั้น (คอมโบ ×2) · Progress ต่อชั้น = 100% ÷ จำนวนชั้นด้านบน (คอมโบ ×2)
🖼 รูปบล็อกต่อผู้เล่น (ที่นั่ง 1–8)
ช่อง P1 = ผู้เล่นคน (ตาที่ 1 ในโหมดพรีวิวบอท) · P2–P8 = บอท/ผู้เล่นอื่นในลำดับเดียวกับ HUD · แต่ละช่องมี ปกติ + ใหญ่ (PNG/WebP โปร่งพื้นหลังแนะนำ) · เกมสุ่มใช้ “ใหญ่” ตามเปอร์เซ็นต์ด้านล่าง (ถ้าไม่ใส่ URL ใหญ่ = ใช้ปกติเสมอ) · English: Eight seats; two URLs each (normal / heavy). Heavy roll uses percent; empty heavy falls back to normal art.
ตัวละคร (4 ทิศ)
อัปโหลดสกิน 4 ทิศหรือแบบเลเยอร์ และเลือกตัวที่ใช้ในล็อบบี้/เกม — เปิดแยกได้ที่ /Game/character.html
บัญชีผู้ใช้ & Log การใช้งาน
จัดการบัญชีผู้เล่น (COINS · บล็อก · ลบ) และดูประวัติการใช้งานย้อนหลัง — เป็นคนละไฟล์กัน แก้ Log ไม่กระทบ COINS
เพิ่มบัญชีใหม่
ใช้บันทึก / บล็อกผู้เล่นหรือบัญชีที่เชื่อมกับ Guest / Facebook / Google — ผู้เล่น Guest ใน Main-Lobby จะถูกสร้างอัตโนมัติและมี COINS ตามที่เก็บที่นี่
รายชื่อบัญชี
แก้ COINS ได้ในตารางแล้วกด บันทึก ทีละแถว · บล็อกแล้วผู้เล่นจะเข้าเกมไม่ได้
| ชื่อ | อีเมล | ประเภท | Provider ID | COINS | สถานะ | จัดการ |
|---|
ภาพรวมการใช้งาน
กิจกรรมผู้เล่นทั้งหมด — ล็อกอิน / เข้าล็อบบี้ / เข้าห้อง / เข้าเกม เก็บจาก player-log.php (คนละไฟล์จากบัญชี ไม่กระทบ COINS)
เหตุการณ์ล่าสุด
เรียงจากใหม่ไปเก่า · ใช้ช่องค้นหา/ตัวกรองด้านล่างเพื่อจำกัดรายการ
| เวลา | เหตุการณ์ | ชื่อผู้เล่น | PLAYERKEY | ประเภท | หน้า |
|---|
สถิติรายผู้เล่น
สรุปต่อ 1 playerKey — จำนวนครั้งที่เข้าใช้ (นับเป็น session 30 นาที) และเหตุการณ์ล่าสุดที่ทำ
| ชื่อ | playerKey | ประเภท | เข้าใช้ | เหตุการณ์ | ล่าสุด | เหตุการณ์ล่าสุด |
|---|
Leaderboard — High Score
อันดับจาก คะแนนสะสม ที่ผู้เล่นได้จากการติดอันดับในมินิเกม (สะสมถาวร ไม่ลดเมื่อใช้เหรียญ) · แก้ไข/รีเซ็ตรายคนหรือทั้งกระดานได้
อันดับผู้เล่น 0 คน
แก้ตัวเลขในช่อง คะแนนสะสม แล้วกดบันทึกทีละแถว · ปุ่ม รีเซ็ต 0 ล้างเฉพาะคนนั้น
| อันดับ | ชื่อผู้เล่น | คะแนนสะสม | COINS | จัดการ |
|---|
แบบประเมินความพึงพอใจ
ผู้เล่นให้คะแนนหลังจบคดี (TOR ข้อ 6.2.4) · เก็บแบบไม่ระบุตัวตน ไม่มีชื่อผู้เล่นและไม่มีอีเมล
การกระจายคะแนน
คะแนนเฉลี่ยแยกตามคดี
ข้อเสนอแนะจากผู้เล่น
สรุปการเรียนรู้
รายงานผลการเรียนรู้ตาม TOR ข้อ 6.2.9 — ส่งออกได้ทั้ง Excel / Word / PDF · วัดจาก Achievements ซึ่งเป็นตัวแทนทักษะและความรู้ที่ผู้เล่นทำได้จริงในเกม (เช่น โหวตถูกตัวคนร้าย · สะสมหลักฐานแต่ละระดับ · เล่นมินิเกมครบรอบ) ประกอบกับคะแนนสะสม อันดับ และจำนวนครั้งที่เข้าเล่น
ผลการเรียนรู้รายหัวข้อ
หัวข้อไหนผู้เล่นทำได้มาก/น้อย — ใช้ดูว่าเนื้อหาส่วนไหนเข้าใจง่ายหรือยาก
สรุปรายผู้เล่น
Achievements
จัดการ แคตตาล็อก รางวัล (หมวด / ชื่อ / เงื่อนไข / เป้าหมาย / เปิด-ปิด) และ ความคืบหน้ารายผู้เล่น · แสดงผลในหน้าโปรไฟล์ผู้เล่น แบ่งเป็น 5 หมวด
แคตตาล็อกรางวัล 0 รายการ
แก้ได้ทุกช่องในตารางแล้วกด บันทึกแคตตาล็อก ครั้งเดียว · ปิดสวิตช์ เปิดใช้ เพื่อซ่อนรางวัลจากหน้าโปรไฟล์โดยไม่ลบความคืบหน้าที่ผู้เล่นทำไว้
| หมวด | ชื่อรางวัล (EN) | เงื่อนไขที่ผู้เล่นเห็น (TH) | เป้าหมาย | เปิดใช้ |
|---|
เลือกผู้เล่น 0 คน
ค้นหาแล้วกด จัดการ เพื่อเปิดตารางความคืบหน้าของคนนั้นด้านล่าง
| ชื่อผู้เล่น | playerKey | ปลดล็อก | COINS | จัดการ |
|---|
ความคืบหน้า:
แก้ตัวเลขแล้วกด ตั้งค่า เพื่อบันทึกทีละรางวัล · ปลดล็อก = ดันความคืบหน้าให้ถึงเป้าทันที
| รางวัล | ความคืบหน้า | จัดการ |
|---|
เวลาโหวต
ตั้งเวลานับถอยหลังของการโหวตในเกม · มีผลเมื่อผู้เล่นรีเฟรชหน้าเล่น/เข้าห้องใหม่ (ห้องที่กำลังเล่นอยู่จะยังใช้ค่าเดิมจนจบคดี) · เก็บที่ /Game/data/game-timing.json
จบคดี
ควบคุมทุกอย่างที่เกิดขึ้นหลังเฉลยคนร้าย — หน้าโพเดียมผู้ชนะ, หน้าให้ความรู้ “รู้ทันภัยไซเบอร์”, ปลายทางที่ผู้เล่นถูกพาไป และคะแนน/อายุห้องที่เกี่ยวข้อง · มีผลเมื่อผู้เล่นรีเฟรช/เข้าห้องใหม่ · เก็บที่ /Game/data/game-timing.json
บทตัวป่วน
ตั้งเวลาเกี่ยวกับการเสนอ/รับ “บทตัวป่วน” (ผู้เล่นลับที่พยายามทำให้ทีมโหวตผิด) · มีผลเมื่อผู้เล่นรีเฟรช/เข้าห้องใหม่ · ปกติระบบเสนอบทนี้เฉพาะห้องที่มีคนจริง ≥ 4 คน — ปุ่ม บังคับข้ามเงื่อนไข ≥4 คน อยู่แท็บ Test Mode · เก็บที่ /Game/data/game-timing.json
🔊 ระดับเสียง
ตั้งระดับเสียงรวมของเกม (0–100%) · มีผลกับทุกผู้เล่นเมื่อรีเฟรช/เข้าฉากใหม่ · การเปิด/ปิด Music/SFX ผู้เล่นตั้งเองในโปรไฟล์ · เก็บที่ /Game/data/sound-settings.json
บัญชีแอดมิน
เฉพาะ super admin เท่านั้นที่เพิ่ม/ลบแอดมิน และแก้สิทธิ์รายหมวดได้
รายชื่อแอดมิน 0 บัญชี
คอลัมน์ สิทธิ์หมวด คือจำนวนเมนูที่บัญชีนั้นเข้าได้ — แก้ได้ที่กล่อง “สิทธิ์รายหมวด” ด้านล่าง
| ชื่อผู้ใช้ | บทบาท | สิทธิ์หมวด | สร้างเมื่อ | จัดการ |
|---|
สร้างแอดมินใหม่
รหัสผ่านอย่างน้อย 8 ตัวอักษร · บทบาท super เข้าได้ทุกหมวดและจัดการแอดมินคนอื่นได้
ตั้งรหัสใหม่ให้แอดมินอื่น
ไม่ต้องรู้รหัสเดิม — ใช้เมื่อผู้ใช้ลืมรหัส (เฉพาะ super)
สิทธิ์รายหมวด
เลือกว่าบัญชีนี้เข้าหมวดไหนได้บ้าง · ไม่ติ๊กเลย = เข้าได้ทุกหมวด (ค่าเดิมของบัญชีเก่า) · super เข้าได้ทุกหมวดเสมอ แก้ตรงนี้ไม่มีผล · เมนู “เปลี่ยนรหัสผ่านของคุณ” เข้าได้เสมอ
ตัวกันจริงอยู่ที่ฝั่งเซิร์ฟเวอร์ (require_tab) — ไม่ใช่แค่ซ่อนเมนู ติ๊กออกแล้วยิง API ตรงก็ยังโดนปฏิเสธ
ตรวจห้อง — คัดกรองห้องเกม
แสดง “ห้องที่มีอยู่จริงบนเซิร์ฟเวอร์” แบบเรียลไทม์ (รีเฟรชทุก 12 วินาที) · ห้องที่ติดป้าย รอตรวจสอบ คือห้องที่เข้าคิวคัดกรอง · กด ปฏิเสธ เพื่อปิดห้องและเตะผู้เล่นออกอัตโนมัติ
ห้องที่กำลังเล่น 0
ห้องที่มีผู้เล่นอยู่จริงในตอนนี้
| ชื่อห้อง | ผู้สร้าง | ประเภท | ผู้เล่นในห้อง | ขอเมื่อ | จัดการ |
|---|
ห้องว่างที่เก็บไว้ 0
ห้องที่ไม่มีใครอยู่แล้ว แต่ระบบยังเก็บไว้ให้กลับเข้าเล่นต่อได้ตามค่า “อายุห้องเกม” (เมนู ตั้งค่าระบบ) · ปิดทิ้งได้ทันทีถ้าไม่ต้องการรอหมดอายุ
| ชื่อห้อง | ผู้สร้าง | ประเภท | ผู้เล่นในห้อง | สร้างเมื่อ | จัดการ |
|---|
ประวัติล่าสุด 0 รายการ
บันทึกการอนุมัติ / ปฏิเสธ / ซ่อน ย้อนหลัง (เก็บสูงสุด 500 รายการ)
| เวลา | การกระทำ | ชื่อห้อง | ผู้สร้าง | แอดมิน | หมายเหตุ |
|---|
ตั้งค่าระบบ — อายุห้องเกม
ห้องที่ยังไม่เล่นจบและยังไม่ถูกปิด/ยกเลิก/ปฏิเสธ จะกลับเข้าเล่นต่อได้ภายในช่วงเวลานี้ ระบบจะไม่ลบห้องว่างที่ยังไม่จบเกมจนกว่าจะครบกำหนด
Test Mode (โหมดทดสอบ)
รวมสวิตช์สำหรับทดสอบเกม — เปิด shortcut ในเกม, บังคับมินิเกม/การ์ดพิเศษ/บทตัวป่วน · แต่ละกล่องมีปุ่มบันทึกของตัวเอง กดเฉพาะกล่องที่แก้
สวิตช์หลัก Test Mode
เปิดเพื่อเปิดใช้ shortcut ทดสอบในเกม · โดยทั่วไปควรปิดในการใช้งานจริงของผู้เล่น
ค่านี้เก็บในเบราว์เซอร์เครื่องนี้เท่านั้น ไม่มีผลกับเครื่องผู้เล่นอื่น
Shortcuts ที่เปิดเมื่อ Test Mode = ON
- Ctrl + 1 / 2 / 3 — ในหน้าเลือกผู้ต้องสงสัย: เก็บหลักฐาน 1 ใบให้ suspect คนนั้นทันที (เทียบเท่าเล่นมินิเกมจบ 1 ครั้ง)
กดครบ 3 ปุ่ม → ปุ่ม "ชี้ตัวคนร้าย" โผล่ - Ctrl + Q — ในเกมตอนคำถามพิเศษ (Special Quiz) เปิดอยู่: ตอบข้อปัจจุบันให้ถูกอัตโนมัติ
เซิร์ฟเวอร์เป็นผู้เติมคำตอบที่ถูก (กันโกง) — ใช้ทดสอบ flow รับการ์ดพิเศษได้เร็ว - Ctrl + Alt + 1 / 2 / 3 — ที่หน้าห้อง LobbyB: พรีวิว "หน้าผลตัดสินคดี" โดยไม่ต้องเล่นจบ
1 = โหวตถูก (เรือนจำ → โพเดียมผู้ชนะ) · 2 = โหวตผิด (ตัวป่วนชนะ) · 3 = สลับ มี/ไม่มีตัวป่วน (ดูสถานะในแชต) · ตัวป่วนจำลองใช้ผู้เล่น/บอทคนแรก - Ctrl + Alt + W — ที่หน้าห้อง LobbyB ก่อนโหวตชี้คนร้าย: บังคับให้รอบโหวตถัดไป "นับเป็นโหวตผิด"
ถ้ามี การ์ด 5 (จับผิดตัว) ค้างอยู่ → จะทริกให้ โหวตใหม่ 1 ครั้ง ทันที — ใช้เทสต์การ์ด 5
บังคับมินิเกม (เทสต์ตอนเล่นจริง)
เลือกเกมต่อการ์ดผู้ต้องสงสัย 3 ใบ → บันทึก → เริ่มคดีใหม่ (สร้างห้อง → LobbyA → เลือกคดี → LobbyB) · ช่องที่เลือก “— สุ่ม —” จะสุ่มจาก 7 เกมเหมือนเดิม · เลือก “— สุ่ม —” ครบทั้ง 3 ช่อง = กลับเป็นปกติ
บังคับมินิเกม / คนร้าย เฉพาะห้องที่ระบุ
ใช้เมื่ออยาก pin เฉพาะห้องของตัวเองโดยไม่กระทบห้องอื่นบนเซิร์ฟเวอร์ ·
ช่อง “ห้อง” ใส่ได้ทั้งชื่อห้อง (ที่พิมพ์ตอนสร้างห้อง) หรือรหัสห้องเต็ม (เช่น myroom-1754500000000) — ไม่สนตัวพิมพ์เล็ก/ใหญ่ ·
ใส่ * = ทุกห้อง · กฎที่ตรงข้อแรกจะถูกใช้ ·
ช่องมินิเกมที่เลือก “— สุ่ม —” จะตกไปใช้ค่าจาก “บังคับมินิเกม” ด้านบน (หรือสุ่ม) ·
บันทึกแล้วมีผลกับคดีที่เริ่มใหม่ทันที ไม่ต้องรีสตาร์ทเซิร์ฟเวอร์
บังคับการ์ดพิเศษ → เกม
เลือกว่าจะให้ “การ์ดพิเศษใบไหน” ขึ้นใน “เกมไหน” → เกมที่ตั้งไว้คำถามพิเศษจะขึ้นแน่นอนและให้การ์ดใบนั้น · ต้องมีคำถามพิเศษของ Level×Case นั้นด้วย · “— ไม่บังคับ —” = ปกติ (สุ่ม 1/3)
บังคับเสนอบท “ตัวป่วน”
ปกติบทตัวป่วนจะเสนอเฉพาะเมื่อมีคนจริงตั้งแต่ 4 คนขึ้นไป · เปิดอันนี้เพื่อบังคับให้ขึ้นเสมอแม้เล่นคนเดียว (ไว้เทสต์)