วิธีติดตั้ง 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-core Start

  • ไม่มี 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

Popular posts from this blog

FiveM ยังน่าเล่นไหม? Enhanced เปลี่ยน FiveM แค่ไหน

FiveM คืออะไร เล่นอย่างไร สำหรับมือใหม่ เริ่มต้นตั้งแต่ศูนย์

วิธีตั้ง Admin Permission ด้วย add_ace และ add_principal FiveM แบบละเอียด