Server

ฟังก์ชันฝั่ง Server สำหรับ callback และการค้นหา player ผ่าน `ESX.*`

Server (Server-side)

หน้านี้รวมฟังก์ชัน ESX.* สำหรับใช้งานฝั่ง Server

ครอบคลุมการทำ server callback, การเรียก client callback, และการดึงข้อมูลผู้เล่น

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

  • เรียกใช้งานฝั่ง Server เท่านั้น (เช่น server.lua)

  • ตรวจสอบว่า ESX ถูกโหลดแล้วก่อนเรียกใช้

  • ระวังการเรียกกับ playerId ที่ไม่อยู่ในเซิร์ฟเวอร์

circle-info

API ในหน้านี้ออกแบบมาสำหรับงานฝั่ง Server โดยตรง


ESX.RegisterServerCallback

ลงทะเบียน server callback เพื่อให้ฝั่ง Client เรียกใช้งานได้

รูปแบบการใช้งาน (Syntax)

ESX.RegisterServerCallback(name, cb)

พารามิเตอร์ (Parameters)

Name
Type
Description

name

string

ชื่อ callback ที่ต้องการลงทะเบียน

cb

function

ฟังก์ชัน function(playerId, respond, ...) โดย respond(...) ใช้ส่งผลลัพธ์กลับไป Client

ตัวอย่างการใช้งาน (Example)

circle-info

callback จะถูกล้างอัตโนมัติ เมื่อ resource ที่ลงทะเบียนถูกหยุดทำงาน


ESX.TriggerClientCallback

เรียก client callback ที่ลงทะเบียนไว้ จากฝั่ง Server

รองรับทั้งแบบ callback และแบบคืนค่า (promise style)

รูปแบบการใช้งาน (Syntax)

พารามิเตอร์ (Parameters)

Name
Type
Description

playerId

number

Server ID ของผู้เล่นเป้าหมาย

name

string

ชื่อ client callback ที่ลงทะเบียนไว้

cb

function

function(...) หรือ nil เมื่อใช้ promise style

...

any

อาร์กิวเมนต์เพิ่มเติมที่ส่งไปให้ client callback

ตัวอย่าง — Callback style

ตัวอย่าง — Promise style

circle-exclamation

ESX.GetPlayerFromId

ดึง player object จาก server ID

รูปแบบการใช้งาน (Syntax)

พารามิเตอร์ (Parameters)

Name
Type
Description

playerId

number

Server ID ของผู้เล่น

filter

table

(ไม่บังคับ) array ของ xPlayer members (methods/fields) ที่จะใช้งาน

ค่าที่ส่งคืน (Returns)

Type
Description

table

xPlayer หรือ nil

การใช้งาน filter (สำคัญ)

filter ใช้ระบุว่า “คุณจะเรียก/แตะอะไรบน xPlayer บ้าง” ในโค้ดส่วนนั้น

ช่วยลดภาระฝั่ง Server และทำให้โค้ดชัดเจนขึ้น

circle-exclamation
chevron-rightตัวอย่างการเปิด Max Player Optimization (ขยายดู)hashtag

ตัวอย่าง filter (ตาม member ที่เรียกใช้)

circle-info

ถ้า resource ของคุณประกาศ @es_extended/imports.lua ไว้ใน fxmanifest.lua บาง flow ภายใน Framework จะช่วยจัดการเรื่อง filter ให้อัตโนมัติ

แต่ถ้าเรียก ESX.GetPlayerFromId() มาจาก flow ที่เป็น TriggerEvent/exports ข้าม resource แนะนำให้ใส่ filter ทุกครั้ง เพื่อคุมข้อมูลให้แน่นอน (ระบบไม่สามารถเดาได้ว่าคุณจะใช้ field ไหน)

ตัวอย่างการใช้งาน (Example)

ตัวอย่าง — ใช้ filter เพื่อจำกัดข้อมูล


ESX.GetPlayerFromIdentifier

ดึง player object จาก identifier (เช่น license)

รูปแบบการใช้งาน (Syntax)

พารามิเตอร์ (Parameters)

Name
Type
Description

identifier

string

identifier ของผู้เล่น

filter

table

(ไม่บังคับ) array ของ xPlayer members (methods/fields) ที่จะใช้งาน

ค่าที่ส่งคืน (Returns)

Type
Description

table

xPlayer หรือ nil

การใช้งาน filter (กรณีค้นหาจาก identifier)

แนวคิดเหมือน ESX.GetPlayerFromId() ทุกประการ

  • ใส่ filter ให้ตรงกับ member ที่คุณเรียกใช้

  • สำคัญมากเมื่อเปิด Config.Player.UseMaxOptimization = true

ตัวอย่างการใช้งาน (Example)

ตัวอย่าง — ค้นหาแล้วใช้งานเฉพาะ job


ESX.GetIdentifier

คืนค่า identifier ของผู้เล่นตาม IdentifierType ใน config

รูปแบบการใช้งาน (Syntax)

พารามิเตอร์ (Parameters)

Name
Type
Description

playerId

number

Server ID ของผู้เล่น

ค่าที่ส่งคืน (Returns)

Type
Description

string

identifier ของผู้เล่น

ตัวอย่างการใช้งาน (Example)

circle-info

ในโหมดพัฒนา FxDK ฟังก์ชันนี้จะคืนค่า 'NCCORE-DEBUG-LICENCE' ให้ผู้เล่นทุกคน

Last updated