FiveM HUD หาย แก้อย่างไร Custom HUD ไม่ขึ้น Minimap หาย และ NUI ไม่แสดง
ปัญหา FiveM HUD หาย, Custom HUD ไม่ขึ้น, Health/Armor หาย, Speedometer หาย, Minimap ไม่แสดง หรือ HUD ขึ้นแล้วหายหลังเข้าเกม ไม่ควรเริ่มแก้ด้วยการล้าง Cache ทันที เพราะ HUD ของ FiveM อาจมีทั้ง GTA HUD เดิม และ Custom HUD ที่สร้างด้วย NUI ซึ่งมีสาเหตุเสียคนละจุด
FiveM รองรับ Fullscreen NUI ที่แสดง UI ซ้อนเหนือเกม โดย Resource สามารถส่งข้อมูลไปยังหน้า NUI ผ่าน SendNUIMessage; ขณะเดียวกัน GTA HUD และ Radar สามารถถูกเปิดหรือปิดผ่าน Natives อย่าง DISPLAY_HUD และ DISPLAY_RADAR.
บทความนี้จาก comsiam จะไล่ตรวจตั้งแต่ Resource, fxmanifest.lua, ui_page, HTML/CSS/JavaScript, SendNUIMessage, NUI Focus ไปจนถึง HUD Native และ State ตอนเข้า Vehicle, Respawn หรือ Restart Resource
① แยกก่อนว่า HUD อะไรหาย
คำว่า HUD หายอาจหมายถึงหลายอย่าง
Custom Health HUD หาย
Armor หาย
Hunger / Thirst หาย
Money / Job HUD หาย
Voice HUD หาย
Vehicle HUD หาย
Speedometer หาย
Minimap หาย
GTA HUD เดิมหาย
Custom HUD หายทั้งหมด
ต้องแยกก่อนว่าเป็น Custom NUI หรือ GTA HUD/Radar เพราะวิธีตรวจคนละทาง
② ถ้า Custom HUD หาย แต่ Minimap ยังอยู่
กรณีนี้ควรเน้น
HUD Resource
NUI
HTML
JavaScript
SendNUIMessage
CSS
มากกว่า DISPLAY_RADAR
เพราะ Radar ของ GTA ยังทำงานอยู่ แต่ Custom UI ไม่แสดง
③ ถ้า Custom HUD ยังอยู่ แต่ Minimap หาย
ให้ตรวจ
DISPLAY_RADAR
Minimap Resource
Vehicle State
HUD Script อื่น
FiveM มี DISPLAY_RADAR(BOOL toggle) สำหรับกำหนดว่า Radar/Minimap จะแสดงหรือไม่.
④ ถ้าทั้ง GTA HUD และ Custom HUD หาย
ต้องตรวจสอง Layer พร้อมกัน
GTA HUD Layer
+
Custom NUI Layer
เพราะ FiveM มี DISPLAY_HUD สำหรับควบคุม HUD เดิม และ Custom NUI มี Lifecycle ของ Resource แยกจาก GTA HUD.
⑤ DISPLAY_HUD คืออะไร
FiveM Native
DisplayHud(true)
ใช้เปิด HUD ของเกม
ส่วน
DisplayHud(false)
ใช้ปิด HUD ตาม Native Reference ของ Cfx.re.
หาก Resource ใดเรียก DisplayHud(false) แล้วไม่ได้เปิดกลับ HUD เดิมอาจหายต่อเนื่อง
⑥ DISPLAY_RADAR คืออะไร
ใช้ควบคุม Minimap/Radar
DisplayRadar(true)
แสดง Radar
DisplayRadar(false)
ซ่อน Radar.
ถ้าปัญหาคือ Minimap หาย แต่ Custom Health HUD ปกติ ให้ค้นหา DisplayRadar(false) ใน Resources ก่อน
⑦ Search Code หา DisplayHud และ DisplayRadar
ค้นหาใน Resource Files
DisplayHud(
DisplayRadar(
โดยเฉพาะ Resources ประเภท
hud
minimap
speedometer
cinematic
deathscreen
pausemenu
vehiclehud
ถ้ามีหลาย Resource สั่งเปิด/ปิดพร้อมกัน Resource ตัวหนึ่งอาจ Override State ของอีกตัว
⑧ HIDE_HUD_COMPONENT_THIS_FRAME คืออะไร
FiveM มี Native
HIDE_HUD_COMPONENT_THIS_FRAME
สำหรับซ่อน HUD Component เฉพาะใน Frame ปัจจุบัน และ Cfx.re มีรายการ Component IDs สำหรับ Native นี้.
นี่ต่างจาก DISPLAY_HUD(false) ที่ควบคุม HUD โดยรวม
⑨ ทำไมคำว่า THIS_FRAME สำคัญ
Native นี้ซ่อน Component สำหรับ Frame ปัจจุบัน
ดังนั้น Script ที่ต้องการซ่อน Element ต่อเนื่องมักเรียกมันซ้ำตาม Frames ที่ต้องการซ่อน.
ถ้า Resource มี Loop ซ่อน GTA HUD และ Logic หยุดผิดเวลา HUD บางส่วนอาจดูเหมือนหายตลอด
⑩ SHOW_HUD_COMPONENT_THIS_FRAME มีไหม
มี
FiveM มี SHOW_HUD_COMPONENT_THIS_FRAME สำหรับแสดง HUD Component ใน Frame ปัจจุบัน.
จึงควรระวัง Resource หลายตัวที่ควบคุม Component เดียวกัน
⑪ Custom HUD หายให้ตรวจ Resource ก่อน
เริ่มจากถามว่า
HUD Resource Started หรือไม่?
หาก Resource ไม่ทำงาน
client.lua ไม่ทำงาน
NUI ไม่ถูกโหลด
SendNUIMessage ไม่ถูกเรียก
ดังนั้นอย่าเริ่มแก้ CSS ก่อน
⑫ ตรวจ fxmanifest.lua
Custom HUD แบบ NUI ต้องประกาศ NUI Page ใน Resource Manifest
Cfx.re ระบุว่า ui_page ใช้กำหนด NUI Page และหากใช้ Local File ตัวไฟล์รวมถึง Dependencies ต้องถูกอ้างใน files.
ตัวอย่าง
fx_version 'cerulean'
game 'gta5'
client_script 'client.lua'
ui_page 'html/index.html'
files {
'html/index.html',
'html/style.css',
'html/app.js'
}
⑬ ui_page ผิดทำให้ HUD หายได้ไหม
ได้
ถ้า Manifest เขียน
ui_page 'html/index.html'
แต่จริง ๆ File อยู่
web/index.html
NUI Page จะไม่ตรงกับ Resource Structure
ให้ตรวจ Path จริงก่อนแก้ Script
⑭ ลืมใส่ files มีผลไหม
มี
Cfx.re ระบุว่าเมื่อใช้ Local File เป็น ui_page ตัว File และ Dependencies ต้องถูกอ้างโดย files ใน Manifest.
จึงควรตรวจ
index.html
CSS
JavaScript
Images
Fonts ที่ Resource ใช้
ว่าถูก Pack ตาม Resource จริง
⑮ HUD Resource เปิด แต่ HTML ไม่ขึ้น
ให้ทดสอบ HTML แบบง่ายมาก
เช่น
<body>
<h1>HUD TEST</h1>
</body>
ถ้า Test Text ยังไม่ขึ้น ให้เน้น
ui_page
files
Resource
NUI
ก่อน Data Integration
⑯ HTML ขึ้น แต่ HUD จริงไม่ขึ้น
แสดงว่า NUI Page ถูก Load แล้ว
ตอนนี้ให้ตรวจ
CSS
JavaScript
Visibility State
SendNUIMessage
ไม่ต้องย้อนแก้ ui_page หากพิสูจน์แล้วว่า Page Render ได้
⑰ CSS สามารถทำให้ HUD ดูเหมือนหายได้ไหม
ได้
เช่น
display: none;
หรือ
visibility: hidden;
หรือ
opacity: 0;
รวมถึง Element ถูกวางออกนอก Viewport
กรณีนี้ NUI ยังทำงาน แต่ User Interface ไม่สามารถมองเห็นได้
⑱ z-index ผิดทำให้ HUD หายได้ไหม
ได้ในระดับ Web UI
ถ้า Element อยู่ใต้ Layer อื่น
Background
Overlay
Menu
อาจดูเหมือน HUD หาย
และ Fullscreen NUI ของ FiveM มี Focus Stack ระหว่าง NUI Resources ซึ่ง Resource ที่ Focus ล่าสุดจะอยู่ด้านบนของ Focus Stack.
⑲ JavaScript Error ทำให้ HUD หายได้ไหม
ได้
เช่น Script Error ก่อนทำ
document.getElementById(...)
อาจทำให้ Logic หลังจากนั้นไม่ทำงาน
ควรตรวจ NUI Developer Tools แทนการเดา
⑳ เปิด NUI Developer Tools อย่างไร
Cfx.re ระบุว่าสามารถใช้ CEF Remote Debugging และยังเปิดผ่านคำสั่ง
nui_devTools
ใน F8 Console ได้เมื่อ Developer Mode เปิดใช้งาน.
นี่มีประโยชน์มากสำหรับดู
Console Error
DOM
CSS
JavaScript
Network
㉑ F8 ช่วยตรวจ HUD ได้อย่างไร
FiveM Client Console เปิดผ่าน F8 และใช้คำสั่ง/ข้อมูลสำหรับ Debug Client Resource ได้.
ตรวจ Error ที่เกิดทันทีตอน
Join Server
Resource Start
Character Spawn
เข้า Vehicle
Restart HUD
㉒ SendNUIMessage คือจุดสำคัญมาก
FiveM มี
SendNUIMessage(data)
สำหรับส่ง Data จาก Script ไป NUI.
ตัวอย่าง
SendNUIMessage({
action = 'show',
visible = true
})
ถ้า Message ไม่ถูกส่ง HUD อาจโหลด HTML แล้วแต่ยังถูกซ่อน
㉓ ทดสอบ SendNUIMessage แบบง่ายที่สุด
ลองส่ง
SendNUIMessage({
action = 'debugShow'
})
แล้วฝั่ง JavaScript
window.addEventListener('message', function(event) {
console.log(event.data);
});
Fullscreen NUI ของ FiveM รองรับ Message Flow จาก Game Script ไป Browser-side UI ในลักษณะนี้.
㉔ ถ้า Console เห็น Message แต่ HUD ไม่ขึ้น
ตอนนี้ FiveM Script → NUI ทำงานแล้ว
ให้ตรวจ
JavaScript Action Mapping
DOM Selector
CSS
Visibility
แทน Client Script
㉕ ถ้า NUI ไม่ได้รับ Message เลย
ตรวจ
Client Script ทำงาน?
SendNUIMessage ถูกเรียก?
Resource ถูกต้อง?
NUI Page ของ Resource ถูกต้อง?
เพราะ SendNUIMessage ส่งข้อมูลไปยัง NUI Page ของ Resource ปัจจุบัน.
㉖ Action Name ผิดทำให้ HUD ไม่ขึ้น
ตัวอย่าง Client ส่ง
action = "showHud"
แต่ JavaScript ตรวจ
action === "showHUD"
ค่าไม่ตรงกัน
ผลคือ Message เข้า NUI แต่ Logic ไม่ทำงาน
Debug ด้วย console.log(event.data) ก่อน
㉗ HUD ขึ้นตอนแรกแล้วหายหลัง Character Load
นี่เป็น Pattern สำคัญ
ตรวจ Flow
Resource Start
→ HUD Show
Character Loading
→ HUD Hide
Character Loaded
→ ควร HUD Show
ถ้า Event ขั้นสุดท้ายไม่ถูก Trigger HUD จะถูกซ่อนค้าง
㉘ HUD หายหลังเลือกตัวละคร
Server ที่มี Multicharacter อาจตั้ง
Character Selection
→ Hide HUD
เพื่อไม่ให้ HUD แสดงหน้าเลือก Character
หลัง Spawn ต้องมี
Character Loaded
→ Show HUD
ถ้าขาดขั้นนี้ HUD จะหายแม้ Resource ยังทำงาน
㉙ HUD หายหลัง Respawn
ตรวจ
Death
↓
HUD Hide
↓
Respawn
↓
HUD Show
รวมถึง Ped Handle หรือ Player State ที่ Resource ใช้
ถ้า Resource เก็บ State เดิมแล้วไม่ Initialize ใหม่หลัง Respawn ค่าบน HUD อาจไม่กลับมา
㉚ Death Screen กับ HUD อาจชนกัน
Death Resource บางตัวอาจตั้งใจซ่อน HUD ขณะผู้เล่นตาย
จึงต้องดูว่าเมื่อ
revive
respawn
มีการ Restore State หรือไม่
หาก GTA HUD หายด้วย ให้ตรวจ DisplayHud/DisplayRadar เพิ่ม.
㉛ HUD หายตอนเข้า Vehicle
ตรวจ Logic เช่น
Enter Vehicle
→ hide player HUD
→ show vehicle HUD
ถ้า Vehicle HUD Error หลังจาก Hide Player HUD แล้ว ผู้เล่นอาจเห็นจอโล่ง
ควรแยก Visibility ของสองระบบ
playerHudVisible
vehicleHudVisible
㉜ HUD หายตอนลงจากรถ
ตรวจกรณีตรงข้าม
Exit Vehicle
→ hide vehicle HUD
→ restore player HUD
ถ้าขั้น Restore ไม่ทำงาน Custom HUD อาจหายหลังลงรถทุกครั้ง
㉝ Speedometer หาย แต่ Player HUD ยังอยู่
กรณีนี้ไม่ใช่ HUD ทั้งระบบ
ให้ตรวจ
Vehicle Detection
Driver/Passenger State
Vehicle HUD visibility
Speed Data
บทความ 301 จะลงรายละเอียด Speedometer โดยเฉพาะ
㉞ HUD หายเฉพาะตอนเป็น Passenger
บาง Resource แสดง Vehicle HUD เฉพาะ Driver
ตัวอย่าง Logic
Player อยู่ Vehicle
+
Player เป็น Driver
→ Show Vehicle HUD
ดังนั้น Passenger ไม่เห็น Speedometer อาจเป็น Design ไม่ใช่ Bug
㉟ HUD หายเมื่อเปิด Pause Menu
บาง HUD ซ่อนตัวเองขณะ Pause เพื่อไม่ให้ซ้อน Map/Menu
Flow ควรเป็น
Pause ON
→ hide
Pause OFF
→ show
ถ้า State Detection หลังปิด Pause ผิด HUD จะไม่กลับ
㊱ HUD หายหลังเปิด Inventory
Inventory เป็น Fullscreen NUI Resource ได้ และ FiveM ระบุว่า NUI Resources มี Focus Stack โดย Resource ที่ Focus ล่าสุดอยู่บนสุด.
หาก Inventory Resource ซ่อน HUD หรือ HUD/Inventory ควบคุม Visibility ร่วมกันผิด HUD อาจไม่กลับหลังปิด Inventory
㊲ HUD หายหลังเปิดโทรศัพท์
หลักเดียวกัน
ตรวจ
phone open
→ hide hud?
phone close
→ show hud?
อย่าแก้ HUD CSS หากปัญหาเกิดเฉพาะหลังเปิด Phone
㊳ NUI Focus ทำให้ HUD หายไหม
Focus เองไม่ได้มีหน้าที่ซ่อน HUD แต่ Focus Stack และ UI State อาจทำให้ Resource อื่นอยู่บนสุดหรือจับ Input
Cfx.re ระบุว่า SET_NUI_FOCUS ควบคุม Keyboard และ Mouse Cursor Focus.
ถ้า HUD Settings ปิดแล้วเมาส์ยังค้าง แสดงว่าเป็น Focus Problem มากกว่า Visibility
㊴ ตรวจว่า NUI มี Focus อยู่หรือไม่
FiveM มี IS_NUI_FOCUSED ซึ่งคืน Current NUI Focus State ที่ถูกตั้งด้วย SET_NUI_FOCUS.
ใช้ช่วย Debug อาการ
HUD Settings ปิดแล้ว
แต่เมาส์ยังอยู่
㊵ เมาส์ติดหน้าจอหลัง HUD หาย
ตรวจ
SetNuiFocus(false, false)
ใน Close/Resource Stop Flow
เพราะ SET_NUI_FOCUS รับค่าควบคุม Focus และ Cursor โดยตรง.
㊶ HUD Resource Restart แล้วหาย
เมื่อ Restart Resource หน้า NUI และ Client State จะผ่าน Lifecycle ของ Resource ใหม่
ดังนั้น HUD ควร Initialize ใหม่ เช่น
Resource Start
↓
โหลด Player State
↓
ส่ง Initial HUD State
↓
Show HUD
ถ้า Resource รอเฉพาะ Event playerLoaded ที่เกิดไปแล้วก่อน Restart HUD อาจไม่รู้ว่าผู้เล่น Login อยู่แล้ว
㊷ Restart HUD แล้วค่ากลายเป็น 0
นี่มักเป็น Initial State Problem
ตัวอย่าง
ก่อน Restart
money = 50000
หลัง Restart
HUD default = 0
แต่ Resource ไม่ Request/Read Current Player Data ใหม่
ต้อง Restore State จาก Source of Truth ไม่ใช่รอ Change Event ครั้งถัดไปอย่างเดียว
㊸ Restart Resource แล้ว Radar หาย
ค้นหา Startup/Stop Logic
เช่น Resource ทำ
DisplayRadar(false)
ตอน Start
แต่การเปิดกลับขึ้นอยู่กับ Vehicle Event ที่ยังไม่เกิด
FiveM DISPLAY_RADAR ควบคุม Radar Visibility โดยตรง.
㊹ HUD Resource หายหลัง Server Restart
ตรวจ Startup Configuration
เช่น
ensure custom_hud
ต้องถูกเรียกตาม Server Resource Configuration ที่ใช้งาน
หาก Resource ไม่ Start หลัง Boot Custom HUD จะไม่ทำงานเลย
㊺ Resource Started แต่ NUI Files หาไม่เจอ
กลับไปตรวจ Manifest
Cfx.re ระบุว่า Local ui_page และ Dependencies ต้องถูกประกาศใน files.
ดังนั้น Folder มีไฟล์อยู่จริงยังไม่เพียงพอ ถ้า Resource Packfile ไม่ได้รวมไฟล์ที่ต้องใช้
㊻ เปลี่ยนชื่อ Folder HUD แล้วพังได้ไหม
ได้ หาก Code หรือ NUI Integration อ้าง Resource Name โดยตรง
โดยเฉพาะ NUI Callback/Fetch Architecture ที่บาง Resource ประกอบ URL จากชื่อ Resource
ดังนั้นอย่า Rename Resource ที่ซื้อ/ดาวน์โหลดมาแบบสุ่มก่อนอ่าน Config และ Code
㊼ NUI Callback Error ทำให้ HUD Settings พังได้ไหม
ได้
FiveM NUI Callback ใช้ส่งข้อมูลจาก UI กลับไปยัง Game และ Cfx.re ระบุว่าควรตอบข้อมูลผ่าน cb; หากไม่ตอบ Request จะ Timeout และ Error จะย้อนกลับไปยัง fetch ของ UI.
HUD แสดงผลอาจยังอยู่ แต่ Setting UI สามารถพังได้
㊽ HUD Settings กด Save แล้ว HUD หาย
ตรวจ
NUI callback
saved visibility settings
CSS class
configuration
บางครั้ง HUD ไม่ได้เสีย แต่ User Setting ถูกบันทึกว่า
showHud = false
แล้วถูก Restore ทุกครั้งที่ Join
㊾ Reset HUD Settings ช่วยแยกปัญหาได้
ถ้า Resource มี User Preferences
เช่น
Scale
Opacity
Position
Show/Hide
ลอง Reset เป็น Default
หาก HUD กลับมาแสดง แสดงว่า Core NUI ทำงาน แต่ Configuration ผิด
㊿ HUD อยู่เลยขอบจอ
นี่ก็ถูกเรียกว่า “HUD หาย” ได้
โดยเฉพาะเมื่อเปลี่ยนจาก
1920×1080
ไป
Ultrawide
4K
Custom Resolution
ตรวจ CSS Position และ Transform ว่าไม่ได้วาง Element นอก Viewport
51. HUD หายหลังเปลี่ยน Resolution
ทดสอบ
1080p
1440p
4K
Ultrawide
ถ้า HUD ขึ้นใน Resolution หนึ่งแต่หายในอีก Resolution ปัญหาน่าจะอยู่ที่ Responsive Layout มากกว่า FiveM Resource
52. HUD Scale = 0 ทำให้หายได้ไหม
ได้ในระบบ Custom Setting
เช่น CSS
transform: scale(0);
หรือ Variable จาก Setting ถูกคำนวณผิด
ตรวจ CSS Computed Style ผ่าน NUI Developer Tools ซึ่ง FiveM เปิดให้ใช้ CEF Debugging Tools ได้.
53. opacity = 0 ทำให้ HUD หายแต่ยังคลิกได้
ได้
Element ยังอยู่ใน DOM แต่โปร่งใส
กรณีนี้ Debug ผ่าน Elements Panel จะเห็น Element อยู่จริง
จึงไม่ควรสรุปว่า NUI ไม่ Load เพียงเพราะมองไม่เห็น UI
54. HUD ซ่อนด้วย JavaScript Class
ตัวอย่าง
hud.classList.add('hidden')
แล้วไม่มี
hud.classList.remove('hidden')
หลัง Spawn
HUD จะหายตลอด
ตรวจ Visibility State ใน JavaScript
55. Player Data ยังไม่พร้อมทำให้ HUD หายได้ไหม
ได้ หาก Script กำหนด
ไม่มี PlayerData
→ hide HUD
แล้วไม่ได้ Update เมื่อ PlayerData พร้อม
นี่พบได้ใน HUD ที่พึ่ง Framework
ควรมี Initialization หลัง Framework/Character Ready
56. ESX HUD หายต้องตรวจอะไรเพิ่ม
ถ้า HUD ออกแบบสำหรับ ESX ให้ตรวจ Integration เช่น
Player Loaded
Player Data
Job
Account
Status
แต่ NUI Layer ยังคงตรวจแยกได้เหมือนเดิม
ถ้า Test Message แสดง HUD ได้ แสดงว่า NUI ทำงาน และควรไปตรวจ Framework Data Layer
57. QBCore HUD หายต้องตรวจอะไรเพิ่ม
หลักเดียวกัน
ถ้า Resource ต้องการ QBCore Player Data/Metadata แต่ Core หรือ Dependency ไม่พร้อม HUD อาจไม่มีข้อมูลหรือถูกซ่อน
แยก
NUI Render
ออกจาก
Framework Integration
เสมอ
58. Standalone HUD หายง่ายกว่าหรือไม่
ไม่จำเป็น
Standalone HUD ลด Framework Dependencies บางส่วน แต่ยังมี
Resource
NUI
Client State
CSS
JavaScript
เหมือนเดิม
จึงยังสามารถพังจาก UI/Resource Logic ได้
59. หลาย HUD Resources ทำให้ HUD หายได้ไหม
ได้
ตัวอย่าง Server มี
hud
statushud
vehiclehud
speedometer
minimap
cinematichud
แล้วแต่ละตัวทำ
DisplayRadar(false)
HideHudComponentThisFrame(...)
SendNUIMessage(show/hide)
โดยไม่มี Ownership ชัด
อาจเกิด Resource A เปิด แต่ B ปิดทันทีหลังจากนั้น
60. วิธีหา Resource ที่กำลังซ่อน HUD
ปิด Resources ที่เกี่ยวข้องทีละตัวบน Test Server
เช่น
cinematic
minimap
old_hud
vehiclehud
แล้วดูว่า HUD กลับหรือไม่
นี่เป็น A/B Test ที่ดีกว่าการแก้ Code หลาย Resource พร้อมกัน
61. GTA HUD หายแต่ Custom HUD ปกติ
ค้นหา
DisplayHud(false)
HideHudComponentThisFrame(...)
ก่อน
FiveM มี Native สำหรับทั้งการปิด HUD โดยรวมและซ่อน Components ราย Frame.
62. Minimap หายแต่ GTA HUD อื่นปกติ
ค้นหา
DisplayRadar(false)
ก่อน เพราะ DISPLAY_RADAR ควบคุม Radar/Minimap โดยตรง.
63. Blip หายไม่ได้แปลว่า Minimap หาย
ถ้า Minimap ยังแสดงถนน แต่ Marker หาย ให้ตรวจ Blip Logic แยก
FiveM มี SET_BLIP_DISPLAY สำหรับควบคุมว่า Blip จะปรากฏบน Map/Minimap แบบใด.
ดังนั้นอย่าแก้ DisplayRadar หากปัญหาคือ Blip เฉพาะจุด
64. HUD หายพร้อม FPS ตก
อาจมี JavaScript/Client Error Loop หรือ Resource ทำงานผิดปกติ
ควรตรวจ
F8
Resource CPU
Profiler
FiveM มี Profiler สำหรับระบุ Threads/Code ที่สร้าง Performance Problem.
65. ใช้ Profiler เมื่อไร
เมื่อพบว่า HUD Resource
CPU สูง
Frame time สูง
กระตุก
และต้องการรู้ว่า Function หรือ Thread ใดเป็นต้นเหตุ
Cfx.re Profiler ถูกออกแบบเพื่อช่วยระบุ Code/Threads ที่ทำให้ Resource มีปัญหา Performance.
66. HUD ไม่ควรส่งข้อมูลทุกอย่างทุก Frame
ถ้า HUD Resource มี Loop
while true do
Wait(0)
SendNUIMessage(...)
end
สำหรับข้อมูลที่แทบไม่เปลี่ยน เช่น Job หรือ Money ควรพิจารณา Event-driven/Change-driven Update
เพราะ SendNUIMessage ส่งข้อมูลเข้าสู่ NUI ทุกครั้งที่ถูกเรียก.
67. HUD หายเพราะ JavaScript ค้างจาก Message มากเกินได้ไหม
ถ้า UI ถูกอัปเดตหนักมาก อาจเกิดปัญหา Performance หรือ UI Response ช้า
ต้องตรวจ DevTools และ Runtime จริง
อย่าสรุปเพียงจากจำนวน SendNUIMessage; ดูด้วยว่า JavaScript ทำอะไรกับแต่ละ Message
68. วิธี Debug FiveM HUD หายแบบเร็วที่สุด
ใช้ลำดับนี้
ขั้นที่ 1 — ระบุ HUD ที่หาย
Custom HUD?
GTA HUD?
Minimap?
Vehicle HUD?
ขั้นที่ 2 — ตรวจ Resource
HUD Resource Started หรือไม่
ขั้นที่ 3 — ตรวจ Manifest
ui_page
files
client script
Cfx.re กำหนด ui_page และ Local Dependencies ผ่าน Resource Manifest.
ขั้นที่ 4 — ทดสอบ HTML
ให้แสดงข้อความง่าย ๆ
ขั้นที่ 5 — ทดสอบ SendNUIMessage
FiveM รองรับการส่งข้อมูลจาก Script ไป NUI โดยตรง.
ขั้นที่ 6 — เปิด NUI DevTools
ดู
JS Error
CSS
DOM
Messages
ผ่าน nui_devTools เมื่อ Developer Mode พร้อม.
ขั้นที่ 7 — ถ้า GTA HUD หาย
ตรวจ
DisplayHud
HideHudComponentThisFrame
ขั้นที่ 8 — ถ้า Minimap หาย
ตรวจ
DisplayRadar
ขั้นที่ 9 — ถ้าเมาส์ค้าง
ตรวจ NUI Focus ผ่าน SET_NUI_FOCUS และ IS_NUI_FOCUSED.
ขั้นที่ 10 — ถ้าปัญหาเกิดหลัง Spawn/Vehicle/Death
ตรวจ Visibility State และ Event Flow
69. ตารางสรุปปัญหา FiveM HUD หาย
| อาการ | จุดที่ควรตรวจ |
|---|---|
| Custom HUD หายทั้งหมด | Resource / NUI |
| HTML ไม่ขึ้น | ui_page / files |
| HUD ขึ้นแต่ไม่มีข้อมูล | SendNUIMessage |
| HUD ขึ้นแล้วหายหลัง Spawn | Character State |
| HUD หายหลัง Respawn | Death/Respawn Logic |
| เข้า Vehicle แล้ว HUD หาย | Vehicle Visibility |
| ลงรถแล้ว HUD ไม่กลับ | Exit Vehicle State |
| Speedometer หายอย่างเดียว | Vehicle HUD |
| GTA HUD หาย | DISPLAY_HUD |
| Minimap หาย | DISPLAY_RADAR |
| HUD Component บางตัวหาย | Hide HUD Component |
| Blip หายแต่ Map ยังอยู่ | Blip Display |
| Mouse ค้าง | NUI Focus |
| HUD Settings ใช้ไม่ได้ | NUI Callback |
| Restart แล้ว HUD หาย | Initial State |
| Restart แล้วค่าเป็น 0 | Data Reload |
| เปลี่ยน Resolution แล้วหาย | CSS Layout |
| HUD บางครั้งหาย | Resource Conflict |
| HUD กระตุก | Client/NUI Performance |
70. Checklist FiveM HUD หาย
☐ HUD Resource Started
☐ fxmanifest.lua ถูก
☐ ui_page ถูก
☐ files ครบ
☐ index.html โหลด
☐ CSS โหลด
☐ JavaScript ไม่มี Error
☐ SendNUIMessage ถูกเรียก
☐ JavaScript ได้รับ Message
☐ Visibility State = show
☐ Element ไม่ display:none
☐ opacity ไม่เป็น 0
☐ Element ไม่อยู่นอกจอ
☐ Character Loaded แล้ว Show HUD
☐ Respawn แล้ว Show HUD
☐ Vehicle State ถูก
☐ Pause State ถูก
☐ NUI Focus ถูก
☐ DISPLAY_HUD ถูก
☐ DISPLAY_RADAR ถูก
☐ ไม่มี Resource อื่นซ่อน HUD
ตัวอย่าง Test Custom HUD แบบง่าย
ฝั่ง Client
RegisterCommand('testhud', function()
SendNUIMessage({
action = 'showHud',
health = 100,
armor = 50
})
end)
ฝั่ง JavaScript
window.addEventListener('message', function(event) {
console.log('NUI MESSAGE:', event.data);
if (event.data.action === 'showHud') {
document.getElementById('hud').style.display = 'block';
}
});
โครงสร้างนี้ใช้ Message Flow ที่ FiveM รองรับระหว่าง Game Script และ Fullscreen NUI.
ตัวอย่าง Debug GTA HUD และ Radar
RegisterCommand('restorehud', function()
DisplayHud(true)
DisplayRadar(true)
end)
DISPLAY_HUD และ DISPLAY_RADAR เป็น Natives สำหรับควบคุมการแสดง HUD และ Radar ของเกม.
ถ้าคำสั่งนี้ทำให้ GTA HUD/Minimap กลับมา แสดงว่ามี Resource หรือ State ก่อนหน้าที่กำลังปิดอยู่
ตัวอย่างคืน NUI Focus
RegisterCommand('fixfocus', function()
SetNuiFocus(false, false)
end)
SET_NUI_FOCUS ใช้ควบคุม Keyboard Focus และ Mouse Cursor Focus ของ NUI.
เหมาะกับการทดสอบกรณี HUD Settings ปิดแล้ว Mouse ยังติด
วิธีแยกปัญหาด้วย Test HUD
ใช้ Test ง่าย ๆ
① HTML Test ขึ้นไหม?
ถ้าไม่ → Manifest/NUI
② SendNUIMessage เข้าไหม?
ถ้าไม่ → Client Script
③ Message เข้า แต่ HUD ไม่แสดง?
ถ้าใช่ → JS/CSS
④ Custom HUD ขึ้น แต่ GTA HUD ไม่ขึ้น?
→ HUD Native
⑤ HUD ทุกอย่างถูก แต่ Minimap หาย?
→ Radar Logic
วิธีนี้ช่วยลดพื้นที่ค้นหาปัญหาอย่างรวดเร็ว
อย่าล้าง Cache เป็นขั้นตอนแรก
ถ้า
JavaScript Error
หรือ
DisplayRadar(false)
หรือ
ui_page ผิด
การล้าง Cache ไม่ได้แก้ Root Cause
ควรพิสูจน์ Resource/NUI/Native State ก่อน
อย่าเปลี่ยน HUD ตัวใหม่ทันที
HUD หายหนึ่งครั้งไม่ได้หมายความว่า Resource เสียจนต้องเปลี่ยนใหม่
หากต้นเหตุคือ
Character Loaded Event
Vehicle State
NUI Focus
CSS hidden
Resource Conflict
เปลี่ยน HUD ใหม่อาจเพียงนำ Bug รูปแบบอื่นมาแทน
อย่าเปิด HUD หลายตัวทับกันโดยไม่จำเป็น
เช่น
old_hud
new_hud
vehicle_hud
standalone_speedometer
หาก Resources เหล่านี้ควบคุม
Radar
HUD Components
NUI Visibility
พร้อมกัน การ Debug จะยากขึ้นมาก
ควรปิดตัวเก่าที่ไม่ใช้
สูตรจำง่ายเมื่อ FiveM HUD หาย
RESOURCE
↓
NUI
↓
MESSAGE
↓
CSS / JS
↓
STATE
↓
GTA HUD
↓
RADAR
ถ้าระบบหยุดทำงานตรงไหน ให้แก้ตรง Layer นั้นก่อน
สรุป FiveM HUD หาย แก้อย่างไร
ถ้า FiveM HUD หาย สิ่งแรกคือต้องแยกว่าเป็น Custom HUD, GTA HUD หรือ Minimap
ถ้าเป็น Custom HUD ให้ตรวจตามลำดับ
Resource
↓
fxmanifest.lua
↓
ui_page / files
↓
HTML
↓
JavaScript
↓
SendNUIMessage
↓
Visibility State
Cfx.re ระบุว่า Fullscreen NUI เป็น UI Overlay ของ Resource, ui_page ใช้กำหนด NUI Page และ SendNUIMessage ใช้ส่งข้อมูลจาก Script ไปยัง NUI.
ถ้า GTA HUD หาย ให้ค้นหา DISPLAY_HUD และ HIDE_HUD_COMPONENT_THIS_FRAME เพราะ FiveM มี Natives สำหรับปิด HUD ทั้งหมดหรือซ่อน Components เฉพาะ Frame.
ถ้า Minimap หาย ให้ตรวจ DISPLAY_RADAR เพราะ Native นี้ควบคุมการแสดง Radar โดยตรง.
ถ้า HUD หายหลังเข้า Vehicle, Respawn, Character Selection หรือ Pause Menu ให้เน้น Visibility State และ Event Flow มากกว่า Resource Installation
ถ้า HUD Settings ปิดแล้ว Mouse ค้าง ให้ตรวจ SET_NUI_FOCUS และสามารถตรวจ Focus State ด้วย IS_NUI_FOCUSED.
ถ้า HTML โหลดแต่ HUD ไม่แสดง ให้เปิด NUI Developer Tools ผ่าน nui_devTools เมื่อ Developer Mode พร้อม แล้วตรวจ JavaScript, DOM และ CSS โดยตรง.
และหาก HUD กระตุกหรือหายพร้อมกับ Client Performance ผิดปกติ ให้ใช้ Profiler เพื่อหาว่า Thread หรือ Code ส่วนใดของ Resource ใช้เวลาสูงแทนการเดา.
แนวทางของ comsiam คือแก้ HUD ตาม Layer Resource → NUI → Message → UI → State → GTA HUD/Radar เพราะเมื่อแยกแต่ละชั้นออกจากกัน ปัญหาที่ดูเหมือน “HUD พังทั้งระบบ” มักเหลือ Root Cause เพียงจุดเดียว และไม่จำเป็นต้องติดตั้ง FiveM หรือเปลี่ยน HUD ใหม่ทั้งชุด
Comments
Post a Comment