คู่มือนี้ครอบคลุมการแก้ไขปัญหาม็อดขั้นสูงสำหรับเซิร์ฟเวอร์ Project Zomboid ที่โฮสต์กับ Legion Hosting หากคุณยังไม่ได้ติดตั้งม็อด ให้เริ่มต้นด้วย คู่มือการติดตั้งม็อดพื้นฐาน ก่อน บทความนี้กล่าวถึงปัญหาที่เกี่ยวข้องกับม็อดที่พบบ่อยที่สุดในทิกเก็ตสนับสนุนของ Legion Hosting รวมถึงการเสียหายของ WorldDictionary ข้อผิดพลาดรูปแบบม็อด ความขัดแย้งของลำดับการโหลด และความไม่ตรงกันของเวอร์ชันระหว่างเซิร์ฟเวอร์และไคลเอนต์
ก่อนเริ่มต้น
- เข้าสู่ระบบ GPanel และเลือกเซิร์ฟเวอร์ Project Zomboid ของคุณ
- หยุดเซิร์ฟเวอร์ของคุณ ก่อนทำการเปลี่ยนแปลงการตั้งค่าหรือไฟล์ใดๆ
- สำรองโฟลเดอร์เซฟโลกของคุณ (
/.cache/saves/multiplayer/) ผ่าน SFTP หรือ GPanel ก่อนพยายามแก้ไขใดๆ ดู คู่มือ SFTP หากคุณไม่คุ้นเคยกับการถ่ายโอนไฟล์ - เตรียมเส้นทางไฟล์
.iniของเซิร์ฟเวอร์ของคุณให้พร้อม:/.cache/server/<servername>.ini(เช่นservertest.ini)
1. ข้อผิดพลาดรูปแบบม็อด (B42 vs B41)
สาเหตุที่พบบ่อยที่สุดที่ทำให้ม็อดโหลดไม่สำเร็จคือรูปแบบที่ไม่ถูกต้องในบรรทัด Mods= ของไฟล์ .ini ของเซิร์ฟเวอร์ของคุณ Build 42 และ Build 41 ใช้ไวยากรณ์ที่แตกต่างกัน และการสลับใช้สับสนจะทำให้ม็อดของคุณโหลดไม่สำเร็จโดยไม่แสดงข้อผิดพลาด
รูปแบบ B42 (ค่าเริ่มต้นปัจจุบัน)
Build 42 ต้องการ คำนำหน้าแบ็กสแลช ก่อน Mod ID แต่ละตัวในบรรทัด Mods=:
Mods=\ModID1;\ModID2;\ModID3;
รูปแบบ DLMP รวม Workshop ID และ Mod ID ด้วยตัวคั่นแบ็กสแลช:
Mods=2392987841\ModID1;1550458773\ModID2;2786383654\ModID3;
บรรทัด WorkshopItems= ใช้รูปแบบที่คั่นด้วยเซมิโคลอนเหมือนกันทั้งสอง build:
WorkshopItems=2392987841;1550458773;2786383654
รูปแบบ B41 (รุ่นเก่า)
Build 41 ใช้ Mod ID ที่คั่นด้วยเซมิโคลอนแบบธรรมดาโดย ไม่มีแบ็กสแลช:
Mods=ModID1;ModID2;ModID3
Mods= ทั้งหมดของคุณใหม่ให้รวมคำนำหน้าแบ็กสแลชวิธีแก้ไข
- เปิด
/.cache/server/<servername>.iniใน File Manager ของ GPanel - ค้นหาบรรทัด
Mods=และตรวจสอบรูปแบบเทียบกับตัวอย่างด้านบน - หากรูปแบบไม่ถูกต้องสำหรับเวอร์ชัน build ของคุณ ให้แก้ไข ใช้ Legion Hosting Mod Organizer เพื่อสร้างบรรทัดที่จัดรูปแบบถูกต้องโดยอัตโนมัติ
- บันทึกไฟล์และเริ่มเซิร์ฟเวอร์
2. การเสียหายของ WorldDictionary
WorldDictionary เป็นไฟล์ (WorldDictionary.bin) ที่จับคู่ชื่อไอเทมกับ ID ตัวเลขภายใน เมื่อม็อดถูกเพิ่มหรือลบ ดิกชันนารีอาจเสียหาย ทำให้เซิร์ฟเวอร์ขัดข้องขณะเริ่มต้นพร้อมข้อผิดพลาด WorldDictionaryException
อาการ
- คอนโซลหรือ
debug.logแสดงข้อผิดพลาดWorldDictionaryExceptionหรือWorldDictionary - เซิร์ฟเวอร์ขัดข้องทันทีระหว่างการเริ่มต้น โดยเฉพาะระหว่างการโหลดโลก
- การขัดข้องเริ่มหลังจากการเพิ่ม ลบ หรืออัปเดตม็อด
ทำความเข้าใจความเสี่ยง
ขั้นตอนการกู้คืน
- หยุดเซิร์ฟเวอร์ของคุณใน GPanel
- สำรองโฟลเดอร์เซฟทั้งหมดของคุณ ผ่าน SFTP: ดาวน์โหลดไดเรกทอรี
/.cache/saves/multiplayer/<YourWorldName>/ทั้งหมดมายังเครื่องของคุณ - ก่อนอื่น ลองเพียงแค่ย้อนกลับการเปลี่ยนแปลงม็อดที่ทำให้เกิดข้อผิดพลาด หากคุณเพิ่งเพิ่มม็อด ให้ลบออกจากทั้ง
Mods=และWorkshopItems=ในไฟล์.iniหากคุณเพิ่งลบม็อด ให้เพิ่มกลับเข้าไป เริ่มเซิร์ฟเวอร์และดูว่าการขัดข้องได้รับการแก้ไขหรือไม่ - หากการย้อนกลับการเปลี่ยนแปลงม็อดไม่ได้ผล ให้เชื่อมต่อผ่าน SFTP และไปยัง
/.cache/saves/multiplayer/<YourWorldName>/ - ลบ
WorldDictionary.bin - เริ่มเซิร์ฟเวอร์ Project Zomboid จะสร้างดิกชันนารีใหม่ขณะเริ่มต้น
- เข้าร่วมเซิร์ฟเวอร์และตรวจสอบโลกเพื่อหาไอเทมที่เสียหาย ยานพาหนะที่หายไป หรือคลังเก็บที่เสียหาย หากโลกเสียหายอย่างรุนแรง ให้กู้คืนจากการสำรองที่คุณสร้างในขั้นตอนที่ 2
3. ความขัดแย้งของม็อด Authentic Z
Authentic Z เป็นหนึ่งในชุดม็อด Project Zomboid ที่ได้รับความนิยมมากที่สุด แต่เป็นแหล่งที่มาของทิกเก็ตสนับสนุนบ่อยครั้งเพราะมันมี ม็อดย่อยหลายตัวที่ขัดแย้งกันเอง
กฎ
Authentic Z - Currentข้อผิดพลาดที่พบบ่อย
- การเพิ่มทั้ง
Authentic Z - CurrentและAuthentic Z - Litemodeในเวลาเดียวกัน - การเพิ่มม็อดย่อย Authentic Z ที่ออกแบบมาสำหรับผู้เล่นคนเดียวควบคู่ไปกับเวอร์ชันผู้เล่นหลายคน
- การไม่ตระหนักว่าม็อดย่อย Authentic Z ที่แตกต่างกันใช้ Workshop ID เดียวกันแต่มี Mod ID ต่างกัน ดังนั้นการดาวน์โหลด Workshop จึงสำเร็จแต่เซิร์ฟเวอร์โหลดไฟล์ม็อดที่ขัดแย้งกัน
วิธีแก้ไข
- เปิด
/.cache/server/<servername>.iniใน File Manager ของ GPanel - ค้นหาในบรรทัด
Mods=สำหรับทุกรายการที่มีAuthenticหรือAuthenticZ - เก็บม็อดย่อย Authentic Z ไว้ เพียงตัวเดียว (แนะนำ:
Authentic Z - Current) ลบรายการ Authentic Z อื่นๆ ทั้งหมดออกจากทั้งบรรทัดMods=และWorkshopItems= - บันทึกไฟล์และรีสตาร์ทเซิร์ฟเวอร์
4. ปัญหาการแยกแยะตัวพิมพ์เล็ก-ใหญ่ของ Linux
เซิร์ฟเวอร์ Legion Hosting ทำงานบน Linux ซึ่งชื่อไฟล์และโฟลเดอร์ แยกแยะตัวพิมพ์เล็ก-ใหญ่ ไฟล์ชื่อ MyMod.lua และ mymod.lua ถือเป็นไฟล์สองไฟล์ที่แตกต่างกันโดยสิ้นเชิง สิ่งนี้ก่อให้เกิดปัญหาเมื่อผู้สร้างม็อดพัฒนาบน Windows (ไม่แยกแยะตัวพิมพ์เล็ก-ใหญ่) และม็อดของพวกเขามีการอ้างอิงไฟล์ที่ไม่ตรงกัน
อาการ
- ม็อดทำงานได้สมบูรณ์แบบในโหมดผู้เล่นคนเดียวบนพีซี Windows ของคุณแต่ล้มเหลวบนเซิร์ฟเวอร์
- คอนโซลหรือ
debug.logแสดงข้อผิดพลาดFileNotFoundExceptionหรือcan't find fileที่อ้างอิงถึงสคริปต์ Lua หรือเท็กซ์เจอร์ภายในม็อด - ข้อผิดพลาดชี้ไปยังไฟล์ที่ มีอยู่จริง ในโฟลเดอร์ม็อด แต่มีการใช้ตัวพิมพ์ใหญ่แตกต่างกัน (เช่น โค้ดอ้างอิงถึง
Items.txtแต่ไฟล์จริงชื่อitems.txt)
วิธีวินิจฉัย
- ตรวจสอบคอนโซลหรือไฟล์บันทึกใน
/.cache/Logs/เพื่อหาเส้นทางไฟล์ที่แน่นอนที่ระบุในข้อผิดพลาด - เชื่อมต่อผ่าน SFTP และไปยังโฟลเดอร์ของม็อดที่
/steamapps/workshop/content/108600/<WorkshopID>/ - เปรียบเทียบชื่อไฟล์บนดิสก์กับชื่อไฟล์ที่อ้างอิงในข้อความแสดงข้อผิดพลาด มองหาความแตกต่างของตัวพิมพ์ใหญ่
วิธีแก้ไข
- หากคุณสามารถเปลี่ยนชื่อไฟล์ได้: เชื่อมต่อผ่าน SFTP และเปลี่ยนชื่อไฟล์ให้ตรงกับตัวพิมพ์ที่โค้ดของม็อดคาดหวัง โปรดทราบว่าการแก้ไขนี้จะถูกเขียนทับหากม็อดอัปเดตบน Steam Workshop
- หากปัญหาอยู่ในตัวม็อดเอง: รายงานบั๊กไปยังผู้สร้างม็อดบนหน้า Steam Workshop ระบุว่าการอ้างอิงไฟล์มีตัวพิมพ์ไม่ตรงกันและล้มเหลวบนเซิร์ฟเวอร์ Linux ผู้สร้างม็อดหลายคนไม่ทราบเรื่องการแยกแยะตัวพิมพ์เล็ก-ใหญ่ของ Linux
- เป็นวิธีแก้ปัญหาชั่วคราว: ตรวจสอบความคิดเห็นในหน้า Workshop ของม็อด — ผู้ดำเนินการเซิร์ฟเวอร์ Linux คนอื่นอาจได้โพสต์วิธีแก้ไขหรือ fork ของม็อดที่เข้ากันได้
5. ปัญหาลำดับการโหลดม็อด
Project Zomboid โหลดม็อดตามลำดับที่ปรากฏในบรรทัด Mods= ม็อดบางตัวขึ้นอยู่กับม็อดอื่นที่ต้องโหลดก่อน หากการพึ่งพา (dependency) ถูกโหลดหลังจากม็อดที่ต้องการมัน ม็อดที่พึ่งพาอาจล้มเหลวโดยไม่แสดงข้อผิดพลาดหรือก่อให้เกิดข้อผิดพลาด
อาการ
- ฟีเจอร์ของม็อดทำงานบางส่วน — ไอเทมหรือระบบบางอย่างจากม็อดมีอยู่แต่บางอย่างหายไป
- คอนโซลแสดงข้อผิดพลาด
NullPointerExceptionหรือattempt to index a nil valueที่อ้างอิงถึงสคริปต์ Lua ของม็อด - ข้อผิดพลาดปรากฏเฉพาะเมื่อมีการติดตั้งม็อดบางชุดรวมกัน แต่แต่ละม็อดทำงานได้ดีเมื่อใช้แยกกัน
วิธีแก้ไข
- ตรวจสอบหน้า Steam Workshop ของแต่ละม็อดสำหรับส่วน "Required Mods" หรือ "Load Order" ผู้สร้างม็อดหลายคนระบุว่าม็อดใดต้องโหลดก่อนม็อดของพวกเขา
- เปิด
/.cache/server/<servername>.iniและค้นหาบรรทัดMods= - จัดเรียงรายการใหม่เพื่อให้ ม็อดที่เป็นการพึ่งพาปรากฏก่อนม็อดที่ต้องการมัน ตัวอย่างเช่น หาก Mod B ต้องการ Mod A บรรทัดควรอ่านว่า
Mods=\ModA;\ModB;(รูปแบบ B42) - ม็อดที่เป็น Framework และไลบรารี (เช่น
ModFramework,TsarLibหรือShark's Mod Utils) ควรอยู่ในรายการ เป็นอันดับแรก เสมอในบรรทัดMods= - บันทึกไฟล์และรีสตาร์ทเซิร์ฟเวอร์
6. เซิร์ฟเวอร์ขัดข้องหลังจากเพิ่มม็อด
หากเซิร์ฟเวอร์ของคุณทำงานได้ดีและขัดข้องหลังจากเพิ่มม็อดหนึ่งตัวหรือมากกว่า ม็อดใหม่น่าจะเป็นสาเหตุ ส่วนนี้จะแนะนำการแยกหาม็อดที่เป็นปัญหา
การแยกหาทีละขั้นตอน
- หยุดเซิร์ฟเวอร์ใน GPanel
- เปิด
/.cache/server/<servername>.iniใน File Manager - จดม็อดทั้งหมดที่คุณเพิ่งเพิ่ม ลบ ทั้งหมด ออกจากทั้งบรรทัด
Mods=และWorkshopItems= - เริ่มเซิร์ฟเวอร์ หากเริ่มสำเร็จ ปัญหาอยู่ในม็อดตัวใดตัวหนึ่งที่คุณลบออก
- เพิ่มม็อดกลับ ทีละตัว โดยรีสตาร์ทเซิร์ฟเวอร์หลังจากการเพิ่มแต่ละครั้ง เมื่อการขัดข้องกลับมา ม็อดตัวสุดท้ายที่คุณเพิ่มคือสาเหตุ
- เมื่อระบุได้แล้ว ตรวจสอบหน้า Workshop ของม็อดสำหรับ:
- หมายเหตุเกี่ยวกับความเข้ากันได้กับ B42 — ม็อด B41 จำนวนมากยังไม่ได้รับการอัปเดตสำหรับ B42
- ความขัดแย้งที่ทราบกับม็อดอื่นๆ ที่คุณกำลังรันอยู่
- ม็อดที่เป็นการพึ่งพาที่จำเป็นซึ่งคุณอาจยังไม่ได้ติดตั้ง
การอ่านบันทึกการขัดข้อง
ก่อนทำกระบวนการแยกหา ให้ตรวจสอบบันทึกการขัดข้อง — มันมักชี้ตรงไปยังม็อดที่เป็นปัญหา:
- ใน GPanel เปิดแท็บ Console และเลื่อนไปยังส่วนท้ายของผลลัพธ์
- มองหาบรรทัด
STACK TRACE,ExceptionหรือERROR - บรรทัดที่อยู่เหนือ stack trace ทันทีมักอ้างอิงถึงชื่อไฟล์ม็อดหรือ Mod ID — สิ่งนี้บอกคุณว่าม็อดตัวใดเป็นตัวกระตุ้นให้เกิดการขัดข้อง
- สำหรับรายละเอียดเพิ่มเติม ให้เปิดไฟล์บันทึกฉบับเต็มผ่าน SFTP ที่
/.cache/Logs/และตรวจสอบไฟล์DebugLog-server.txtหรือdebug.logล่าสุด
7. ความไม่ตรงกันของเวอร์ชันม็อด (เซิร์ฟเวอร์ vs ไคลเอนต์)
Project Zomboid กำหนดให้เซิร์ฟเวอร์และไคลเอนต์ที่เชื่อมต่อทั้งหมดมีม็อดทุกตัวในเวอร์ชันเดียวกัน หากม็อดอัปเดตบน Steam Workshop และเซิร์ฟเวอร์ดาวน์โหลดเวอร์ชันใหม่แต่ผู้เล่นยังคงมีเวอร์ชันเก่าแคชไว้ (หรือในทางกลับกัน) จะเกิดการเชื่อมต่อล้มเหลวหรือการขัดข้อง
อาการ
- ผู้เล่นได้รับข้อผิดพลาด "Mod mismatch" หรือ "Version mismatch" เมื่อพยายามเชื่อมต่อ
- ผู้เล่นบางคนสามารถเชื่อมต่อได้แต่บางคนทำไม่ได้ — คนที่เชื่อมต่อไม่ได้มีเวอร์ชันม็อดที่แตกต่างกันแคชไว้ในเครื่อง
- เซิร์ฟเวอร์ทำงานได้ดี จากนั้นม็อดอัปเดตบน Steam Workshop และทันใดนั้นผู้เล่นบางคนไม่สามารถเข้าร่วมได้
- ผู้เล่นเห็นเท็กซ์เจอร์ ไอเทม หรือองค์ประกอบ UI ที่หายไปจากม็อดที่เพิ่งได้รับการอัปเดต
การแก้ไขสำหรับผู้ดำเนินการเซิร์ฟเวอร์
- หยุดเซิร์ฟเวอร์ใน GPanel
- เริ่มเซิร์ฟเวอร์อีกครั้ง ขณะเริ่มต้น เซิร์ฟเวอร์จะดาวน์โหลดเวอร์ชันล่าสุดของม็อด Workshop ทั้งหมดใหม่ สิ่งนี้รับประกันว่าเซิร์ฟเวอร์กำลังรันเวอร์ชันใหม่ที่สุด
- หากเซิร์ฟเวอร์ยังคงมีเวอร์ชันเก่าแคชไว้ ให้เชื่อมต่อผ่าน SFTP และลบโฟลเดอร์แคช Workshop ของม็อดตัวนั้นโดยเฉพาะที่
/steamapps/workshop/content/108600/<WorkshopID>/รีสตาร์ทเซิร์ฟเวอร์เพื่อบังคับให้ดาวน์โหลดใหม่ที่สะอาด
การแก้ไขสำหรับผู้เล่น
ผู้เล่นที่ไม่สามารถเชื่อมต่อได้เนื่องจากความไม่ตรงกันของเวอร์ชันม็อดควร:
- เปิด Steam และไปยัง Library → Project Zomboid
- คลิกขวาที่ Project Zomboid เลือก Properties → Local Files → Verify Integrity of Game Files
- นอกจากนี้ ให้ไปยังโฟลเดอร์ Steam Workshop สำหรับ Project Zomboid บนเครื่องของพวกเขาและลบไฟล์ม็อดที่แคชไว้เพื่อบังคับให้ดาวน์โหลดใหม่
- เปิดเกมและเชื่อมต่อกับเซิร์ฟเวอร์อีกครั้ง
/.cache/mods/ บนเซิร์ฟเวอร์แทนการใช้การอัปเดตอัตโนมัติของ Workshop ลบ Workshop ID ที่เกี่ยวข้องออกจากบรรทัด WorkshopItems= เพื่อป้องกันการอัปเดตอัตโนมัติ ดู คู่มือการติดตั้งม็อด สำหรับคำแนะนำการติดตั้งม็อดที่ไม่ใช่ Workshop8. การล้างแคช Steam Workshop
หากปัญหาม็อดหลายอย่างยังคงมีอยู่และคุณสงสัยว่าแคชการดาวน์โหลด Workshop เสียหาย คุณสามารถบังคับให้ดาวน์โหลดม็อด Workshop ทั้งหมดใหม่อย่างสมบูรณ์
- หยุดเซิร์ฟเวอร์ใน GPanel
- เชื่อมต่อผ่าน SFTP และไปยัง
/steamapps/workshop/ - ลบโฟลเดอร์
workshop/ทั้งหมด (หรือเนื้อหาภายใน) - เริ่มเซิร์ฟเวอร์ Steam จะดาวน์โหลดรายการ Workshop ทั้งหมดใหม่ตั้งแต่ต้น
- ดูคอนโซลของ GPanel เพื่อยืนยันว่าม็อดทั้งหมดดาวน์โหลดเสร็จก่อนที่เซิร์ฟเวอร์จะเริ่มโหลดโลก
ตารางอ้างอิงการวินิจฉัยอย่างรวดเร็ว
| สิ่งที่คุณเห็น | สาเหตุที่น่าจะเป็นมากที่สุด | ส่วน |
|---|---|---|
| ม็อดไม่โหลด ไม่มีข้อผิดพลาดในบันทึก | รูปแบบม็อดผิด (รูปแบบ B41 บนเซิร์ฟเวอร์ B42 หรือในทางกลับกัน) | 1. ข้อผิดพลาดรูปแบบม็อด |
WorldDictionaryException ในคอนโซล |
การเสียหายของ WorldDictionary จากการเพิ่ม/ลบม็อด | 2. การเสียหายของ WorldDictionary |
| เซิร์ฟเวอร์ขัดข้องเมื่อมีม็อดย่อย Authentic Z หลายตัว | ม็อดย่อย Authentic Z ที่ขัดแย้งกันถูกโหลดพร้อมกัน | 3. ความขัดแย้งของ Authentic Z |
FileNotFoundException สำหรับไฟล์ม็อดที่มีอยู่ |
ความไม่ตรงกันของตัวพิมพ์เล็ก-ใหญ่บน Linux | 4. ปัญหาการแยกแยะตัวพิมพ์เล็ก-ใหญ่ |
ข้อผิดพลาด NullPointerException หรือ nil value จากม็อด |
ลำดับการโหลดม็อดไม่ถูกต้องหรือขาดการพึ่งพา | 5. ปัญหาลำดับการโหลด |
STACK TRACE หลังจากเพิ่มม็อดใหม่ |
ม็อดที่เข้ากันไม่ได้หรือขัดแย้งกัน | 6. การขัดข้องหลังจากเพิ่มม็อด |
| "Mod mismatch" หรือ "Version mismatch" เมื่อเชื่อมต่อ | เซิร์ฟเวอร์และไคลเอนต์มีเวอร์ชันม็อดที่แตกต่างกัน | 7. ความไม่ตรงกันของเวอร์ชัน |
| ปัญหาม็อดหลายอย่าง ไม่มีอะไรอื่นได้ผล | แคช Workshop เสียหาย | 8. แคช Workshop |
ยังคงมีปัญหาม็อดอยู่หรือไม่?
หากปัญหาม็อดของคุณไม่ได้ครอบคลุมข้างต้นหรือการแก้ไขไม่สามารถแก้ปัญหาได้ ให้เปิดทิกเก็ตสนับสนุนพร้อมข้อมูลต่อไปนี้เพื่อช่วยให้ทีมสนับสนุนวินิจฉัยปัญหาได้อย่างรวดเร็ว:
- เวอร์ชัน build ของเซิร์ฟเวอร์ของคุณ (B41 หรือ B42) ที่แสดงในคอนโซลขณะเริ่มต้น
- บรรทัด
Mods=และWorkshopItems=ฉบับเต็มจากไฟล์.iniของคุณ - 50 บรรทัดสุดท้ายของผลลัพธ์คอนโซล GPanel ในขณะที่เกิดการขัดข้อง
- เนื้อหาของไฟล์บันทึกล่าสุดใน
/.cache/Logs/ - ม็อดใดที่ถูกเพิ่ม ลบ หรืออัปเดตทันทีก่อนที่ปัญหาจะเริ่ม
- ปัญหาเกิดขึ้นขณะเริ่มต้นหรือเฉพาะเมื่อผู้เล่นเชื่อมต่อ
เปิดทิกเก็ตสนับสนุน และระบุ ID เซิร์ฟเวอร์ของคุณพร้อมรายละเอียดที่ระบุไว้ข้างต้น