FiveM fxmanifest.lua คืออะไร? วิธีสร้าง Resource Manifest สำหรับมือใหม่แบบละเอียด

fxmanifest.lua คือไฟล์ Resource Manifest ของ FiveM ใช้บอก FXServer ว่า Resource หนึ่งประกอบด้วยอะไร ต้องโหลด Script ตัวไหน ทำงานฝั่ง Client หรือ Server ใช้ไฟล์อะไร มี Dependencies อะไร และ Resource รองรับเกมใด

Cfx.re ระบุว่า fxmanifest.lua ต้องอยู่ภายในโฟลเดอร์ของ Resource และเป็นไฟล์ Lua ที่ทำงานใน Runtime แยกจาก Lua Scripts ภายใน Resource โดยใช้รูปแบบกึ่ง Declarative สำหรับกำหนด Metadata.

สำหรับมือใหม่ หากสร้าง Resource แล้ว FiveM ขึ้นว่า does not have a resource manifest, Resource ไม่ขึ้นใน txAdmin, ensure แล้ว Start ไม่ได้ หรือ Script ไม่ทำงาน สิ่งแรกๆ ที่ควรตรวจคือ ชื่อไฟล์และเนื้อหาใน fxmanifest.lua

① fxmanifest.lua คืออะไร

fxmanifest.lua เป็นไฟล์ที่อธิบาย Resource ให้ FXServer เข้าใจ เช่น

  • Resource นี้ใช้ FiveM หรือ RedM

  • ใช้ Client Scripts อะไร

  • ใช้ Server Scripts อะไร

  • มี Shared Scripts หรือไม่

  • ต้องส่งไฟล์อะไรให้ Client

  • มี Dependencies อะไร

  • ใช้ NUI หรือไม่

  • เป็น Map Resource หรือไม่

  • มี Data Files อะไร

Cfx.re ระบุว่า Resource Manifest ปัจจุบันใช้ชื่อ fxmanifest.lua ส่วนรูปแบบเก่าคือ __resource.lua.

② fxmanifest.lua อยู่ตรงไหน

ไฟล์นี้ต้องอยู่ ภายใน Folder หลักของ Resource

ตัวอย่าง:

resources/
└── helloWorld/
    ├── fxmanifest.lua
    └── client.lua

Cfx.re ระบุว่า Resources ถูกโหลดจาก Folder resources/ ใน Server Data Directory และ Resource แต่ละ Folder ต้องมี Manifest จึงจะถูก Parse เป็น Resource อย่างถูกต้อง.

③ ตัวอย่าง fxmanifest.lua แบบง่ายที่สุด

สำหรับ FiveM Lua Resource พื้นฐานสามารถเริ่มจาก:

fx_version 'cerulean'
game 'gta5'

author 'YourName'
description 'My FiveM resource'
version '1.0.0'

client_script 'client.lua'

รูปแบบนี้สอดคล้องกับตัวอย่าง Creating Scripts ปัจจุบันของ Cfx.re.

④ fx_version 'cerulean' คืออะไร

fx_version กำหนดชุด Functionality ที่ Resource รองรับ

Cfx.re Resource Manifest Reference ระบุว่า FXv2 Resource Version ปัจจุบันคือ cerulean.

จึงพบรูปแบบนี้บ่อย:

fx_version 'cerulean'

สำหรับ Resource ใหม่ควรอ้างอิง Documentation ปัจจุบันแทน Copy Manifest เก่าจาก Internet

⑤ game 'gta5' คืออะไร

คำสั่ง

game 'gta5'

ระบุว่า Resource นี้ทำงานกับ FiveM

Cfx.re กำหนดค่า Game API Set เช่น

  • gta5 → FiveM

  • rdr3 → RedM

  • common → ใช้ API ทั่วไปที่ไม่เจาะจงเกม

ไว้ใน Resource Manifest Reference.

ดังนั้น Resource FiveM ทั่วไปจะใช้ gta5

⑥ games {} ต่างจาก game อย่างไร

ถ้า Resource รองรับหลาย Game API Sets สามารถใช้รูปแบบ:

games { 'rdr3', 'gta5' }

ตัวอย่าง Manifest อย่างเป็นทางการของ Cfx.re ใช้รูปแบบนี้เพื่อประกาศหลาย Game Sets.

แต่ Resource ที่สร้างสำหรับ FiveM เพียงอย่างเดียวสามารถใช้:

game 'gta5'

ได้

⑦ author คืออะไร

ใช้ใส่ข้อมูลผู้สร้าง Resource เช่น

author 'YourName'

เป็น Metadata ของ Resource

Cfx.re ใช้ author, description และ version ในตัวอย่าง Resource Manifest อย่างเป็นทางการ.

⑧ description คืออะไร

ใช้กำหนดคำอธิบาย Resource

ตัวอย่าง:

description 'Simple vehicle management resource'

ช่วยให้ Developer หรือ Server Owner เปิด Resource แล้วเข้าใจหน้าที่ได้ง่ายขึ้น

Cfx.re รองรับ description เป็น Metadata ของ Resource Manifest.

⑨ version คืออะไร

สามารถกำหนด Version ของ Resource เช่น

version '1.0.0'

Cfx.re ใช้รูปแบบ Version Metadata นี้ในตัวอย่าง Manifest.

สำหรับ Resource ที่พัฒนาเอง การเปลี่ยน Version ตาม Release ช่วยติดตามว่า Server กำลังใช้ Resource รุ่นใด

⑩ client_script คืออะไร

client_script กำหนด Script ที่ต้องทำงานฝั่ง FiveM Client

ตัวอย่าง:

client_script 'client.lua'

Cfx.re ระบุว่า client_script โหลด Script ฝั่ง Client และจะเพิ่มไฟล์นั้นเข้า Resource Packfile โดยอัตโนมัติ.

⑪ client_scripts ใช้หลายไฟล์อย่างไร

ถ้ามีหลาย Client Scripts สามารถใช้:

client_scripts {
    'client/main.lua',
    'client/menu.lua',
    'client/vehicle.lua'
}

Resource Manifest รองรับรูปแบบ Table และตัวอย่างทางการแสดงการใช้ client_scripts หลายไฟล์.

⑫ server_script คืออะไร

ใช้กำหนด Script ที่ทำงานฝั่ง Server

ตัวอย่าง:

server_script 'server.lua'

Cfx.re ระบุว่า server_script โหลด Script ฝั่ง Server และรองรับ Globbing เช่นเดียวกับ Client Script.

⑬ server_scripts ใช้หลายไฟล์ได้ไหม

ได้

ตัวอย่าง:

server_scripts {
    'server/main.lua',
    'server/database.lua',
    'server/commands.lua'
}

เหมาะกับ Resource ที่แยก Code เป็นหลายไฟล์แทนเขียนทุกอย่างใน server.lua

⑭ shared_script คืออะไร

shared_script ใช้กับ Script ที่ต้องโหลด ทั้งฝั่ง Client และ Server

ตัวอย่าง:

shared_script 'config.lua'

Cfx.re ระบุว่า Shared Script จะถูกโหลดทั้งสองฝั่งและถูกเพิ่มเข้า Resource Packfile ด้วย.

จึงมักใช้กับ Config หรือ Code ที่ทั้งสองฝั่งต้องใช้ร่วมกัน

⑮ shared_scripts ใช้หลายไฟล์อย่างไร

ตัวอย่าง:

shared_scripts {
    'shared/config.lua',
    'shared/constants.lua'
}

เหมาะกับ Resource ที่มี Shared Configuration หลายส่วน

แต่ต้องระวังไม่เก็บข้อมูลลับใน Shared Script เพราะไฟล์ที่ถูกส่งไป Client ไม่ควรถูกใช้เป็นที่เก็บ Secret ฝั่ง Server

⑯ Client Script กับ Server Script ต่างกันอย่างไร

จำง่ายๆ:

Client Script

ทำงานบนเครื่องผู้เล่น

Server Script

ทำงานบน FXServer

Shared Script

โหลดทั้ง Client และ Server

การแยกนี้สำคัญมาก เพราะ Resource ที่ประกาศ Script ผิดฝั่งอาจทำงานไม่ถูกต้อง แม้ชื่อไฟล์จะถูกก็ตาม.

⑰ fxmanifest.lua เป็น Lua Script ปกติหรือไม่

ตัวไฟล์ใช้ Syntax ของ Lua แต่ Cfx.re ระบุว่า Manifest ทำงานใน Runtime แยกจาก Lua Scripts ของ Resource และถูกออกแบบเป็นรูปแบบ semi-declarative metadata definition.

ดังนั้นหน้าที่หลักคือ อธิบาย Resource ไม่ใช่เอา Gameplay Logic ทั้งหมดมาเขียนใน Manifest

⑱ fxmanifest.lua ใช้กับ JavaScript ได้ไหม

ได้

แม้ Resource จะเขียน Gameplay Script ด้วย JavaScript ตัว Manifest ก็ยังชื่อ

fxmanifest.lua

Cfx.re ระบุในคู่มือ JavaScript ว่า Manifest ยังคงเป็น Lua แม้ Resource Scripts จะเขียนด้วย JavaScript.

ตัวอย่าง:

fx_version 'cerulean'
game 'gta5'

client_script 'client.js'
server_script 'server.js'

⑲ fxmanifest.lua ใช้กับ C# ได้ไหม

ได้เช่นกัน

Resource Manifest Reference ระบุ Script Handler ตามนามสกุล รวมทั้ง .net.dll สำหรับ .NET Assemblies และ .js สำหรับ JavaScript.

ดังนั้น Manifest ไม่ได้จำกัด Resource ให้เขียน Lua เท่านั้น

⑳ files {} คืออะไร

files ใช้เพิ่มไฟล์เข้า Resource Packfile เพื่อให้ Client สามารถดาวน์โหลดไฟล์เหล่านั้นเมื่อ Resource ถูกโหลด

Cfx.re ระบุ file/files เป็น Manifest Entry สำหรับไฟล์ที่จะถูกส่งไป Client.

ตัวอย่าง:

files {
    'html/index.html',
    'html/style.css',
    'html/app.js'
}

㉑ files กับ client_script ต่างกันอย่างไร

client_script บอก FiveM ว่าไฟล์นั้นเป็น Script ที่ต้อง Execute ฝั่ง Client

ส่วน files ใช้ประกาศไฟล์ที่ต้องรวมอยู่ใน Resource Packfile แต่ไม่ได้หมายความว่าทุกไฟล์ต้องถูก Execute เป็น Script

นี่สำคัญมากกับ

  • NUI

  • HTML

  • CSS

  • Images

  • Metadata

  • Assets บางประเภท

㉒ ui_page คืออะไร

หาก Resource ใช้ NUI สามารถกำหนดหน้า UI เช่น:

ui_page 'html/index.html'

files {
    'html/index.html',
    'html/style.css',
    'html/app.js'
}

Cfx.re ระบุว่า ui_page ใช้กำหนด NUI Page และหากเป็น Local File ไฟล์นั้นรวมถึง Dependencies ต้องถูกอ้างผ่าน files.

㉓ ui_page ใช้ URL ได้ไหม

Resource Manifest Reference ระบุว่า ui_page รองรับ Absolute URL ได้ด้วย.

แต่สำหรับ Resource ที่ใช้ Local NUI ทั่วไปควรจัดไฟล์ HTML/CSS/JS ใน Resource ให้เป็นระบบและประกาศใน files อย่างถูกต้อง

㉔ NUI เปิดไม่ได้ควรตรวจอะไร

ตรวจ:

  1. ui_page

  2. ชื่อไฟล์

  3. Path

  4. files

  5. HTML Dependencies

  6. Browser/Client Console Errors

ถ้า ui_page ชี้ไป html/index.html แต่ไฟล์ไม่มีจริง Resource UI ย่อมไม่สามารถโหลดได้ตามที่ตั้งไว้

㉕ dependency คืออะไร

dependency ใช้กำหนดว่า Resource อื่นต้องถูกโหลดก่อน Resource ปัจจุบัน

ตัวอย่าง:

dependency 'myresource-base'

Cfx.re ระบุว่า Dependency Resource จะต้องโหลดก่อน Resource ปัจจุบัน.

㉖ dependencies ใช้หลายตัวอย่างไร

ตัวอย่าง:

dependencies {
    'resource_a',
    'resource_b',
    'resource_c'
}

เหมาะกับ Resource ที่พึ่ง Framework หรือ Base Resource หลายตัว

หาก Dependency ที่ต้องการไม่พร้อม Resource ปัจจุบันอาจไม่สามารถทำงานได้ตามที่ออกแบบไว้

㉗ dependency กำหนดขั้นต่ำของ Server Build ได้ไหม

ได้

Cfx.re รองรับ Constraint Syntax เช่น:

dependencies {
    '/server:4500'
}

เพื่อกำหนด Minimum Server Build Requirement.

นอกจากนี้ยังมี Constraint ประเภทอื่น เช่น OneSync, Policy และ Game Build ตาม Resource Manifest Reference.

㉘ dependency ตรวจ OneSync ได้ไหม

ได้

Resource สามารถใช้ Constraint:

dependency '/onesync'

เพื่อระบุ Requirement เกี่ยวกับ State Awareness/OneSync ตาม Manifest Reference.

เหมาะกับ Resource ที่ออกแบบมาให้ทำงานภายใต้ Environment ที่ต้องใช้ OneSync

㉙ Globbing คืออะไร

Resource Manifest รองรับ Pattern สำหรับเลือกหลายไฟล์ใน Entry บางประเภท

ตัวอย่าง:

client_scripts {
    'client/*.lua'
}

หรือ

client_scripts {
    '**/*.lua'
}

Cfx.re ระบุ Pattern เช่น *.lua, dir/*.dll, **/*.lua และ **/cl_*.lua ในระบบ Globbing.

㉚ *.lua กับ **/*.lua ต่างกันอย่างไร

ตัวอย่างตาม Cfx.re:

*.lua

เลือกไฟล์ Lua ในระดับ Folder ปัจจุบัน

**/*.lua

สามารถ Match ไฟล์ Lua ลงไปใน Subdirectories ได้ด้วย.

จึงควรเลือก Pattern ให้ตรงโครงสร้าง Resource จริง

㉛ ใช้ Globbing ทุกอย่างดีไหม

ไม่จำเป็นเสมอไป

Resource ขนาดเล็กการระบุชื่อไฟล์ตรงๆ เช่น

client_scripts {
    'client/main.lua',
    'client/menu.lua'
}

ทำให้อ่านง่ายและรู้ลำดับไฟล์ชัดกว่า

Globbing เหมาะเมื่อโครงสร้าง Resource มีไฟล์จำนวนมากและ Developer เข้าใจ Pattern ที่ใช้

㉜ data_file คืออะไร

data_file ใช้เพิ่ม Data File ชนิดต่างๆ เข้า Game Extra Content System

Cfx.re ระบุว่า Data File เป็น Manifest Entry ที่อ้างไฟล์สำหรับโหลดเข้าสู่ระบบ Extra Content ของเกม.

พบได้มากใน Resources เช่น

  • รถ

  • Handling

  • Audio

  • Game Metadata

㉝ ตัวอย่าง data_file สำหรับรถ FiveM

ตัวอย่างเชิงโครงสร้าง:

files {
    'data/vehicles.meta',
    'data/handling.meta'
}

data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'HANDLING_FILE' 'data/handling.meta'

Cfx.re Resource Manifest Reference แสดงการใช้ data_file คู่กับ files และรองรับหลาย Data File Types.

ต้องใช้ Data File Type ให้ตรงกับไฟล์จริง

㉞ this_is_a_map คืออะไร

สำหรับ Map Resource สามารถกำหนด:

this_is_a_map 'yes'

Cfx.re ระบุว่า Entry นี้ใช้ Mark Resource ว่าเป็น GTA Map และจะ Reload Map Storage เมื่อ Resource ถูกโหลด.

จึงพบได้บ่อยใน Resource แผนที่

㉟ server_only คืออะไร

หาก Resource ทำงานเฉพาะฝั่ง Server สามารถใช้:

server_only 'yes'

Cfx.re ระบุว่า server_only จะ Mark Resource ว่าเป็น Server-only และหยุดไม่ให้ Client ดาวน์โหลดสิ่งต่างๆ ของ Resource นั้น.

เหมาะกับ Resource ที่ไม่มี Client Files ที่ต้องส่งออกไป

㊱ loadscreen คืออะไร

Resource Manifest รองรับ:

loadscreen 'html/loadscreen.html'

สำหรับกำหนด HTML Loading Screen ของเกม และไฟล์ที่เกี่ยวข้องต้องถูกจัด Resource อย่างถูกต้อง.

จึงสามารถสร้าง Loading Screen เป็น Resource แยกได้

㊲ loadscreen_manual_shutdown คืออะไร

ถ้าใช้:

loadscreen_manual_shutdown 'yes'

Cfx.re ระบุว่าจะป้องกัน Loading Screen NUI จากการปิดอัตโนมัติหลังโหลด Game Data เพื่อให้ Resource ควบคุมเวลาปิดเองได้.

ไม่จำเป็นต้องใช้กับ Loading Screen ทุกแบบ

㊳ lua54 'yes' ยังต้องใส่ไหม

ปัจจุบันไม่จำเป็นแล้ว

Resource Manifest Reference ของ Cfx.re ระบุว่า lua54 ถูก Deprecated และไม่จำเป็นต้องเปิด เพราะตั้งแต่ มิถุนายน 2025 Lua 5.3 ถูกเลิกใช้และ Lua Scripts ทั้งหมดใช้ Lua 5.4 แล้ว.

ดังนั้น Resource ใหม่ไม่ควร Copy:

lua54 'yes'

เพียงเพราะ Tutorial เก่าใส่มา

㊴ ทำไม Tutorial FiveM เก่ายังมี lua54

เพราะในอดีตต้อง Opt-in เพื่อใช้ Lua 5.4

แต่ Documentation ปัจจุบันระบุว่า Setting นี้ Deprecated แล้ว.

นี่เป็นตัวอย่างชัดเจนว่าทำไม FiveM Server Owner ควรตรวจ Official Documentation ปัจจุบันก่อน Copy Manifest เก่า

㊵ FiveM ปัจจุบันใช้ Lua อะไร

Cfx.re ระบุว่า FiveM ใช้ CfxLua ซึ่งเป็น Lua 5.4 ที่มีการปรับแต่งเพิ่มเติม.

ดังนั้น Resource Lua รุ่นใหม่ควรตรวจ Compatibility กับ Lua 5.4 แทนการพึ่ง Behavior ของ Lua รุ่นเก่า

㊶ node_version คืออะไร

Resource Manifest ปัจจุบันรองรับ:

node_version '22'

สำหรับเลือก Node.js Version ของ Server Scripting Runtime

Cfx.re ระบุ Version ที่มีใน Manifest Reference คือ 16 ซึ่งเป็น Default และ 22.

Resource JavaScript ควรเลือก Version เมื่อมีเหตุผลด้าน Compatibility จริง

㊷ __resource.lua คืออะไร

__resource.lua คือ Resource Manifest Format รุ่นเก่า

Cfx.re ระบุว่าปัจจุบันควรใช้ fxmanifest.lua และ fx_version แทน Resource Manifest Version แบบเก่า.

Resource เก่าที่ใช้ __resource.lua อาจยังพบได้ แต่ Server Console สามารถเตือนว่า Format นั้น Deprecated.

㊸ เปลี่ยน __resource.lua เป็น fxmanifest.lua แค่เปลี่ยนชื่อได้ไหม

ไม่ควรคิดว่าเปลี่ยนชื่ออย่างเดียวพอทุกกรณี

Cfx.re ระบุว่าสามารถเปลี่ยนไปใช้ fxmanifest.lua และปรับโครงสร้างภายในเพื่อ Compatibility ได้.

ดังนั้น Resource เก่าควรตรวจ Directive เดิมและ Migration ให้ถูก ไม่ใช่ Rename แล้วหวังว่าจะทำงานทันที

㊹ Resource ไม่มี fxmanifest.lua จะเกิดอะไร

Cfx.re ระบุว่า Resource Folder ที่ไม่มี Manifest สามารถแสดง Warning:

does not have a resource manifest (fxmanifest.lua)

และหากไม่ได้ตั้งใจให้ Folder นั้นไม่มี Manifest ควรตรวจชื่อไฟล์ให้ถูกต้อง.

นี่เป็น Error ที่มือใหม่เจอบ่อยมาก

㊺ FiveM มองไม่เห็น fxmanifest.lua

ตรวจ:

  1. ชื่อไฟล์ต้องเป็น fxmanifest.lua

  2. ไม่ใช่ fxmanifest.lua.txt

  3. อยู่ Root Folder ของ Resource

  4. Resource อยู่ใต้ resources/

  5. File Syntax ไม่มีปัญหา

  6. ใช้ Reload/Refresh Resource List

Cfx.re Getting Started ให้สร้าง client.lua และ fxmanifest.lua ภายใน Resource Folder โดยตรง.

㊻ Resource อยู่ผิด Folder

โครงสร้างที่ถูกควรเป็น:

resources/
└── myresource/
    ├── fxmanifest.lua
    ├── client.lua
    └── server.lua

ไม่ควรเป็น:

resources/
└── myresource/
    └── myresource/
        ├── fxmanifest.lua
        └── client.lua

หาก Server กำลังมอง Folder ชั้นนอกเป็น Resource แต่ Manifest อยู่ลึกอีกชั้น อาจทำให้ Resource ไม่ถูก Parse ตามที่คาด

Cfx.re ระบุว่า Resource Folder แต่ละตัวต้องมี Manifest อยู่ใน Resource Folder นั้น.

㊼ เพิ่ม Resource แล้วต้อง Refresh อย่างไร

Official Creating Scripts Guide ปัจจุบันให้เปิด txAdmin In-game Menu แล้วไปที่

Resources → Reload & Refresh

จากนั้นค้นหา Resource และกด Start.

จึงไม่จำเป็นต้อง Restart FXServer ทุกครั้งที่เพิ่ม Resource ขนาดเล็กเพื่อทดสอบ

㊽ Start Resource ผ่าน txAdmin ได้ไหม

ได้

Cfx.re Getting Started ให้ค้นหา Resource จาก Resource List แล้วกด Start เพื่อเปิด Script ตัวอย่าง.

หลัง Start สามารถตรวจ FiveM F8 Console หรือ Server Console ตามประเภท Script เพื่อดูผลลัพธ์

㊾ fxmanifest.lua Syntax ผิดจะเกิดอะไร

Resource อาจไม่ถูกโหลดหรืออาจแสดง Error ใน Server Console

เมื่อเกิดปัญหาให้ตรวจ Change ล่าสุด เช่น

  • Quote หาย

  • Comma ผิด

  • {} ไม่ครบ

  • ชื่อไฟล์ผิด

  • Path ผิด

อย่าเพิ่ม Code ต่ออีกหลายบรรทัดก่อนแก้ Manifest ให้ Parse ได้ก่อน

㊿ Checklist fxmanifest.lua สำหรับมือใหม่

ก่อน Start Resource ให้ตรวจ:

  1. ไฟล์ชื่อ fxmanifest.lua

  2. อยู่ Root Resource Folder

  3. ใช้ fx_version 'cerulean'

  4. ใช้ game 'gta5' สำหรับ FiveM

  5. Client Scripts อยู่จริง

  6. Server Scripts อยู่จริง

  7. Shared Scripts อยู่จริง

  8. files Path ถูกต้อง

  9. NUI มี ui_page และ Files ครบ

  10. Dependencies ถูกต้อง

  11. Data Files ใช้ Type ถูก

  12. Map Resource ใช้ Configuration ที่เหมาะสม

  13. ไม่จำเป็นต้องใส่ lua54 'yes' ใน Resource ใหม่

  14. Resource ถูก Reload/Refresh

  15. ดู Console หลัง Start

ข้อมูลหลักเหล่านี้สอดคล้องกับ Resource Manifest Reference และ Creating Scripts Guide ปัจจุบันของ Cfx.re.

ตารางคำสั่ง fxmanifest.lua สำคัญ

Entryหน้าที่
fx_versionกำหนด FX Resource Version
gameกำหนด Game API Set
authorผู้สร้าง Resource
descriptionคำอธิบาย
versionVersion Resource
client_scriptScript ฝั่ง Client
server_scriptScript ฝั่ง Server
shared_scriptScript ทั้ง Client/Server
filesไฟล์ใน Resource Packfile
ui_pageหน้า NUI
data_fileGame Data File
dependencyResource Requirement
this_is_a_mapMark เป็น Map Resource
server_onlyResource ฝั่ง Server เท่านั้น
loadscreenLoading Screen
node_versionเลือก Node.js Runtime

Entry เหล่านี้ถูกกำหนดอยู่ใน Resource Manifest Reference ของ Cfx.re.

ตัวอย่าง fxmanifest.lua Client + Server + Shared

fx_version 'cerulean'
game 'gta5'

author 'YourName'
description 'Example FiveM resource'
version '1.0.0'

shared_script 'config.lua'

client_scripts {
    'client/main.lua',
    'client/menu.lua'
}

server_scripts {
    'server/main.lua',
    'server/commands.lua'
}

โครงสร้างนี้ใช้ Entry มาตรฐานที่ Cfx.re รองรับ ได้แก่ shared_script, client_script และ server_script.

ตัวอย่าง fxmanifest.lua สำหรับ NUI

fx_version 'cerulean'
game 'gta5'

ui_page 'html/index.html'

files {
    'html/index.html',
    'html/style.css',
    'html/app.js'
}

client_script 'client.lua'

Cfx.re ระบุว่า Local ui_page และ Dependencies ต้องอ้างผ่าน files.

ตัวอย่าง fxmanifest.lua สำหรับ Map

fx_version 'cerulean'
game 'gta5'

this_is_a_map 'yes'

this_is_a_map ใช้ Mark Resource ว่าเป็น GTA Map Resource.

Resource Map จริงอาจมี Files และ Configuration เพิ่มตามประเภท Assets ที่ใช้

ตัวอย่าง fxmanifest.lua สำหรับ Server-only Resource

fx_version 'cerulean'
game 'gta5'

server_only 'yes'

server_script 'server.lua'

Cfx.re ระบุว่า server_only ป้องกันไม่ให้ Clients ดาวน์โหลดข้อมูลของ Resource นั้น.

เหมาะกับ Resource ที่มี Logic ฝั่ง Server เพียงอย่างเดียว

FiveM fxmanifest.lua ไม่ทำงานแก้อย่างไร

ใช้ลำดับนี้:

ชื่อไฟล์ → ตำแหน่ง → Syntax → File Path → Refresh → Start → Console

อย่าเริ่มจาก Reinstall FXServer

ถ้า Server ขึ้น Warning ว่า Resource ไม่มี Manifest ให้ตรวจก่อนว่าไฟล์เป็น fxmanifest.lua จริงและอยู่ใน Resource Folder ที่ถูกต้องตามโครงสร้าง Cfx.re.

FiveM fxmanifest.lua ต้องมี lua54 ไหม

ไม่ต้องสำหรับ Resource ใหม่ในปัจจุบัน

Cfx.re ระบุชัดว่า lua54 ถูก Deprecated และตั้งแต่เดือนมิถุนายน 2025 Lua Scripts ทั้งหมดใช้ Lua 5.4 แล้ว.

ดังนั้น Manifest แบบใหม่สามารถใช้:

fx_version 'cerulean'
game 'gta5'

โดยไม่ต้องเพิ่ม:

lua54 'yes'

FiveM fxmanifest.lua กับ server.cfg ต่างกันอย่างไร

จำง่ายๆ:

server.cfg

กำหนดว่า Server ต้องเปิด Resource อะไร และกำหนดค่าระดับ FXServer

fxmanifest.lua

บอกว่า Resource ตัวนั้นประกอบด้วยอะไร

ตัวอย่าง:

ใน server.cfg

ensure myresource

ส่วนใน myresource/fxmanifest.lua

fx_version 'cerulean'
game 'gta5'
client_script 'client.lua'

Cfx.re แยก Resource Directory/Manifest และการ Start Resources ออกจากกันตามโครงสร้างนี้.

FiveM Resource ไม่ขึ้นใน txAdmin แก้อย่างไร

ตรวจว่า Resource อยู่ใต้ resources/ และมี fxmanifest.lua

จากนั้น Reload & Refresh Resource List ตาม Official Creating Scripts Guide แล้วค้นหา Resource อีกครั้ง.

ถ้ายังไม่ขึ้น ให้ดู Server Console หา Manifest หรือ Folder Error

FiveM Resource Start แล้วไม่มีอะไรเกิดขึ้น

ต้องดูว่า Resource มี Script ฝั่งไหน

ถ้า Manifest มี:

client_script 'client.lua'

ให้ดู F8 Console ฝั่ง Client

ถ้ามี:

server_script 'server.lua'

ให้ดู Server Console

การรู้ว่า Script ทำงานฝั่งไหนช่วยให้ Debug ถูกที่ตั้งแต่แรก.

FiveM fxmanifest.lua เขียนด้วย Notepad ได้ไหม

ได้ในแง่ที่เป็น Text/Lua File แต่ควรใช้ Text Editor ที่แสดง

  • Syntax Highlighting

  • File Extensions

  • Line Numbers

ได้ชัดเจน

Official Cfx.re Creating Scripts Guide ปัจจุบันใช้ Visual Studio Code ในตัวอย่างการสร้าง fxmanifest.lua.

ข้อสำคัญกว่าชื่อ Editor คืออย่าเผลอบันทึกเป็น fxmanifest.lua.txt

FiveM fxmanifest.lua ควรใช้ Template จากไหน

สำหรับ Resource ใหม่ควรเริ่มจาก Official Cfx.re Documentation มากกว่าดาวน์โหลด Manifest สำเร็จรูปจากแหล่งที่ไม่ทราบที่มา

Template พื้นฐานที่ปลอดภัยในการเริ่มเรียนรู้คือ:

fx_version 'cerulean'
game 'gta5'

author 'YourName'
description 'My resource'
version '1.0.0'

client_script 'client.lua'

ซึ่งสอดคล้องกับ Creating Scripts Guide ปัจจุบัน.

จากนั้นเพิ่ม server_script, files, ui_page, dependency หรือ data_file เฉพาะเมื่อ Resource ต้องใช้จริง

สรุป FiveM fxmanifest.lua คืออะไร

fxmanifest.lua คือ Resource Manifest หลักของ FiveM ที่อยู่ภายใน Resource Folder และกำหนด Metadata รวมถึง Client Scripts, Server Scripts, Shared Scripts, Files, NUI, Data Files และ Dependencies ของ Resource นั้น.

สำหรับ Resource FiveM ใหม่ โครงสร้างพื้นฐานควรเริ่มจาก fx_version 'cerulean' และ game 'gta5' แล้วเพิ่ม Scripts หรือ Files ตามที่ Resource ใช้งานจริง โดย Official Creating Scripts Guide ปัจจุบันใช้โครงสร้างดังกล่าวกับ Resource ตัวอย่างโดยตรง.

หาก Resource ไม่ถูกตรวจพบ ให้เช็กว่า Resource อยู่ใต้ resources/, Manifest ชื่อ fxmanifest.lua ถูกต้อง และไม่ได้เผลอบันทึกเป็นไฟล์ .txt เพราะ Cfx.re ระบุว่า Resource Folder ต้องมี Manifest จึงจะถูก Parse เป็น Resource อย่างถูกต้อง.

อีกจุดที่สำคัญในปี 2026 คือ ไม่จำเป็นต้องใส่ lua54 'yes' แล้ว เพราะ Cfx.re ระบุว่า Directive นี้ Deprecated และ Lua Scripts ทั้งหมดเปลี่ยนมาใช้ Lua 5.4 ตั้งแต่เดือนมิถุนายน 2025.

สำหรับผู้อ่าน comsiam ให้จำสูตร “server.cfg สั่งให้ Resource เปิด ส่วน fxmanifest.lua บอกว่า Resource มีอะไร” และ comsiam แนะนำให้เริ่ม Manifest แบบเล็กที่สุดก่อน แล้วเพิ่ม Client, Server, NUI, Files และ Dependencies ทีละส่วน เพราะ Debug ง่ายกว่าการ Copy fxmanifest.lua ขนาดใหญ่จาก Resource อื่นมาทั้งไฟล์

Comments

Popular posts from this blog

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

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

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