Accounts

ฟังก์ชันฝั่ง Server สำหรับจัดการบัญชีเงินของผู้เล่น (money/bank/black_money และบัญชีที่กำหนดเอง)

Accounts (xPlayer)

กลุ่มฟังก์ชันสำหรับจัดการบัญชีเงินของผู้เล่น เช่น เงินสด, เงินธนาคาร, เงินมืด และบัญชีที่กำหนดเอง

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

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

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

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

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

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

circle-exclamation

ประเภทบัญชีที่พบบ่อย

NC Core รองรับหลายบัญชี โดยบัญชีที่พบบ่อยมีดังนี้:

  • money - เงินสดที่ถืออยู่ในมือ

  • bank - เงินในบัญชีธนาคาร

  • black_money - เงินมืด (ใช้ในเซิร์ฟเวอร์ Roleplay)

  • บัญชีอื่น ๆ ที่กำหนดเอง (ขึ้นกับการตั้งค่าใน config.lua)

circle-info

Accounts คือ “กระเป๋าเงินหลายใบ” ของผู้เล่น แต่ละใบมีชื่อ และยอดเงินแยกกัน

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

  • ตรวจสอบยอดเงินก่อนทำธุรกรรมเสมอ โดยเฉพาะการหักเงิน

  • ส่ง reason ทุกครั้งที่เป็นไปได้ เพื่อให้ง่ายต่อการตรวจสอบ log

  • หลีกเลี่ยงการตั้งค่า “เขียนทับยอด” ถ้าไม่จำเป็น ให้ใช้ add/remove แทน


xPlayer.getMoney

ดึงยอดเงินสด (money) ของผู้เล่น

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

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

Type
Description

number

จำนวนเงินสดที่ผู้เล่นมี

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

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

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

  • ตรวจสอบว่าผู้เล่นมีเงินสดพอก่อนทำธุรกรรม

  • แสดงจำนวนเงินสดใน UI/Menu

  • บันทึก log การเงิน

circle-exclamation

xPlayer.setMoney

กำหนดยอดเงินสด (money) เป็นค่าที่ระบุ (เขียนทับยอดเดิมทั้งหมด)

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

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

Name
Type
Description

amount

number

จำนวนเงินสดใหม่ที่ต้องการตั้ง

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

Type
Description

boolean

true หากสำเร็จ, false หากเกิดข้อผิดพลาด

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

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

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

  • กำหนดเงินเริ่มต้นให้ตัวละครใหม่

  • รีเซ็ตเงินของผู้เล่น

  • แก้ไขปัญหาเงินผิดพลาด (คำสั่งแอดมิน)

triangle-exclamation

xPlayer.addMoney

เพิ่มเงินสดให้กับผู้เล่น

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

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

Name
Type
Description

amount

number

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

reason

string

(ไม่บังคับ) เหตุผลในการเพิ่มเงิน (สำหรับ log)

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

Type
Description

boolean

true หากสำเร็จ, false หาก amount ไม่ถูกต้อง

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

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

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

  • จ่ายเงินเดือนให้ผู้เล่น

  • ให้รางวัลจากภารกิจหรือกิจกรรม

  • รับเงินจากการขายสินค้า

  • ระบบ Paycheck อัตโนมัติ

circle-info

แนะนำให้ระบุ reason เสมอ เพื่อช่วยตรวจสอบ log และ debug ภายหลัง


xPlayer.removeMoney

หักเงินสดจากผู้เล่น

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

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

Name
Type
Description

amount

number

จำนวนเงินที่ต้องการหัก (ต้องเป็นบวก)

reason

string

(ไม่บังคับ) เหตุผลในการหักเงิน (สำหรับ log)

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

Type
Description

boolean

true หากสำเร็จ, false หาก amount ไม่ถูกต้อง

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

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

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

  • หักเงินเมื่อซื้อสินค้า

  • หักค่าปรับหรือค่าใช้จ่าย

  • หักค่าบริการต่างๆ (ซ่อมรถ, รักษาพยาบาล)

  • หักเงินจากการเล่นพนัน

circle-exclamation

xPlayer.getAccount

ดึงข้อมูลบัญชีเงินตามชื่อที่ระบุ (เช่น bank, black_money)

รูปแบบการใช้งาน (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/Menu

  • ระบบโอนเงินระหว่างผู้เล่น

circle-info

บัญชีที่มีให้ใช้งานขึ้นกับการตั้งค่าใน config.database.lua และ config ของเซิร์ฟเวอร์


xPlayer.getAccounts

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

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

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

Name
Type
Description

minimal

boolean

(ไม่บังคับ) ถ้าเป็น true จะคืนค่าในรูปแบบ {[name] = amount}

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

Type
Description

table

Array ของ Object บัญชี หรือตารางแบบย่อ {name = amount}

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

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

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

  • ดึงข้อมูลบัญชีทั้งหมดเพื่อแสดงใน UI

  • ตรวจสอบจำนวนเงินในบัญชีทั้งหมด

  • สร้างรายงานทางการเงิน

  • ส่งข้อมูลไปยัง Client-side

circle-info

ใช้ minimal = true เมื่อต้องการใช้งานแบบสั้นและเบา (เช่น ส่งข้อมูลไป UI)


xPlayer.setAccountMoney

กำหนดจำนวนเงินในบัญชีที่ระบุเป็นค่าที่แน่นอน

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

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

Name
Type
Description

name

string

ชื่อบัญชี

amount

number

จำนวนเงินใหม่ที่ต้องการตั้ง

reason

string

(ไม่บังคับ) เหตุผลในการเปลี่ยนแปลง

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

Type
Description

boolean

true หากสำเร็จ, false หากเกิดข้อผิดพลาด

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

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

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

  • รีเซ็ตเงินในบัญชี

  • แก้ไขปัญหาเงินผิดพลาด (Admin Tools)

  • กำหนดค่าเริ่มต้นให้ตัวละครใหม่

triangle-exclamation

xPlayer.addAccountMoney

เพิ่มเงินเข้าบัญชีที่ระบุ

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

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

Name
Type
Description

name

string

ชื่อบัญชี

amount

number

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

reason

string

(ไม่บังคับ) เหตุผลในการเพิ่มเงิน

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

Type
Description

boolean

true หากสำเร็จ, false หาก amount ไม่ถูกต้อง

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

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

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

  • ฝากเงินเข้าธนาคาร

  • จ่ายเงินเดือนอัตโนมัติ

  • โอนเงินระหว่างผู้เล่น

  • รับเงินจากการขายสินค้า (Society Money)

  • ระบบโบนัสและรางวัล

circle-check

xPlayer.removeAccountMoney

หักเงินออกจากบัญชีที่ระบุ

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

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

Name
Type
Description

name

string

ชื่อบัญชี

amount

number

จำนวนเงินที่ต้องการหัก (ต้องเป็นบวก)

reason

string

(ไม่บังคับ) เหตุผลในการหักเงิน

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

Type
Description

boolean

true หากสำเร็จ, false หาก amount ไม่ถูกต้อง

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

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

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

  • ถอนเงินจากธนาคาร

  • จ่ายเงินผ่านบัตรเครดิต

  • โอนเงินระหว่างผู้เล่น

  • ซื้อสินค้า/บริการด้วยเงินธนาคาร

  • หักค่าธรรมเนียมต่างๆ

circle-exclamation

xPlayer.clearAccounts

รีเซ็ตยอดเงินในบัญชีทั้งหมดให้เป็นศูนย์

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

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

Name
Type
Description

reason

string

(ไม่บังคับ) เหตุผลในการรีเซ็ต

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

Type
Description

boolean

true หากสำเร็จ

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

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

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

  • รีเซ็ตตัวละครทั้งหมด (Character Wipe)

  • ลงโทษผู้เล่น

  • แก้ไขปัญหาเงินผิดพลาดร้ายแรง

  • เตรียมตัวละครสำหรับระบบใหม่

triangle-exclamation

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

Function
Description
Use Case

getMoney()

ดึงเงินสด

ตรวจสอบยอดก่อนซื้อ

setMoney()

ตั้งค่าเงินสด

รีเซ็ตเงินเริ่มต้น

addMoney()

เพิ่มเงินสด

รับรางวัล, เงินเดือน

removeMoney()

หักเงินสด

ซื้อของ, จ่ายค่าบริการ

getAccount()

ดึงข้อมูลบัญชี

ตรวจสอบยอดธนาคาร

getAccounts()

ดึงบัญชีทั้งหมด

แสดงใน UI

setAccountMoney()

ตั้งค่าเงินในบัญชี

แก้ไขเงิน (Admin)

addAccountMoney()

เพิ่มเงินในบัญชี

ฝากเงิน, รับโอน

removeAccountMoney()

หักเงินในบัญชี

ถอนเงิน, จ่ายผ่านบัตร

clearAccounts()

รีเซ็ตทุกบัญชี

ลงโทษ, Wipe ตัวละคร


circle-check
1

ตรวจสอบก่อนหัก

ใช้ xPlayer.getAccount() เช็คยอดก่อน xPlayer.removeAccountMoney()

2

ระบุ Reason เสมอ

ช่วยในการตรวจสอบ log และ debug

3

บันทึก Log

ใช้ discord logs หรือระบบ log ของคุณสำหรับธุรกรรมสำคัญ

4

ใช้ Transaction

ถ้าต้องทำหลายขั้นตอนในครั้งเดียว ให้ใช้ xPlayer.transaction() (ถ้ามีในเวอร์ชันของคุณ)

5

ป้องกันการโกง

ตรวจสอบและ validate input ทุกครั้งก่อนเปลี่ยนแปลงยอดเงิน

Last updated