Status

ฟังก์ชันฝั่ง Server สำหรับอ่าน/ปรับสถานะผู้เล่น (เช่น hunger, thirst) ผ่าน xPlayer รวมถึงการตั้งค่า update rate และการ freeze/unfreeze

Status (xPlayer)

ฟังก์ชันสำหรับจัดการ "สถานะ" ของผู้เล่น เช่น hunger, thirst และสถานะอื่น ๆ ที่เซิร์ฟเวอร์กำหนด

ใช้งานผ่านออบเจกต์ผู้เล่น xPlayer และทำงานฝั่ง Server-side เท่านั้น

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

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

  • ดึง xPlayer จาก source ก่อนเรียกใช้งาน:

local xPlayer = ESX.GetPlayerFromId(source)
circle-info

Status ส่วนใหญ่เก็บเป็นตัวเลขช่วง 0 ถึง 1,000,000 โดย 1,000,000 มักเทียบเท่า “เต็ม 100%”

circle-exclamation

xPlayer.getStatus

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

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

xPlayer.getStatus(name)

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

Name
Type
Description

name

string

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

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

Type
Description

number

ค่าสถานะปัจจุบัน (โดยทั่วไป 0-1,000,000)

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

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

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

  • ตรวจสอบเงื่อนไขก่อนให้ทำกิจกรรม (เช่น หิวมากห้ามวิ่ง)

  • ตรวจสอบก่อนอนุญาตให้ซื้อ/กิน/ดื่ม


xPlayer.getAllStatus

คืนค่าสถานะทั้งหมด

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

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

Name
Type
Description

minimal

boolean

(ไม่บังคับ) ถ้าเป็น true จะคืนค่าแบบย่อ {[name] = value}

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

Type
Description

table

รายการสถานะทั้งหมด (รูปแบบขึ้นกับ minimal)

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

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

  • ส่งสถานะไป HUD/UI

  • สร้าง debug/log เพื่อเช็กสถานะผู้เล่น


xPlayer.setStatus

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

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

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

Name
Type
Description

name

string

ชื่อสถานะ

value

number

ค่าใหม่ (แนะนำให้ clamp ให้อยู่ในช่วง 0-1,000,000)

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

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

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

  • ตั้งค่าเริ่มต้นหลังสร้างตัวละคร/เข้าเกม

  • แก้ไขสถานะผิดปกติ (เครื่องมือแอดมิน)

triangle-exclamation

xPlayer.addStatus

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

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

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

Name
Type
Description

name

string

ชื่อสถานะ

value

number

จำนวนที่เพิ่ม

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

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

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

  • ระบบกิน/ดื่ม เพิ่มสถานะตาม Item

  • บัฟจาก Item พิเศษหรือกิจกรรม


xPlayer.removeStatus

ลดค่าจากสถานะ

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

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

Name
Type
Description

name

string

ชื่อสถานะ

value

number

จำนวนที่ลด

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

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

  • ลดสถานเตามกิจกรรม (วิ่ง, ต่อสู้, ออกกำลังกาย)


xPlayer.getStatusUpdate

ดึง “อัตราการเปลี่ยนแปลงอัตโนมัติ” ของสถานะต่อรอบอัปเดต

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

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

Name
Type
Description

name

string

ชื่อสถานะ

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

Type
Description

number

ค่า update ต่อรอบ (ค่าลบ = ลดลง)


xPlayer.setStatusUpdate

ตั้ง “อัตราการเปลี่ยนแปลงอัตโนมัติ” ของสถานะต่อรอบอัปเดต

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

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

Name
Type
Description

name

string

ชื่อสถานะ

value

number

อัตรา update ต่อรอบ (ค่าลบ = ลดลง)

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


xPlayer.freezeStatus

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

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

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

Name
Type
Description

name

string

ชื่อสถานะ

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

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

xPlayer.unfreezeStatus

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

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

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

Name
Type
Description

name

string

ชื่อสถานะ

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


xPlayer.freezeAllStatus

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

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

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


xPlayer.unfreezeAllStatus

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

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

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


xPlayer.setUpdateInterval

ตั้งช่วงเวลา (interval) สำหรับการอัปเดตสถานะอัตโนมัติ

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

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

Name
Type
Description

duration

number

ช่วงเวลาอัปเดต (มิลลิวินาที)

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

circle-info

ค่าเริ่มต้นมักเป็น 10,000 ms (10 วินาที) ไม่แนะนำให้ตั้งต่ำเกินไป เพราะทำให้ฝั่ง Server ทำงานถี่และเกิดภาระเพิ่ม


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

  • ระบบอาหาร/น้ำ: เพิ่ม hunger / thirst เมื่อกิน/ดื่ม

  • Safe zone: หยุดสถานะในพื้นที่ปลอดภัย

  • Event/Arena: หยุดสถานะระหว่างกิจกรรม

  • Gym/Exercise: ปรับอัตราการลดลงของสถานะให้เร็วขึ้น/ช้าลง

  • ตรวจสอบสถานะก่อนอนุญาตให้ทำกิจกรรม

circle-check
circle-exclamation

สรุปฟังก์ชันใน Status

ฟังก์ชันต่อไปนี้เป็น method บน xPlayer

Function
Description

getStatus(name)

อ่านค่าสถานะ

getAllStatus(minimal)

อ่านสถานะทั้งหมด

setStatus(name, value)

เขียนทับค่าสถานะ

addStatus(name, value)

เพิ่มค่าสถานะ

removeStatus(name, value)

ลดค่าสถานะ

getStatusUpdate(name)

อ่านค่า update ต่อรอบ

setStatusUpdate(name, value)

ตั้งค่า update ต่อรอบ

freezeStatus(name)

หยุดอัปเดตสถานะรายตัว

unfreezeStatus(name)

เปิดอัปเดตสถานะรายตัว

freezeAllStatus()

หยุดอัปเดตสถานะทั้งหมด

unfreezeAllStatus()

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

setUpdateInterval(duration)

ตั้ง interval ของการอัปเดต


circle-check
1

ควบคุมชื่อสถานะ (allowlist)

กำหนดรายการสถานะที่อนุญาต เช่น hunger, thirst, stamina และปฏิเสธชื่ออื่นที่ส่งมาจาก Client

2

Clamp ค่าให้อยู่ในช่วง

ก่อน setStatus/addStatus/removeStatus แนะนำให้ clamp ค่าให้อยู่ในช่วง 0-1,000,000 เพื่อป้องกันค่าหลุดช่วงจาก input ผิดหรือการโกง

3

อย่าตั้ง interval ถี่เกินไป

การตั้ง interval ถี่เกินไปทำให้ Server ทำงานหนักขึ้น ควรเริ่มจากค่าเริ่มต้น และปรับเฉพาะเมื่อมีเหตุผลชัดเจน

4

Freeze แล้วต้อง Unfreeze

ทุก flow ที่เรียก freezeStatus() หรือ freezeAllStatus() ควรมีจุดคืนค่าด้วย unfreeze...() เสมอ

Last updated