Option Tier — สุ่ม Random Option อุปกรณ์
ระบบ NPC สุ่ม Option 3 ช่อง (Tier 1-3) สำหรับ Armor, Shield, Shoes, Garment, Upper และ Weapon บน rAthena — รองรับค่า Zeny/ไอเทม, Plan A/B เมื่อล้มเหลว และเมนูยืนยันใช้ใบกันแตก
ภาพรวม
NPC Option Tier ให้ผู้เล่นสุ่ม Random Option บนอุปกรณ์ที่สวมใส่
โดยใช้กลุ่ม Option ที่กำหนดใน db/import/item_randomopt_group.yml
และฟังก์ชัน randomoptgroup() + setrandomoption()
- ตำแหน่ง NPC: morocc 132/111 (
option_ticket.txt) - ค่าใช้จ่ายเริ่มต้น: 100,000 Zeny ต่อครั้ง (+ ไอเทมเสริมผ่าน
.req_id/.req_qtyได้) - โอกาสสำเร็จ: 50% (
.rate) - ค่าบริการหักก่อนสุ่ม — ทั้งสำเร็จและล้มเหลว
- ล้มเหลว: ขึ้นกับ
.fail_mode— Plan A (อุปกรณ์ปลอดภัย) หรือ Plan B (อุปกรณ์อาจหาย) - Plan B + มีใบกันแตกครบ: ผู้เล่นเลือก ใช้ / ไม่ใช้ ใบกันแตกก่อนยืนยันสุ่ม
- สำเร็จ: ใส่ Option ช่อง 1–3 (แทนที่ Option เดิมในช่องเหล่านั้น)
- โหมดสุ่ม: สุ่ม 3 Tier พร้อมกัน หรือทีละ Tier — เลือกเปิดใช้ Tier 1 / 2 / 3 ได้
รายการ Option ตามประเภท
แต่ละ Tier สุ่ม 1 Option จาก pool (น้ำหนักเท่ากัน) — ช่อง 1 = Tier 1, ช่อง 2 = Tier 2, ช่อง 3 = Tier 3
ARMOR (ชุดเกราะ)
Tier 1
ช่อง 1
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- HP1~100
- SP1~30
- ฟื้นฟู HP1~5%
- ฟื้นฟู SP1~5%
Tier 2
ช่อง 2
- Atk1~7
- Matk1~7
- Def1~3
- Mdef1~3
- Flee1~5
- MaxHP1~3%
- MaxSP1~3%
Tier 3
ช่อง 3
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- Aspd1~3%
- ต้านทานการโจมตีทุกธาตุยกเว้น Neutral1~3%
- Drop, Exp1~5%
- Atk, Matk1~2%
- โจมตีมอนเตอร์แบบ Nomal Attack แรงขึ้น1~3%
SHIELD (โล่)
Tier 1
ช่อง 1
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- HP1~100
- SP1~30
- ฟื้นฟู HP1~5%
- ฟื้นฟู SP1~5%
Tier 2
ช่อง 2
- Atk1~7
- Matk1~7
- ต้านทานธาตุ Neutral1~2%
- ต้านทานประเภท Demi-Human1~2%
- Flee1~5
- MaxHP1~3%
- MaxSP1~3%
Tier 3
ช่อง 3
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- Aspd1~3%
- ป้องกันการโจมตีระยะไกล1~2%
- Drop, Exp1~5%
- Atk, Matk1~2%
- ลดระยะเวลาในการร่ายเวทมนต์1~3%
SHOES (รองเท้า)
Tier 1
ช่อง 1
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- HP1~100
- SP1~30
- ฟื้นฟู HP1~5%
- ฟื้นฟู SP1~5%
Tier 2
ช่อง 2
- Atk1~7
- Matk1~7
- เพิ่มพลังโจมตีระยะประชิด1~2%
- โจมตีมอนเตอร์แบบ Nomal Attack แรงขึ้น1~3%
- Flee1~5
- เมื่อกำจัดศัตรู ได้รับการฟื้นฟู HP1~20
- เมื่อกำจัดศัตรู ได้รับการฟื้นฟู SP1~5
Tier 3
ช่อง 3
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- STR1~2
- INT1~2
- เพิ่มพลังโจมตีระยะไกล1~3%
- Drop, Exp1~5%
- Atk, Matk1~2%
GARMENT (ผ้าคลุม)
Tier 1
ช่อง 1
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- HP1~100
- SP1~30
- ฟื้นฟู HP1~5%
- ฟื้นฟู SP1~5%
Tier 2
ช่อง 2
- Def1~3
- Mdef1~3
- Critical1~5
- ต้านทานธาตุ Neutral1~2%
- เพิ่มพลังโจมตีต่อธาตุ Neutral1~5%
- เพิ่มพลังโจมตีเผ่า Demi-Human1~3%
- โจมตีโดยไม่สนใจพลังป้องกันของมอนเตอร์ทั่วไป1~5%
Tier 3
ช่อง 3
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- เพิ่มพลังโจมตีขนาดเล็ก1~5%
- เพิ่มพลังโจมตีขนาดกลาง1~3%
- เพิ่มพลังโจมตีขนาดใหญ่1~5%
- Drop, Exp1~5%
- Critical Damage1~5%
HeadGear Upper (หมวก)
Tier 1
ช่อง 1
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- เพิ่มพลังโจมตีระยะไกล1~2%
- ป้องกันการโจมตีระยะไกล1~2%
- เพิ่มความแรงของสกิล Heal1~5%
- ลดระยะเวลาในการร่ายเวทมนต์1~3%
Tier 2
ช่อง 2
- ลดการใช้งาน SP ลง1~5%
- ต้านทานทุกธาตุ1~2%
- Critical1~3
- ป้องกันการโจมตีระยะประชิด1~2%
- MaxHP1~3%
- MaxSP1~3%
- Atk1~5
Tier 3
ช่อง 3
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- Aspd1~3%
- HIT1~10
- Atk, Matk1~2%
- Drop, Exp1~5%
- Critical Damage1~5%
WEAPON (อาวุธ)
Tier 1
ช่อง 1
- Drop1~3%
- Exp1~3%
- แบกน้ำหนักเพิ่มขึ้น1~100
- Atk1~7
- Matk1~7
- Critical1~5
- โจมตีมอนเตอร์แบบ Nomal Attack แรงขึ้น1~5%
- เมื่อกำจัดศัตรู ได้รับการฟื้นฟู HP1~20
- เมื่อกำจัดศัตรู ได้รับการฟื้นฟู SP1~10
- เมื่อกำจัดศัตรูด้วยเวทมนต์ ได้รับการฟื้นฟู HP1~20
- เมื่อกำจัดศัตรูด้วยเวทมนต์ ได้รับการฟื้นฟู SP1~10
Tier 2
ช่อง 2
- เพิ่มพลังโจมตีประเภท Formless1~7%
- เพิ่มพลังโจมตีประเภท Undead1~7%
- เพิ่มพลังโจมตีประเภท Brute1~7%
- เพิ่มพลังโจมตีประเภท Plant1~7%
- เพิ่มพลังโจมตีประเภท Insect1~7%
- เพิ่มพลังโจมตีประเภท Fish1~7%
- เพิ่มพลังโจมตีประเภท Demon1~7%
- เพิ่มพลังโจมตีประเภท Demi-Human1~7%
- เพิ่มพลังโจมตีประเภท Angel1~7%
- เพิ่มพลังโจมตีประเภท Dragon1~7%
- Matk1~5
- Critical Damage1~5%
- เพิ่มพลังโจมตีระยะไกล1~5%
- เพิ่มพลังโจมตีระยะประชิด1~5%
Tier 3
ช่อง 3
- เพิ่มพลังโจมตีประเภท Formless1~7%
- เพิ่มพลังโจมตีประเภท Undead1~7%
- เพิ่มพลังโจมตีประเภท Brute1~7%
- เพิ่มพลังโจมตีประเภท Plant1~7%
- เพิ่มพลังโจมตีประเภท Insect1~7%
- เพิ่มพลังโจมตีประเภท Fish1~7%
- เพิ่มพลังโจมตีประเภท Demon1~7%
- เพิ่มพลังโจมตีประเภท Demi-Human1~7%
- เพิ่มพลังโจมตีประเภท Angel1~7%
- เพิ่มพลังโจมตีประเภท Dragon1~7%
- Matk1~5
- Critical Damage1~5%
- เพิ่มพลังโจมตีระยะไกล1~5%
- เพิ่มพลังโจมตีระยะประชิด1~5%
การตั้งค่า NPC
ตั้งค่าใน OnInit ของ server/npc/custom-npc/option/option_ticket.txt
OnInit:
.cost = 100000;
.rate = 50;
// ไอเทมที่ใช้ต่อครั้ง (parallel array .req_id / .req_qty)
// setarray .req_id[0], 7776;
// setarray .req_qty[0], 1;
// setarray .req_id[0], 7776, 501;
// setarray .req_qty[0], 1, 10;
// 0 = สุ่ม Tier 1-3 พร้อมกัน | 1 = สุ่มทีละ Tier
.roll_mode = 0;
.tier_enable[0] = 1; // Tier 1 (ช่อง 1)
.tier_enable[1] = 1; // Tier 2 (ช่อง 2)
.tier_enable[2] = 1; // Tier 3 (ช่อง 3)
// 0=Plan A (ปลอดภัย) | 1=Plan B (ล้มเหลวอาจแตก)
.fail_mode = 1;
.bless_id = 6635; // Blacksmith Blessing
.bless_qty = 1; // จำนวนกันแตกต่อครั้งที่ล้มเหลว (0=ปิด)
end;
หลังแก้ไขใช้ @reloadscript ในเกม
.roll_mode
| ค่า | โหมด | พฤติกรรม |
|---|---|---|
| 0 | พร้อมกัน | สุ่ม Tier 1+2+3 ครั้งเดียว → ใส่ช่อง 1, 2, 3 |
| 1 | ทีละ Tier | เลือก Tier ที่เปิดใช้ → สุ่ม 1 ช่องต่อครั้ง (จ่าย Zeny แยกครั้ง) |
.tier_enable (ใช้เมื่อ .roll_mode = 1)
กำหนดว่า Tier ใดเปิดให้ผู้เล่นเลือกสุ่ม — ใช้ 0 = ปิด, 1 = เปิด
.tier_enable[0]
.tier_enable[1]
.tier_enable[2]
ตัวอย่างการตั้งค่า
| ต้องการ | .tier_enable[0/1/2] | เมนูในเกม |
|---|---|---|
| เปิดแค่ Tier 1 | 1, 0, 0 | ข้ามเมนูเลือก Tier → สุ่มช่อง 1 โดยตรง |
| เปิดแค่ Tier 2 | 0, 1, 0 | ข้ามเมนูเลือก Tier → สุ่มช่อง 2 โดยตรง |
| เปิดแค่ Tier 3 | 0, 0, 1 | ข้ามเมนูเลือก Tier → สุ่มช่อง 3 โดยตรง |
| เปิด Tier 1 และ 2 | 1, 1, 0 | แสดงเมนู Tier 1 / Tier 2 |
| เปิดทั้งหมด | 1, 1, 1 | แสดงเมนู Tier 1 / 2 / 3 |
เมื่อเปิด NPC ในโหมด 1 จะแสดงรายการ Tier ที่เปิดใช้ ในข้อความต้อนรับ หากปิดครบทุก Tier (0, 0, 0) NPC จะแจ้งว่าไม่สามารถใช้บริการได้
ค่าใช้จ่าย
| ตัวแปร | ค่าเริ่มต้น | รายละเอียด |
|---|---|---|
| .cost | 100000 | Zeny ต่อครั้ง (0 = ไม่ใช้ Zeny) |
| .req_id[] | (ว่าง) | Item ID ที่ต้องใช้ — parallel กับ .req_qty[] |
| .req_qty[] | (ว่าง) | จำนวนไอเทมที่หักต่อครั้ง |
ตัวอย่างไอเทมเสริม
// 1 ไอเทม
setarray .req_id[0], 7776;
setarray .req_qty[0], 1;
// หลายไอเทม
setarray .req_id[0], 7776, 501;
setarray .req_qty[0], 1, 10;
NPC ตรวจสอบและหัก Zeny + ไอเทมก่อน progress bar สุ่ม — แสดงสรุปค่าใช้จ่ายในหน้ายืนยัน (เช่น 100,000 Zeny + 1x Ticket)
โหมดเมื่อล้มเหลว (Plan A / B)
กำหนดด้วย .fail_mode — ใช้เมื่อ rand(100) >= .rate (สุ่มไม่สำเร็จ)
| .fail_mode | โหมด | เมื่อล้มเหลว |
|---|---|---|
| 0 | Plan A | อุปกรณ์ไม่ถูกทำลายหรือหายไป |
| 1 | Plan B | อุปกรณ์ถูกทำลาย (delequip) ยกเว้นใช้ใบกันแตก |
ค่าบริการ (Zeny / ไอเทม) ถูกหักแล้วทั้งสองกรณี — ไม่คืนเมื่อล้มเหลว
ใบกันแตก (Blacksmith Blessing)
ใช้กับ Plan B เท่านั้น — ตั้งค่าใน OnInit:
| ตัวแปร | ค่าเริ่มต้น | รายละเอียด |
|---|---|---|
| .bless_id | 6635 | Item ID ใบกันแตก (Blacksmith Blessing) |
| .bless_qty | 1 | จำนวนที่หักเมื่อกันแตกสำเร็จ (0 = ปิดระบบกันแตก) |
ขั้นตอนในเกม (Plan B)
- เลือกประเภทอุปกรณ์และยืนยันรายละเอียดการสุ่ม
- ถ้ามีใบกันแตกในกระเป๋า ≥
.bless_qty— NPC แสดงเมนู:
ใช้ใบกันแตก / ไม่ใช้ใบกันแตก - แสดงสถานะที่เลือก แล้วถึงเมนู ยืนยัน / ยกเลิก ค่าบริการ
- เมื่อล้มเหลว:
- เลือก ใช้ใบกันแตก + มีไอเทมครบ → หักใบกันแตก อุปกรณ์ปลอดภัย
- เลือก ไม่ใช้ หรือไม่มีใบกันแตกครบ → อุปกรณ์ถูกทำลาย
ใบกันแตกหักเฉพาะเมื่อล้มเหลวและผู้เล่นเลือกใช้ — ไม่หักเมื่อสุ่มสำเร็จ