วิธีลบ Script FiveM ออกจาก Server
วิธีลบ Script FiveM ออกจาก Server ที่ถูกต้อง ไม่ควรลบโฟลเดอร์ Script ทิ้งทันที เพราะ Script บางตัวอาจเชื่อมโยงกับ server.cfg, Dependency, Database, Framework, Items, Jobs หรือ Resource อื่น หากลบผิดลำดับอาจทำให้ Server Error หรือ Script ตัวอื่นใช้งานไม่ได้ตามไปด้วย
วิธีที่ปลอดภัยคือ
Backup
↓
ตรวจ Dependency
↓
Stop Resource
↓
เอา ensure ออกจาก server.cfg
↓
Restart/ทดสอบ Server
↓
ลบ Resource
↓
จัดการ SQL และ Config ที่เกี่ยวข้อง
↓
ตรวจ Console อีกครั้ง
หากเป็น Server ที่มีผู้เล่นจริง ควร Backup ก่อนทุกครั้ง โดยเฉพาะ Script ที่บันทึกข้อมูลลง Database
① ก่อนลบ Script FiveM ต้องตรวจอะไรบ้าง
ก่อนลบ Resource ควรตอบให้ได้ก่อนว่า Script ตัวนั้นเกี่ยวข้องกับอะไรบ้าง
ตรวจอย่างน้อยดังนี้
Resource ชื่ออะไร
มี Resource อื่นใช้มันเป็น Dependency หรือไม่
มี Script อื่นเรียก Export จากมันหรือไม่
มี Event ที่ Resource อื่นเรียกใช้อยู่หรือไม่
มี SQL หรือ Table ใน Database หรือไม่
เพิ่ม Item ไว้ใน Inventory หรือไม่
เพิ่ม Job ไว้ใน Framework หรือไม่
เพิ่ม
ensureไว้ที่ไหนถูก Start ผ่าน Category หรือไม่
มี Config ใน Resource อื่นที่อ้างถึง Script นี้หรือไม่
ตัวอย่างเช่นต้องการลบ
ox_lib
แต่ Server มี Script อีก 20 ตัวใช้ ox_lib อยู่
ถ้าลบทันที Script เหล่านั้นอาจ Error ทั้งหมด
ดังนั้น Resource ที่เป็น Library, Framework, Database Connector หรือ Core ไม่ควรถูกลบจนกว่าจะตรวจ Dependency ให้ครบ
② Backup ก่อนลบ Script
ก่อนแก้ Production Server ควร Backup อย่างน้อย
resources/
server.cfg
Database
Config ที่เกี่ยวข้อง
หากเป็น Script ระบบสำคัญ เช่น
Inventory
Phone
Garage
Banking
Housing
Jobs
Character
Framework
ควร Backup Database ด้วยเสมอ
ตัวอย่างโครงสร้าง Backup
backup/
├── resources/
├── server.cfg
└── database-backup.sql
การ Backup ทำให้สามารถย้อนกลับได้ หากหลังลบ Script แล้วพบว่ามี Resource อื่นใช้งานมันอยู่โดยที่เราไม่รู้มาก่อน
③ วิธีหยุด Script FiveM ก่อนลบ
ถ้า Server กำลังเปิดอยู่ อย่าลบโฟลเดอร์ Resource ขณะที่ Resource ยังทำงาน
ควร Stop ก่อน
ตัวอย่าง Resource ชื่อ
my-script
ให้ใช้ Server Console
stop my-script
คำสั่ง stop ใช้หยุด Resource ที่กำลังทำงานอยู่
จากนั้นดู Console ว่ามี Resource อื่น Error ตามมาหรือไม่
นี่เป็นวิธีทดสอบที่ดีมาก เพราะถ้าหลัง
stop my-script
แล้ว Script อื่นเริ่ม Error ทันที แสดงว่า Resource เหล่านั้นอาจพึ่งพา my-script
จึงยังไม่ควรรีบลบไฟล์ออกจาก Server
④ เอา ensure ออกจาก server.cfg
ขั้นตอนสำคัญที่สุดอีกอย่างคือค้นหาคำสั่งที่ Start Resource ใน server.cfg
ตัวอย่างเดิม
ensure my-script
สามารถลบออก หรือ Comment ไว้ก่อน
# ensure my-script
ผมแนะนำให้ Comment ก่อนลบจริง โดยเฉพาะ Production Server
เพราะสามารถย้อนกลับง่าย
ตัวอย่าง
# Disabled for testing
# ensure my-script
จากนั้น Restart Server แล้วทดสอบ
ถ้า Server ทำงานปกติและระบบอื่นไม่เสีย จึงค่อยลบบรรทัดออกภายหลัง
⑤ ระวัง Resource ที่ Start ผ่าน Category
บาง Server ไม่ได้ Start Resource ทีละตัว
ตัวอย่างโครงสร้าง
resources/
└── [jobs]/
├── policejob/
├── ambulancejob/
└── mechanicjob/
ใน server.cfg อาจเขียนเพียง
ensure [jobs]
ดังนั้นถึงแม้ค้นหาแล้วไม่เจอ
ensure policejob
ก็ไม่ได้หมายความว่า policejob ไม่ถูก Start
เพราะมันถูก Start ผ่าน Category [jobs]
กรณีนี้ ถ้าต้องการเอา policejob ออกจาก Server ต้องจัดการ Resource ตัวนั้นโดยตรง ไม่ใช่ลบ
ensure [jobs]
เพราะจะทำให้ Job ตัวอื่นใน Category หยุดไปด้วย
⑥ วิธีลบโฟลเดอร์ Script FiveM
หลังจาก Stop Resource และเอาการ Start อัตโนมัติออกแล้ว จึงค่อยลบ Resource
สมมติโครงสร้างเดิมคือ
resources/
└── my-script/
├── fxmanifest.lua
├── client/
├── server/
└── config.lua
สามารถลบ
my-script/
ทั้ง Resource ได้
แต่สำหรับ Production Server วิธีที่ปลอดภัยกว่าในครั้งแรกคือ ย้าย Resource ออกจาก resources ไปเก็บไว้เป็น Backup ก่อน
ตัวอย่าง
disabled-resources/
└── my-script/
แล้วทดสอบ Server
ถ้าไม่มีปัญหาค่อยลบ Backup ภายหลัง
วิธีนี้ปลอดภัยกว่าการ Delete ถาวรทันที
⑦ หลังลบ Resource ต้องใช้ refresh หรือไม่
ถ้า Server กำลังเปิดอยู่และคุณเพิ่มหรือลบ Resource จากโฟลเดอร์ resources สามารถใช้
refresh
เพื่อให้ Server สแกน Resource Folder และ Resource Manifest ใหม่
ตัวอย่าง
stop my-script
จากนั้นนำ Resource ออก แล้วใช้
refresh
อย่างไรก็ตาม หากแก้ server.cfg ด้วย ควรตรวจ Configuration และทดสอบการ Restart Server อย่างน้อยหนึ่งครั้งด้วย
เพราะเป้าหมายไม่ได้มีแค่ให้ Resource หายตอนนี้ แต่ต้องแน่ใจว่าเมื่อ Server เปิดใหม่จะไม่มีคำสั่งพยายาม Start Resource ที่ถูกลบไปแล้ว
⑧ ลบ Script แล้วต้องลบ SQL ด้วยหรือไม่
ไม่จำเป็นต้องลบ SQL ทุกครั้ง
นี่เป็นจุดที่ต้องระวังมาก
สมมติ Script เคยสร้าง Table
player_houses
หรือ
my_garage
การลบ Resource ไม่ได้หมายความว่าต้อง DROP TABLE ทันที
ควรตรวจว่า Table นั้น
เป็นของ Script นี้จริงหรือไม่
Resource อื่นใช้อยู่หรือไม่
มีข้อมูลผู้เล่นที่ต้องเก็บหรือไม่
มีแผนติดตั้ง Script กลับหรือไม่
ก่อนลบ Database ควร Export Table หรือ Backup Database ก่อน
ถ้ายังไม่แน่ใจ
เก็บ Table ไว้ก่อน
Table ที่ไม่ได้ถูกใช้งานมักไม่ทำให้ Server พังเพียงเพราะยังอยู่ใน Database
แต่การลบ Table ผิดสามารถทำให้ข้อมูลผู้เล่นหายถาวรได้
⑨ อย่าลบ Database Table แบบสุ่ม
ตัวอย่างที่ไม่ควรทำคือเห็น Script มีไฟล์
install.sql
แล้วเปิดดูว่ามันสร้าง Table อะไร จากนั้นลบทั้งหมดทันทีโดยไม่ตรวจสอบ
เพราะ Script รุ่นใหม่หรือ Server ที่ถูกปรับแต่งอาจใช้ Table ร่วมกันได้
โดยเฉพาะ Table หลักของ Framework เช่นข้อมูล
players
users
owned_vehicles
jobs
items
ไม่ควรลบเพียงเพราะ Script บางตัวเคยเรียกใช้งาน
ถ้าไม่มั่นใจให้ Backup แล้วปล่อย Table ไว้ก่อน
⑩ ลบ Script แล้วต้องลบ Item หรือไม่
Script บางตัวเพิ่ม Item เข้า Inventory
ตัวอย่างเช่น Script ตกปลาอาจเพิ่ม
fishing_rod
fish
bait
เมื่อลบ Script แล้ว Item เหล่านี้อาจยังอยู่ใน Framework หรือ Inventory
ต้องตรวจว่ามี Resource อื่นใช้ Item เหล่านี้อีกหรือไม่
ถ้าไม่มี สามารถพิจารณาลบออกจากระบบ Item
แต่ต้องระวังผู้เล่นที่ยังมี Item อยู่ใน Inventory หรือ Database
แนวทางที่ปลอดภัยคือ
ตรวจว่า Resource อื่นใช้ Item หรือไม่
↓
ตรวจข้อมูลผู้เล่น
↓
Backup
↓
ค่อยเอา Item ออกจากระบบ
อย่าลบ Item Definition โดยไม่ตรวจข้อมูล เพราะอาจทำให้ Inventory บางระบบ Error เมื่อพบ Item ที่ไม่รู้จัก
⑪ ลบ Job Script ต้องระวังอะไร
สมมติต้องการลบ Police Job
อย่าลบเพียง
policejob/
แล้วจบ
เพราะอาจมีข้อมูลเกี่ยวข้อง เช่น
Job ใน Framework
Job Grade
Society Account
Inventory
Garage
Vehicle
Items
Doorlock
Target
MDT
Dispatch
Billing
Database
และอาจมีผู้เล่นที่ยังมี Job
police
อยู่ใน Database
หาก Script ถูกลบแต่ Player Data ยังอ้างถึง Job เดิม อาจเกิดปัญหากับระบบอื่นได้
Script ประเภท Job จึงควรวางแผน Migration ก่อนลบ
⑫ ลบ Inventory Script ยิ่งต้องระวัง
Inventory เป็น Resource ที่ไม่ควรลบเหมือน Script ทั่วไป
เพราะ Resource อื่นจำนวนมากอาจเรียก Inventory ผ่าน
exports
events
functions
รวมถึงข้อมูล Item ของผู้เล่นอาจเก็บอยู่ใน Database
หากต้องการเปลี่ยนจาก Inventory A ไป Inventory B ควรใช้กระบวนการ Migration ไม่ใช่
stop inventory-a
ลบโฟลเดอร์
ensure inventory-b
แล้วหวังว่าข้อมูลทั้งหมดจะใช้ได้
ต้องตรวจอย่างน้อย
รูปแบบ Item
Player Inventory
Stash
Trunk
Glovebox
Metadata
Weapon Data
Export
Event
Database Schema
Resource Core ประเภทนี้ควรจัดเป็น “การย้ายระบบ” มากกว่า “การลบ Script”
⑬ ลบ ox_lib ได้ไหม
สามารถลบ Resource ใดก็ได้หากไม่มีอะไรต้องใช้มัน แต่ ox_lib เป็น Library ที่ Script จำนวนมากอาจพึ่งพา
ก่อนลบควรค้นหา
ox_lib
ใน Resource อื่น
รวมถึงตรวจ fxmanifest.lua
อาจพบ
dependency 'ox_lib'
หรือ
shared_script '@ox_lib/init.lua'
ถ้ามี Script อื่นอ้างถึง Resource นี้อยู่ การลบ ox_lib อาจทำให้ Resource เหล่านั้น Start ไม่สำเร็จหรือทำงานผิดปกติ
หลักเดียวกันใช้กับ Resource Core อื่นด้วย
⑭ ลบ oxmysql ได้ไหม
ต้องระวังมากเช่นกัน
oxmysql ทำหน้าที่เป็น Database Resource ที่ Script จำนวนมากสามารถใช้เชื่อมต่อ MySQL
ถ้า Framework หรือ Script อื่นยังพึ่งพา oxmysql อยู่ ไม่ควรลบ
หาก Stop แล้วอาจเกิด Error เกี่ยวกับ Database ใน Resource อื่นทันที
ดังนั้น Resource ประเภท
Database Connector
Framework Core
Library
Inventory Core
Target Core
ควรตรวจ Dependency ทั้ง Server ก่อนลบ
⑮ ลบ Script แล้วขึ้น Missing Dependency
ถ้าหลังลบ Resource แล้วพบ Error เช่น
Missing dependency
แสดงว่ามี Resource อื่นกำหนด Dependency ไปยัง Resource ที่เพิ่งลบ
สมมติ Resource A มี
dependency 'my-script'
แต่ my-script ถูกลบไปแล้ว
Resource A ก็ไม่สามารถทำงานตามปกติได้
แนวทางแก้มี 2 ทางหลัก
ทางที่ 1
นำ Resource ที่ถูกลบกลับมา หาก Resource A ยังต้องใช้จริง
ทางที่ 2
อัปเดตหรือแก้ Resource A ให้ไม่ต้องพึ่งพา Dependency เดิม หากระบบรองรับ
ไม่ควรลบคำว่า dependency จาก Manifest เพียงเพื่อให้ Error หาย หาก Code ภายในยังเรียก Resource นั้นอยู่จริง
⑯ ลบ Script แล้วขึ้น No Such Export
อีก Error ที่พบได้คือ
No such export
หรือ Error ที่แสดงว่า Resource พยายามเรียก Export ของ Script ที่ถูกลบ
ตัวอย่างแนวคิด
Resource A
↓
เรียก Export จาก Resource B
↓
Resource B ถูกลบ
↓
Resource A Error
กรณีนี้ต้องตรวจ Resource ที่ Error และค้นหาการเรียก
exports
ที่เกี่ยวข้อง
หาก Resource นั้นยังจำเป็นต้องใช้ Script เดิม ก็ต้องติดตั้ง Script กลับหรือเปลี่ยน Integration ให้รองรับระบบใหม่
⑰ ลบ Script แล้ว Server ยังพยายาม Start อยู่
ถ้าลบโฟลเดอร์แล้วแต่ Console ยังแสดง Error ประมาณว่าหา Resource ไม่พบ ให้ค้นหา Configuration ทั้งหมด
อย่าตรวจเฉพาะ server.cfg
เพราะ server.cfg อาจมี
exec resources.cfg
และใน resources.cfg มี
ensure my-script
ดังนั้นควรค้นหาชื่อ Resource ในไฟล์ .cfg ที่ Server ใช้งานทั้งหมด
ตัวอย่าง
server.cfg
resources.cfg
framework.cfg
jobs.cfg
เมื่อเจอ
ensure my-script
จึง Comment หรือลบออก
⑱ ลบ Resource จาก Category แล้วทำไมยัง Error
สมมติเดิมมี
[jobs]/
├── policejob/
├── ambulancejob/
└── mechanicjob/
และ Server ใช้
ensure [jobs]
เมื่อลบ policejob แล้ว Server จะไม่ Start Resource นั้นในรอบต่อไป
แต่ Script อื่นอาจยังเรียก
policejob
อยู่
ตัวอย่างเช่น
Dispatch
MDT
Garage
Target
Doorlock
Billing
จึงต้องตรวจ Integration ด้วย ไม่ใช่ตรวจเพียง server.cfg
⑲ วิธีค้นหาว่า Script อื่นใช้ Resource นี้หรือไม่
ก่อนลบ Resource สำคัญ ควร Search ชื่อ Resource ในโฟลเดอร์ Server
สมมติจะลบ
my_inventory
ค้นหาคำว่า
my_inventory
ใน Resource อื่น
ดูว่าพบใน
fxmanifest.lua
config.lua
client.lua
server.lua
หรือไม่
สิ่งที่ควรสังเกต เช่น
dependency
exports
TriggerEvent
TriggerServerEvent
Config.Inventory
วิธีนี้ช่วยค้นหา Integration ที่อาจมองไม่เห็นจาก server.cfg
⑳ วิธีลบ Script FiveM แบบปลอดภัยที่สุด
สำหรับ Production Server ผมแนะนำลำดับนี้
ขั้นที่ 1 — Backup
Backup Resource, Config และ Database
ขั้นที่ 2 — ตรวจ Dependency
ดู Documentation, Manifest และค้นหาชื่อ Resource ใน Server
ขั้นที่ 3 — Stop
stop my-script
ขั้นที่ 4 — ดู Error
ตรวจว่ามี Resource อื่นเสียหรือไม่
ขั้นที่ 5 — ปิด Startup
เปลี่ยน
ensure my-script
เป็น
# ensure my-script
ขั้นที่ 6 — Restart Server
ทดสอบ Server โดยยังไม่ Delete Resource
ขั้นที่ 7 — ทดสอบระบบสำคัญ
ตรวจ Login, Inventory, Jobs, Database และระบบที่เกี่ยวข้อง
ขั้นที่ 8 — ย้าย Resource ออก
นำ my-script ออกจาก resources
ขั้นที่ 9 — จัดการข้อมูลที่เหลือ
เช่น Item, Job, SQL หรือ Config เฉพาะที่แน่ใจว่าไม่ใช้แล้ว
ขั้นที่ 10 — Restart และทดสอบอีกครั้ง
ถ้า Server ยังทำงานปกติ จึงถือว่าการลบสำเร็จ
㉑ วิธีลบ Script FiveM แบบสั้น
ถ้าเป็น Standalone Script เล็ก ๆ ที่ไม่มี Database และไม่มี Dependency ซับซ้อน สามารถใช้ขั้นตอนสั้น ๆ ได้
Backup
↓
stop resource_name
↓
ลบ/Comment ensure
↓
นำ Resource ออกจาก resources
↓
refresh หรือ Restart
↓
ตรวจ Console
ตัวอย่าง
stop my-script
จากนั้นใน server.cfg
# ensure my-script
แล้วนำ
resources/my-script/
ออกจาก Server
จากนั้น Restart และทดสอบ
㉒ สิ่งที่ไม่ควรทำตอนลบ Script FiveM
อย่าลบโฟลเดอร์ทันที
โดยไม่ตรวจ Dependency
อย่า DROP Database Table ทันที
เพียงเพราะ Script ถูกลบ
อย่าลบ Core Resource แบบสุ่ม
เช่น Framework, Library หรือ Database Connector
อย่าลบหลาย Script พร้อมกัน
เพราะถ้า Server Error จะไม่รู้ว่าตัวไหนเป็นต้นเหตุ
อย่าแก้ Resource อื่นจำนวนมากพร้อมกัน
ควรเปลี่ยนทีละจุดและทดสอบ
อย่าลืม Backup
โดยเฉพาะ Server ที่มีข้อมูลผู้เล่นจริง
㉓ Checklist ก่อนลบ Script FiveM
ก่อนลบ ตรวจให้ครบ
ก่อนดำเนินการ
Backup Resource แล้ว
Backup
server.cfgแล้วBackup Database แล้วถ้าจำเป็น
อ่าน Documentation แล้ว
ตรวจ Dependency แล้ว
ตรวจ Resource อื่นที่เรียก Export/Event แล้ว
ระหว่างลบ
Stop Resource แล้ว
ตรวจ Console หลัง Stop แล้ว
เอา
ensureออกแล้วตรวจ Category แล้ว
ตรวจไฟล์
.cfgอื่นแล้วRestart Server ทดสอบแล้ว
หลังลบ
Console ไม่มี Missing Dependency
ไม่มี No Such Export
ผู้เล่นเข้า Server ได้
Framework ทำงาน
Inventory ทำงาน
Database ทำงาน
Job สำคัญทำงาน
Resource ที่เกี่ยวข้องทำงาน
Restart Server แล้วยังปกติ
ผ่านทั้งหมดแล้วจึงค่อยลบ Backup ถาวร
สรุปวิธีลบ Script FiveM ออกจาก Server
วิธีลบ Script FiveM ที่ถูกต้องไม่ใช่แค่ Delete โฟลเดอร์ออกจาก resources แต่ควรเริ่มจาก Backup → ตรวจ Dependency → Stop Resource → ปิด ensure → Restart ทดสอบ → นำ Resource ออก → จัดการข้อมูลที่เหลือ
คำสั่งพื้นฐานที่ใช้ในการหยุด Resource คือ
stop resource_name
และหากมีใน server.cfg
ensure resource_name
ต้องเอาออกหรือ Comment เพื่อไม่ให้ Server พยายาม Start Resource นั้นอีก
สิ่งที่ต้องระวังที่สุดคือ Resource ประเภท Framework, Library, Inventory, Database และ Core เพราะ Script อื่นอาจพึ่งพาอยู่จำนวนมาก การลบ Resource เหล่านี้ควรถูกมองเป็นงาน Migration มากกว่าการลบไฟล์ธรรมดา
สำหรับ Database อย่าลบ Table เพียงเพราะ Resource ไม่ใช้แล้ว หากยังไม่แน่ใจให้ Backup และเก็บข้อมูลไว้ก่อน เพราะข้อมูลที่เหลืออยู่แก้ภายหลังได้ แต่ข้อมูลที่ถูกลบโดยไม่มี Backup อาจกู้คืนไม่ได้
แนวทางของ comsiam คือปิด Resource และทดสอบ Server ก่อน Delete จริงเสมอ วิธีนี้ช่วยให้สามารถย้อนกลับได้ทันทีหากพบ Dependency ที่ตกหล่น
และสำหรับ Server RP ที่เปิดใช้งานจริง comsiam แนะนำให้ลบหรือเปลี่ยน Script ทีละตัว ไม่ควรเปลี่ยนระบบหลายส่วนในครั้งเดียว เพราะจะช่วยลด Downtime และทำให้หาสาเหตุของ Error ได้ง่ายกว่ามาก
Comments
Post a Comment