POLICE+ คือ Editor สำหรับ Admin ใช้สร้าง Door Lock และ Jail Location จากในเกม โดยระบบทำงานเป็น Draft ก่อน จึงสามารถเลือก Object, ทดลองล็อก/ปลดล็อก และตรวจพื้นที่คุกก่อน Copy Config ไปใช้จริง

สิทธิ์และความปลอดภัย
เปิดด้วย /police+ จากในเกมเท่านั้น สิทธิ์อิง Config.General.AdminGroups และมี Admin ใช้ Editor ได้ครั้งละ 1 คน Draft/LIVE TEST เป็น owner-only ไม่แทน Door Config ของผู้เล่นทั้งเซิร์ฟเวอร์

เปิดใช้งาน#

text
/police+

เมื่อเปิด ระบบจะโหลด Config.DoorLock.Doors และ Config.Jail.DefaultLocations ปัจจุบันเข้ามาเป็น Draft ชั่วคราว โดยเริ่มที่ Door Mode

ปุ่มใช้ทำอะไร
TABสลับ Door Mode / Jail Mode
CCopy Config ของโหมดปัจจุบัน
BACKSPACEปิด Editor และยกเลิก Draft ที่ยังไม่ได้ Copy

Door Mode — ประตู#

เล็ง Crosshair ไปที่ Object ประตูก่อนใช้คำสั่งเพิ่ม/รวมกลุ่ม ระบบจะพยายามเก็บตำแหน่งตอนประตูปิดจริงให้อัตโนมัติ รวมถึงประตูเลื่อนหรือ sensor door บางชนิด

ปุ่มการทำงาน
Eเพิ่มประตูเดี่ยวใหม่ หรือเลือกประตูเดิมที่เล็งอยู่
Hเพิ่มบานที่เล็งเข้า Door Group ที่เลือก ใช้กับประตูคู่/หลายบาน
GLIVE TEST ล็อก/ปลดล็อก Door Draft ที่เลือก
← / →เลือก Draft ก่อนหน้า/ถัดไป
↑ / ↓เพิ่ม/ลด interactDistance ทีละ 0.25m
SHIFT + ↑ / ↓เพิ่ม/ลด displayDistance ทีละ 0.5m
DELลบ Door Draft ที่เลือก
CCopy รายการประตูทั้งหมดใน Draft

ประตูเดี่ยว#

  1. เปิด /police+
  2. เล็งกลาง Object ประตู
  3. กด E
  4. รอ Toast ยืนยันการจับตำแหน่ง
  5. กด G ทดลองล็อก/ปลดล็อก
  6. ปรับระยะตามต้องการ
  7. กด C แล้ววาง Config ใน config/data/doors.lua

ประตูคู่ / หลายบาน#

  1. เล็งบานแรกแล้วกด E เพื่อสร้างกลุ่ม
  2. เล็งบานที่สองแล้วกด H
  3. เพิ่มบานอื่นด้วย H ต่อได้
  4. กด G ตรวจว่าทุกบานล็อก/ปลดล็อกพร้อมกัน

Internal Policy ปัจจุบันรองรับสูงสุด 8 leaves ต่อ Door Group และ 128 Door Drafts ต่อ session

LIVE TEST ไม่กระทบผู้เล่นอื่น
Preview/Draft ถูกส่งเฉพาะ Admin เจ้าของ Editor ผู้เล่นคนอื่นยังอ้าง Door Config จริงเดิมจนกว่าจะนำ Config ที่ Copy ไปบันทึกและ restart resource

Jail Mode — พื้นที่คุก#

กด TAB เพื่อเข้าสู่ Jail Mode จากนั้นยืนตามตำแหน่งจริงที่ต้องการบันทึก

ปุ่มการทำงาน
SHIFT + Eสร้าง Jail Draft ใหม่ ณ ตำแหน่งที่ยืน
Eตั้ง coords / ศูนย์กลางพื้นที่ที่เลือก
Hตั้ง death / จุดตายหรือวาร์ปกลับ
Gตั้ง exit / จุดออกหลังพ้นโทษ
← / →เลือกพื้นที่คุกก่อนหน้า/ถัดไป
↑ / ↓เพิ่ม/ลด radius ทีละ 5m
SHIFT + ↑ / ↓เพิ่ม/ลด radius ทีละ 25m
DELลบ Jail Draft ที่เลือก
CCopy Jail Location Config

ขั้นตอนสร้าง Jail ใหม่#

  1. ไปยืนบริเวณศูนย์กลางคุก
  2. เปิด /police+ และกด TAB
  3. กด SHIFT + E
  4. ใช้ E ตั้ง center
  5. ไปจุด death แล้วกด H
  6. ไปจุด exit แล้วกด G
  7. ปรับ radius ด้วยลูกศรและดูวง Preview
  8. กด C แล้ววางใน config/data/jail_locations.lua

Jail ใหม่เริ่มต้น radius 25m และได้ key/name ชั่วคราวแบบ jail_### / พื้นที่คุก ### ซึ่งแก้ให้สื่อความหมายหลัง Copy ได้

Copy Config ให้ถูกตำแหน่ง#

Door#

POLICE+ Copy เฉพาะรายการด้านใน ไม่รวม wrapper Doors = { ... } ให้วางภายใน:

lua
-- config/data/doors.lua
Config.DoorLock.Doors = {
    -- วางรายการที่ Copy ตรงนี้
}

Jail#

เช่นเดียวกัน ให้เอารายการที่ Copy ไปวางด้านใน:

lua
-- config/data/jail_locations.lua
Config.Jail.DefaultLocations = {
    -- วางรายการที่ Copy ตรงนี้
}
ห้ามวาง wrapper ซ้อน
อย่าวางเป็น Doors = { Doors = { ... } } หรือ DefaultLocations = { DefaultLocations = { ... } } เพราะจะทำให้โครง Config ผิด แม้บางกรณีจะมี compatibility fallback ชั่วคราว

ทำให้ถาวร#

  1. กด C Copy Draft
  2. วางในไฟล์ config/data/doors.lua หรือ config/data/jail_locations.lua
  3. ตรวจ ID/key ไม่ซ้ำและแก้ label/name หากต้องการ
  4. บันทึกไฟล์
  5. restart nX_police
  6. ทดสอบอีกครั้งหลังโหลด Config จริง

การปิด Editor ก่อน Copy ไม่ถือเป็นการ Save และ Draft ชั่วคราวจะถูกยกเลิก

Internal Policy ที่ลูกค้าไม่ต้องตั้ง#

  • Door raycast ภายในปัจจุบัน 15m
  • Door Draft สูงสุด 128 กลุ่ม
  • สูงสุด 8 leaves ต่อ Door Group
  • Jail Draft สูงสุด 64 พื้นที่
  • Preview sync, door close calibration, sensor-door capture, anti-spam และ server validation เป็น Internal Runtime

ตัวเลขเหล่านี้เป็น Internal Policy และอาจเปลี่ยนตาม Version ไม่ควรสร้าง Config.DoorLock.Editor เองใน Customer Config

Troubleshooting#

อาการตรวจอะไร
/police+ บอกว่าใช้ได้เฉพาะ Adminตรวจ ESX group และ Config.General.AdminGroups
มี Admin คนอื่นกำลังใช้ EditorEditor มี owner ได้คนเดียว ให้เจ้าของเดิมปิดก่อน
เล็งแล้ว E ไม่เจอประตูเข้าใกล้ เล็งกลาง Object และตรวจว่าเป็น world entity จริง ไม่ใช่ geometry ที่รวมกับ map
ตำแหน่งปิดไม่ตรงให้ประตูอยู่ใกล้สถานะปิดแล้วเพิ่มใหม่ รอ calibration จบก่อนกดซ้ำ
LIVE TEST ผ่าน แต่ restart แล้วหายยังไม่ได้ Copy/วาง Config จริง หรือยังไม่ได้ restart หลังบันทึกไฟล์
Copy แล้ว Lua parse errorตรวจ wrapper ซ้อน, comma และตำแหน่งที่วาง

Checklist ก่อน Production#

  • Door ID และ Jail key ไม่ซ้ำ
  • ประตูคู่ LIVE TEST พร้อมกันถูกต้อง
  • ระยะ interact/display เหมาะสม
  • Jail center / death / exit ถูกจุด
  • radius ครอบพื้นที่พอดี
  • มี isDefault = true ตามที่ต้องการ
  • Copy ไปไฟล์ data ถูกตำแหน่ง
  • restart และทดสอบจาก Config จริงอีกครั้ง