Item Charm — ระบบ Charm
ไอเทม Type พิเศษที่ให้ bonus แก่ผู้เล่น เมื่อมีอยู่ใน Inventory โดยไม่ต้องสวมใส่ — รองรับ CharmMaxEffect, Refine และ Grade
Charm คืออะไร
Charm เป็น Item Type พิเศษที่ให้ bonus แก่ผู้เล่นเมื่อมีไอเทมอยู่ใน Inventory โดยไม่ต้องสวมใส่หรือใช้งาน — ต่างจาก Collection Script ที่ต้องเก็บใน Storage สะสม
ประเภทของ Charm
| Type | คำอธิบาย |
|---|---|
IT_CHARM | Charm ปกติ — มีจำนวนสูงสุดที่ทำงาน (CharmMaxEffect) |
IT_CHARM_UPGRADE | Charm 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;
การทำงานของระบบ
- ระบบ scan Inventory ทั้งหมด
- หาไอเทม Type =
IT_CHARMหรือIT_CHARM_UPGRADE - ตรวจสอบ
CharmMaxEffectและจำนวนไอเทม - Run
CharmScriptตามจำนวนที่กำหนด - Bonus มีผลทันทีเมื่อมีไอเทมใน Inventory
ข้อควรทราบ
- Charm ทำงานเมื่ออยู่ใน Inventory ไม่ต้องสวมใส่
- ต้องใช้
CharmScriptแทนScriptเท่านั้น - ถ้าไม่ระบุ
CharmMaxEffectค่า default = 1 - Charm Upgrade สามารถ refine/grade ได้
- ควรใส่ Trade restriction (NoDrop, NoSell) เพื่อป้องกันการซื้อขาย