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

Item Charm — ระบบ Charm

ไอเทม Type พิเศษที่ให้ bonus แก่ผู้เล่น เมื่อมีอยู่ใน Inventory โดยไม่ต้องสวมใส่ — รองรับ CharmMaxEffect, Refine และ Grade

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

Charm คืออะไร

Charm เป็น Item Type พิเศษที่ให้ bonus แก่ผู้เล่นเมื่อมีไอเทมอยู่ใน Inventory โดยไม่ต้องสวมใส่หรือใช้งาน — ต่างจาก Collection Script ที่ต้องเก็บใน Storage สะสม

ประเภทของ Charm

Typeคำอธิบาย
IT_CHARMCharm ปกติ — มีจำนวนสูงสุดที่ทำงาน (CharmMaxEffect)
IT_CHARM_UPGRADECharm Upgrade — สามารถ refine/grade ได้ (CharmUpgradeMaxEffect)

วิธีสร้าง Charm ใน item_db

แก้ไขใน db/import/item_db.yml:

  - Id: 60001
    AegisName: Charm_All_Status
    Name: Charm All Status
    Type: Charm                # ระบุ Type = Charm
    Trade:
      NoDrop: true
      NoSell: true
      NoGuildStorage: true
    CharmScript: |
      bonus bAllStats,5;

CharmMaxEffect — จำกัดจำนวน Charm ที่ทำงาน

  - Id: 60002
    AegisName: Charm_Hp_Drain
    Name: Charm HP Drain
    Type: Charm
    CharmMaxEffect: 3          # มีกี่ชิ้นก็ทำงานสูงสุด 3 ชิ้น
    CharmScript: |
      bonus2 bHPDrainRate,100,5;
ฟิลด์คำอธิบาย
CharmMaxEffectจำนวนสูงสุดที่ CharmScript จะ run (ถ้าไม่ระบุ = 1)
CharmUpgradeMaxEffectจำนวนสูงสุดสำหรับ Charm Upgrade

ถ้ามี Charm 5 ชิ้น แต่ CharmMaxEffect = 3 — CharmScript จะ run 3 ครั้ง

Charm Upgrade — Refine และ Grade

  - Id: 60100
    AegisName: Charm_Upgrade_Sample
    Name: Charm Upgrade Sample
    Type: Charm Upgrade
    CharmUpgradeMaxEffect: 2   # สูงสุด 2 ชิ้น
    Refineable: true           # สามารถ refine ได้
    Gradable: true             # สามารถ grade ได้
    CharmScript: |
      bonus bAllStats,1;

Charm Upgrade สามารถ refine และ grade เหมือนอุปกรณ์ปกติ

คำสั่งพิเศษสำหรับ Charm

คำสั่งคำอธิบาย
getcharmrefine()อ่านค่า refine ของ Charm ปัจจุบัน
getcharmgrade()อ่านค่า grade ของ Charm ปัจจุบัน
getcharmhrefine()อ่านค่า refine สูงสุดของ Charm ชนิดเดียวกัน
getcharmhgrade()อ่านค่า grade สูงสุดของ Charm ชนิดเดียวกัน
getcharmhcomrefine(<id>)อ่านค่า refine สูงสุดของ Charm ID ที่ระบุ
getcharmhcomgrade(<id>)อ่านค่า grade สูงสุดของ Charm ID ที่ระบุ

ตัวอย่าง: Charm ที่ขึ้นกับ Refine

  - Id: 60200
    AegisName: Charm_Refine_Bonus
    Name: Charm Refine Bonus
    Type: Charm Upgrade
    Refineable: true
    CharmScript: |
      .@refine = getcharmrefine();
      bonus bAllStats, .@refine;  // +1 Stats ต่อ refine

ตัวอย่าง: Charm ที่เช็คจำนวน

  - Id: 60012
    AegisName: Charm_Sp_Drain
    Name: Charm SP Drain
    Type: Charm
    CharmScript: |
      if (countitem(60012) > 2) end;  // มีเกิน 2 ชิ้นไม่ทำงาน
      bonus2 bSPDrainRate,50,3;

การทำงานของระบบ

  1. ระบบ scan Inventory ทั้งหมด
  2. หาไอเทม Type = IT_CHARM หรือ IT_CHARM_UPGRADE
  3. ตรวจสอบ CharmMaxEffect และจำนวนไอเทม
  4. Run CharmScript ตามจำนวนที่กำหนด
  5. Bonus มีผลทันทีเมื่อมีไอเทมใน Inventory

ข้อควรทราบ

  • Charm ทำงานเมื่ออยู่ใน Inventory ไม่ต้องสวมใส่
  • ต้องใช้ CharmScript แทน Script เท่านั้น
  • ถ้าไม่ระบุ CharmMaxEffect ค่า default = 1
  • Charm Upgrade สามารถ refine/grade ได้
  • ควรใส่ Trade restriction (NoDrop, NoSell) เพื่อป้องกันการซื้อขาย