Server

ฟังก์ชันฝั่ง Server ที่เรียกผ่าน ESX.* สำหรับจัดการผู้เล่น Item คำสั่ง และการบันทึกข้อมูล

ฟังก์ชันฝั่ง Server (ESX.*)

หน้านี้รวบรวมฟังก์ชันหลักฝั่ง Server-side ที่เรียกผ่าน ESX.*

ใช้สำหรับอ่าน/แก้ไขข้อมูลผู้เล่น, ตรวจสอบสิทธิ์, จัดการ Item/เงิน, และทำงานกับระบบฐานข้อมูล

circle-info

ฟังก์ชันในหน้านี้ใช้ได้เฉพาะสคริปต์ฝั่ง Server เท่านั้น

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

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

  • แยกไฟล์ server.lua / client.lua ให้ชัดเจน แล้วเรียกใช้งานให้ถูกฝั่ง

  • ตรวจสอบและบังคับใช้กฎทุกอย่างที่ฝั่ง Server เสมอ (เงิน/Item/สิทธิ์)

circle-exclamation

รูปแบบ Trigger (Event) ที่แนะนำ

ตั้งชื่อ event ให้ “ไม่ชน” กับ resource อื่น และอ่านแล้วรู้ฝั่ง/หน้าที่

  • รูปแบบชื่อที่แนะนำ: <resource>:<action>

  • ใช้ server / client เพื่อบอกทิศทางการรับ event

  • หลีกเลี่ยงชื่อสั้น ๆ เช่น buy, open, update (ชนง่าย)

ตัวอย่างฝั่ง Server (รับจาก Client):

ตัวอย่างฝั่ง Server (ส่งไป Client เฉพาะคน):

circle-info

ถ้าต้อง “ขอข้อมูล” จากอีกฝั่ง แนะนำใช้ callback มากกว่า event เพราะควบคุม flow และการคืนค่าได้ชัดเจนกว่า

รูปแบบ Exports ที่แนะนำ

ใช้ exports เมื่อต้องการ “เรียกใช้ฟังก์ชันแบบตรง ๆ” ระหว่าง resource ในฝั่งเดียวกัน

  • exports เป็น synchronous call

  • Server exports เรียกได้จาก Server เท่านั้น

  • Client exports เรียกได้จาก Client เท่านั้น

ตัวอย่างประกาศ export (Server):

ตัวอย่างเรียกใช้งาน export (Server):

circle-exclamation

ESX.GetPlayerFromId

คืนค่า xPlayer จาก Server ID ที่ระบุ

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

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

ชื่อ
ประเภท
คำอธิบาย

playerId

number

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

filter

table

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

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

ประเภท
คำอธิบาย

table หรือ nil

xPlayer หรือ nil ถ้าไม่พบผู้เล่น

การใช้งาน filter (แนะนำให้ใส่เสมอ)

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

ใส่ชื่อ Method/ฟิลด์ที่คุณใช้จริง เช่น getMoney, removeMoney, job, identifier

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

circle-exclamation
circle-info

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

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

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

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

1

1) ดึง xPlayer พร้อม filter (แนะนำ)

2

2) ดึงเฉพาะ field ที่ต้องใช้ด้วย filter

3

3) ตรวจสอบว่าเป้าหมายออนไลน์ก่อนทำงาน


ESX.GetPlayerFromIdentifier

คืนค่า xPlayer จาก identifier ที่ระบุ (เช่น license:)

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

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

ชื่อ
ประเภท
คำอธิบาย

identifier

string

Identifier ของผู้เล่น (เช่น license, steam, etc.)

filter

table

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

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

ประเภท
คำอธิบาย

table หรือ nil

xPlayer หรือ nil ถ้าไม่พบ

circle-info

ฟังก์ชันนี้จะหาได้เฉพาะ “ผู้เล่นที่ออนไลน์อยู่” เท่านั้น ถ้าต้องการข้อมูลผู้เล่นออฟไลน์ ให้ query จากฐานข้อมูลด้วย identifier แทน

การใช้งาน filter

แนวคิดเดียวกับ ESX.GetPlayerFromId()

ใส่ filter ให้ตรง member ที่คุณจะอ่าน/เรียกใช้จริงเสมอ

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

chevron-rightตัวอย่างเพิ่มเติม (ขยายดู)hashtag

{#esx-getplayerfromidentifier-more-examples}

ตัวอย่าง 2: ใช้ filter เพื่ออ่านข้อมูลสำคัญแบบสั้น ๆ

ตัวอย่าง 3: ใช้กับระบบแอดมิน (แนะนำให้บันทึกลง DB ด้วย)


ESX.GetPlayers

คืนค่ารายการ server ID ของผู้เล่นที่เชื่อมต่ออยู่ทั้งหมด

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

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

ประเภท
คำอธิบาย

table

Array ของ server IDs (ตัวเลข)

Examples

1

นับจำนวนผู้เล่น

2

ส่งข้อความถึงทุกคน

3

ให้รางวัลทุกคน


ESX.GetExtendedPlayers

คืนค่า player objects โดยสามารถกรองด้วย key/value ได้

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

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

ชื่อ
ประเภท
คำอธิบาย

key

string

(ไม่บังคับ) Key สำหรับกรอง (เช่น 'job', 'group')

val

any

(ไม่บังคับ) ค่าที่ต้องการกรอง (เช่น 'police', 'admin')

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

ประเภท
คำอธิบาย

table

Array ของ player objects ที่ตรงตามเงื่อนไข

Examples

1

ดึงผู้เล่นทั้งหมด

2

นับตำรวจออนไลน์

3

ส่งข้อความถึง Admin ทั้งหมด

4

เรียกหมอทั้งหมด


ESX.GetJobs

คืนค่าตารางงานทั้งหมดพร้อมยศต่างๆ

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

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

ประเภท
คำอธิบาย

table

ตารางงานทั้งหมด indexed ด้วยชื่องาน

Examples


ESX.DoesJobExist

ตรวจสอบว่างานและยศที่ระบุมีอยู่จริงหรือไม่

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

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

ชื่อ
ประเภท
คำอธิบาย

job

string

ชื่องาน

grade

string|number

เลขยศ

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

ประเภท
คำอธิบาย

boolean

true ถ้างานและยศมีอยู่จริง

Examples


ESX.GetIdentifier

คืนค่า identifier ของผู้เล่นตามที่ตั้งค่าไว้ (license, steam, etc.)

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

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

ชื่อ
ประเภท
คำอธิบาย

playerId

number

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

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

ประเภท
คำอธิบาย

string

Identifier string ของผู้เล่น

Examples


ESX.RegisterCommand

ลงทะเบียนคำสั่งแชทพร้อมกลุ่มสิทธิ์, การตรวจสอบ arguments, และ auto-completion

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

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

ชื่อ
ประเภท
คำอธิบาย

name

string|table

ชื่อคำสั่ง หรือ array ของชื่อ (aliases)

group

string|table

กลุ่มสิทธิ์ (เช่น 'admin', {'admin', 'mod'})

cb

function

Callback function(player, args, showError)

allowConsole

boolean

อนุญาตให้รันจาก console หรือไม่

suggestion

table

(ไม่บังคับ) ตารางสำหรับ auto-completion

โครงสร้างตาราง Suggestion

ฟิลด์
ประเภท
คำอธิบาย

help

string

ข้อความช่วยเหลือที่แสดงในแชท

validate

boolean

ตรวจสอบจำนวน arguments หรือไม่

arguments

table

Array ของ argument definitions

โครงสร้าง Argument Definition

ฟิลด์
ประเภท
คำอธิบาย

name

string

ชื่อ argument

type

string

ประเภท: 'number', 'string', 'player', 'playerId', 'item', 'weapon', 'any'

help

string

ข้อความช่วยเหลือ

validate

boolean

ตั้งเป็น false เพื่อข้ามการตรวจสอบ argument นี้

Examples

1

คำสั่งเปลี่ยนงาน

2

คำสั่งให้เงิน

3

คำสั่งให้ Item

4

คำสั่ง Teleport

circle-check

ESX.RegisterUsableItem

ลงทะเบียน Item ให้สามารถใช้งานได้พร้อม callback function

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

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

ชื่อ
ประเภท
คำอธิบาย

itemName

string

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

cb

function

Callback function(playerId, itemName, ...)

Examples

1

Item กินได้

2

Item ดื่มได้

3

Item พิเศษ

4

Item ที่มี Cooldown


ESX.UseItem

Trigger การใช้งานของ usable item ที่ลงทะเบียนไว้

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

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

ชื่อ
ประเภท
คำอธิบาย

playerId

number

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

itemName

string

ชื่อ Item ที่จะใช้

...

any

ตัวแปรเพิ่มเติมที่ส่งไปยัง callback

{% hint style="warning" %} คำเตือน: ฟังก์ชั่นนี้จะตรวจสอบว่าผู้เล่นเกินลิมิตการใช้ Item หรือไม่ก่อน trigger callback Item ต้องลงทะเบียนด้วย RegisterUsableItem ก่อน {% endhint %}


ESX.GetUsableItems

คืนค่าตารางชื่อ usable items ทั้งหมดที่ลงทะเบียนไว้

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

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

ประเภท
คำอธิบาย

table

ตารางที่มีชื่อ Item เป็น keys และค่าเป็น true

Examples


ESX.CreatePickup

สร้าง Item ที่ตกใน world ตรงตำแหน่งผู้เล่น

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

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

ชื่อ
ประเภท
คำอธิบาย

itemType

string

ประเภท Item ('item_standard', 'item_weapon', etc.)

itemName

string

ชื่อ Item/อาวุธ

itemCount

number

จำนวน

itemLabel

string

ชื่อแสดง

playerId

number

Server ID (กำหนดตำแหน่งที่ drop)

components

table

(ไม่บังคับ) อุปกรณ์เสริมอาวุธ (สำหรับ 'item_weapon')

tintIndex

number

(ไม่บังคับ) สีอาวุธ (สำหรับ 'item_weapon')

Examples

{% stepper %} {% step %}

ทิ้ง Item ปกติ

{% endstep %}

{% step %}

ทิ้งอาวุธ

{% endstep %}

{% step %}

Loot จากศพ

{% endstep %} {% endstepper %}


ESX.SavePlayer

บันทึกข้อมูลผู้เล่นคนเดียวลง database

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

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

ชื่อ
ประเภท
คำอธิบาย

player

table

Player object

cb

function

(ไม่บังคับ) Callback เมื่อบันทึกเสร็จ

Examples


ESX.SavePlayers

บันทึกข้อมูลผู้เล่นทั้งหมดที่เชื่อมต่ออยู่ลง database

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

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

ชื่อ
ประเภท
คำอธิบาย

cb

function

(ไม่บังคับ) Callback เมื่อบันทึกเสร็จ

Examples


ESX.SetItemIgnoreSaving

กำหนดให้ Item ถูกข้าม (หรือไม่) เมื่อบันทึก inventory ของผู้เล่น

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

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

ชื่อ
ประเภท
คำอธิบาย

name

string

ชื่อ Item

state

boolean

true เพื่อข้ามการบันทึก, false เพื่อบันทึก

Examples

{% hint style="info" %} หมายเหตุ: มีประโยชน์สำหรับ Item ชั่วคราวที่ใช้ในอีเว้นท์หรือภารกิจ {% endhint %}


ESX.Trace

พิมพ์ข้อความ debug ไปยัง console ของเซิร์ฟเวอร์ แสดงผลเฉพาะเมื่อเปิด Debug mode ใน config

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

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

ชื่อ
ประเภท
คำอธิบาย

msg

string

ข้อความที่ต้องการพิมพ์

Examples

{% hint style="success" %} คำแนะนำ: ใช้ ESX.Trace แทน print เพื่อ debug เพราะจะแสดงผลเฉพาะเมื่อเปิด Debug mode ช่วยลด spam ใน console

circle-exclamation

Last updated