ระบบคะแนน scoreboard เบื้องต้น

scoreboard คือระบบเก็บตัวเลขของ Minecraft ทุกอย่างที่ต้องนับ ไม่ว่าจะเป็นคะแนน จำนวนครั้ง หรือสถานะของผู้เล่น ล้วนสร้างจากคำสั่งนี้

สามคำที่ต้องรู้ก่อน

  • Objective — กระดานหนึ่งใบ เช่น กระดานนับการฆ่า ต้องสร้างก่อนถึงจะเก็บค่าอะไรได้
  • Criteria — เกณฑ์ว่ากระดานนั้นนับอะไร เกมนับให้เองหรือให้เราสั่งบวกเอง
  • Display slot — ช่องที่เอากระดานไปแสดง ถ้าไม่กำหนดจะไม่มีใครเห็นอะไรเลย

ความสับสนอันดับหนึ่งของเรื่องนี้คือสร้าง objective แล้วคิดว่าเสร็จ แต่จริงๆ ต้องสั่งแสดงผลอีกขั้นถึงจะเห็น

เกณฑ์ที่ใช้บ่อย

เกณฑ์ ใครเป็นคนอัปเดตค่า ใช้ทำอะไร
dummy เราเอง ผ่านคำสั่ง ตัวที่ใช้บ่อยที่สุด เพราะคุมได้ทุกอย่าง เช่น คะแนนของมินิเกม
playerKillCount เกมนับให้อัตโนมัติ นับว่าฆ่าผู้เล่นคนอื่นไปกี่ครั้ง
deathCount เกมนับให้อัตโนมัติ นับว่าตายไปกี่ครั้ง ใช้ทำระบบชีวิตจำกัด
health เกมนับให้อัตโนมัติ แสดงเลือดของผู้เล่นข้างชื่อ
trigger ผู้เล่นเอง ผ่านคำสั่ง /trigger ให้ผู้เล่นทั่วไปกดเลือกอะไรบางอย่างได้โดยไม่ต้องมีสิทธิ์ผู้ดูแล

ถ้าไม่แน่ใจ ให้เลือก dummy ไว้ก่อน เพราะควบคุมเองได้ทั้งหมด และเปลี่ยนใจภายหลังง่ายกว่า

ลำดับที่ต้องทำ

สามขั้นนี้ต้องเรียงแบบนี้เสมอ ข้ามขั้นไหนไปก็จะดูเหมือนว่าคำสั่งไม่ทำงาน

  1. สร้างกระดาน
  2. สั่งให้แสดงผล
  3. บวกลบค่า
/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 ที่เกมขึ้นให้ พร้อมสาเหตุที่เจอบ่อยของแต่ละแบบ