Custom functions

เพิ่มฟังก์ชันกลางให้ NC Core โดยไม่แก้ไฟล์หลัก และไม่กระทบการอัปเดต

Custom Functions

วิธีการสร้าง Custom Functions

หน้านี้อธิบายวิธีเพิ่ม “ฟังก์ชันส่วนกลาง” ให้ NC Core โดยไม่แก้ไฟล์หลัก

ฟังก์ชันที่เพิ่มจะถูกโหลดพร้อม es_extended และเรียกใช้ผ่าน ESX ได้ทันที

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

  • ฟังก์ชันที่ต้องเรียกใช้ซ้ำในหลายทรัพยากร (resource)

  • ฟังก์ชันช่วย เช่น notification, logging, validation

  • ตรรกะธุรกิจที่ต้องการมาตรฐานเดียวกันทั้งเซิร์ฟเวอร์

circle-check

ตำแหน่งไฟล์

NC Core เตรียมไฟล์สำหรับ custom functions ไว้ 2 จุด:

  • lib/cl.custom.lua สำหรับฟังก์ชันฝั่ง Client

  • lib/sv.custom.lua สำหรับฟังก์ชันฝั่ง Server

circle-info

ไฟล์เหล่านี้ถูกโหลดพร้อม NC Core ฟังก์ชันที่ประกาศไว้จะพร้อมใช้งานผ่าน ESX โดยตรง

ขั้นตอนการเพิ่มฟังก์ชัน (แนะนำ)

1

เลือกฝั่งที่เหมาะสม

  • งานที่เกี่ยวข้องกับเงิน Item สิทธิ์ และความปลอดภัย ให้ทำบน Server

  • งานที่เกี่ยวกับ UI/เอฟเฟกต์/การควบคุมตัวละคร ให้ทำบน Client

2

เพิ่มเมทอดในไฟล์ *.custom.lua

  • เพิ่มฟังก์ชันใน lib/sv.custom.lua หรือ lib/cl.custom.lua

  • ตั้งชื่อเป็นกริยา และสื่อหน้าที่ชัดเจน เช่น ESX.GivePackage, ESX.RevivePlayer

3

ทดสอบการโหลดและการเรียกใช้งาน

  • รีสตาร์ท es_extended หรือรีสตาร์ทเซิร์ฟเวอร์ 1 รอบ

  • ตรวจ error ที่ Console/F8 เพื่อยืนยันว่าเมทอดถูกผูกกับ ESX แล้ว

โครงสร้างพื้นฐาน (Template)

กำหนดรูปแบบพารามิเตอร์และการคืนค่าให้สม่ำเสมอ

ใส่คำอธิบายสั้น ๆ เพื่อให้ทีมอ่านโค้ดได้เร็วขึ้น

การเรียกใช้งานจาก resource อื่น

Custom functions ถูกผูกกับ ESX จึงเรียกใช้ได้เหมือนเมทอดทั่วไป

  • ฝั่ง Client: เรียก ESX.YourFunction() ใน client script

  • ฝั่ง Server: เรียก ESX.YourFunction() ใน server script

หาก resource ของคุณยังไม่ได้ import Framework ให้ตั้งค่าตามหน้า Framework usage

chevron-rightตัวอย่างการเรียกใช้งาน (ขยายดู)hashtag

แนวทางการออกแบบ (แนะนำ)

  • ตรวจสอบอินพุตทุกครั้ง โดยเฉพาะค่าที่มาจาก client

  • ระบุผลลัพธ์ให้ตรวจสอบได้ เช่น success (boolean) และ message (string)

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

  • หลีกเลี่ยง side-effect ที่คาดเดายาก เช่น แก้ state หลายจุดในฟังก์ชันเดียว

circle-exclamation

ตัวอย่างเพิ่มเติม

chevron-rightตัวอย่าง (Client): ฟังก์ชันชุบชีพ (Revive)hashtag
chevron-rightตัวอย่าง (Client): ฟังก์ชันเทเลพอร์ต (Teleport)hashtag
chevron-rightตัวอย่าง (Server): ให้แพ็คเกจ Item/เงิน (GivePackage)hashtag
chevron-rightการทดสอบและการดีบัก (แนะนำ)hashtag

ทดสอบแยกตามฝั่ง เพื่อแยกสาเหตุได้ชัดเจน

  • ทดสอบฝั่ง Server ด้วย command/event ที่ควบคุมได้

  • ทดสอบฝั่ง Client หลัง spawn แล้ว และตรวจสอบ error ใน F8

Support

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

circle-info

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

Last updated