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 ขึ้นแล้วหายหลัง SpawnCharacter State
HUD หายหลัง RespawnDeath/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 แล้วค่าเป็น 0Data 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

Popular posts from this blog

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

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

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