Client

ฟังก์ชันฝั่ง Client ที่เรียกผ่าน ESX.* สำหรับอ่านข้อมูลผู้เล่น ตรวจสอบความพร้อม และจัดการระบบ UI/Status/Skinchanger

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

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

ใช้สำหรับอ่านข้อมูลผู้เล่น, ตรวจสอบความพร้อม, และเชื่อมระบบ UI/Status/Skinchanger ใน resource ของคุณ

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

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

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

circle-exclamation

แนวทางที่แนะนำ

  • เรียก ESX.IsPlayerReady() ก่อนอ่าน ESX.GetPlayerData() เพื่อกันข้อมูลว่าง

  • ใช้ callback/event เมื่อต้องการ “ข้อมูลจริง” จาก Server

  • หลีกเลี่ยง loop ถี่เกินจำเป็น โดยเฉพาะงาน UI/HUD ที่รันตลอดเวลา

circle-info

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


ESX.GetPlayerData

ดึง snapshot ของข้อมูลผู้เล่นฝั่ง Client ในรูปแบบ table

โดยพื้นฐานคือการอ่านค่าจาก ESX.PlayerData ใน “รูปแบบก้อนเดียว”

เหมาะกับงานที่ต้องใช้หลาย field พร้อมกัน และไม่ได้เรียกถี่

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

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

Type
Description

table

ตารางข้อมูลผู้เล่นจาก ESX.PlayerData (เฉพาะข้อมูลที่ถูก sync มาให้ใน Client)

แนวคิด: ESX.GetPlayerData() vs ESX.PlayerData.*

  • ESX.GetPlayerData() เหมาะสำหรับ “อ่านหลายค่า” เป็นชุด ๆ ในจุดเดียว

  • ESX.PlayerData.<key> เหมาะสำหรับ “อ่านค่าเดียว” แบบเร็ว ๆ และเรียกบ่อย (เช่น HUD)

ตัวอย่าง key ที่นิยมอ่านตรง ๆ:

  • ESX.PlayerData.job

  • ESX.PlayerData.dead

  • ESX.PlayerData.ped

circle-exclamation

ข้อมูลที่ sync มาให้โดยค่าเริ่มต้น

NC Core จะอัปเดต ESX.PlayerData ให้เมื่อมีการเปลี่ยนแปลงของข้อมูลสำคัญ

โดยทั่วไปจะเจอการอัปเดตของ ped, job, dead และ key อื่น ๆ ตามระบบที่ใช้งาน

หมายเหตุเรื่อง accounts และ inventory

accounts และ inventory ไม่ได้ sync มาให้โดยค่าเริ่มต้น พฤติกรรมส่วนนี้ขึ้นอยู่กับ config

ตัวอย่าง config:

circle-info

แนะนำให้คงค่าเริ่มต้นไว้ การ sync accounts/items ตลอดเวลาเพิ่มภาระ network และทำให้ client หนักขึ้น

ถ้าต้องการตรวจ “เงิน” หรือ “ไอเทม” ให้เรียกแบบเฉพาะจุดแทน:

  • ESX.GetPlayerAccount(accountName) โดย accountName มักเป็น 'money', 'bank', 'black_money'

  • ESX.GetPlayerItem(itemName) โดย itemName คือชื่อ Item เช่น 'bread'

ตัวอย่าง:

แนวทางนี้เบากว่าเรียก ESX.GetPlayerData() แล้ว loop ข้อมูลทั้งหมดซ้ำ

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

ตัวอย่างพื้นฐาน: รอจนผู้เล่นพร้อม แล้วอ่านข้อมูลที่ต้องใช้

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

ตัวอย่าง 2: อ่านเงินแบบเฉพาะจุด (ไม่ต้องพึ่งการ sync inventory/accounts ทั้งก้อน)

ตัวอย่าง 3: ทำงานเมื่อข้อมูลเปลี่ยน (แนะนำสำหรับงาน UI/HUD)

circle-exclamation

ESX.GetPlayerAccount

ดึงข้อมูลบัญชีเงินที่ระบุของผู้เล่น

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

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

Name
Type
Description

name

string

ชื่อบัญชี (เช่น 'money', 'bank', 'black_money')

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

Type
Description

table

ออบเจคต์บัญชี มี name, money, label หรือ nil ถ้าไม่พบ

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

ตัวอย่างพื้นฐาน:

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

กรณีการใช้งาน (Use cases)

  • แสดงยอดเงินใน UI/HUD

  • ตรวจสอบเงินก่อนทำธุรกรรม

  • ระบบ ATM/Banking

  • แสดงเงินในเมนูร้านค้า

circle-info

คำแนะนำ: บัญชีที่มีจะขึ้นกับการตั้งค่าใน config.database.lua ของ NC Core


ESX.GetPlayerItem

ดึงข้อมูล Item ที่ระบุจากกระเป๋าของผู้เล่น

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

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

Name
Type
Description

name

string

ชื่อ Item (เช่น 'bread', 'water')

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

Type
Description

table

ออบเจคต์ Item มี name, count, label ฯลฯ หรือ nil ถ้าไม่พบ

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

ตัวอย่างพื้นฐาน:

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

กรณีการใช้งาน (Use cases)

  • ตรวจสอบ Item ก่อนใช้

  • แสดงจำนวน Item ใน UI

  • ระบบ Crafting ตรวจสอบวัตถุดิบ

  • ระบบ Quest เช็ค Item ที่ต้องการ


ESX.IsPlayerLoaded

ตรวจสอบว่าข้อมูลผู้เล่นโหลดจาก Server เสร็จแล้วหรือยัง

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

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

Type
Description

boolean

true ถ้าข้อมูลโหลดเสร็จแล้ว, false ถ้ายังไม่เสร็จ

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

ตัวอย่างพื้นฐาน:

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

กรณีการใช้งาน (Use cases)

  • รอข้อมูลผู้เล่นโหลดก่อนเริ่มสคริปต์

  • ป้องกัน error จากการเข้าถึงข้อมูลก่อนเวลา

  • Initialization ระบบต่างๆ

  • Spawn management

triangle-exclamation

ESX.IsPlayerReady

ตรวจสอบว่าผู้เล่นพร้อมใช้งานเต็มที่แล้วหรือยัง (โหลดข้อมูลและ spawn เสร็จแล้ว)

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

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

Type
Description

boolean

true ถ้าผู้เล่นพร้อมแล้ว, false ถ้ายังไม่พร้อม

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

ตัวอย่างพื้นฐาน:

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

กรณีการใช้งาน (Use cases)

  • รอจนกว่าระบบพร้อมทั้งหมด

  • Initialization สคริปต์ใหม่

  • ป้องกันการทำงานก่อนเวลา

  • Custom spawn systems

circle-check

ESX.SetPlayerData

กำหนดค่า key ในข้อมูลผู้เล่นฝั่ง Client และ trigger event setPlayerData

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

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

Name
Type
Description

key

string

ชื่อ key ที่ต้องการกำหนดค่า

val

any

ค่าที่ต้องการตั้งให้กับ key

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

circle-info

ฟังก์ชันนี้จะ trigger event NCCore:setPlayerData พร้อม key, newValue, และ previousValue


ESX.RegisterInput

ลงทะเบียน keybind เพื่อใช้งานคำสั่งกด/ปล่อยปุ่ม พร้อม callback ที่กำหนดเอง

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

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

Name
Type
Description

commandName

string

ชื่อคำสั่งสำหรับ keybind

label

string

ข้อความที่แสดงในหน้าตั้งค่า keybind

inputGroup

string

กลุ่ม input (เช่น 'keyboard')

key

string

ปุ่มเริ่มต้น (เช่น 'E', 'F5')

onPress

function

ฟังก์ชันที่จะถูกเรียกเมื่อกดปุ่ม

onRelease

function

(ไม่บังคับ) ฟังก์ชันที่จะถูกเรียกเมื่อปล่อยปุ่ม

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

circle-info

เมื่อมีการระบุ onRelease คำสั่งจะถูกลงทะเบียนพร้อม prefix +/- สำหรับพฤติกรรมกดและปล่อย


ESX.RestoreLoadout

คืนค่าอาวุธที่บันทึกไว้ทั้งหมดของผู้เล่นจากข้อมูลที่เซฟไว้ ฟังก์ชันนี้จะลบอาวุธปัจจุบันทั้งหมดออก แล้วคืนค่าอาวุธที่บันทึกไว้ พร้อมจำนวนกระสุน สี และอุปกรณ์เสริม

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

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

ไม่มีพารามิเตอร์

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

ไม่มีค่าส่งคืน

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

1

ตัวอย่างที่ 1: คืนอาวุธหลังผู้เล่น Spawn

2

ตัวอย่างที่ 2: คืนอาวุธหลังออกจากกิจกรรม

3

ตัวอย่างที่ 3: คืนอาวุธหลังออกจากคุก

4

ตัวอย่างที่ 4: รีโหลดอาวุธหลังเปลี่ยนอาชีพ

กรณีการใช้งาน (Use Cases)

ใช้เมื่อมีระบบ “ถอด/เปลี่ยนอาวุธชั่วคราว” แล้วต้องคืน loadout เดิมกลับมา

  • Safe Zone / No-Weapon Zone — คืนอาวุธเมื่อออกจากพื้นที่ปลอดอาวุธ

  • Jail / Confiscate — คืนอาวุธหลังพ้นโทษ หรือหลังระบบยึดอาวุธชั่วคราว

  • Event / Arena / Minigame — คืนอาวุธหลังจบกิจกรรมที่มี loadout เฉพาะกิจ

circle-check
circle-info

หมายเหตุ: ควรใช้ร่วมกับ RemoveAllWeapons() ก่อนถ้าต้องการให้แน่ใจว่าผู้เล่นไม่มีอาวุธซ้ำซ้อน


ฟังก์ชันจัดการสถานะ (Client Status Functions)

กลุ่มฟังก์ชันสำหรับจัดการสถานะของผู้เล่นฝั่ง Client เช่น ความหิว ความกระหาย

ESX.Status.Add

เพิ่มค่าให้กับสถานะที่ระบุ

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

พารามิเตอร์

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

name

string

ชื่อสถานะ (เช่น 'hunger', 'thirst')

value

number

จำนวนที่ต้องการเพิ่ม (ใช้ค่าบวก)

ค่าที่ส่งคืน

ไม่มีค่าส่งคืน

ตัวอย่าง

ESX.Status.Remove

ลดค่าจากสถานะที่ระบุ

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

พารามิเตอร์

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

name

string

ชื่อสถานะที่ต้องการลด

value

number

จำนวนที่ต้องการลด (ใช้ค่าบวก)

ตัวอย่าง

ESX.Status.Set

กำหนดค่าสถานะเป็นตัวเลขที่ระบุ

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

พารามิเตอร์

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

name

string

ชื่อสถานะ

value

number

ค่าที่ต้องการตั้ง (0-1,000,000)

ตัวอย่าง

ESX.Status.Get

ดึงค่าปัจจุบันของสถานะที่ระบุ

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

พารามิเตอร์

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

name

string

ชื่อสถานะที่ต้องการดึง

ค่าที่ส่งคืน

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

number

ค่าปัจจุบันของสถานะ (0-1,000,000)

ตัวอย่าง

ESX.Status.GetAll

ดึงข้อมูลสถานะทั้งหมด

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

พารามิเตอร์

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

minimal

boolean

ถ้าเป็น true จะคืนค่าแบบย่อ (เฉพาะชื่อและค่า)

ค่าที่ส่งคืน

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

table

ตารางข้อมูลสถานะทั้งหมด

ตัวอย่าง

ESX.Status.GetUpdate

ดึงค่าอัตราการอัปเดตของสถานะ

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

ค่าที่ส่งคืน

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

number

อัตราการอัปเดต (บวก = เพิ่ม, ลบ = ลด)

ESX.Status.SetUpdate

กำหนดอัตราการอัปเดตอัตโนมัติของสถานะ

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

พารามิเตอร์

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

name

string

ชื่อสถานะ

update

number

อัตราการอัปเดต (ใช้ค่าลบเพื่อให้ลดลง)

ตัวอย่าง

ESX.Status.Freeze

หยุดการอัปเดตอัตโนมัติของสถานะชั่วคราว

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

พารามิเตอร์

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

name

string

ชื่อสถานะที่ต้องการหยุด

ตัวอย่าง

ESX.Status.Unfreeze

เปิดการอัปเดตอัตโนมัติของสถานะอีกครั้ง

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

พารามิเตอร์

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

name

string

ชื่อสถานะที่ต้องการเปิด

ตัวอย่าง

ESX.Status.FreezeAll

หยุดการอัปเดตอัตโนมัติของสถานะทั้งหมด

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

ตัวอย่าง

ESX.Status.UnfreezeAll

เปิดการอัปเดตอัตโนมัติของสถานะทั้งหมด

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

ตัวอย่าง

circle-exclamation

ฟังก์ชัน UI Menu (Client UI Menu Functions)

กลุ่มฟังก์ชันสำหรับจัดการระบบเมนูในเกม

ESX.UI.Menu.Open

เปิดเมนูประเภทที่ระบุ

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

พารามิเตอร์

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

type

string

ประเภทเมนูที่ลงทะเบียนไว้

namespace

string

Namespace ของเมนูสำหรับระบุตัวตน

name

string

ชื่อเมนูสำหรับระบุตัวตน

data

table

ข้อมูลเมนู (title, elements, ฯลฯ)

submit

function

Callback เมื่อเลือก element

cancel

function

Callback เมื่อยกเลิกเมนู

change

function

Callback เมื่อเปลี่ยนตัวเลือก

close

function

(ไม่บังคับ) Callback เมื่อปิดเมนู

ค่าที่ส่งคืน

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

table

Menu object พร้อม methods ต่างๆ

Methods ที่มีใน menu object:

  • menu.close() — ปิดเมนู

  • menu.update(query, newData) — อัปเดต elements ที่ตรงกับ query

  • menu.refresh() — รีเฟรชการแสดงผลเมนู

  • menu.setElement(i, key, val) — ตั้งค่าใน element ที่ index i

  • menu.setElements(newElements) — เปลี่ยน elements ทั้งหมด

  • menu.setTitle(val) — เปลี่ยน title ของเมนู

  • menu.removeElement(query) — ลบ elements ที่ตรงกับ query

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

ตัวอย่างพื้นฐาน:

ตัวอย่างที่ 1: เมนูพื้นฐาน

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

ตัวอย่างที่ 2: เมนูร้านค้า

ตัวอย่างที่ 3: เมนูแบบมี Slider

ตัวอย่างที่ 4: เมนูที่อัปเดตได้

ESX.UI.Menu.Close

ปิดเมนูที่เฉพาะเจาะจง

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

พารามิเตอร์

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

type

string

ประเภทเมนู

namespace

string

Namespace ของเมนู

name

string

ชื่อเมนู

ตัวอย่าง

ESX.UI.Menu.CloseAll

ปิดเมนูที่เปิดอยู่ทั้งหมด

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

ตัวอย่าง

ESX.UI.Menu.GetOpened

ดึง menu object ถ้าเมนูที่ระบุกำลังเปิดอยู่

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

ค่าที่ส่งคืน

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

table หรือ nil

Menu object ถ้าเปิดอยู่, nil ถ้าไม่ได้เปิด

ตัวอย่าง

ESX.UI.Menu.GetOpenedMenus

ดึงตารางของเมนูที่เปิดอยู่ทั้งหมด

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

ค่าที่ส่งคืน

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

table

ตารางของ menu objects ทั้งหมดที่เปิดอยู่

ตัวอย่าง

ESX.UI.Menu.IsOpen

ตรวจสอบว่าเมนูที่ระบุกำลังเปิดอยู่หรือไม่

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

ค่าที่ส่งคืน

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

boolean

true ถ้าเมนูเปิดอยู่, false ถ้าไม่ได้เปิด

ตัวอย่าง

ESX.UI.Menu.RegisterType

ลงทะเบียนประเภทเมนูใหม่พร้อม handlers

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

พารามิเตอร์

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

type

string

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

open

function

Handler เมื่อเมนูเปิด

close

function

Handler เมื่อเมนูปิด

ตัวอย่าง

circle-info

หมายเหตุ: ประเภทเมนู 'default' มีให้ใช้งานอยู่แล้วโดย NC Core ไม่จำเป็นต้องลงทะเบียนใหม่

circle-check

ฟังก์ชัน Skinchanger (Client Skinchanger Functions)

กลุ่มฟังก์ชันสำหรับปรับแต่งรูปลักษณ์ตัวละคร

ESX.Skinchanger.ApplySkin

ใช้ข้อมูล skin และ/หรือเสื้อผ้ากับตัวละครผู้เล่น

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

พารามิเตอร์

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

skin

table

ตารางข้อมูล skin (ใบหน้า, overlays)

cloth

table

(ไม่บังคับ) ตารางข้อมูลเสื้อผ้า

ตัวอย่าง

ESX.Skinchanger.LoadSkin

โหลด skin ทั้งหมดให้กับผู้เล่น (เปลี่ยนโมเดลถ้าจำเป็น)

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

พารามิเตอร์

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

skin

table

ตารางข้อมูล skin (ต้องมี key sex)

cb

function

(ไม่บังคับ) Callback เมื่อโหลด skin เสร็จ

ตัวอย่าง

ESX.Skinchanger.LoadDefaultModel

โหลดโมเดล freemode เริ่มต้น (ชายหรือหญิง)

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

พารามิเตอร์

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

isMale

boolean

true สำหรับชาย, false สำหรับหญิง

cb

function

(ไม่บังคับ) Callback เมื่อโหลดโมเดลเสร็จ

ตัวอย่าง

ESX.Skinchanger.GetMaxValues

ดึงค่าสูงสุดของ components ทั้งหมดตามโมเดลปัจจุบัน

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

ค่าที่ส่งคืน

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

table

ตารางชื่อ components และค่าสูงสุดของแต่ละอัน

ตัวอย่าง

กรณีการใช้งาน Skinchanger (Use Cases)

กรณี
คำอธิบาย

ร้านเสื้อผ้า

ใช้ ApplySkin เพื่อให้ลูกค้าลองชุดก่อนซื้อ

ระบบสร้างตัวละคร

ใช้ LoadDefaultModel และ LoadSkin ในการสร้างตัวละครใหม่

ชุดอาชีพ

ใช้ LoadSkin เพื่อเปลี่ยนชุดตามอาชีพ (ตำรวจ, หมอ, ฯลฯ)

Dynamic UI

ใช้ GetMaxValues เพื่อสร้าง slider menu แบบอัตโนมัติ

circle-check
circle-exclamation

Last updated