คู่มือนี้อธิบายวิธีแก้ไข types.xml เพื่อปรับแต่งระบบเศรษฐกิจไอเทม (loot economy) บนเซิร์ฟเวอร์ DayZ ของคุณที่โฮสต์กับ Legion Hosting คุณจะได้เรียนรู้ว่าแต่ละแอตทริบิวต์ควบคุมอะไร ดูตัวอย่างสำหรับสถานการณ์การปรับแต่งทั่วไป และเข้าใจวิธีตรวจสอบความถูกต้องของการเปลี่ยนแปลงของคุณ สำหรับการกำหนดค่าเซิร์ฟเวอร์ทั่วไป โปรดดูที่ คู่มือการตั้งค่าเซิร์ฟเวอร์ DayZ
types.xml หรือไฟล์ภารกิจอื่นๆ การเปลี่ยนแปลงที่เขียนขณะเซิร์ฟเวอร์กำลังทำงานอาจถูกเขียนทับหรือถูกเพิกเฉยเมื่อปิดเครื่องครั้งถัดไป
การค้นหา types.xml
ระบบเศรษฐกิจไอเทมใน DayZ ถูกควบคุมโดยไฟล์ types.xml ไฟล์นี้กำหนดทุกไอเทมที่สามารถเกิดขึ้นบนแผนที่และความถี่ที่แต่ละไอเทมจะปรากฏ ตั้งอยู่ที่:
mpmissions/dayzOffline.chernarusplus/db/types.xml
หากคุณกำลังใช้แผนที่อื่น (เช่น Livonia) ให้แทนที่ dayzOffline.chernarusplus ด้วยชื่อโฟลเดอร์สำหรับภารกิจของคุณ ชื่อโฟลเดอร์ภารกิจทั่วไป:
| แผนที่ | โฟลเดอร์ภารกิจ |
|---|---|
| Chernarus | dayzOffline.chernarusplus |
| Livonia | dayzOffline.enoch |
เปิด types.xml ในตัวแก้ไขไฟล์ของ GPanel หรือดาวน์โหลดผ่าน SFTP แก้ไขในเครื่องของคุณ แล้วอัปโหลดกลับขึ้นไปใหม่
ทำความเข้าใจแอตทริบิวต์สำคัญ
แต่ละไอเทมใน types.xml ถูกกำหนดโดยอิลิเมนต์ <type> อิลิเมนต์ลูกที่สำคัญที่สุดสำหรับการควบคุมความถี่ของไอเทมคือ:
| อิลิเมนต์ | คำอธิบาย |
|---|---|
nominal |
จำนวนเป้าหมายของไอเทมนี้ที่เซิร์ฟเวอร์พยายามรักษาไว้บนแผนที่ตลอดเวลา เพิ่มค่านี้เพื่อทำให้ไอเทมพบได้บ่อยขึ้น ตั้งเป็น 0 เพื่อปิดการเกิดโดยสิ้นเชิง |
min |
จำนวนต่ำสุดของไอเทมนี้บนแผนที่ก่อนที่ระบบเติมสต็อกจะเริ่มสร้างเพิ่มขึ้น ต้องมีค่าน้อยกว่าหรือเท่ากับ nominal |
lifetime |
ระยะเวลา (เป็นวินาที) ที่ไอเทมคงอยู่บนพื้นก่อนจะหายไปหากไม่มีการโต้ตอบ เพิ่มค่านี้เพื่อทำให้ไอเทมคงอยู่นานขึ้นก่อนจะหายไป |
restock |
เวลา (เป็นวินาที) ระหว่างการพยายามเกิดไอเทม การตั้งค่านี้เป็น 0 หมายความว่าไอเทมจะเกิดใหม่ทันทีที่จำนวนลดลงต่ำกว่า min |
quantmin / quantmax |
ควบคุมช่วงปริมาณเมื่อไอเทมเกิดขึ้น (เช่น จำนวนกระสุนในแม็กกาซีน) ค่า -1 หมายความว่าเกมจะใช้ค่าเริ่มต้นของตัวเอง |
cost |
น้ำหนักลำดับความสำคัญที่ใช้โดย Central Economy ค่าที่สูงกว่าจะทำให้ไอเทมเกิดเร็วขึ้นในระหว่างรอบการเติมสต็อก ไอเทมหายากมักจะมีค่า cost ที่สูงกว่า |
คำอธิบายแฟล็ก (Flags)
แต่ละอิลิเมนต์ <type> มีอิลิเมนต์ <flags> ที่ควบคุมวิธีที่ระบบเศรษฐกิจนับอินสแตนซ์ของไอเทมที่มีอยู่:
| แฟล็ก | คำอธิบาย |
|---|---|
count_in_map |
นับไอเทมที่อยู่บนพื้นเข้าในยอดรวม nominal |
count_in_cargo |
นับไอเทมที่อยู่ในภาชนะ (เป้, ที่เก็บของ) เข้าในยอดรวม |
count_in_hoarder |
นับไอเทมในที่ซ่อนของผู้เล่นและภาชนะที่ฝังไว้เข้าในยอดรวม |
count_in_player |
นับไอเทมที่ผู้เล่นที่ออนไลน์พกพาอยู่เข้าในยอดรวม |
crafted |
ตั้งเป็น 1 หากไอเทมนี้สร้างจากการคราฟต์เท่านั้นและไม่ควรเกิดขึ้นเองตามธรรมชาติ |
deloot |
ตั้งเป็น 1 สำหรับไอเทมจาก Dynamic Event (เฮลิคอปเตอร์ตก ฯลฯ) |
ตัวอย่าง: รายการปืนไรเฟิลจู่โจม AKM
<type name="AKM">
<nominal>5</nominal>
<lifetime>14400</lifetime>
<restock>0</restock>
<min>2</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="weapons"/>
<usage name="Military"/>
</type>
ในตัวอย่างนี้ เซิร์ฟเวอร์พยายามรักษา AKM ไว้ 5 กระบอกบนแผนที่ตลอดเวลา (nominal=5) เมื่อจำนวนลดลงต่ำกว่า 2 (min=2) จะมีการเกิดกระบอกใหม่ทันที (restock=0) AKM แต่ละกระบอกจะหายไปหลังจาก 4 ชั่วโมงหากไม่ถูกแตะต้อง (lifetime=14400 วินาที) มีเพียงไอเทมที่เกิดบนพื้นเท่านั้นที่ถูกนับ (count_in_map=1) ดังนั้น AKM ที่อยู่ในเป้ของผู้เล่นหรือในที่ซ่อนที่ฝังไว้จึงไม่ถูกหักออกจากยอดรวม
แท็ก Category และ Usage
แท็ก <category> และ <usage> ควบคุมว่าไอเทมจะเกิดที่ใดบนแผนที่:
<category name="weapons"/>-- จัดประเภทของไอเทม (อาวุธ, เสื้อผ้า, เครื่องมือ, อาหาร ฯลฯ)<usage name="Military"/>-- จำกัดการเกิดไว้ในเขตทหาร ค่าอื่นๆ ได้แก่Town,Village,Farm,Industrial,Hunting,School,Medic,Police,FirefighterและCoast
คุณสามารถเพิ่มแท็ก <usage> หลายอันเพื่ออนุญาตให้ไอเทมเกิดในพื้นที่หลายประเภท
ตัวอย่างการปรับแต่งไอเทมทั่วไป
| เป้าหมาย | สิ่งที่ต้องเปลี่ยน |
|---|---|
| ทำให้ไอเทมพบได้บ่อยขึ้น | เพิ่ม nominal และ min |
| ปิดการเกิดของไอเทม | ตั้ง nominal เป็น 0 และ min เป็น 0 |
| ทำให้ไอเทมคงอยู่นานขึ้นก่อนหายไป | เพิ่ม lifetime (ค่าเป็นวินาที; 3600 = 1 ชั่วโมง) |
| เร่งการเกิดใหม่ของไอเทมหลังจากเก็บ | ลด restock หรือตั้งเป็น 0 |
| ทำให้ไอเทมหายากถูกนับแม้เมื่อถูกกักตุน | ตั้ง count_in_hoarder="1" และ count_in_cargo="1" |
| อนุญาตให้ไอเทมเกิดในเมืองและพื้นที่ทหาร | เพิ่มทั้ง <usage name="Town"/> และ <usage name="Military"/> |
การตรวจสอบความถูกต้องของการเปลี่ยนแปลง
types.xml ต้องเป็น XML ที่ถูกต้อง แท็กที่ไม่ปิดเพียงอันเดียว วงเล็บที่ไม่ตรงกัน หรืออักขระแปลกปลอม จะทำให้เซิร์ฟเวอร์ไม่สามารถโหลดภารกิจได้และอาจทำให้เซิร์ฟเวอร์ล่มตอนเริ่มทำงาน ใช้ตัวแก้ไขข้อความที่มีการตรวจสอบ XML (เช่น Notepad++ หรือ VS Code) เมื่อแก้ไขไฟล์นี้ในเครื่องก่อนอัปโหลด
ข้อผิดพลาด XML ทั่วไปที่ต้องระวัง:
- ลืมปิดอิลิเมนต์
<type>ด้วย</type> - เครื่องหมายอัญประกาศที่ไม่ตรงกันในค่าแอตทริบิวต์ (เช่น
name="AKMที่ไม่มีอัญประกาศปิด) - อักขระแปลกปลอมหรือวงเล็บมุมเกินมา
- เผลอลบการประกาศ XML ที่อยู่ด้านบนสุดของไฟล์
การโต้ตอบของม็อดกับ types.xml
หากคุณกำลังใช้ม็อดที่เพิ่มไอเทมใหม่ ม็อดเหล่านั้นอาจมีรายการ types.xml ของตัวเองอยู่ในโฟลเดอร์ db/ ของม็อด หากการเปลี่ยนแปลงของคุณใน types.xml ดั้งเดิมดูเหมือนจะไม่มีผลกับไอเทมที่มาจากม็อด ให้ตรวจสอบว่าม็อดเขียนทับรายการนั้นหรือไม่ คุณอาจต้องแก้ไข types.xml ของม็อดเองแทน
บทความที่เกี่ยวข้อง
- คู่มือการตั้งค่าเซิร์ฟเวอร์ DayZ -- การกำหนดค่า serverDZ.cfg และวิธีที่ผู้เล่นเชื่อมต่อ
- การติดตั้งม็อด DayZ -- ม็อด Steam Workshop, ลำดับการโหลด และไฟล์คีย์
- การแก้ไขปัญหา DayZ -- ข้อผิดพลาดทั่วไป, ปัญหา BattlEye และการตั้งค่า RCON
- วิธีอัปโหลดไฟล์ผ่าน SFTP