วิธีเพิ่มเสื้อผ้าเข้า FiveM Server
การเพิ่ม เสื้อผ้า Custom หรือ Add-on Clothes เข้า FiveM Server ไม่ควรทำด้วยการ Copy ไฟล์เข้า resources แล้วหวังว่าเสื้อจะปรากฏใน Clothing Menu ทันที เพราะระบบจริงแบ่งเป็นอย่างน้อย 3 ส่วน ได้แก่ Clothing Asset, FiveM Resource และ Clothing Script/Menu
FiveM Server โหลด Content ผ่านระบบ Resources โดยแต่ละ Resource สามารถประกอบด้วย Scripts และ Streaming Assets และ Resource ที่ถูกต้องต้องมี fxmanifest.lua อยู่ที่ Resource Root เพื่อให้ FXServer Parse ได้.
บทความนี้จาก comsiam จะพาทำตั้งแต่ตรวจไฟล์เสื้อ วาง Resource ให้ถูก ใช้ refresh และ ensure ไปจนถึงตรวจ Component, Drawable, Texture และ Collection เมื่อเสื้อเข้า Server แล้วแต่ไม่ปรากฏในเมนู
ก่อนเพิ่มเสื้อผ้า FiveM ต้องเข้าใจอะไร
โครงสร้างโดยรวมคือ
Clothing Pack
↓
FiveM Resource
↓
Server โหลด Resource
↓
Ped ได้ Clothing Content
↓
Clothing Menu อ่านรายการ
↓
ผู้เล่นเลือก Drawable / Texture
ถ้าขั้นใดขั้นหนึ่งมีปัญหา อาจเกิดอาการ Resource Start สำเร็จแต่ผู้เล่นยังไม่เห็นเสื้อใหม่
① Backup Server ก่อนเพิ่มเสื้อผ้า
ก่อนติดตั้งให้ Backup อย่างน้อย
server.cfg
resources/[clothes]/
Clothing Script
Outfit Database
โดยเฉพาะถ้าจะ Merge Pack เดิมกับ Pack ใหม่
วิธีที่ปลอดภัยกว่าคือเพิ่ม Pack ใหม่เป็น Resource แยกก่อน แล้วทดสอบให้ทำงาน จากนั้นค่อยพิจารณา Merge
② แตก ZIP เสื้อผ้าก่อน
หลังดาวน์โหลด Clothing Pack อย่านำ ZIP ไปวางใน resources โดยตรง
แตกไฟล์ก่อนแล้วหา Resource Root
สิ่งสำคัญคือ Folder ที่มี
fxmanifest.lua
FiveM กำหนดว่า Resource Folder ต้องมี Resource Manifest เพื่อให้ถูก Parse เป็น Resource อย่างถูกต้อง.
③ หา Resource Root ให้ถูก
ปัญหาที่พบบ่อยคือ Folder ซ้อน
เช่น
police_clothes/
└── police_clothes/
├── fxmanifest.lua
└── stream/
Resource จริงคือ Folder ชั้นที่มี fxmanifest.lua
ถ้าเอาชั้นนอกไปวางแล้วสั่ง
ensure police_clothes
Server อาจหา Manifest ไม่ถูกต้อง
④ fxmanifest.lua คืออะไร
fxmanifest.lua คือ Resource Manifest ของ FiveM ใช้กำหนด Metadata, Scripts, Files และ Requirements ของ Resource.
ตัวอย่าง Manifest ขั้นพื้นฐานอาจเริ่มจาก
fx_version 'cerulean'
game 'gta5'
แต่ อย่าเขียน Manifest ใหม่ทับของ Clothing Pack ถ้ามีของเดิมอยู่แล้ว
ใช้ของ Creator ก่อน
⑤ อย่าลบ fxmanifest.lua ของผู้สร้าง
Clothing Resource บาง Pack อาจมี Configuration เพิ่มเติมใน Manifest เช่น
Files
Dependencies
Game Build Requirement
Policy Requirement
Client Scripts
Resource Manifest ปัจจุบันรองรับ dependency และ Constraints อย่าง /gameBuild: หรือ /policy:subdir_file_mapping โดย Cfx.re ระบุ subdir_file_mapping ว่าเกี่ยวข้องกับ clothing support.
ดังนั้นอย่าลบ Manifest เดิมแล้วแทนด้วยไฟล์สั้น ๆ เพียงเพื่อให้ Resource Start
⑥ โฟลเดอร์ stream คืออะไร
FiveM Resource สามารถประกอบด้วย Streaming Assets ซึ่งเป็น Content ที่ Client โหลดจาก Resource.
Clothing Pack จำนวนมากจึงมีโครงสร้างลักษณะ
custom_clothes/
├── fxmanifest.lua
└── stream/
แต่ให้รักษา Directory Structure ที่ Creator ให้มาเป็นหลัก
⑦ ตัวอย่างการจัด Resource เสื้อผ้า
สามารถจัด Category เช่น
resources/
└── [clothes]/
├── police_clothes/
│ ├── fxmanifest.lua
│ └── stream/
│
├── ems_clothes/
│ ├── fxmanifest.lua
│ └── stream/
│
└── gang_clothes/
├── fxmanifest.lua
└── stream/
FiveM รองรับ Folder ที่อยู่ใน [brackets] เป็น Category และ Resources ที่อยู่ภายในสามารถถูก Start แยกกันได้.
⑧ ตั้งชื่อ Resource ให้อ่านง่าย
ควรใช้ชื่อเช่น
police_clothes
ems_clothes
gang_red_clothes
city_fashion
หลีกเลี่ยงชื่อ
new
new2
final
final_final
pack
เพราะเมื่อ Server มี Clothing Pack จำนวนมาก การหา Pack ที่ทำให้เสื้อเพี้ยนจะยากขึ้น
⑨ Copy Resource เข้า resources
ตัวอย่าง
server-data/
└── resources/
└── [clothes]/
└── police_clothes/
และตรวจให้แน่ใจว่า
police_clothes/fxmanifest.lua
มีอยู่จริง
FiveM โหลด Resources จาก resources/ ใน Server Data Directory.
⑩ เพิ่ม Resource แล้วต้อง Restart Server ไหม
ไม่จำเป็นต้อง Restart Server ทั้งเครื่องทุกครั้ง
FiveM มีคำสั่ง
refresh
สำหรับ Rescan resources Folder และโหลด Resource Manifests ใหม่ ทำให้ Resource ที่เพิ่งเพิ่มสามารถถูก Start ได้.
ดังนั้นหลัง Copy Resource ใหม่สามารถใช้
refresh
ก่อน
⑪ หลัง refresh ใช้ ensure
จากนั้นใช้
ensure police_clothes
Cfx.re ระบุว่า ensure จะ Start Resource หากยังไม่ได้ Start และ Restart Resource หากกำลังทำงานอยู่แล้ว.
Workflow จึงเป็น
refresh
ensure police_clothes
⑫ refresh กับ ensure ต่างกันอย่างไร
refresh
refresh
สแกน Resource Folders และ Manifests ใหม่.
ensure
ensure resource_name
ทำให้ Resource นั้นอยู่ในสถานะ Started โดย Start หรือ Restart ตามสถานะปัจจุบัน.
จึงไม่ใช่คำสั่งเดียวกัน
⑬ เพิ่มใน server.cfg
ถ้าต้องการให้ Clothing Resource Start ทุกครั้งเมื่อ Server เปิด ให้เพิ่มใน Configuration ตามโครงสร้าง Server ของคุณ เช่น
ensure police_clothes
ensure ems_clothes
ensure gang_clothes
FiveM Resources สามารถถูก Start แยกตามชื่อ Resource และ ensure รองรับ Resource Name โดยตรง.
⑭ สามารถ ensure ทั้ง Category ได้ไหม
ได้
Server Commands ของ FiveM ระบุว่า ensure รองรับ Category Names ด้วย.
ดังนั้นถ้ามี
[clothes]
ที่มีเฉพาะ Resources ที่ต้องการ Start จริง อาจใช้ Category Management ได้
อย่างไรก็ตาม Server Production ควรจัด Category ให้เป็นระเบียบก่อนใช้วิธีนี้
⑮ Resource Started แล้วเสื้อจะขึ้นทันทีไหม
ไม่เสมอ
การ Start สำเร็จหมายความว่า Resource ถูกโหลดในระดับ FiveM Resource แต่ยังต้องตรวจว่า
Ped Model
Collection
Component
Drawable
Texture
Clothing Menu
มองเห็น Content นั้นถูกหรือไม่
ดังนั้นข้อความ
Started resource police_clothes
ไม่ได้ยืนยันว่า Clothing Menu Integration สมบูรณ์แล้ว
⑯ เข้า Server แล้วควรทำอะไร
หลัง Resource Started ให้เข้า Server แล้วเปิด Clothing Menu ที่ใช้งานอยู่
ตรวจทีละประเภท เช่น
Tops
Torso
Undershirts
Legs
Shoes
Accessories
จากนั้นเลื่อนไปยังรายการท้าย ๆ หรือ Collection ที่เพิ่งเพิ่มตามวิธีที่ Clothing Script รองรับ
⑰ Component คืออะไร
เสื้อผ้า Ped แบ่งออกเป็น Components และ FiveM มี Native สำหรับเปลี่ยน Ped Component Variation
โครงสร้างคือ
Ped
↓
Component
↓
Drawable
↓
Texture
Cfx.re Collection Documentation ยืนยันว่า Drawable Components ถูกจัดเก็บเป็น Collections และสามารถอ้างได้ทั้ง Global และ Collection-based Index.
⑱ Tops อยู่ Component ไหน
ในระบบ Ped Variation ของ GTA V/FiveM เสื้อด้านนอกถูกจัดอยู่ใน Component Variation ที่ Clothing Scripts ใช้ควบคุมร่วมกับ Components อื่น เช่น Torso, Legs และ Shoes
สิ่งสำคัญกว่าการจำเลขเพียงอย่างเดียวคือ Clothing Menu ต้อง Apply Component + Drawable + Texture ให้กับ Ped ที่ถูกต้อง
⑲ Drawable คืออะไร
Drawable คือ Variation หลักภายใน Component
เช่น
Tops
├── Drawable 0
├── Drawable 1
├── Drawable 2
└── ...
Custom Shirt ใหม่จึงอาจปรากฏเป็น Drawable เพิ่มใน Component/Collection ตาม Asset Structure ที่ใช้
⑳ Texture คืออะไร
Drawable หนึ่งสามารถมีหลาย Texture Variations
เช่น
Police Shirt
├── Texture 0 = Black
├── Texture 1 = Blue
├── Texture 2 = Supervisor
└── Texture 3 = SWAT
ดังนั้นถ้าเสื้อขึ้นแล้วแต่สีหรือ Logo ไม่ตรง อย่ารีบสรุปว่า Resource เสีย
ตรวจ Texture Variation ก่อน
㉑ Male กับ Female ต้องตรวจแยก
Clothing Data ผูกกับ Ped/Collection Structure
ถ้า
Male → ขึ้น
Female → ไม่ขึ้น
ให้ตรวจ Asset สำหรับ Female แยก
อย่าใช้ Drawable Index ของ Ped หนึ่งกับอีก Ped โดยคิดว่าจะตรงกันอัตโนมัติ
Collection APIs ของ FiveM ทำงานในบริบทของ Ped และ Collections ที่ Ped นั้นมี.
㉒ Add-on Clothes กับ Replace Clothes ต้องแยกก่อนติดตั้ง
ถ้า Pack เป็น Add-on จะเพิ่ม Custom Content/Collection ตามโครงสร้างของ Pack
ถ้าเป็น Replace จะมีแนวคิดแทน Assets/Variations ที่มีอยู่
อย่าใช้วิธีติดตั้งหรือ Merge เหมือนกันโดยไม่อ่านรายละเอียดของ Pack
㉓ Collection คืออะไร
Cfx.re ระบุว่า GTA V Ped Drawable Components และ Props ถูกเก็บใน Named Groups ที่เรียกว่า Collections.
ภาพรวม
Base Collection
DLC Collection
Custom Collection A
Custom Collection B
แต่ละ Collection มี Drawables ของตัวเอง
㉔ ทำไม Collection สำคัญกับ Add-on Clothes
เพราะ Custom Clothes สามารถถูกจัดอยู่ใน Custom Collections
และ Cfx.re ระบุว่าหลัง GTA Title Update มี Official DLC Collection ใหม่เพิ่มเข้ามา ทำให้ Global Index ของ Custom Collections สามารถเลื่อน แต่ Local Index ภายใน Collection ยังคงที่.
นี่มีผลโดยตรงกับ Saved Outfit
㉕ Global Index คืออะไร
Global Index คือการนับ Drawable ต่อจาก Collections ทั้งหมด
เช่น
Collection A
0
1
2
Collection B
3
4
5
ถ้า GTA เพิ่ม Drawables ก่อน Collection B ตำแหน่ง Global ของ B สามารถเลื่อนได้ตามระบบที่ Cfx.re อธิบาย.
㉖ Local Index คืออะไร
Local Index เริ่มนับใหม่ภายในแต่ละ Collection
เช่น
police_collection
├── 0
├── 1
├── 2
└── 3
Cfx.re ระบุว่า Collection-based indexes ถูกออกแบบให้ Stable หลัง Title Updates.
สำหรับ Server ใหม่จึงควรพิจารณา Architecture นี้หาก Clothing Script รองรับ
㉗ เสื้อขึ้นคนละตัวหลัง GTA Update ทำอย่างไร
ก่อน Reinstall Pack ให้ตรวจว่า Clothing Script บันทึก Global Drawable Index หรือไม่
เพราะ Cfx.re ระบุว่าการเพิ่ม Official DLC Collections ใน Title Update สามารถ Shift Global Index ของ Custom Collections ได้.
อาการอาจเป็น
ก่อน Update
Drawable 150 = Police Shirt
หลัง Update
Drawable 150 = Item อื่น
โดยไฟล์เสื้อเดิมอาจยังอยู่ครบ
㉘ Collection-based Natives ช่วยอะไร
FiveM มี Collection-based APIs สำหรับ
Components
Props
ตรวจ Collections
แปลง Global ↔ Local Index
Apply Component จาก Collection
และ Cfx.re ระบุว่า APIs ชุดนี้มีสำหรับ GTAV ฝั่ง Client.
จุดเด่นคือใช้
Collection Name
+
Local Drawable Index
แทนการอ้าง Global Index อย่างเดียว
㉙ Clothing Menu เก่าอาจไม่รองรับ Collection ใหม่
เป็นไปได้
Resource เสื้อผ้าสามารถ Stream Content สำเร็จ แต่ Clothing Menu อาจมี Logic จำกัดจำนวน Drawable หรือใช้ระบบ Index แบบเก่า
ถ้า Item ไม่ปรากฏใน Menu แต่ Resource Start ปกติ ให้ตรวจ Clothing Script Integration ต่อ ไม่ใช่ติดตั้ง Asset ซ้ำอย่างเดียว
㉚ วิธีแยกว่า Asset หรือ Menu มีปัญหา
ทดสอบตามลำดับ
Resource Started?
↓
Ped มี Collection/Drawable ใหม่?
↓
สามารถ Apply Asset ได้?
↓
Clothing Menu แสดง Asset หรือไม่?
ถ้า Asset Apply ได้แต่ Menu ไม่แสดง ปัญหามีแนวโน้มอยู่ที่ Menu/Index Logic มากกว่าตัว Clothing Resource
㉛ เสื้อขึ้นแต่แขนหาย
ตรวจ Combination ของ
Top
Torso
Undershirt
ก่อน
เสื้อตัวใหม่อาจต้องใช้ Torso/Arms Variation ที่สัมพันธ์กัน
อย่าแก้ Resource Manifest หากตัวเสื้อขึ้นแล้วแต่ Body Combination ผิด
㉜ เสื้อทะลุตัว
ถ้าเสื้อขึ้นแต่
แขนทะลุ
ตัวทะลุ
เสื้อด้านในโผล่
Geometry แตกตอน Animation
ควรตรวจ Asset, Weighting และ Clothing Combination
การ refresh หรือ ensure ซ้ำจะไม่แก้ Mesh ที่สร้างไม่เหมาะกับ Ped
㉝ Texture เสื้อไม่ขึ้น
ถ้ารูปทรงเสื้อถูกแต่เป็นสีผิดหรือ Texture หาย ให้ตรวจ
Texture Variation
Texture Asset
Material
ก่อน
อย่าคิดว่า Drawable เสียเพียงเพราะ Texture ไม่ถูก
㉞ หมวกไม่ขึ้นแต่เสื้อขึ้น
Components และ Props เป็นคนละกลุ่มของ Ped Clothing Data และ Collection-based APIs ของ FiveM รองรับทั้ง Drawable Components และ Props.
ดังนั้นถ้า Clothing Pack มีหมวกหรือแว่น ต้องตรวจ Prop Handling ใน Menu ด้วย
㉟ Outfit เดิมเพี้ยนหลังเพิ่ม Pack ใหม่
อย่ารีบลบ Pack ใหม่
ตรวจ
Global Index
Custom Collection
Clothing Menu Cache/Data
Saved Outfit IDs
Asset Conflict
โดยเฉพาะ Server ที่อ้าง Custom Clothes ด้วย Global Index เนื่องจาก Index Structure เป็นจุดที่ Cfx.re เตือนเรื่องการ Shift หลัง Title Updates.
㊱ เพิ่ม Pack แล้วเสื้อเก่าหาย
ทำ A/B Test
Old Pack ON
New Pack OFF
จากนั้น
Old Pack OFF
New Pack ON
แล้ว
Old Pack ON
New Pack ON
ถ้าแต่ละ Pack เดี่ยวปกติแต่เปิดพร้อมกันเสีย ให้ตรวจ Asset/Collection/Naming Conflict
㊲ อย่า Merge Pack ตั้งแต่ครั้งแรก
ช่วงติดตั้งครั้งแรกควรใช้
police_pack
ems_pack
gang_pack
เป็น Resources แยก
FiveM Resources สามารถ Start, Stop และ Restart แยกจากกันได้ จึงเหมาะกับการ Isolation Test.
เมื่อทุก Pack ทำงานแล้วจึงค่อยตัดสินใจว่าจำเป็นต้อง Merge จริงหรือไม่
㊳ Copy แล้วกด Replace ทั้งหมดอันตราย
หากสอง Packs มีไฟล์ชื่อเหมือนกันแต่ Content คนละตัว การกด Replace อาจลบ Asset เดิมไป
ดังนั้นก่อน Merge ต้องตรวจอย่างน้อย
Filename
Collection
Male/Female
Component
Texture
Manifest
การลดจำนวน Folder ไม่คุ้มกับการทำ Clothing Pack เดิมเสีย
㊴ subdir_file_mapping คืออะไร
Resource Manifest ของ FiveM รองรับ Policy Constraint
/policy:subdir_file_mapping
และเอกสาร Cfx.re ระบุว่า Policy นี้เกี่ยวข้องกับ clothing support.
หาก Clothing Pack ของ Creator กำหนด Dependency/Policy นี้ไว้ อย่าลบออกจาก Manifest เพียงเพื่อให้ Resource Start
㊵ Game Build สำคัญกับ Clothing Pack ไหม
Resource Manifest สามารถกำหนด Minimum Game Build ผ่าน Constraint รูปแบบ
/gameBuild:...
ได้.
ดังนั้นหาก Creator ระบุ Game Build Requirement ควรตรวจ Server Build Configuration ให้ตรง แทนการแก้ Asset Files แบบสุ่ม
㊶ อย่าเพิ่ม gameBuild เองถ้า Creator ไม่ได้ระบุ
การบังคับ Game Build เป็นการตัดสินใจระดับ Server ไม่ใช่วิธีทำให้เสื้อขึ้นโดยอัตโนมัติ
ถ้า Resource Start แต่ Clothes ไม่แสดง ให้ตรวจ Ped/Collection/Menu ก่อน
อย่าเปลี่ยน Build ทั้ง Serverเพียงเพราะ Clothing Item หนึ่งตัวมีปัญหา
㊷ ต้องแก้ fxmanifest.lua เองไหม
ถ้า Pack มี Manifest ทำงานอยู่แล้ว ไม่ต้องแก้
ควรแก้เฉพาะเมื่อ
Creator ระบุให้แก้
คุณเข้าใจ Dependency
กำลังพัฒนา Resource เอง
มี Error ที่ชี้ไป Manifest จริง
Resource Manifest มีหน้าที่มากกว่าแค่ทำให้ Folder Start ได้.
㊸ lua54 'yes' ต้องเพิ่มไหม
Resource Manifest Documentation ปัจจุบันระบุว่า lua54 ถูก Deprecated แล้ว และ Lua 5.4 เป็นค่าใช้งานทั่วไปใน FiveM ปัจจุบัน
ดังนั้นการเพิ่ม lua54 'yes' ไม่ใช่วิธีทำให้ Clothing Assets โหลด และไม่ควรใส่เพียงเพราะเห็นจาก Tutorial เก่า.
㊹ Clothes Resource ไม่มี Script ได้ไหม
ได้ในหลักการ เพราะ FiveM Resource สามารถประกอบด้วย Streaming Assets ได้ ไม่จำเป็นต้องมี Client/Server Script ทุก Resource.
ดังนั้น Clothing Asset Resource อาจมีเพียง Manifest และ Assets ตามโครงสร้างของ Pack
ส่วน Clothing Menu อยู่ Resource อื่น
㊺ เสื้อผ้ากับ Clothing Menu ควรแยก Resource ไหม
เป็นแนวทางที่มีประโยชน์
ตัวอย่าง
custom_clothes/
clothing_menu/
character_system/
ช่วยให้เมื่อ Item ไม่ขึ้นสามารถแยกได้ว่า
Asset Problem
หรือ
Menu Problem
Resources ของ FiveM สามารถจัดการแยกกันได้.
㊻ Clothing Pack ต้องมี Database ไหม
ตัว Asset เองไม่จำเป็นต้องมี Database
Database มักเกี่ยวกับ
Saved Outfit
Character Appearance
Job Uniform
Clothing Shop Purchase
ซึ่งเป็นหน้าที่ของ Clothing/Character System
ดังนั้นอย่าหา SQL File ในทุก Clothing Asset Pack แล้วสรุปว่า Pack ไม่สมบูรณ์หากไม่มี
㊼ ต้อง Import SQL ทุก Pack ไหม
ไม่
หากเป็น Asset-only Pack อาจไม่มี SQL ใด ๆ
ให้ Import SQL เฉพาะเมื่อ Documentation ของ Clothing Script/Pack ระบุจริง
การ Import SQL แบบสุ่มเสี่ยงทำ Database Schema ปัจจุบันเสีย
㊽ เสื้อผ้า Add-on ต้อง Restart Clothing Menu ไหม
หาก Menu สร้างรายการ Clothing ตอน Resource Start การ Restart Menu อาจจำเป็นตาม Architecture ของ Script
แต่ FiveM ไม่มี Rule กลางว่าทุก Clothing Menu ต้อง Restart
เริ่มจาก
refresh
ensure clothes_resource
ตาม Resource Commands ก่อน.
จากนั้นทำตาม Documentation ของ Menu ที่ใช้
㊾ ใช้ restart ต่างจาก ensure อย่างไร
restart resourceName จะ Restart Resource หาก Resource นั้น Started อยู่ ส่วน ensure resourceName จะ Start ถ้ายังหยุด หรือ Restart ถ้า Started แล้ว.
ดังนั้นสำหรับการติดตั้ง Resource ใหม่ ensure มักสะดวกกว่า
㊿ วิธีติดตั้งแบบสั้นที่สุด
ขั้นตอนหลักคือ
① Backup
② แตก Clothing Pack
③ หา Folder ที่มี fxmanifest.lua
④ นำ Resource เข้า resources/[clothes]/
⑤ รักษาโครงสร้างของ Creator
⑥ Console:
refresh
⑦ Console:
ensure resource_name
⑧ เพิ่ม ensure ใน server.cfg
⑨ เข้าเกมด้วย Ped Model ที่ถูกต้อง
⑩ เปิด Clothing Menu
⑪ ตรวจ Component / Collection / Drawable / Texture
⑫ ทดสอบ Outfit และ Animation
ส่วน refresh, ensure, Resource Root และ Manifest เป็นกลไกมาตรฐานของ FiveM Resources ตามเอกสาร Cfx.re.
51. ถ้า Server แจ้งหา Resource ไม่เจอ
ตรวจ
Folder อยู่ใน resources หรือไม่
ชื่อ ensure ตรง Folder หรือไม่
Folder ซ้อนหรือไม่
มี fxmanifest.lua หรือไม่
Cfx.re ระบุว่า Resource ที่ไม่มี Manifest ที่ถูกต้องจะมี Warning และไม่ถูก Parse เป็น Resource ตามปกติ.
52. ถ้า Server แจ้ง Resource Start แต่ไม่มีเสื้อใหม่
ตรวจต่อ
Ped Model
Collection
Component
Drawable
Texture
Menu Integration
อย่าทำ refresh ซ้ำสิบครั้ง เพราะ Server รู้จัก Resource แล้ว
ปัญหาอยู่ Layer ถัดไป
53. ถ้าเสื้อมีใน Male แต่ไม่มี Female
ตรวจว่า Resource มี Asset สำหรับ Female จริงหรือไม่ และ Menu กำลัง Query Collections/Variations ของ Ped Female หรือไม่
Cfx.re Collection APIs อ่าน Collections ในบริบทของ Ped และรองรับการ Query Collection/Drawable Information โดยตรง.
54. ถ้าเสื้อใหม่อยู่เลขท้ายมาก
ถ้า Clothing Menu ใช้ Global Index เสื้อ Custom อาจปรากฏหลัง Base Game และ Official DLC Collections เพราะ Cfx.re ระบุว่า Custom Collections ถูกเพิ่มต่อท้าย Official Collections ในระบบ Global Index.
แต่อย่ายึด Global Number เป็น Identifier ระยะยาวโดยไม่เข้าใจผลของ Title Updates
55. ถ้า Update แล้วเลขเสื้อเปลี่ยน
นี่คือเหตุผลสำคัญที่ควรพิจารณา Collection-based System
Cfx.re ระบุว่า Local Index ภายใน Collection ยังคง Stable หลัง Title Update แม้ Global Index ของ Custom Collections จะ Shift.
สำหรับระบบ Outfit ขนาดใหญ่ นี่ช่วยลด Migration ในอนาคตได้มาก
56. วิธีทดสอบเสื้อหลังติดตั้ง
อย่าทดสอบแค่ยืนเฉย ๆ
ทดสอบ
เดิน
วิ่ง
กระโดด
นั่งรถ
ยกแขน
ถืออาวุธ
Emote
Crouch
แล้วตรวจ
Clipping
Arms
Torso
Texture
Props
Outfit Save/Load
เพราะเสื้อที่ดูปกติใน Menu อาจมี Mesh/Combination Problem ระหว่าง Animation
57. ทดสอบ Save Outfit
หลังเลือกเสื้อใหม่
Save Outfit
↓
เปลี่ยนชุด
↓
Load Outfit เดิม
↓
Reconnect Server
↓
Load อีกครั้ง
เพื่อยืนยันว่า Clothing Database เก็บ
Drawable
Texture
Collection
ตาม Architecture ที่ Script ต้องการ
โดยเฉพาะระบบที่กำลังเปลี่ยนไปใช้ Collection-based Index
58. ทดสอบหลัง Restart Server
อย่าให้ผ่านเฉพาะตอนใช้
refresh
ensure
จาก Console
Restart Server จริงหนึ่งครั้งแล้วตรวจว่า server.cfg Start Clothing Resource ครบ
เพราะ Resource ที่ไม่ได้ถูกใส่ใน Startup Configuration อาจทำงานตอนทดสอบ แต่หายหลัง Server Restart
59. ทดสอบหลังเปลี่ยน Game Build
หลัง GTA/FiveM Title Update หรือเปลี่ยน Game Build ควร Regression Test
Male Clothes
Female Clothes
Props
Saved Outfits
Job Uniforms
Clothing Shops
โดยเฉพาะระบบที่ยังพึ่ง Global Index เพราะ Cfx.re ระบุว่าตำแหน่ง Custom Global Drawables/Props สามารถเปลี่ยนหลัง Title Updates.
60. Checklist เพิ่มเสื้อผ้า FiveM Server
ก่อนถือว่าติดตั้งเสร็จ ตรวจรายการนี้
☐ Backup แล้ว
☐ แตก ZIP แล้ว
☐ หา Resource Root ถูก
☐ fxmanifest.lua อยู่ถูกตำแหน่ง
☐ ไม่ได้เขียนทับ Manifest เดิม
☐ Resource อยู่ใต้ resources/
☐ โครงสร้าง Pack ไม่ถูกย้ายมั่ว
☐ refresh สำเร็จ
☐ ensure สำเร็จ
☐ เพิ่ม Resource ใน Startup Config แล้ว
☐ Male/Female ถูก Ped
☐ Component ถูก
☐ Drawable ถูก
☐ Texture ถูก
☐ Props ขึ้น
☐ Clothing Menu เห็น Item
☐ Save Outfit ได้
☐ Load Outfit ได้
☐ Reconnect แล้วยังถูก
☐ Restart Server แล้วยังทำงาน
☐ ไม่มี Conflict กับ Pack เดิม
ตารางแก้ปัญหาหลังเพิ่มเสื้อผ้า
| อาการ | จุดที่ควรตรวจ |
|---|---|
| Server หา Resource ไม่เจอ | Folder / fxmanifest.lua |
| เพิ่งเพิ่ม Resource แต่ Start ไม่ได้ | refresh |
| Resource หยุดอยู่ | ensure |
| Start แล้วไม่มีเสื้อ | Ped / Collection / Menu |
| Male ขึ้น Female ไม่ขึ้น | Female Asset/Ped |
| เสื้อขึ้นคนละตัว | Drawable/Index |
| สีผิด | Texture ID |
| แขนหาย | Top/Torso |
| เสื้อทะลุ | Mesh/Weighting |
| หมวกไม่ขึ้น | Prop System |
| Outfit Save แล้ว Load ผิด | Database/Index |
| GTA Update แล้วชุดเพี้ยน | Global Index Shift |
| เพิ่ม Pack ใหม่แล้ว Pack เก่าพัง | Asset/Collection Conflict |
| Merge แล้วเสื้อหาย | File ถูก Replace |
| Restart Server แล้ว Pack หาย | Startup Configuration |
วิธีจัด Clothing Server ระยะยาว
ถ้าตั้งใจมีเสื้อผ้าจำนวนมาก แนะนำให้จัด
[clothes]/
├── police_clothes/
├── ems_clothes/
├── gang_clothes/
├── business_clothes/
└── civilian_clothes/
และเก็บ Documentation ของแต่ละ Pack เช่น
Creator
Version
Male/Female
Collection
วันที่ติดตั้ง
Game Build ที่ทดสอบ
FiveM รองรับ Category Folders และ Resources แยกอย่างเป็นระบบอยู่แล้ว จึงไม่จำเป็นต้องรวมทุกอย่างเป็น Resource เดียว.
ควรใช้ Collection-based Clothing System หรือไม่
สำหรับ Server ใหม่หรือระบบที่สามารถพัฒนา Clothing Script เองได้ ควรพิจารณาอย่างจริงจัง
Cfx.re ระบุชัดว่าเหตุผลของ Collection-based natives คือแก้ปัญหา Global Custom Drawable/Prop Index ที่เปลี่ยนตาม Title Updates และ Collection Local Index ถูกออกแบบให้คงที่.
ภาพรวมที่ดีกว่าสำหรับ Saved Outfit จึงเป็น
Ped Model
+
Component/Prop
+
Collection Name
+
Local Drawable
+
Texture
แทนที่จะเก็บ Global Drawable Number อย่างเดียว
สิ่งที่ไม่ควรทำเมื่อเพิ่มเสื้อ FiveM
หลีกเลี่ยง
Copy ทุก Pack รวม Folder เดียวทันที
กด Replace All
ลบ fxmanifest.lua เดิม
สร้าง Manifest ใหม่โดยเดา
เปลี่ยน Game Build เพื่อแก้เสื้อหนึ่งตัว
Import SQL ที่ไม่รู้หน้าที่
ใช้ Male ID กับ Female
ลบ Outfit Database เพราะเลขเสื้อเพี้ยน
ล้าง Cache เป็นคำตอบแรก
ให้แยกปัญหาว่าอยู่ที่ Resource, Asset, Ped, Collection, Index หรือ Clothing Menu ก่อน
สรุป วิธีเพิ่มเสื้อผ้าเข้า FiveM Server
ขั้นตอนมาตรฐานที่ควรจำคือ
Clothing Pack
↓
หา Resource Root
↓
ตรวจ fxmanifest.lua
↓
วางใน resources/
↓
refresh
↓
ensure resource_name
↓
เพิ่ม Startup Configuration
↓
เข้าเกม
↓
ตรวจ Ped / Collection
↓
ตรวจ Component / Drawable / Texture
↓
ทดสอบ Clothing Menu
↓
Save / Load Outfit
FiveM โหลด Server Content ผ่านระบบ Resources โดย Resource สามารถมี Streaming Assets และต้องมี Resource Manifest ที่ถูกต้อง.
หากเพิ่งเพิ่ม Resource ให้ใช้
refresh
เพื่อ Rescan Resources และใช้
ensure resource_name
เพื่อ Start หรือ Restart Resource ตามสถานะปัจจุบัน.
ถ้า Resource Start แล้วแต่เสื้อไม่ขึ้น อย่าติดตั้งซ้ำทันที ให้ตรวจ Ped Model, Collection, Component, Drawable, Texture และ Clothing Menu
ถ้า เสื้อขึ้นคนละตัวหลัง GTA Update ให้ตรวจ Global Index เพราะ Cfx.re ระบุว่า Custom Drawable/Prop Global Index สามารถเลื่อนได้หลัง Title Update ขณะที่ Collection-based Local Index ถูกออกแบบให้คงที่.
และถ้า เพิ่ม Pack ใหม่แล้ว Pack เก่าพัง ให้แยก Resources ทดสอบก่อน Merge เพื่อดูว่าเกิด File, Collection หรือ Index Conflict
แนวทางของ comsiam คือทำให้ Clothing Pack ใหม่ทำงานสมบูรณ์ในฐานะ Resource แยกก่อนเสมอ จากนั้นจึงค่อยรวมเข้ากับระบบหลัก เพราะการติดตั้งเสื้อให้ขึ้นนั้นไม่ยากเท่าการรักษาเสื้อหลายพันชิ้นให้ไม่เพี้ยนเมื่อ Server โตและ GTA มี Title Update ในอนาคต
Comments
Post a Comment