กลับหน้าแรก
rAthena

คู่มือ Item Group DB

สร้างและใช้งาน กลุ่มไอเทม สำหรับกล่องสุ่ม, รางวัล Event และ Script ผ่าน item_group_db.yml บนเซิร์ฟ SharePort RO (rAthena)

อัปเดต: พ.ค. 2026 อ่าน ~9 นาที

ไฟล์ที่ใช้:

  • db/pre-re/item_group_db.yml — Pre-Renewal
  • db/re/item_group_db.yml — Renewal
  • db/import/item_group_db.yml — ไฟล์ import สำหรับเพิ่ม/override กลุ่มของตัวเอง

แนะนำให้เพิ่มกลุ่มใหม่ใน db/import/item_group_db.yml เพื่อไม่ทับไฟล์หลัก — รีสตาร์ท Map Server หลังแก้ไข

โครงสร้าง YAML

Body:
  - Group: IG_MyBox
    SubGroups:
      - Algorithm: Random
        List:
          - Item: Red_Potion
            Rate: 5
          - Item: Blue_Potion
            Rate: 1
      - Algorithm: All
        List:
          - Item: Apple
            Rate: 1
ฟิลด์ความหมาย
Groupชื่อกลุ่ม (ใช้ใน Script เช่น IG_MyBox)
SubGroupsชุดย่อยภายในกลุ่ม — แต่ละชุดมี Algorithm ของตัวเอง
Algorithmวิธีเลือกไอเทม: Random, All หรือ SharedPool
Listรายการไอเทมใน SubGroup
Itemชื่อไอเทม (AegisName จาก item_db)
Rateน้ำหนัก (weight) — ไม่ใช่เปอร์เซ็นต์

Algorithm

Algorithmพฤติกรรม
Randomสุ่มเลือก 1 ชิ้นจาก List ตาม Rate
Allให้ทุกชิ้นใน List
SharedPoolใช้ pool ร่วมกัน — เมื่อชิ้นหนึ่งถูกสุ่มออก จะไม่ถูกสุ่มซ้ำจน pool หมด

ฟิลด์เสริม (Optional)

ฟิลด์ความหมาย
RandomOptionGroupกำหนด Random Option ให้ไอเทมที่ได้
RefineMinimum / RefineMaximumระดับ refine ขั้นต่ำ/สูงสุดของไอเทมที่ได้
Announcedประกาศทั้งเซิร์ฟเมื่อได้ไอเทมนี้
Durationระยะเวลาไอเทม (วินาที) สำหรับไอเทมชั่วคราว
Boundผูกมัดไอเทม (Account/Char/Guild ฯลฯ)
  - Item: Excalibur
    Rate: 1
    RefineMinimum: 7
    RefineMaximum: 10
    Announced: true
    Bound: Account

คำสั่ง Script

คำสั่งการใช้งาน
getgroupitem(IG_Name);ให้ไอเทมตาม Algorithm ของทุก SubGroup
getrandgroupitem(IG_Name);สุ่ม 1 SubGroup แล้วให้ไอเทมตาม Algorithm ของ SubGroup นั้น
groupranditem(IG_Name, SubGroupIndex);สุ่มจาก SubGroup ที่ระบุ index (เริ่ม 0)
// ตัวอย่างใน NPC Script
mes "เปิดกล่องสุ่ม?";
next;
if (select("เปิด:ยกเลิก") == 2) close;
getgroupitem(IG_MyBox);
mes "ได้รับไอเทมแล้ว!";
close;

สรุป

  1. สร้างกลุ่มใน db/import/item_group_db.yml
  2. กำหนด Group, SubGroups, Algorithm และ List
  3. ใช้ Rate เป็นน้ำหนัก — ไม่ใช่เปอร์เซ็นต์
  4. เรียกใช้ใน Script ด้วย getgroupitem, getrandgroupitem หรือ groupranditem
  5. รีสตาร์ท Map Server แล้วทดสอบ