ระบบคะแนน scoreboard เบื้องต้น
scoreboard คือระบบเก็บตัวเลขของ Minecraft ทุกอย่างที่ต้องนับ ไม่ว่าจะเป็นคะแนน จำนวนครั้ง หรือสถานะของผู้เล่น ล้วนสร้างจากคำสั่งนี้
สามคำที่ต้องรู้ก่อน
- Objective — กระดานหนึ่งใบ เช่น กระดานนับการฆ่า ต้องสร้างก่อนถึงจะเก็บค่าอะไรได้
- Criteria — เกณฑ์ว่ากระดานนั้นนับอะไร เกมนับให้เองหรือให้เราสั่งบวกเอง
- Display slot — ช่องที่เอากระดานไปแสดง ถ้าไม่กำหนดจะไม่มีใครเห็นอะไรเลย
ความสับสนอันดับหนึ่งของเรื่องนี้คือสร้าง objective แล้วคิดว่าเสร็จ แต่จริงๆ ต้องสั่งแสดงผลอีกขั้นถึงจะเห็น
เกณฑ์ที่ใช้บ่อย
| เกณฑ์ | ใครเป็นคนอัปเดตค่า | ใช้ทำอะไร |
|---|---|---|
dummy |
เราเอง ผ่านคำสั่ง | ตัวที่ใช้บ่อยที่สุด เพราะคุมได้ทุกอย่าง เช่น คะแนนของมินิเกม |
playerKillCount |
เกมนับให้อัตโนมัติ | นับว่าฆ่าผู้เล่นคนอื่นไปกี่ครั้ง |
deathCount |
เกมนับให้อัตโนมัติ | นับว่าตายไปกี่ครั้ง ใช้ทำระบบชีวิตจำกัด |
health |
เกมนับให้อัตโนมัติ | แสดงเลือดของผู้เล่นข้างชื่อ |
trigger |
ผู้เล่นเอง ผ่านคำสั่ง /trigger | ให้ผู้เล่นทั่วไปกดเลือกอะไรบางอย่างได้โดยไม่ต้องมีสิทธิ์ผู้ดูแล |
ถ้าไม่แน่ใจ ให้เลือก dummy ไว้ก่อน เพราะควบคุมเองได้ทั้งหมด และเปลี่ยนใจภายหลังง่ายกว่า
ลำดับที่ต้องทำ
สามขั้นนี้ต้องเรียงแบบนี้เสมอ ข้ามขั้นไหนไปก็จะดูเหมือนว่าคำสั่งไม่ทำงาน
- สร้างกระดาน
- สั่งให้แสดงผล
- บวกลบค่า
/scoreboard objectives add kills dummy "จำนวนการฆ่า"
/scoreboard objectives setdisplay sidebar kills
/scoreboard players add @p kills 1
สองบรรทัดแรกสั่งครั้งเดียวตอนตั้งระบบ ส่วนบรรทัดที่สามคือตัวที่เอาไปใส่ในคอมมานด์บล็อกให้ทำงานซ้ำๆ
ช่องแสดงผลสามช่อง
| ช่อง | แสดงตรงไหน | เหมาะกับ |
|---|---|---|
sidebar |
แถบข้างขวาของจอ | ตารางคะแนนหลักของเกม เห็นชัดที่สุด |
list |
หน้าจอรายชื่อผู้เล่นตอนกดค้าง Tab | ค่าที่อยากให้ดูเมื่อจงใจเปิดดูเท่านั้น |
belowName |
ใต้ชื่อที่ลอยเหนือหัวผู้เล่น | ค่าที่อยากให้คนอื่นเห็นจากระยะไกล เช่น เลือดหรือชีวิตที่เหลือ |
หนึ่งช่องแสดงได้ทีละกระดานเดียว สั่ง setdisplay ทับด้วยกระดานใหม่ กระดานเดิมจะหายไปจากช่องนั้นทันที
เอาคะแนนไปใช้เป็นเงื่อนไข
คะแนนจะมีประโยชน์จริงเมื่อเอาไปกรองเป้าหมาย เขียนไว้ในวงเล็บเหลี่ยมของตัวเลือกเป้าหมายได้เลย
@a[scores={kills=5..}]— ผู้เล่นที่มีคะแนน 5 ขึ้นไป@a[scores={kills=0}]— ผู้เล่นที่ยังได้ 0 คะแนน@a[scores={lives=..0}]— ผู้เล่นที่ชีวิตหมดแล้ว ใช้สั่งเปลี่ยนเป็นโหมดผู้ชม
รวมกับ execute จะได้ระบบที่ทำงานเองทั้งหมด เช่น ใครถึง 10 คะแนนให้ประกาศว่าชนะ อ่านเรื่อง execute
ปัญหาที่เจอบ่อย
| อาการ | สาเหตุ |
|---|---|
| สร้างกระดานแล้วแต่ไม่เห็นอะไร | ยังไม่ได้สั่ง setdisplay |
| เห็นกระดานแต่ทุกคนเป็น 0 ตลอด | ใช้เกณฑ์ dummy ซึ่งเกมไม่นับให้ ต้องสั่งบวกเอง |
| ชื่อกระดานยาวแล้วขึ้นสีแดง | ชื่อที่มีเว้นวรรคต้องใส่เครื่องหมายคำพูดครอบ |
| คะแนนไม่รีเซ็ตตอนเริ่มรอบใหม่ | ต้องสั่ง players reset หรือ players set เป็น 0 เอง ค่าไม่หายเองเมื่อจบรอบ |
เครื่องมือที่เกี่ยวข้อง
คู่มืออื่นที่น่าอ่านต่อ
- พื้นฐานคำสั่ง Minecraft — เริ่มจากศูนย์: เปิด cheats ยังไง พิมพ์คำสั่งที่ไหนได้บ้าง และรู้จักตัวเลือกเป้าหมายกับพิกัดแบบพอใช้งานได้
- ตัวเลือกเป้าหมายแบบละเอียด — เจาะลึกเงื่อนไขในวงเล็บเหลี่ยม ตั้งแต่ type และ distance ไปจนถึง limit กับ sort และวิธีเช็คว่าทำไมคำสั่งไม่โดนใครเลย
- พิกัด: ตัวเลข, ~ และ ^ — ทำไม ~ กับ ^ ถึงผสมกันไม่ได้ ทำไมบล็อกไปโผล่ผิดที่ และวิธีเลือกใช้พิกัดแต่ละแบบให้ถูกงาน
- คอมมานด์บล็อก — เอาคำสั่งที่สร้างไว้ไปรันอัตโนมัติ ทั้งแบบกดครั้งเดียว แบบวนซ้ำ และแบบต่อกันเป็นลูกโซ่
- ทำไมคำสั่ง give ของเวอร์ชันเก่าใช้ไม่ได้ — NBT แบบเก่า, component แบบ 1.20.5 และ component แบบ 1.21.5 ต่างกันตรงไหน เทียบให้ดูจากคำสั่งที่สร้างจริง
- คำสั่ง execute — คำสั่งที่ทรงพลังที่สุดใน Minecraft อธิบายทีละส่วน ว่า as กับ at ต่างกันยังไง และทำไมสลับลำดับแล้วผลเปลี่ยน
- คำสั่งไม่ทำงาน แก้ยังไง — ไล่หาสาเหตุทีละขั้นจากข้อความ error ที่เกมขึ้นให้ พร้อมสาเหตุที่เจอบ่อยของแต่ละแบบ