วิธีติดตั้ง QBCore FiveM แบบถูกต้องสำหรับ Server ใหม่
การติดตั้ง QBCore FiveM ในปัจจุบัน วิธีที่ง่ายและลดปัญหา Dependency ได้มากที่สุดคือ ติดตั้งผ่าน Official QBCore Recipe ของ txAdmin แทนการดาวน์โหลด qb-core, Database และ Resources แต่ละตัวมาประกอบเอง
โครงสร้างโดยรวมคือ
FXServer
↓
txAdmin
↓
QBCore Framework Recipe
↓
Database
↓
oxmysql
↓
qb-core
↓
[qb] Resources
↓
Standalone / Voice Resources
↓
เข้าเกมทดสอบ Character
↓
ตรวจ PlayerData / Money / Job
Official Recipe ปัจจุบันช่วยติดตั้งระบบพื้นฐานจำนวนมากให้อัตโนมัติ เช่น
qb-core
qb-multicharacter
qb-inventory
qb-target
qb-policejob
qb-ambulancejob
qb-garages
qb-banking
qb-phone
pma-voice
oxmysql
รวมถึง Resource อื่นใน QBCore ecosystem
ดังนั้นหากกำลังสร้าง QBCore Server ใหม่ ควรเริ่มจาก Clean Official Base ก่อน แล้วค่อยเพิ่ม Script Custom ทีละตัว
① สิ่งที่ต้องเตรียมก่อนติดตั้ง QBCore
ควรมี
เครื่อง Windows หรือ Linux
FiveM Server Artifacts
Cfx Account
Server Registration Key
MariaDB หรือ MySQL
Internet Connection
พื้นที่สำหรับ Server Data
txAdmin
FiveM Client สำหรับทดสอบ
ถ้าเป็นเครื่อง Windows สำหรับมือใหม่ วิธีที่ง่ายคือ
FXServer
+
txAdmin
+
MariaDB
ไม่จำเป็นต้องสร้าง Server Structure ด้วยมือทั้งหมด
② QBCore ต้องมี Database หรือไม่
ต้องมี
QBCore เป็น RP Framework ที่ต้องบันทึกข้อมูลถาวร เช่น
Character
Money
Job
Gang
Metadata
Position
Vehicles
Housing
Phone Data
ตาม Resources ที่ใช้งาน
Architecture โดยทั่วไปคือ
QBCore
↓
oxmysql
↓
MySQL / MariaDB
qb-core ปัจจุบันประกาศ
oxmysql
เป็น Dependency โดยตรงใน fxmanifest.lua
③ QBCore ใช้ oxmysql หรือไม่
ใช้
Current qb-core โหลด
'@oxmysql/lib/MySQL.lua'
ใน Server Scripts และประกาศ
dependency 'oxmysql'
ดังนั้นถ้า oxmysql หายหรือ Database เชื่อมไม่ได้ QBCore จะไม่สามารถจัดการ Player Persistence ได้อย่างถูกต้อง
อย่าใช้ Tutorial เก่าที่แนะนำ Database Wrapper คนละตัวโดยไม่ตรวจ Version ของ QBCore ก่อน
④ ควรใช้ MariaDB หรือ MySQL
ทั้งสองสามารถใช้ตาม Environment ที่รองรับ
สำหรับผู้เริ่มต้น MariaDB เป็นตัวเลือกที่พบได้บ่อยใน FiveM Server
สิ่งที่สำคัญกว่าคือ
Database Server ทำงาน
Database ถูกสร้าง
Username ถูก
Password ถูก
Host ถูก
Permission ถูก
Connection String ถูก
ไม่ควรใช้ Database root แบบไม่มี Password บน Production Server
⑤ สร้าง Database สำหรับ QBCore
ตัวอย่างแนวคิด
Database Name:
qbcore
Database User:
fivem
Password:
StrongPassword
ควรสร้าง Database User เฉพาะสำหรับ FiveM
Architecture
FXServer
↓
fivem database user
↓
qbcore database
ดีกว่าการให้ FXServer ใช้ Database Root Account โดยไม่จำเป็น
⑥ อย่าเปิด Database Port สู่ Internet โดยไม่จำเป็น
ถ้า FXServer และ Database อยู่เครื่องเดียวกัน ให้ใช้ Local Connection ถ้า Infrastructure อนุญาต
เช่น
127.0.0.1
หรือ
localhost
การเปิด Port
3306
ออก Internet ควรทำเฉพาะเมื่อมีเหตุผลจริงและต้องจำกัด Firewall/Source IP อย่างเหมาะสม
Database ของ QBCore เก็บ Player Data สำคัญจำนวนมาก จึงไม่ควรเปิด Public โดยไม่มี Security Plan
⑦ ดาวน์โหลด FiveM Server Artifacts
สำหรับ Server ใหม่ให้ใช้ FiveM Server Artifact รุ่นที่ Cfx.re แนะนำในขณะติดตั้ง
ขั้นตอนพื้นฐานคือ
Download Server Artifact
↓
แตกไฟล์
↓
เปิด FXServer
Windows จะใช้ตัว Executable ของ Server ตาม Platform ปัจจุบัน
Linux ใช้ Server Build สำหรับ Linux
ไม่ควรใช้ Artifact เก่าที่เก็บมาหลายปีเพียงเพราะ Server Pack เดิมเปิดได้
⑧ txAdmin ต้องติดตั้งเพิ่มไหม
ไม่ต้องใน FXServer รุ่นปัจจุบัน
txAdmin ถูก Bundle มากับ FXServer แล้ว
เมื่อเปิด FXServer ตามวิธีปกติ txAdmin จะเริ่มทำงาน
Port เริ่มต้นโดยทั่วไปคือ
40120
จากนั้นเปิดผ่าน Browser เพื่อทำ Setup
⑨ เปิด FXServer และ Link Cfx Account
หลังเปิด FXServer ครั้งแรก
FXServer
↓
txAdmin
↓
Link Account
↓
Cfx Account
ให้ Login ด้วย Cfx Account ที่ตั้งใจใช้ดูแล Server
จากนั้นตั้ง Backup Password และ Register Server ตามขั้นตอน txAdmin
ถ้าเป็น Production Server ควรกำหนด Account Ownership ให้ชัดตั้งแต่แรก
โดยเฉพาะหากจะซื้อ Paid Resources ในอนาคต
⑩ สร้าง Server Profile
txAdmin จะให้สร้าง Server Profile
ตัวอย่าง
QBCore-Development
หรือ
QBCore-Production
ถ้ามีหลาย Server ควรตั้งชื่อให้รู้ว่า Profile ไหนทำหน้าที่อะไร
หลีกเลี่ยง
test
new
new2
server123
เพราะภายหลังจะสับสนว่า txData ชุดใดเป็น Server จริง
⑪ เลือก Popular Recipes
เมื่อ txAdmin ถาม Deployment Type ให้เลือก
Popular Recipes
จากนั้นเลือก
QBCore Framework
QBCore ปัจจุบันยังมี Recipe อยู่ใน Popular Recipes ของ txAdmin โดยตรง
นี่คือวิธีที่เหมาะกับผู้เริ่มต้นมากกว่าการติดตั้ง Manual
⑫ ตรวจว่าเป็น Official QBCore Recipe
Recipe ควรเป็น QBCore Framework จาก QBCore project
ไม่ควรเลือก Pack ที่ชื่อคล้าย
QBCore Full Pack
QBCore Ready RP
QBCore Premium Base
QB Full Server
จากแหล่งที่ไม่รู้จักเพียงเพราะมี Script เยอะกว่า
เป้าหมายของ Base Server ควรเป็น
สะอาด
รู้ Version
รู้ Dependency
รู้แหล่งที่มา
ก่อน
⑬ Recipe Deployer ทำอะไรให้บ้าง
Official Recipe ปัจจุบันมี Workflow ประมาณ
ดาวน์โหลด Base Files
↓
สร้าง server.cfg
↓
Connect Database
↓
Import qbcore.sql
↓
ดาวน์โหลด CFX Resources
↓
ดาวน์โหลด oxmysql
↓
ดาวน์โหลด qb-core
↓
ดาวน์โหลด qb-* Resources
↓
ดาวน์โหลด Voice/Standalone Resources
ช่วยลดงานติดตั้งหลายสิบ Resource ด้วยมือ
⑭ qbcore.sql คืออะไร
qbcore.sql เป็น Database Schema พื้นฐานที่ Recipe ใช้สำหรับ QBCore Server
Official Recipe มีขั้นตอน
connect_database
↓
query_database
↓
qbcore.sql
ดังนั้นหาก Recipe Deploy สำเร็จแล้ว ไม่ควร Import qbcore.sql ซ้ำแบบสุ่ม
ไม่เช่นนั้นอาจเจอ
Table already exists
Duplicate column
Duplicate entry
ได้
⑮ เตรียม Database Connection
txAdmin Recipe จะถามข้อมูล Database ตาม Workflow
ต้องเตรียม
Host
Database
Username
Password
ให้ถูกต้อง
Connection String ใน server.cfg จะมีลักษณะ
set mysql_connection_string "mysql://user:password@localhost/qbcore?charset=utf8mb4"
นี่เป็นเพียงรูปแบบตัวอย่าง
ต้องเปลี่ยนให้ตรงกับ Database จริง
⑯ ระวังอักขระพิเศษใน Password
Database Connection String เป็น URL-style connection string
อักขระพิเศษบางชนิดใน Password อาจต้อง Encode หรือสามารถทำให้ Connection String ถูกตีความผิด
ถ้าตั้ง Password ถูกแต่ oxmysql เชื่อมไม่ได้ ให้ตรวจเรื่อง
Reserved Characters
URL Encoding
ด้วย
แต่ไม่ควรลดความปลอดภัยด้วยการใช้ Password ง่าย ๆ เพียงเพื่อหลีกเลี่ยงปัญหา
⑰ อย่าเผย mysql_connection_string
ห้ามโพสต์ server.cfg ที่มี
set mysql_connection_string "..."
แบบเปิดเผย Password
ถ้าต้องส่งให้คนช่วย Debug ให้ปิดข้อมูล เช่น
set mysql_connection_string "mysql://fivem:********@localhost/qbcore"
Secret อื่นที่ควรปิดด้วย ได้แก่
sv_licenseKey
API Keys
Webhook URLs
Tokens
⑱ สร้าง Server Registration Key
Cfx.re ปัจจุบันใช้ Cfx Portal สำหรับสร้าง Server Registration Key
ขั้นตอนโดยแนวคิดคือ
Cfx Portal
↓
Server Registration Keys
↓
Generate Key
↓
ตั้งชื่อ
↓
Copy Key
จากนั้นใส่ Key ใน txAdmin Recipe
และสุดท้ายจะอยู่ใน Config เช่น
sv_licenseKey "YOUR_SERVER_KEY"
⑲ อย่าใช้ Server Key ของคนอื่น
ไม่ควรใช้ Key จาก
เพื่อน
YouTube
Server Pack
Freelancer
Developer คนเก่า
Production Server ควรใช้ Server Registration Key ที่ทีม Server ควบคุมเอง
หาก Key รั่ว Cfx Portal รองรับการ Regenerate Key
จากนั้นต้องเปลี่ยนค่าใน Server Configuration ด้วย
⑳ Run Recipe
เมื่อ Database และ Server Key พร้อมแล้ว
เลือก
Run Recipe
จากนั้น txAdmin จะเริ่ม Download และ Setup Resources
ระหว่างนี้อาจเห็นขั้นตอน
Download
Unzip
Move Path
Database Query
Resource Installation
หาก Recipe Error กลางทาง ให้อ่าน Step ที่ Error ก่อน
อย่ากด Run ซ้ำหลายครั้งแบบไม่ตรวจ เพราะอาจทำให้ Database หรือ Files อยู่ในสถานะครึ่งหนึ่ง
㉑ Official Recipe ปัจจุบันลง Resource อะไรบ้าง
Recipe ปัจจุบันลง Resources จำนวนมาก
ตัวอย่างส่วนสำคัญ ได้แก่
qb-core
qb-adminmenu
qb-multicharacter
qb-target
qb-inventory
qb-hud
qb-management
qb-policejob
qb-ambulancejob
qb-phone
qb-garages
qb-vehicleshop
qb-shops
qb-banking
qb-houses
qb-doorlock
qb-radialmenu
qb-smallresources
และอีกหลาย Resource
จึงเป็น Full RP Base มากกว่า Core เปล่า ๆ
㉒ Recipe ลง oxmysql ให้อัตโนมัติหรือไม่
ปัจจุบัน Official Recipe ดาวน์โหลด oxmysql ให้อัตโนมัติ
ดังนั้นถ้า Deploy Recipe สำเร็จ ไม่ควร Download oxmysql อีกชุดแล้วสร้าง
oxmysql-old
oxmysql-new
oxmysql2
ใน resources
ควรมี Resource ที่ Server ใช้จริงเพียงชุดที่เหมาะสม
Dependency ซ้ำทำให้ Debug ยาก
㉓ Recipe ลง pma-voice หรือไม่
ปัจจุบัน Recipe ดาวน์โหลด
pma-voice
พร้อม
qb-radio
ใน Voice Resource Group
จึงมี Voice Base พร้อมสำหรับ QBCore ecosystem จำนวนหนึ่ง
แต่ Phone/Radio Script ที่เพิ่มภายหลังยังต้องตรวจ Version และ Voice Integration ของตัวเอง
㉔ Recipe ลง qb-inventory หรือไม่
ปัจจุบันมี
qb-inventory
อยู่ใน Official Recipe
ดังนั้น Base QBCore Server จะมี Inventory ของ QBCore ecosystem
ถ้าจะเปลี่ยนเป็น Inventory อื่น เช่น
ox_inventory
ควรทำภายหลังจาก Base Server ใช้งานได้แล้ว
เพราะการเปลี่ยน Inventory กระทบ Scripts จำนวนมาก
㉕ Recipe ลง qb-target หรือไม่
มี
Official Recipe ปัจจุบันดาวน์โหลด
qb-target
ด้วย
จึงควรทดสอบ Base QBCore ด้วย Target เดิมก่อน
หากต้องการเปลี่ยนไป
ox_target
ควรตรวจ Compatibility ของ
Jobs
Shops
Garage
Police
EMS
Custom Scripts
ก่อน
㉖ Resource Structure หลังติดตั้ง
ภาพรวมอาจมีลักษณะ
resources/
├── [cfx-default]/
├── [qb]/
│ ├── qb-core/
│ ├── qb-adminmenu/
│ ├── qb-inventory/
│ ├── qb-target/
│ └── ...
├── [standalone]/
│ ├── oxmysql/
│ └── ...
├── [voice]/
│ ├── pma-voice/
│ └── qb-radio/
└── [defaultmaps]/
รายละเอียดสามารถเปลี่ยนตาม Recipe Version
จึงไม่ควรย้าย Folder ทั้งหมดใหม่ทันทีหลัง Deploy
㉗ qb-core ต้องอยู่ชื่อเดิมหรือไม่
ควรใช้ชื่อ
qb-core
ตาม Official Resource
เพราะ Third-party Scripts จำนวนมากเรียก
exports['qb-core']:GetCoreObject()
หรือใช้ Resource Name นี้ตรง ๆ
ถ้า Rename
qb-core
เป็น
my-core
Script จำนวนมากจะหา Framework ไม่เจอ
㉘ ตรวจ fxmanifest.lua ของ qb-core
Current qb-core ใช้
fx_version 'cerulean'
game 'gta5'
และประกาศ
dependency 'oxmysql'
พร้อม Server Script
'@oxmysql/lib/MySQL.lua'
ดังนั้นถ้า Error ระบุว่า oxmysql Missing ต้องแก้ Dependency นี้ก่อน
อย่าลบ Dependency จาก Manifest เพื่อบังคับให้ qb-core Start
㉙ lua54 'yes' ใน qb-core ต้องเพิ่มเองไหม
Current qb-core Manifest ยังมี Directive
lua54 'yes'
อยู่ใน Source ปัจจุบัน
แต่ FiveM ปัจจุบันใช้ Lua 5.4 เป็นค่าเริ่มต้นแล้ว และ Directive นี้ไม่ใช่สิ่งที่ผู้ติดตั้งต้องไปเพิ่มให้ Custom Scripts ทุกตัวเพื่อแก้ Error
หาก Script Error ให้อ่าน Error จริงก่อน
อย่าใช้ lua54 'yes' เป็น Universal Fix
㉚ ตรวจ server.cfg หลัง Recipe
Current QBCore Recipe สร้าง server.cfg ให้แล้ว
ควรตรวจอย่างน้อย
sv_licenseKey
mysql_connection_string
sv_hostname
sv_projectName
sv_projectDesc
sv_maxclients
locale
qb_locale
UseTarget
Voice Config
Permissions
Resource Ensures
เป้าหมายคือเข้าใจ Config
ไม่ใช่แก้ทุกค่าในวันแรก
㉛ Current server.cfg Start Resource อย่างไร
Official Recipe ปัจจุบันมี Resource Startup Groups ในแนวทาง
ensure qb-core
ensure [qb]
ensure [standalone]
ensure [voice]
ensure [defaultmaps]
และ qb-core เองประกาศ oxmysql เป็น Dependency
ดังนั้นควรเริ่มจาก Config ของ Official Recipe ก่อน
ไม่ควร Copy Start Order จาก Server Pack อื่นมาทับโดยไม่มีเหตุผล
㉜ UseTarget คืออะไร
Current Recipe มี Convar
setr UseTarget false
สำหรับ QBCore Resource Stack ที่รองรับ Setting นี้
บาง Server อาจเลือกเปิด Target-based Interaction ตาม Resource Configuration
แต่อย่าเปลี่ยนเป็น true แล้วคาดว่า Script ทุกตัวจะเปลี่ยนไปใช้ Target โดยอัตโนมัติ
ต้องดู Resource แต่ละตัวด้วย
㉝ qb_locale คืออะไร
Current Recipe มี
setr qb_locale "en"
สำหรับ Locale ของ QBCore Resources ที่รองรับ
หากต้องการภาษาอื่น ต้องดูว่า Resource นั้นมี Locale ที่ต้องการหรือไม่
การตั้ง
th
ไม่ได้แปลว่า QBCore Script ทุกตัวในโลกจะเป็นภาษาไทยทันที
Third-party Scripts มี Locale System ของตัวเองได้
㉞ Save & Run Server
เมื่อ Recipe Deploy เสร็จให้
Save & Run Server
แล้วเปิด Console ดู Startup ตั้งแต่ต้น
สิ่งที่ไม่ควรมีคือ Critical Errors เช่น
Failed to connect database
Missing dependency
Couldn't find resource
SCRIPT ERROR
No such export
อย่าดูเพียงว่า txAdmin แสดง Server Online
ต้องอ่าน Console ด้วย
㉟ ตรวจ oxmysql ตอนเปิดครั้งแรก
ถ้า Database มีปัญหาให้หยุดเพิ่ม Script อื่นก่อน
ตรวจ
Database Running?
Host ถูก?
Username ถูก?
Password ถูก?
Database Name ถูก?
Firewall ถูก?
Permission ถูก?
เมื่อ oxmysql ทำงานจึงค่อย Debug QBCore
Database เป็น Dependency ระดับล่างของ Core
㊱ ตรวจว่า qb-core Start สำเร็จ
หาใน Console ว่า
qb-core
Start โดยไม่มี Critical Error
หาก qb-core ไม่ Start ให้แก้ Core Error ก่อน
เพราะ
qb-core
↓
qb-policejob
qb-inventory
qb-phone
qb-garages
...
Resources จำนวนมากพึ่ง Core นี้
㊲ เข้า FiveM ทดสอบ Server
เมื่อ Base Server เปิดแล้ว ให้เข้า Server ด้วย FiveM Client
ทดสอบ
Connect
↓
Multicharacter
↓
Create Character
↓
Spawn
↓
PlayerData Load
อย่าเพิ่งติดตั้ง Custom Phone หรือ Character Script ก่อน Base Flow นี้ผ่าน
㊳ ทดสอบ Multicharacter
Official Recipe มี
qb-multicharacter
ให้ทดสอบ
เข้า Server
↓
สร้าง Character A
↓
Spawn
↓
Logout/Reconnect
↓
Character A ยังอยู่
ถ้า Character หายหลัง Reconnect ให้ตรวจ Database และ Player Save ก่อน
ไม่ควรลง Housing/Phone เพิ่มเพื่อแก้ปัญหา
㊴ ทดสอบ citizenid
QBCore ใช้
citizenid
เป็น Identifier สำคัญของ Character
หลังสร้าง Character ควรตรวจว่ามี PlayerData ถูกต้อง
Developer สามารถตรวจ Server-side ผ่าน QBCore API เช่น
local Player = QBCore.Functions.GetPlayer(source)
if Player then
print(Player.PlayerData.citizenid)
end
ถ้า Player Object หาไม่ได้ ต้อง Debug Core/Player Loading ก่อน Custom Script
㊵ ทดสอบ Money
Current QBCore มี Player Money Structure
ให้ทดสอบใน Development Environment เช่น
Cash
Bank
เปลี่ยนค่าผ่าน Admin/Framework Command ที่ถูกต้อง
จากนั้น
ออก Server
↓
เข้าใหม่
↓
ตรวจยอด
เพื่อดูว่า Persistence ทำงานหรือไม่
㊶ ทดสอบ Job
ทดสอบ Player Job
เช่น
unemployed
และใน Development Environment ทดลองกำหนด Job ที่มีอยู่จริง
จากนั้นตรวจ
Job Name
Grade
On Duty
Boss Status
ตาม Resource
Reconnect แล้วดูว่าข้อมูลยังอยู่
㊷ Jobs อยู่ตรงไหนใน QBCore
QBCore ใช้ Shared Lua Tables สำหรับ Static Definitions จำนวนมาก
Jobs ปัจจุบันอยู่ใน Shared Structure ของ qb-core
แนวคิดเช่น
qb-core/
└── shared/
└── jobs.lua
รายละเอียดขึ้นกับ Current Repository
QBCore Documentation ระบุว่า Shared Folder ใช้เก็บข้อมูลอย่าง Jobs, Vehicles และ Items เพื่อหลีกเลี่ยง Database Queries ที่ไม่จำเป็นสำหรับ Static Data
㊸ Items อยู่ตรงไหน
QBCore Shared Data มี Item Definitions
แนวคิด
qb-core/shared/items.lua
ถ้า Script ต้องการ Item
repairkit
แต่ไม่มี Item Definition ที่ Resource Stack ใช้ ก็อาจทำงานผิด
เวลาติดตั้ง Job/Crafting Script ใหม่ ต้องตรวจ Item Requirements ด้วย
㊹ ทดสอบ Inventory
Official Base มี qb-inventory
ให้ทดสอบอย่างน้อย
เปิด Inventory
↓
มี Starter Items
↓
ย้าย Item
↓
เพิ่ม/ลบ Item
↓
Reconnect
และดู F8/Server Console ระหว่างทดสอบ
ถ้า Inventory พังก่อนลง Script Custom ต้องแก้ Base ก่อน
㊺ Starter Items มาจากไหน
QBCore Shared Configuration มีแนวคิด Starter Items สำหรับ Character ใหม่
เช่น
phone
id_card
driver_license
ตาม Current Configuration
เมื่อ Character ใหม่ไม่มี Starter Items ให้ตรวจ
Shared Items
Player Creation
Inventory
Server Error
ก่อนแก้ Database โดยตรง
㊻ ทดสอบ qb-target
ถ้า Server Config/Resource ใช้ Target Mode ให้ทดสอบ Interaction ของ Base Resources
เช่น
NPC
Shop
Job Interaction
ถ้า Target ไม่ขึ้นให้ตรวจ
qb-target Started?
UseTarget Config?
Resource รองรับ Target?
F8 Error?
ไม่ควรติดตั้ง Target อีกระบบซ้อนเพื่อหวังให้หาย
㊼ ทดสอบ Voice
Recipe ปัจจุบันมี
pma-voice
qb-radio
ให้เข้าอย่างน้อยสอง Client หากต้องทดสอบจริง
ตรวจ
Proximity Voice
Radio
Voice Config
Microphone
Voice Error ไม่ได้หมายความว่า qb-core พัง
ควร Debug Voice Layer แยกต่างหาก
㊽ ทดสอบ Admin Permission
Current QBCore server.cfg มี Permission Structure เช่น
qbcore.god
qbcore.admin
qbcore.mod
และใช้ Cfx ACE/Principal System ร่วมด้วย
txAdmin สามารถกำหนด Owner Permission ในขั้น Setup
สำหรับ Admin เพิ่มเติมควรใช้ Identifier และ Permission อย่างถูกต้อง
อย่าแจก god ให้ผู้เล่นทั่วไปเพื่อแก้ Command ใช้ไม่ได้
㊾ QBCore Command สำหรับทดสอบมีอะไร
ใน Development Environment มี Admin Commands ที่ช่วยทดสอบ เช่นแนวคิด
givemoney
setmoney
car
ตาม Permission ของ Current QBCore
ใช้สำหรับทดสอบ Base Flow ได้
แต่ Production Server ต้องควบคุม Permission อย่างเข้มงวด
อย่าเปิด Admin Commands ให้กลุ่มผู้เล่นทั่วไป
㊿ ตรวจ F8
ปัญหาฝั่ง Client เช่น
Menu ไม่เปิด
HUD ไม่ขึ้น
Target ไม่ทำงาน
NUI Error
Character UI มีปัญหา
ควรเปิด
F8
แล้ว Trigger Feature อีกครั้ง
หา Error แรกที่เกี่ยวข้องกับ Resource
ตัวอย่าง
@qb-something/client/main.lua:123
จุดนี้ช่วยแยก Client Problem ออกจาก Server Problem
51. ตรวจ Server Console
ปัญหาอย่าง
Player ไม่โหลด
เงินไม่ Save
Item ไม่เข้า
Database Error
Callback ไม่ตอบ
Job Error
มักต้องดู Server Console
ถ้าเจอ Error ต่อกันหลายบรรทัด ให้แก้ Error แรก ก่อน
เพราะ Error หลัง ๆ อาจเป็นเพียงผลตามมาจาก Dependency ตัวเดียวเสีย
52. วิธีเช็กว่า QBCore Base พร้อมจริง
ก่อนเพิ่ม Custom Script ควรผ่านทั้งหมด
FXServer เปิด
Database Connected
qb-core Started
เข้า Server ได้
สร้าง Character ได้
Spawn ได้
Citizen ID ถูกสร้าง
Money โหลด
Job โหลด
Inventory เปิด
Reconnect แล้ว Data ยังอยู่
เมื่อ Base ผ่านทั้งหมดจึงควรเริ่ม Customization
53. Backup Clean QBCore Base
หลังทดสอบ Base สำเร็จ ให้ Backup ทันที
เก็บ
resources/
server.cfg
Database
txAdmin Profile
เป็น Version เช่น
qbcore-clean-working-base
หากภายหลังลง Script แล้ว Server พัง จะสามารถเปรียบเทียบกับ Base ที่รู้ว่าใช้งานได้
54. ลง Script ใหม่ทีละตัว
Workflow ที่ดีที่สุดคือ
Clean Base
↓
Install Script A
↓
Test
↓
Install Script B
↓
Test
↓
Install Script C
ไม่ควร
ดาวน์โหลด 100 Scripts
↓
ใส่พร้อมกัน
↓
Restart
↓
Console มี 300 Errors
ยิ่ง Server ใหญ่ การควบคุม Change ทีละชุดยิ่งสำคัญ
55. ก่อนลง QBCore Script ต้องตรวจอะไร
ตรวจ
QBCore Version
Dependencies
Inventory
Target
Database
SQL
Voice
ox_lib
Resource Name
Config
โดยเฉพาะคำว่า
QBCore Compatible
ไม่ได้หมายความว่า Inventory/Target ทุกแบบจะรองรับ
ต้องดู Compatibility Stack ทั้งชุด
56. Script ขึ้น No Such Export หลังติดตั้ง
ตรวจ
Resource ที่ถูกเรียก Started?
Export Name ถูก?
Resource Name ถูก?
Client/Server Side ถูก?
Version ตรง?
ตัวอย่าง Script อาจเรียก Export ของ
qb-core
qb-inventory
qb-target
ที่ Version ปัจจุบันไม่มี
อย่าแก้ด้วยการสร้าง Function ปลอมเพื่อให้ Error หาย
57. QBCore Object เป็น nil
Custom Scripts จำนวนมากใช้
local QBCore = exports['qb-core']:GetCoreObject()
ถ้า QBCore เป็น nil หรือ Export หาไม่เจอ ให้ตรวจ
qb-core Started?
Folder ชื่อ qb-core?
Start Order?
Script Version?
fxmanifest?
อย่า Rename qb-core
เพราะ Resource จำนวนมากอ้างชื่อนี้โดยตรง
58. Player Object เป็น nil
Server-side QBCore Scripts มักทำ
local Player = QBCore.Functions.GetPlayer(source)
ถ้า Player เป็น nil
ตรวจ
Player Loaded แล้วหรือยัง
source ถูกไหม
Player Disconnect แล้วหรือไม่
Event Timing
ไม่ควรทำต่อกับ
Player.Functions
โดยไม่ตรวจว่า Player Object มีจริง
59. QBCore Script ไม่ทำงานหลังเปลี่ยน Inventory
นี่เป็นปัญหาที่พบบ่อย
ตัวอย่าง
Base
→ qb-inventory
เปลี่ยน
→ Inventory ใหม่
แล้ว Scripts อย่าง
Shop
Police
Crafting
Stash
Job
บางตัวหยุดทำงาน
เพราะ Script เหล่านั้นอาจเรียก qb-inventory API โดยตรง
ก่อน Migration Inventory ต้อง Search Dependencies ทั้ง Server
60. Checklist หลังติดตั้ง QBCore
FXServer
ใช้ Current/Recommended Artifact
txAdmin ทำงาน
Cfx Account ถูก
Server Registration Key ถูก
Database
MariaDB/MySQL ทำงาน
Database ถูกสร้าง
Database User ถูก
Password ถูก
oxmysqlเชื่อมสำเร็จqbcore.sqlถูก Import
Core
qb-coreStartไม่มี Missing Dependency
ไม่มี Critical Script Error
Player
Multicharacter ทำงาน
Character สร้างได้
Spawn ได้
Citizen ID มี
PlayerData โหลด
Money โหลด
Job โหลด
Gameplay Base
Inventory เปิด
Target ทำงานตาม Config
Voice ทำงาน
Admin Permission ถูก
Debug
Server Console สะอาด
F8 ไม่มี Critical Error
Reconnect แล้วข้อมูลไม่หาย
เมื่อผ่านทั้งหมดนี้ QBCore Base จึงพร้อมสำหรับการพัฒนาต่อ
วิธีติดตั้ง QBCore แบบสั้นที่สุด
ถ้าต้องการเฉพาะลำดับสำคัญ ให้ทำดังนี้
① ติดตั้ง MariaDB/MySQL
② สร้าง Database สำหรับ QBCore
③ ดาวน์โหลด FiveM Server Artifact รุ่นปัจจุบัน
④ เปิด FXServer
⑤ เข้า txAdmin
⑥ Link Cfx Account
⑦ สร้าง Server Profile
⑧ เลือก Popular Recipes
⑨ เลือก QBCore Framework
⑩ กำหนด Server Data Folder
⑪ ใส่ Database Connection
⑫ สร้าง Server Registration Key ผ่าน Cfx Portal
⑬ ใส่ Key ใน Recipe
⑭ Run Recipe
⑮ รอ Resource และ SQL ติดตั้งครบ
⑯ Save & Run Server
⑰ ตรวจ oxmysql
⑱ ตรวจ qb-core
⑲ เข้าเกมสร้าง Character
⑳ ทดสอบ Money / Job / Inventory
㉑ Reconnect ตรวจ Persistence
㉒ Backup Clean Base
㉓ ค่อยติดตั้ง Custom Scripts
ติดตั้ง QBCore แบบ Manual ได้ไหม
ได้
แต่ต้องจัดการเองมากขึ้น เช่น
qb-core
oxmysql
Database Schema
QBCore Resources
Voice
Inventory
Target
server.cfg
Permissions
Dependencies
Manual Installation เหมาะกับทีมที่
เข้าใจ Resource Architecture
มี Deployment Pipeline
ต้องการ Minimal Stack
ต้องการ Pin Versions
มี DevOps Workflow
สำหรับมือใหม่ Official Recipe ง่ายกว่าและมีโอกาสประกอบ Version ผิดน้อยกว่า
อย่าใช้ QBCore Ready Server จากแหล่งสุ่มเป็น Base
Ready Server อาจดูเหมือนสะดวกเพราะมี
Cars
Jobs
Maps
Phone
Housing
Scripts
ครบ
แต่ภายในอาจมี
Core ถูกแก้
Scripts คนละ Version
Database รก
Dependencies ซ้ำ
Leaked Resources
Backdoor
Performance Problems
เมื่อ Error จะไม่รู้ว่าเริ่มจากจุดใด
Base ที่สะอาดมีค่ามากกว่า Server Pack ที่ Feature เยอะแต่ไม่รู้ที่มา
อย่าแก้ qb-core โดยตรงทุกครั้ง
ถ้าต้องการเพิ่มระบบใหม่ พยายามเขียนเป็น Resource แยก
เช่น
qb-core
↓
Exports / Functions / Events
↓
my-job
my-business
my-system
แทนการแก้
qb-core/server/player.lua
qb-core/server/functions.lua
ทุกครั้ง
เพราะยิ่งแก้ Core มากเท่าไร การ Update QBCore ในอนาคตยิ่งยากขึ้น
Production Server ควรมี Test Server
ก่อน Update
qb-core
qb-inventory
qb-phone
qb-houses
Database Schema
ควรทดสอบบน Development/Test Server ก่อน
Workflow ที่ปลอดภัยคือ
Backup
↓
Clone Test
↓
Update
↓
Test Character
↓
Test Money
↓
Test Jobs
↓
Test Inventory
↓
Test Custom Scripts
↓
ค่อย Production
โดยเฉพาะ Framework Core เพราะ Resource จำนวนมากพึ่งมัน
สรุปวิธีติดตั้ง QBCore FiveM
วิธีติดตั้ง QBCore FiveM ที่เหมาะกับ Server ใหม่ที่สุดคือใช้
FXServer
+
txAdmin
+
Official QBCore Framework Recipe
Official Recipe ปัจจุบันจัดการทั้ง
Database Schema
oxmysql
qb-core
qb-* Resources
qb-inventory
qb-target
pma-voice
Maps
server.cfg
ให้เป็น Base Server
ปัจจุบัน qb-core ใช้ fxmanifest.lua แบบ cerulean และประกาศ oxmysql เป็น Dependency โดยตรง ดังนั้น Database ต้องพร้อมก่อนจะคาดหวังให้ระบบ Player ทำงานครบ
หลัง Recipe ติดตั้งเสร็จ สิ่งสำคัญที่สุดไม่ใช่รีบลง Scripts เพิ่ม แต่ต้องพิสูจน์ว่า Base ทำงานก่อน
Database Connected
↓
qb-core Started
↓
Character Created
↓
PlayerData Loaded
↓
Money Loaded
↓
Job Loaded
↓
Inventory Working
↓
Reconnect
↓
Data Still Exists
เมื่อผ่านทั้งหมดแล้วให้ Backup Clean Base
แนวทางของ comsiam คือสร้าง QBCore Server จาก Official Recipe ที่สะอาด แล้วเพิ่ม Phone, Housing, Jobs, Maps และ Paid Scripts ทีละระบบ วิธีนี้ทำให้เมื่อเกิด Error สามารถระบุ Resource ที่เป็นต้นเหตุได้ทันที
สำหรับ Server ที่ตั้งใจเปิดระยะยาว comsiam แนะนำให้หลีกเลี่ยงการแก้ qb-core โดยตรงถ้าไม่จำเป็น ให้ Custom ผ่าน Resource และ Bridge แยกออกมา รวมทั้งมี Test Server และ Database Backup ก่อน Update Framework ทุกครั้ง เพราะ QBCore Core เป็น Dependency กลางของระบบ Character, Money, Jobs และ Scripts จำนวนมาก
Comments
Post a Comment