Advanced

แนวทางสำหรับขยาย NC Core ในระดับโปรดักชัน โดยไม่แก้ไฟล์หลัก และลดผลกระทบจากการอัปเดต

Advanced

หมวดนี้รวบรวมหัวข้อ “การขยาย NC Core” สำหรับงานระดับโปรดักชัน

เป้าหมายคือเพิ่มความสามารถให้ Framework โดยไม่แก้ไฟล์หลัก และดูแลต่อได้ง่าย

เหมาะสำหรับกรณีใด

  • ต้องการเพิ่ม Methods/เครื่องมือให้เรียกใช้ซ้ำจากหลาย resource

  • ต้องการแยกโค้ดให้เป็นส่วน และควบคุมการโหลดผ่าน config

  • ต้องการลดความเสี่ยงเมื่อต้องอัปเดต NC Core ในอนาคต

ก่อนเริ่ม (แนะนำ)

  • ตั้งค่าการเรียกใช้ Framework ให้ถูกต้องตาม Framework Usage

  • หากต้องการ “ฟังก์ชันส่วนกลาง” ที่ผูกกับ ESX โดยตรง ให้เริ่มที่ Custom functions

circle-exclamation

เลือกวิธีขยายให้เหมาะกับงาน

แนวคิดหลักมี 4 แบบ โดยต่างกันที่ “ตำแหน่งไฟล์”, “วิธีโหลด”, และ “ขอบเขตการใช้งาน”

  • Extending framework: ภาพรวม และเกณฑ์เลือกโครงสร้างให้เหมาะกับงาน

  • Extending functions: เพิ่มฟังก์ชันหลักที่เรียกผ่าน ESX.* และเปิด/ปิดได้ผ่าน config

  • Extending modules: เพิ่ม utility/ฟีเจอร์เสริมแบบแยกส่วน เปิด/ปิดได้ผ่าน config

  • Extending player class: เพิ่ม Methods ให้ xPlayer (ฝั่ง Server) เพื่อใช้งานแบบ xPlayer.*

เนื้อหาในหมวดนี้

แนวทางการทำงาน (Best Practices)

  • แยก Client/Server ให้ชัดเจนเสมอ และให้ Server เป็นแหล่งข้อมูลจริง (source of truth)

  • ตั้งชื่อไฟล์/ฟังก์ชันให้สื่อความหมาย และใช้รูปแบบเดียวกันทั้งโปรเจกต์

  • ลดการโหลดส่วนที่ไม่ใช้ โดยเปิด/ปิดผ่าน config (เมื่อโครงสร้างรองรับ)

  • ใส่เหตุผล (reason) ในการเปลี่ยนแปลงที่สำคัญ เช่น เงิน/Item/สิทธิ์ เพื่อช่วย audit และ debug

  • ทดสอบบนสภาพแวดล้อม staging ก่อนนำขึ้น production โดยเฉพาะฟังก์ชันที่กระทบเศรษฐกิจ

chevron-rightแนวทางเลือกโครงสร้างแบบเร็ว (ขยายดู)hashtag
  • ต้องการ Methods ที่ผูกกับผู้เล่น และเรียกจาก object ผู้เล่นโดยตรง → Player class

  • ต้องการ utility/ฟีเจอร์เสริมที่ควบคุมการเปิด/ปิดได้ → Modules

  • ต้องการฟังก์ชันหลักที่เรียกผ่าน ESX.* และใช้บ่อยในหลายระบบ → Functions

  • ต้องการ “ฟังก์ชันส่วนกลาง” เพิ่มเติม โดยไม่ไปแตะส่วนขยายโครงสร้างอื่น → Custom functions

Support

ติดต่อทีมงานผ่าน Ticket บน Discord ทางการ

circle-info

เพื่อความเร็ว โปรดแนบรูปภาพ ตอนบูตเซิร์ฟเวอร์ + error ที่พบ (Server console/F8)

Last updated