FiveM Resource Started แต่ใช้งานไม่ได้ แก้อย่างไร
FiveM Resource ขึ้นว่า Started resource แต่เข้าเกมแล้วใช้งานไม่ได้ เป็นปัญหาที่ทำให้หลายคนสับสน เพราะดูจาก Server Console เหมือน Script เปิดสำเร็จแล้ว แต่เมื่อเข้าเกมกลับไม่มี Menu, Marker, Target, NPC หรือระบบที่ควรทำงาน
ตัวอย่างเช่น Console แสดง
Started resource my-script
แต่เมื่อเข้าเกมกลับพบว่า
กดใช้งานไม่ได้
Menu ไม่เปิด
Marker ไม่ขึ้น
NPC ไม่ Spawn
Target ไม่ขึ้น
Command ใช้ไม่ได้
Inventory ไม่ทำงาน
Database ไม่บันทึก
Job ใช้ระบบไม่ได้
UI ไม่แสดง
ไม่มี Error ชัดเจนใน Server Console
สิ่งสำคัญที่ต้องเข้าใจคือ Resource Started ไม่ได้แปลว่า Script ทุกส่วนทำงานสมบูรณ์
FiveM สามารถ Start Resource ได้สำเร็จ แต่ Client Script, Framework Integration, Database, Config หรือระบบภายใน Resource ยังสามารถเกิดปัญหาภายหลังได้
แนวทางตรวจที่แนะนำคือ
Resource Started
↓
ดู Server Console ต่อ
↓
ตรวจ F8 ฝั่ง Client
↓
ตรวจ Framework
↓
ตรวจ Dependency
↓
ตรวจ Config
↓
ตรวจ Job / Item / Permission
↓
ตรวจ Database
↓
ตรวจ Target / Inventory / UI
↓
ทดสอบ Feature จริง
① Started resource หมายความว่าอะไร
เมื่อ Console แสดง
Started resource my-script
โดยพื้นฐานหมายความว่า FiveM ได้เข้าสู่กระบวนการ Start Resource นั้นแล้ว
FiveM มี Event สำหรับ Resource Lifecycle เช่น onResourceStart และฝั่ง Client มี onClientResourceStart ซึ่งจะเกิดขึ้นเมื่อ Resource เริ่มทำงาน
แต่ข้อความนี้ไม่ได้รับประกันว่า Logic ทุกส่วนภายใน Script จะทำงานได้ถูกต้องตลอดเวลา
ตัวอย่าง
Resource Start สำเร็จ
↓
Client โหลด Script
↓
ผู้เล่นกดเปิด Garage
↓
Script เรียก Export ของ Inventory
↓
Export ไม่มี
↓
เกิด Error
ตอน Server Boot Resource อาจดูปกติ แต่ Error จะเกิดก็ต่อเมื่อผู้เล่นเรียก Feature นั้น
นี่เป็นเหตุผลว่าทำไม คำว่า Started จึงไม่เท่ากับ Tested
② หลังเห็น Started Resource ต้องอ่าน Console ต่อ
อย่าหยุดอ่านทันทีเมื่อเห็น
Started resource my-script
ให้ดูข้อความหลังจากนั้นด้วย
อาจพบ
SCRIPT ERROR
No such export
attempt to index a nil value
Table doesn't exist
Unknown column
บาง Script จะ Initialize สำเร็จก่อน แล้วจึงเริ่มเรียก Framework, Database หรือ Dependency
ตัวอย่าง
Started resource garage
ผ่านไปไม่กี่บรรทัด
SCRIPT ERROR: @garage/server/main.lua:...
กรณีนี้ Resource Start แล้วจริง แต่ Logic ภายในเกิด Error
ดังนั้นต้องอ่าน Console ตั้งแต่ก่อน Start ไปจนถึงหลัง Start ของ Resource นั้น
③ ตรวจ F8 เพราะ Error อาจเกิดฝั่ง Client
นี่เป็นจุดที่สำคัญมาก
ถ้า Server Console ไม่มี Error แต่ระบบในเกมไม่ทำงาน ให้เข้า FiveM แล้วกด
F8
เพื่อเปิด Client Console
จากนั้นทดลอง Feature อีกครั้ง
ตัวอย่าง
เปิด F8
↓
ปิด F8
↓
เดินไปจุด Garage
↓
กด E
↓
ไม่มีอะไรเกิดขึ้น
↓
เปิด F8
↓
ดู Error ล่าสุด
Client Error มักเกี่ยวข้องกับอาการอย่าง
Marker ไม่ขึ้น
Target ไม่ขึ้น
Menu ไม่เปิด
UI ไม่แสดง
NPC ไม่ Spawn
Animation ไม่ทำงาน
Interaction ไม่มี
Keybind กดไม่ได้
ดังนั้นถ้าเห็น
Started resource my-script
ใน Server Console แล้วคิดว่า Script ไม่มี Error อาจพลาดปัญหาฝั่ง Client ได้
④ ตรวจว่า Client Script ถูกโหลดจริงหรือไม่
เปิด
fxmanifest.lua
แล้วดูว่า Client File ถูกประกาศหรือไม่
ตัวอย่าง
client_script 'client.lua'
หรือ
client_scripts {
'client/*.lua'
}
จากนั้นตรวจว่าไฟล์มีอยู่จริง
ตัวอย่าง Manifest ระบุ
client_script 'client.lua'
แต่ Resource จริงเป็น
client/
└── main.lua
ก็ไม่ตรงกัน
ควรเป็น
client_script 'client/main.lua'
หรือ
client_scripts {
'client/*.lua'
}
ถ้า Client Script ไม่ถูกโหลด Resource อาจยัง Start ได้ แต่ระบบที่ผู้เล่นต้องมองเห็นหรือโต้ตอบอาจไม่ทำงาน
⑤ ตรวจ Server Script ด้วย
หลักเดียวกันใช้กับ Server Script
ตัวอย่างใน fxmanifest.lua
server_scripts {
'server/*.lua'
}
ถ้าไฟล์ Server ไม่ถูกโหลด ระบบบางอย่างอาจหาย เช่น
Database
Money
Player Data
Item
Callback
Server Event
Permission
Job Logic
ตัวอย่างเช่น Menu ฝั่ง Client เปิดได้ แต่กดซื้อของแล้วไม่มีอะไรเกิดขึ้น เพราะ Server-side Logic ไม่ทำงาน
จึงต้องแยกว่า
UI เปิดไม่ได้
กับ
UI เปิดได้ แต่ Action ไม่ทำงาน
เป็นปัญหาคนละส่วน
⑥ ตรวจ Dependency ถึงแม้ Resource จะ Started
Resource บางตัวสามารถ Start ได้ แต่ Feature บางส่วนอาจต้องใช้ Dependency เพิ่ม
ตัวอย่าง Script อาจต้องใช้
ox_lib
oxmysql
ox_target
Framework
Inventory
Notification
บาง Dependency อาจประกาศใน Manifest
dependency 'ox_lib'
แต่บาง Integration อาจถูกเลือกผ่าน Config แทน และไม่ได้เป็น Hard Dependency
ตัวอย่าง
Config.Target = 'ox_target'
ถ้า ox_target ไม่ทำงาน Script อาจ Start ได้ แต่ Interaction ไม่ขึ้น
หรือ
Config.Inventory = 'ox_inventory'
ถ้า Inventory ไม่ตรง ระบบ Item อาจใช้ไม่ได้
ดังนั้น Resource Started แล้วก็ยังต้องตรวจ Dependency และ Integration อยู่
⑦ ตรวจ Start Order
Script สามารถ Start ได้ในบางสถานการณ์ แต่ Initialize ไม่สมบูรณ์เพราะ Resource ที่ต้องใช้ยังไม่พร้อม
ตัวอย่างไม่เหมาะสม
ensure my-script
ensure ox_lib
ถ้า my-script เรียก ox_lib ตั้งแต่ตอน Initialization
ควรเป็น
ensure ox_lib
ensure my-script
หรือหากมี Database
ensure oxmysql
ensure ox_lib
ensure my-script
ลำดับจริงขึ้นอยู่กับ Resource
หลักสำคัญคือ
Resource ที่ถูกเรียกใช้
↓
ต้องพร้อมก่อน
↓
Resource ที่เรียกมัน
ถ้า Script ใช้ ESX, QBCore หรือ Qbox ต้องตรวจลำดับของ Framework ด้วย
⑧ Resource ใช้ Framework ไม่ตรง
นี่เป็นสาเหตุใหญ่มากของอาการ
Started แล้ว แต่ใช้ไม่ได้
สมมติ Script สร้างสำหรับ
QBCore
แต่ Server ใช้
ESX
Resource อาจไม่ได้ Crash ทันที แต่เมื่อพยายามเรียก Player Data หรือ Job ระบบจึงล้มเหลว
Script ที่รองรับหลาย Framework อาจมี Config เช่น
Config.Framework = 'esx'
หรือ
Config.Framework = 'qb'
หรือ
Config.Framework = 'qbox'
ต้องตั้งให้ตรง
อย่าคิดว่า Script ที่เขียนว่า “FiveM Script” จะใช้กับ Framework ทุกตัวได้โดยอัตโนมัติ
⑨ Auto Detect Framework ก็ผิดได้
Script รุ่นใหม่จำนวนหนึ่งมี Auto Detection
เช่นตรวจว่ามี Resource
es_extended
qb-core
qbx_core
หรือไม่
แต่ Auto Detection อาจมีปัญหาเมื่อ
Rename Resource
ใช้ Framework Fork
Start Order ผิด
ใช้ Version ไม่รองรับ
มี Framework เก่าค้างอยู่
มี Resource หลายตัวที่ทำให้ตรวจผิด
หาก Script มี Config ให้เลือก Framework เอง การตั้งแบบ Explicit อาจช่วยลดความสับสนได้ แต่ต้องยึด Documentation ของ Script เป็นหลัก
⑩ ตรวจ config.lua ทั้งไฟล์
Resource Started แต่ใช้ไม่ได้จำนวนมากเกิดจาก Config
อย่าตรวจเฉพาะ
Config.Framework
ควรตรวจทั้งไฟล์
ค่าที่พบบ่อย เช่น
Framework
Inventory
Target
Notification
Language
Job
Item
Coordinates
Distance
Permission
Debug
Keybind
ตัวอย่าง
Config.Job = 'police'
แต่ Server ใช้ Job
lspd
ผู้เล่นจึงไม่ผ่านเงื่อนไข
Script ทำงานปกติ เพียงแต่ไม่มีผู้เล่นที่เข้าเงื่อนไข
จากมุมมองผู้ใช้งานจึงดูเหมือน Script เสีย
⑪ Job ผิดทำให้ระบบไม่แสดง
สมมติ Police Script Start สำเร็จ แต่ตำรวจเปิด Locker ไม่ได้
ตรวจ
Config.Job = 'police'
จากนั้นตรวจ Player Data ว่า Job จริงคืออะไร
อาจพบว่าใช้
police
ถูกต้อง แต่ผู้เล่นยัง
Off Duty
หรือ Grade ต่ำกว่าที่ Config กำหนด
จึงต้องตรวจเพิ่ม
Job Name
Job Grade
Duty
Boss Grade
Permission
ระบบอาชีพมักไม่ได้ตรวจเพียงชื่อ Job อย่างเดียว
⑫ Item ไม่มี ทำให้บางระบบเหมือนใช้งานไม่ได้
Script อาจ Start ปกติ แต่ต้องใช้ Item ที่ Server ยังไม่มี
ตัวอย่าง Repair Script ต้องใช้
repairkit
แต่ Inventory ไม่มี Item นี้
ผู้เล่นจึงเปิดหรือใช้ Feature ไม่ได้
ตรวจ Documentation ว่าต้องเพิ่ม Item เช่น
repairkit
lockpick
radio
phone
fishing_rod
หรือไม่
และต้องระวังชื่อ
repairkit
กับ
repair_kit
ถือเป็นคนละชื่อ
⑬ Inventory Integration ผิด
Inventory เป็น Dependency ที่เชื่อมกับ Script จำนวนมาก
Script อาจมี
Config.Inventory = 'ox_inventory'
แต่ Server ใช้ Inventory ระบบอื่น
อาการอาจเป็น
เปิด Stash ไม่ได้
Give Item ไม่ได้
Remove Item ไม่ได้
Shop ไม่เปิด
Trunk ใช้ไม่ได้
Item ไม่ถูกตรวจพบ
Resource ยังสามารถแสดง Started ได้ เพราะ Error เกิดก็ต่อเมื่อ Function Inventory ถูกเรียก
ให้ตรวจว่า Script รองรับ Inventory ที่ใช้อยู่จริงหรือไม่
⑭ Target ไม่ขึ้นแม้ Resource Started
ถ้า Script ใช้ ox_target หรือ Target System อื่น แล้วไม่มี Target ขึ้น ให้ตรวจ
Target Resource ทำงานหรือไม่
เช่น
ensure ox_target
Config เลือก Target ถูกหรือไม่
ตัวอย่าง
Config.Target = 'ox_target'
Start Order
Target ควรพร้อมก่อน Script ที่เรียกใช้งาน หาก Resource นั้นต้องการเช่นนั้น
Job Requirement
Target บางจุดปรากฏเฉพาะ Job
Distance
ระยะ Interaction อาจสั้นมาก
Zone / Model
Script อาจกำหนด Model หรือ Coordinates ผิด
F8
Client Error จะช่วยบอกได้มากที่สุด
⑮ Marker ไม่ขึ้นตรวจอะไร
ถ้า Resource เป็น Script แบบ Marker ไม่ใช่ Target ให้ตรวจ
Client Script ถูกโหลดหรือไม่
Coordinates ถูกหรือไม่
Z Coordinate ถูกหรือไม่
Draw Distance
Job Requirement
Config เปิด Marker หรือไม่
Client Error
Thread ทำงานหรือไม่
ตัวอย่าง Coordinates
vector3(100.0, 200.0, 30.0)
ถ้า Map หรือ MLO ถูกเปลี่ยน จุดจริงอาจอยู่คนละตำแหน่ง
Script จึงทำงาน แต่ Marker อยู่ที่อื่น
⑯ NPC ไม่ Spawn
ถ้า Resource Started แต่ NPC ไม่ปรากฏ ให้ตรวจ
Client Error
Ped Model
Model Name
Coordinates
Heading
Spawn Function
Streaming
Distance
Config Enable NPC
Resource Version
บาง Script Spawn NPC เฉพาะเมื่อผู้เล่นเข้าใกล้พื้นที่
จึงไม่ควรสรุปว่า NPC ต้องปรากฏทันทีหลัง Resource Start
ลองไปยัง Coordinates ที่กำหนดแล้วตรวจ F8
⑰ Menu ไม่เปิด
Menu ไม่เปิดมีหลายต้นเหตุ
เช่น Script ใช้
ox_lib
qb-menu
ESX Menu
Custom NUI
ถ้า Library หรือ Menu Resource ไม่พร้อม UI ก็ไม่เปิด
ตรวจ
F8
ทันทีหลังพยายามเปิด Menu
ถ้า Script ใช้ ox_lib ให้ตรวจว่ามีการติดตั้งและ Start Resource ตาม Documentation
ถ้าใช้ Framework Menu ให้ตรวจ Version และ Compatibility
⑱ UI หรือ NUI ไม่ขึ้น
Resource ที่มี HTML UI อาจใช้
ui_page 'html/index.html'
พร้อมกำหนด Files
files {
'html/index.html',
'html/style.css',
'html/script.js'
}
ถ้า UI ไม่ขึ้นให้ตรวจ
ui_pagePathHTML มีจริง
CSS/JS มีจริง
Build Folder มีหรือไม่
Resource Package สมบูรณ์หรือไม่
F8 Error
NUI Callback
Front-end ถูก Build แล้วหรือไม่
Script บางโปรเจกต์บน GitHub มี Source Front-end แต่ไม่ได้รวม Production Build
หาก Download ผิด Package Resource อาจ Start ได้แต่ UI ไม่สามารถแสดงได้
⑲ Script มี Command แต่ใช้ไม่ได้
ถ้า Documentation บอกว่ามี Command เช่น
/garage
แต่ใช้ไม่ได้ ให้ตรวจ
Command ถูก Register หรือไม่
Client/Server Script ที่ Register Command ถูกโหลดหรือไม่
Permission
Job
ACE
Config Enable Command
Command Name
บาง Script เปลี่ยน Command ใน Config ได้
ตัวอย่าง
Config.Command = 'mygarage'
ดังนั้น Command จริงอาจไม่ใช่ชื่อใน Tutorial เก่า
⑳ Keybind กดแล้วไม่มีอะไรเกิดขึ้น
ถ้า Script ใช้ปุ่ม เช่น
E
F1
F2
F6
แล้วกดไม่ทำงาน ให้ตรวจ
Keybind ถูกเปลี่ยนหรือไม่
Command ที่ Bind ยังมีอยู่หรือไม่
Player อยู่ใน Zone หรือไม่
Job ผ่านเงื่อนไขหรือไม่
Client Script ทำงานหรือไม่
F8 มี Error หรือไม่
FiveM Resource บางตัวใช้ระบบ Key Mapping ทำให้ผู้เล่นสามารถเปลี่ยนปุ่มเองได้
ดังนั้นอย่าฟันธงว่า Script เสียเพียงเพราะปุ่มที่คู่มือเก่าระบุใช้ไม่ได้
㉑ Database ไม่พร้อม
Resource ที่เกี่ยวกับข้อมูลอาจ Start ได้ก่อนที่จะเจอ Database Error จริงตอนมี Query
ตัวอย่าง
Garage Started
↓
ผู้เล่นเปิด Garage
↓
Script Query Database
↓
Table ไม่มี
↓
Error
จึงเกิดอาการ
Resource Started
แต่ Garage ไม่ขึ้น
ให้ตรวจ Server Console ตอนผู้เล่นกดใช้งาน
Error ที่ควรดู เช่น
Table doesn't exist
Unknown column
SQL Error
ตรวจว่า
Import SQL แล้ว
Migration ครบ
Database ถูกตัว
Table มี
Column ครบ
oxmysql ทำงาน
㉒ oxmysql มีปัญหา
ถ้า Resource ใช้ Database ผ่าน oxmysql ให้ตรวจว่า oxmysql ทำงานก่อน
ตัวอย่าง
ensure oxmysql
ensure my-script
ถ้า Database Connection มีปัญหา Script อาจยัง Start แต่ Feature ที่ต้องอ่านหรือเขียน Database จะล้มเหลว
ถ้าพบว่า Phone, Garage, Banking และ Housing มีปัญหาพร้อมกัน ควรตรวจ Database Layer ก่อนจะสรุปว่า Script หลายตัวเสียพร้อมกัน
㉓ SQL Import แล้วแต่ยังใช้งานไม่ได้
การมี Table ไม่ได้หมายความว่า Schema ตรงกับ Script Version
ตัวอย่าง Script Version ใหม่ต้องการ
garage_type
แต่ Database Table รุ่นเก่ายังไม่มี Column นี้
อาจขึ้น
Unknown column
ดังนั้นต้องตรวจ
Script Version
↔
Database Schema
โดยเฉพาะหลังอัปเดต Script
ถ้ามี
migration.sql
update.sql
ให้ทำตาม Update Guide ของ Developer
㉔ No Such Export
Resource Started แต่เมื่อลองใช้งานขึ้น
No such export
มักเกิดเมื่อ Resource เรียก Function จาก Resource อื่นแต่ Export นั้นไม่พบ
ตรวจ
Resource เป้าหมาย Start หรือไม่
ชื่อ Resource ถูกหรือไม่
Export Name ถูกหรือไม่
Version Compatible หรือไม่
API เปลี่ยนหรือไม่
Start Order ถูกหรือไม่
ตัวอย่าง
Phone
↓
เรียก Inventory Export
↓
Inventory Version ใหม่ไม่มี Export เดิม
↓
Phone Error
ในกรณีนี้ Restart Phone ซ้ำ ๆ ไม่แก้ปัญหา ต้องแก้ Compatibility
㉕ Event หรือ Callback ไม่ทำงาน
Script สามารถ Start ได้ครบ แต่ Flow ขาดตรง Event หรือ Callback
ตัวอย่าง
Client กดปุ่ม
↓
ส่ง Event
↓
Server รับ
↓
ตรวจ Player Data
↓
ส่ง Callback กลับ
↓
เปิด Menu
ถ้าขั้นใดขั้นหนึ่ง Error ผู้เล่นอาจเห็นเพียงว่า “กดแล้วเงียบ”
ให้ตรวจทั้ง
F8
+
Server Console
พร้อมกัน
โดยเฉพาะหลัง Update Framework หรือ Script เพราะ Event/Callback API อาจเปลี่ยน
㉖ Permission ทำให้ดูเหมือน Script เสีย
ระบบ Admin หรือ Job บางตัวอาจมี Resource Started ปกติ แต่ User ไม่มีสิทธิ์ใช้
Script อาจตรวจ
ACE Permission
Framework Group
Job
Grade
Identifier
Discord Role
ตัวอย่าง Admin ใช้งานได้ แต่ Player ทั่วไปใช้ไม่ได้
กรณีนี้ Script อาจทำงานถูกต้องทุกอย่าง
ควรตรวจ Permission ก่อนแก้ Code
㉗ Script ใช้ได้กับ Admin แต่ไม่ได้กับตำรวจ
ให้ตรวจเงื่อนไข Job
เช่น
Config.AllowedJob = 'police'
และ Grade
Config.MinGrade = 2
ผู้เล่น Grade 1 จึงใช้ไม่ได้
หรือ Script อาจต้อง
On Duty
จึงจะแสดง Interaction
ก่อนสรุปว่า Script Error ให้ทดสอบ Account ที่ตรง Requirements ทุกข้อก่อน
㉘ Resource Started แต่ผู้เล่นเก่ามองไม่เห็น Script
บางกรณี Resource ถูก Start หลังผู้เล่นเข้า Serverไปแล้ว
Script อาจต้องมี Initialization ที่ทำงานตอน Player Load หรือ Resource Start
หาก Developer เขียนระบบ Initialization ไม่ครอบคลุมทุก Lifecycle การ Restart Resource กลางเกมอาจทำให้ผู้เล่นบางคนไม่ได้ State ที่ต้องการ
ลอง
Reconnect
เพื่อทดสอบว่าอาการต่างกันหรือไม่
ถ้า Reconnect แล้วใช้งานได้ แต่ Hot Restart แล้วไม่ได้ อาจเป็นปัญหา Initialization/Lifecycle ของ Script
กรณีนี้ควรแจ้ง Developer เพราะการบังคับให้ผู้เล่น Reconnect ทุกครั้งไม่ใช่วิธีแก้ที่ดีในระยะยาว
㉙ Resource Restart แล้วใช้ไม่ได้ แต่ Restart Server แล้วได้
อาการนี้อาจชี้ไปที่ Initialization หรือ Dependency State
ตัวอย่าง Script ต้องโหลดข้อมูลบางอย่างเฉพาะตอน Server Boot แต่ไม่ได้รองรับ Resource Restart อย่างสมบูรณ์
ให้ตรวจ
onResourceStartPlayer Initialization
Framework Ready Event
Cached Data
Database Initialization
Dependency State
ถ้าเป็น Third-party Script ควรตรวจ Documentation ว่ารองรับ Hot Restart หรือไม่
Resource สำคัญบางชนิดไม่เหมาะกับการ Restart ขณะมีผู้เล่นออนไลน์
㉚ Restart Server แล้ว Script ใช้ไม่ได้ แต่ ensure ใหม่แล้วได้
อาการนี้มักชี้ไปทาง Start Order
ตัวอย่างตอน Boot
ensure my-script
ensure ox_lib
ตอน my-script Start Library ยังไม่พร้อม
หลัง Server เปิดเสร็จคุณพิมพ์
ensure my-script
อีกครั้ง
คราวนี้ ox_lib พร้อมแล้ว Script จึงใช้งานได้
วิธีแก้ควรจัด Startup Order
ensure ox_lib
ensure my-script
ไม่ใช่สั่ง ensure ใหม่ด้วยมือทุกครั้งหลัง Server เปิด
㉛ Resource Started แต่เฉพาะบาง Feature ใช้ไม่ได้
นี่เป็นข้อมูลที่ช่วย Debug ได้มาก
ตัวอย่าง
Garage Menu เปิดได้
รถออกได้
แต่เก็บรถไม่ได้
แสดงว่า Resource ไม่ได้เสียทั้งหมด
ควรเจาะเฉพาะ Workflow “Store Vehicle”
หรือ
Phone เปิดได้
Contacts ใช้ได้
แต่ Calls ไม่ทำงาน
ให้ตรวจระบบ Calls และ Dependency ที่เกี่ยวข้อง
อย่า Reinstall Script ทั้งตัวทันที เพราะสามารถทำลาย Config ที่ถูกต้องอยู่แล้ว
㉜ Script ใช้ได้บางคน บางคนใช้ไม่ได้
ถ้า Script ใช้ได้สำหรับผู้เล่น A แต่ไม่ได้สำหรับผู้เล่น B โอกาสที่ Resource Start มีปัญหาจะลดลง
ให้ตรวจข้อมูลเฉพาะ Player เช่น
Job
Grade
Permission
Character Data
Inventory
Identifier
Metadata
Duty
Stored Data
ตัวอย่าง Player A เป็น
police grade 4
Player B เป็น
police grade 0
ระบบอาจกำหนดขั้นต่ำ Grade 2
Script จึงทำงานถูกต้อง ไม่ใช่ Resource Error
㉝ Script ใช้ได้จนกระทั่ง Update
ถ้า Version เดิมทำงานแต่ Version ใหม่ Resource ยัง Started แต่ Feature หาย ให้ตรวจ
Changelog
Config
Dependency
Framework Support
SQL Migration
Exports
Events
UI Build
อย่านำ Config เก่าทับของใหม่ทั้งไฟล์โดยอัตโนมัติ
ตัวอย่าง Version ใหม่เพิ่ม
Config.Target = 'ox_target'
แต่คุณใช้ Config เก่าที่ไม่มีค่าใหม่
Script อาจ Initialize ไม่ครบ
ควรเปรียบเทียบ Config เก่ากับใหม่แล้ว Merge ทีละค่า
㉞ Script ใช้ไม่ได้หลังเปลี่ยน QBCore เป็น Qbox
ถ้าเพิ่ง Migration Framework แล้ว Resource Started แต่ Script บางตัวใช้ไม่ได้ ต้องตรวจ Compatibility เป็นรายตัว
Qbox มี Compatibility กับ QBCore ecosystem หลายส่วน แต่ไม่ได้หมายความว่า Third-party QB Script ทุกตัวจะทำงานได้โดยไม่มีการตรวจสอบ
จุดที่ควรตรวจ ได้แก่
Core Object
Player Data
Jobs
Money
Callbacks
Events
Exports
Inventory
Metadata
Script ที่มี Qbox Version หรือ Bridge โดยตรงควรใช้ Integration ที่ Developer รองรับ
㉟ Script ใช้ไม่ได้หลังเปลี่ยน Inventory
ถ้า Resource Started แต่ Shop, Stash หรือ Item หายหลังเปลี่ยน Inventory นี่เป็นสัญญาณว่า Integration ไม่ตรง
ตรวจ
Config.Inventory
รวมถึง
Item Functions
Add/Remove Item
Metadata
Stash
Trunk
Shop
Export
ถ้าหลาย Script พังพร้อมกันหลังเปลี่ยน Inventory ให้แก้ Inventory Integration ก่อน ไม่ควร Reinstall Script ทุกตัว
㊱ Script ใช้ไม่ได้หลังเปลี่ยน ox_target
หลักเดียวกันใช้กับ Target
ถ้า Server เปลี่ยนจาก Target A เป็น ox_target แต่ Script ยัง Config แบบเก่า Interaction ก็อาจหายทั้งหมด
ตรวจ
Config
Bridge
Exports
Target Zones
Entity Target
Dependencies
และดู F8 ขณะเข้าใกล้จุดที่ควรมี Target
㊲ ต้องล้าง Cache หรือไม่
ไม่ควรล้าง Cache เป็นขั้นตอนแรก
ถ้า Resource Started แต่ Console บอก
No such export
ต้องแก้ Export/Compatibility
ถ้าบอก
Table doesn't exist
ต้องแก้ Database
ถ้า Job ผิดก็ต้องแก้ Job
การล้าง Cache ไม่สามารถแก้ปัญหาเหล่านี้ได้
ควรอ่าน Error ก่อนเสมอ
㊳ ใช้ Debug Mode ถ้ามี
ตรวจ Config ว่า Script มี
Config.Debug = false
หรือไม่
หาก Documentation อนุญาต สามารถเปิด
Config.Debug = true
ชั่วคราว
Debug Mode อาจช่วยแสดง
Zone
Coordinates
Framework
Events
Callback
Target
Player Data
ทำให้เห็นว่า Script ทำงานถึงขั้นไหนแล้ว
หลังแก้ปัญหาเสร็จควรตั้งค่ากลับตามคำแนะนำของ Developer
㊴ ใช้ print ช่วยทดสอบ Flow
หากเป็น Script ที่แก้ Source ได้ สามารถใช้ Debug Output แบบง่าย ๆ
ตัวอย่าง Client
print('Client loaded')
หรือ
print(Config.Framework)
หากกด F8 แล้วเห็น
Client loaded
อย่างน้อยเรารู้ว่า Client File ถูก Execute
ฝั่ง Server ก็ใช้ print() เพื่อดู Server Console ได้
อย่างไรก็ตาม อย่า Print Password, Token หรือ Secret ลง Console
และควรลบ Debug Output ที่ไม่จำเป็นหลังแก้เสร็จ
㊵ วิธีทดสอบว่า Resource ทำงานจริง
อย่าทดสอบแค่ข้อความ
Started resource
ให้ทดสอบ Workflow จริง
สมมติเป็น Garage
เข้า Garage
↓
Menu เปิด
↓
โหลดรายชื่อรถ
↓
นำรถออก
↓
เก็บรถ
↓
Database Update
↓
Reconnect
↓
ข้อมูลยังถูกต้อง
ถ้าเป็น Phone
เปิด Phone
↓
Contacts
↓
Message
↓
Call
↓
Database Save
↓
Reconnect
ถ้าเป็น Job
เข้า Duty
↓
ใช้ Interaction
↓
รับ Item
↓
ทำงาน
↓
รับเงิน
↓
ตรวจ Database/Player Data
นี่จึงเป็นการยืนยันว่า Resource ใช้งานได้จริง
㊶ วิธีแก้แบบเร็วเมื่อ Started แต่ใช้งานไม่ได้
ใช้ลำดับนี้
ขั้นที่ 1
ดู Server Console หลัง Resource Start
ขั้นที่ 2
เข้าเกมกด
F8
ขั้นที่ 3
ทดลอง Feature ที่เสีย
ขั้นที่ 4
ดู Error ที่เกิดทันที
ขั้นที่ 5
ตรวจ
Framework
Dependency
Config
ขั้นที่ 6
ตรวจ
Job
Item
Permission
Target
Inventory
ขั้นที่ 7
ถ้าเกี่ยว Database ให้ตรวจ
oxmysql
SQL
Table
Column
Migration
ขั้นที่ 8
ถ้าไม่มี Error ให้เปิด Debug Mode ตาม Documentation
ขั้นที่ 9
แก้ทีละจุด
ขั้นที่ 10
Restart Resource แล้วทดสอบใหม่
㊷ Checklist Resource Started แต่ใช้งานไม่ได้
Resource
Resource ขึ้น Started
ไม่มี Error หลัง Start
fxmanifest.luaโหลดไฟล์ครบClient Script ถูกโหลด
Server Script ถูกโหลด
Client
ตรวจ F8 แล้ว
Marker ทำงาน
Target ทำงาน
Menu ทำงาน
UI ทำงาน
Keybind ถูก
Framework
Framework ถูกตัว
Version รองรับ
Player Data โหลด
Job ถูก
Grade ถูก
Duty ถูก
Dependency
Dependency ครบ
Dependency Start สำเร็จ
Start Order ถูก
Export มีจริง
ระบบอื่น
Inventory ตรง
Target ตรง
Notification ตรง
Item มี
Permission ถูก
Database
oxmysql ทำงาน
SQL Import แล้ว
Table มี
Column ครบ
Migration ตรง Version
หลังแก้
Restart Resource
ทดสอบ F8
ตรวจ Server Console
ทดสอบ Workflow ทั้งระบบ
Reconnect
Restart Server
ทดสอบใหม่อีกครั้ง
สรุป FiveM Resource Started แต่ใช้งานไม่ได้ แก้อย่างไร
ถ้า FiveM ขึ้น
Started resource my-script
แต่ Script ใช้งานไม่ได้ อย่าสรุปว่า Resource ไม่มีปัญหาเพียงเพราะ Start สำเร็จ
คำว่า Started บอกว่ากระบวนการเริ่ม Resource ผ่านแล้ว แต่ Logic ภายในอาจเกิด Error ภายหลังได้ โดยเฉพาะเมื่อผู้เล่นเรียก Menu, Target, Database, Inventory, Event หรือ Export
จุดที่ควรตรวจมากที่สุดคือ
Server Console
F8
Framework
Dependency
Config
Job / Grade
Inventory
Target
Database
Exports / Events
ถ้า Server Console ไม่มี Error แต่ระบบในเกมไม่ทำงาน ให้ตรวจ F8 เป็นอันดับแรก เพราะ Client-side Error จำนวนมากไม่ปรากฏใน Server Console
ถ้า Script ใช้งานได้หลังสั่ง ensure ใหม่ แต่ใช้ไม่ได้หลัง Restart Server ให้สงสัยเรื่อง Start Order
ถ้า Script ใช้งานได้เฉพาะบางคน ให้ตรวจ Job, Grade, Permission และ Player Data
ถ้าหลาย Resource เสียพร้อมกัน ให้มองหา Dependency ร่วม เช่น Framework, ox_lib, oxmysql, Inventory หรือ Target ก่อน
แนวทางของ comsiam คืออย่า Reinstall Script ทันทีเมื่อเห็นอาการ Started แต่ใช้งานไม่ได้ เพราะหลายครั้งตัว Resource ถูกติดตั้งถูกแล้ว ปัญหาอยู่ที่ Integration หรือ Configuration เพียงจุดเดียว
สำหรับ Server RP ที่มี Script จำนวนมาก comsiam แนะนำให้ Debug จาก Workflow ที่เสียจริง เช่น “เปิด Menu ไม่ได้” หรือ “เก็บรถไม่ได้” แล้วตรวจ Error ที่เกิด ณ จุดนั้น วิธีนี้แม่นยำกว่าการแก้ Resource ทั้งตัว และช่วยรักษาระบบส่วนที่ยังทำงานปกติเอาไว้
Comments
Post a Comment