วิธีลบ 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

Popular posts from this blog

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

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

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