[สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
หน้า 1 จาก 1
[สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
ระบบ ฉากต่อสูแบบด้านข้าง หรือ
Sideviewbattleมันก็คือระบบต่อสู้แบบไฟนอลนั่นแหล่ะ
แต่จะมีการเคลื่อนที่เขาไปหาโจมตีศัตรูระยะประชิดได้ด้วยและจะแตกต่างจาก
ระบบปกติ(frontview
(ระบบต่อสู้ด้านหน้า))ตรงที่จะได้โจมตีตามความเร็วฮีโร่แทนที่จะเป็บแบบ
เทิร์นเบส(ผลัดกันโจมตี)ถ้าฮีโร่คนไหนมีความเร็วมากๆก็จะได้โจมตีบ่อยกว่าคน
ที่มีความเร็วน้อยๆ(แต่จริงๆระบบต่อสู้ด้านหน้าก็ใช้ RTAB ได้เหมือนกัน)
สคริปตัวนี้เป็นสคริปของ minkoff ผมจะมาแนะนำการใช้ให้ฟัง(อ่าน)รูป ต.ย. ระบบ Sideview
สคริปที่ใช้
ซ่อน
หลังจากคลายซิปก็ก็อปไปเรียงตามรูป
1.สคริป RTAB หรือ สคริประบบต่อสู้แบบเรียลไทม์ เป็นระบบซูมเข้าซูมออกคล้ายๆแบบที่ท่านบุ๊กลงนั้นแหล่ะ เป็นตัวหลักในการทำระบบเรียลไทม์
2.RTAB/CTB Changes หรือ สคริประบบซูมหน้าจอให้เป็นหน้าจอปกติ(มั้ง)
3-7 ส่วนเซต รูป Battlers ตำแหน่ง และระบบต่างๆ
3.Configuration เป็นส่วนเซตค่า Battlers ในรูปแบบต่างๆโดยหลักๆแล้วจะมาเซตที่สคริปนี้
4.Sprite_System เป็นส่วนเกี่ยวกับการตั้งค่า Battlers เราไม่ต้องไปยุ่ง
5.Battle_System เป็นส่วนเกี่ยวกับการต่อสู้ การโจมตีหรือใช้ทักษะ การเคลื่อนที่ต่างๆ เราไม่ต้องไปยุ่ง
6.Misc_Code-7.RTAB_Patch เป็นส่วนเสริมอื่นซึ่ง เราไม่ต้องไปยุ่ง
สามารถเซต การแบ่งรูป Battlers ได้ที่ Configuration
และถ้ามีความเชี่ยวชาญมากขึ้นอาจไปปรับแต่งส่วนต่างๆเพิ่มเติมเอาเองก็ได้
สามารถหาสคริปอื่นมาเสริมได้ที่
http://members.jcom.home.ne.jp/cogwheel/
ลิงค์ ต.ย. ระบบ RTAB
http://www.creationasylum.net/index.php?showtopic=11827
(แนะนำให้โหลด RTAB with Extras)
Battlers หาได้จากที่นี่
คลิก
สคริปตัวนี้เป็นตัวที่ผมดัดแปลงมาจากต้นฉบับคือจะมีการใช้ท่าทางต่างๆมากขึ้น เช่น
-เมื่อมีดาเมจเป็น 0 จะแสดงท่าป้องกันด้วย
-มีการแลนดอมท่าโจมตีเป็น 2 แบบ(ปกติแบบเดียว)
-มีการหารค่าประสบการณ์ออกตามจำนวนฮีโร่
-เมื่อ เลเวลอัพ จะเพิ่ม HP/SP เต็ม(9999)
-เมื่อจบการต่อสู้จะหยุดเพลงทันที
ตรงบรรทัดที่ผมแก้จะมีคำว่า #เพิ่ม หรือ #แก้ ต่อท้าย
ใครข้องใจหรือติดตรงไหนถามมาได้
การกำหนดจุดยืนของมอนสเตอร์
จะอยู่ตรงกลางล่างสุดของรูป ดังรูป อยากให้ศัตรูอยู่ตำแหน่งไหนก็วางให้ดีเท่านั้นเอง (ถ้ารูปแบทเทิ้ลใหญ่อาจวางลำบากนิด)
ลงแล้วมองไม่เห็นฟอนท์
ไปดูที่ (รอแก้ไข)
ข้อ 5
เออเรอร์อันนี้เกิดจากอะไร
อาการนี้เกิดจากไม่มีรูปไอคอนอาการต่างๆนะ
แก้โดยการเอารูปไอคอน(ที่เอาเอาอาการ)มาใส่ในโฟลเดอร์ Icons
โดยตั้งชื่อไปคอนว่า "อาการ-" + ชื่ออาการ เช่น อาการ-พิษ
จะทำให้ตัวละครยิง ธนูหรือปืน(ไม่เคลื่อนที่เวลาโจมตี) ทำอย่างไร
ไปที่สคริป Configuration
หาบรรทัดที่เขียนว่า
ใส่ ID อาวุธที่ไม่มีการเคลื่อนที่(พวกปืน ธนู) ลงไปใน [] เช่น [17,18,19,20,21,22,23,24]
ตัวอย่างการลงสคริป+การเซต Battles
http://www.mediafire.com/?mmewxq1iyjm
อันนี้เอาอาการเป็นรูปไอคอนออกนะ
เเถม สคริปต์ Minkoff ตัวเก่่า
http://legacy-studios.org/forums/index.php?/topic/293-minkoffs-animated-battlers-enhanced/
Credit : Minkoff
Modified : Shinryu
Sideviewbattleมันก็คือระบบต่อสู้แบบไฟนอลนั่นแหล่ะ
แต่จะมีการเคลื่อนที่เขาไปหาโจมตีศัตรูระยะประชิดได้ด้วยและจะแตกต่างจาก
ระบบปกติ(frontview
(ระบบต่อสู้ด้านหน้า))ตรงที่จะได้โจมตีตามความเร็วฮีโร่แทนที่จะเป็บแบบ
เทิร์นเบส(ผลัดกันโจมตี)ถ้าฮีโร่คนไหนมีความเร็วมากๆก็จะได้โจมตีบ่อยกว่าคน
ที่มีความเร็วน้อยๆ(แต่จริงๆระบบต่อสู้ด้านหน้าก็ใช้ RTAB ได้เหมือนกัน)
สคริปตัวนี้เป็นสคริปของ minkoff ผมจะมาแนะนำการใช้ให้ฟัง(อ่าน)รูป ต.ย. ระบบ Sideview
สคริปที่ใช้
ซ่อน
หลังจากคลายซิปก็ก็อปไปเรียงตามรูป
1.สคริป RTAB หรือ สคริประบบต่อสู้แบบเรียลไทม์ เป็นระบบซูมเข้าซูมออกคล้ายๆแบบที่ท่านบุ๊กลงนั้นแหล่ะ เป็นตัวหลักในการทำระบบเรียลไทม์
2.RTAB/CTB Changes หรือ สคริประบบซูมหน้าจอให้เป็นหน้าจอปกติ(มั้ง)
3-7 ส่วนเซต รูป Battlers ตำแหน่ง และระบบต่างๆ
3.Configuration เป็นส่วนเซตค่า Battlers ในรูปแบบต่างๆโดยหลักๆแล้วจะมาเซตที่สคริปนี้
4.Sprite_System เป็นส่วนเกี่ยวกับการตั้งค่า Battlers เราไม่ต้องไปยุ่ง
5.Battle_System เป็นส่วนเกี่ยวกับการต่อสู้ การโจมตีหรือใช้ทักษะ การเคลื่อนที่ต่างๆ เราไม่ต้องไปยุ่ง
6.Misc_Code-7.RTAB_Patch เป็นส่วนเสริมอื่นซึ่ง เราไม่ต้องไปยุ่ง
สามารถเซต การแบ่งรูป Battlers ได้ที่ Configuration
และถ้ามีความเชี่ยวชาญมากขึ้นอาจไปปรับแต่งส่วนต่างๆเพิ่มเติมเอาเองก็ได้
สามารถหาสคริปอื่นมาเสริมได้ที่
http://members.jcom.home.ne.jp/cogwheel/
ลิงค์ ต.ย. ระบบ RTAB
http://www.creationasylum.net/index.php?showtopic=11827
(แนะนำให้โหลด RTAB with Extras)
Battlers หาได้จากที่นี่
คลิก
สคริปตัวนี้เป็นตัวที่ผมดัดแปลงมาจากต้นฉบับคือจะมีการใช้ท่าทางต่างๆมากขึ้น เช่น
-เมื่อมีดาเมจเป็น 0 จะแสดงท่าป้องกันด้วย
-มีการแลนดอมท่าโจมตีเป็น 2 แบบ(ปกติแบบเดียว)
-มีการหารค่าประสบการณ์ออกตามจำนวนฮีโร่
-เมื่อ เลเวลอัพ จะเพิ่ม HP/SP เต็ม(9999)
-เมื่อจบการต่อสู้จะหยุดเพลงทันที
ตรงบรรทัดที่ผมแก้จะมีคำว่า #เพิ่ม หรือ #แก้ ต่อท้าย
ใครข้องใจหรือติดตรงไหนถามมาได้
การกำหนดจุดยืนของมอนสเตอร์
จะอยู่ตรงกลางล่างสุดของรูป ดังรูป อยากให้ศัตรูอยู่ตำแหน่งไหนก็วางให้ดีเท่านั้นเอง (ถ้ารูปแบทเทิ้ลใหญ่อาจวางลำบากนิด)
ลงแล้วมองไม่เห็นฟอนท์
ไปดูที่ (รอแก้ไข)
ข้อ 5
เออเรอร์อันนี้เกิดจากอะไร
อาการนี้เกิดจากไม่มีรูปไอคอนอาการต่างๆนะ
แก้โดยการเอารูปไอคอน(ที่เอาเอาอาการ)มาใส่ในโฟลเดอร์ Icons
โดยตั้งชื่อไปคอนว่า "อาการ-" + ชื่ออาการ เช่น อาการ-พิษ
จะทำให้ตัวละครยิง ธนูหรือปืน(ไม่เคลื่อนที่เวลาโจมตี) ทำอย่างไร
ไปที่สคริป Configuration
หาบรรทัดที่เขียนว่า
- Code:
MNK_STATIONARY_WEAPONS = [] #
(IDอาวุธประเภทธนูและปืน ที่ไม่มีการเคลื่อนที่)
ใส่ ID อาวุธที่ไม่มีการเคลื่อนที่(พวกปืน ธนู) ลงไปใน [] เช่น [17,18,19,20,21,22,23,24]
ตัวอย่างการลงสคริป+การเซต Battles
http://www.mediafire.com/?mmewxq1iyjm
อันนี้เอาอาการเป็นรูปไอคอนออกนะ
เเถม สคริปต์ Minkoff ตัวเก่่า
http://legacy-studios.org/forums/index.php?/topic/293-minkoffs-animated-battlers-enhanced/
Credit : Minkoff
Modified : Shinryu
แก้ไขล่าสุดโดย boyhit เมื่อ Tue Nov 15, 2011 10:38 am, ทั้งหมด 1 ครั้ง
Re: [สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
ระบบสคริปเสริมที่ใช้กับ ระบบนี้
สคริป Connected Attacking (สคริปโจมตีต่อเนื่อง)
สคริป
ซ่อน
โดยวางสคริปนี้ตามภาพ
ต้องวางไว้ใต้ RTAB และ RTAB/CTB Changes แล้วเหนือส่วนเซต Battle สคริปนี้ถึงจะทำงาน
วิธีใช้งาน
ตรงไหนอยากให้ดาเมจเด้งออกมาก็ให้เซตว่า
มีจุดเซต 3 จุดคือ
เฟรมที่-เป็นการเซตว่าตัวเลขจะเด้งตอนเฟรมไหน(ควรตั้งเผื่อไว้สักเฟรมหนึ่ง)
แดง-ความแรงเป็น%ของความแรงสูงสุด และรวมทุกอันแล้วต้องไม่เกิน 100
และเซตสีเขียวเป็น 100 และสีน้ำเงินเป็น 0 สคริปนี้ถึงจะเริ่มทำงาน
เช่นตั้งไว้ 40 แล้วท่าแรง 1000 เลขที่ออกก็คือประมาณ 400
ตัวอย่าง
ท่า Cross Cut มีการกระพริบเฟรมที่ 3 และ 6 ก็ไปเซตดังภาพ ดาเมจจะเด้งตอนเฟรมที่ 2 และ 5
หรือ Leg Sweep ถ้าเซตตามภาพคือที่เฟรม 3 เซตความแรง 20 5ครั้ง ดาเมจจะเด้งตอนเฟรมที่ 3 5ครั้งรวด
ปล.ความแรงจะมีกี่อันก็ได้ โดยใส่ได้ตั้งแต่ 1-100 แต่เมื่อรวมทุกอันแล้วต้องไม่เกิน 100 นะ
ปล2.สคริปตัวนี้เป็นตัวอัพเดทจากตัวใน thaiware ในนั้นใส่ได้ 1-20 แต่นี่ใส่ได้ 1-100 (พูดง่ายๆคือโจมตีได้มากสุด 100 hit)
สคริป Connected Attacking (สคริปโจมตีต่อเนื่อง)
สคริป
ซ่อน
โดยวางสคริปนี้ตามภาพ
ต้องวางไว้ใต้ RTAB และ RTAB/CTB Changes แล้วเหนือส่วนเซต Battle สคริปนี้ถึงจะทำงาน
วิธีใช้งาน
ตรงไหนอยากให้ดาเมจเด้งออกมาก็ให้เซตว่า
มีจุดเซต 3 จุดคือ
เฟรมที่-เป็นการเซตว่าตัวเลขจะเด้งตอนเฟรมไหน(ควรตั้งเผื่อไว้สักเฟรมหนึ่ง)
แดง-ความแรงเป็น%ของความแรงสูงสุด และรวมทุกอันแล้วต้องไม่เกิน 100
และเซตสีเขียวเป็น 100 และสีน้ำเงินเป็น 0 สคริปนี้ถึงจะเริ่มทำงาน
เช่นตั้งไว้ 40 แล้วท่าแรง 1000 เลขที่ออกก็คือประมาณ 400
ตัวอย่าง
ท่า Cross Cut มีการกระพริบเฟรมที่ 3 และ 6 ก็ไปเซตดังภาพ ดาเมจจะเด้งตอนเฟรมที่ 2 และ 5
หรือ Leg Sweep ถ้าเซตตามภาพคือที่เฟรม 3 เซตความแรง 20 5ครั้ง ดาเมจจะเด้งตอนเฟรมที่ 3 5ครั้งรวด
ปล.ความแรงจะมีกี่อันก็ได้ โดยใส่ได้ตั้งแต่ 1-100 แต่เมื่อรวมทุกอันแล้วต้องไม่เกิน 100 นะ
ปล2.สคริปตัวนี้เป็นตัวอัพเดทจากตัวใน thaiware ในนั้นใส่ได้ 1-20 แต่นี่ใส่ได้ 1-100 (พูดง่ายๆคือโจมตีได้มากสุด 100 hit)
Re: [สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
Skill Casting Time Counter (ระบบหน่วงเวลาการใช้สกิล)
จากรูปเมื่อเริ่มใช้เวทย์ แถบบาร์จะเปลื่ยนเป็นสีม่วง และจะเพิ่มขึ้นใหม่ตามความเร็วที่เรากำหนดไว้เมื่อเต็มถึงจะใช้เวทย์นั้นๆ
สคริป
หาได้จากตัวอย่างในเรปแรก
วิธีการใช้
ก็อป
ใน "" คือชื่อทักษะที่ต้องการให้มีการหน่วงเวลา
ส่วนเลขตรงคือความเร็วในการเต็มของหลอดเช่น 20 ก็คือเต็มเร็วกว่าแถบปกติ 5 เท่า 100 คือ 1 เท่า
กรณีที่ต้องการใช้ความเร็วเท่ากันก็สามารถใส่ดังนี้ได้เลย
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cooperative Skills (ระบบโจมตีประสาน)
เมื่อมีการใช้ทักษะที่กำหนด แถบจะเปลื่ยนเป็นสีน้ำตาลทั้งคู่
และเมื่อแถบเต็มจะเป็นการใช้ทักษะพร้อมกัน
สคริป
หาได้จากตัวอย่างในเรปแรก
วิธีการใช้
ประมาณบรรทัดที่ 29 ตรง
จากนั้นไปตรงส่วน case magic
ถ้าต้องการให้เป็นท่าประสาน 3 คนที่เกิดจากมาน๖ 3 ชนิดก็ใส่ว่า
ปล2.Cooperative Skills ต้องใช้คู่กับสคริป Skill Casting Time Counter เพราะถ้าไม่มีการหน่วงเวลา จะเป็นการใช้ทักษะไปเลย
จากรูปเมื่อเริ่มใช้เวทย์ แถบบาร์จะเปลื่ยนเป็นสีม่วง และจะเพิ่มขึ้นใหม่ตามความเร็วที่เรากำหนดไว้เมื่อเต็มถึงจะใช้เวทย์นั้นๆ
สคริป
หาได้จากตัวอย่างในเรปแรก
วิธีการใช้
ก็อป
- Code:
when ""
battler.rtp = 0
ใน "" คือชื่อทักษะที่ต้องการให้มีการหน่วงเวลา
ส่วนเลขตรงคือความเร็วในการเต็มของหลอดเช่น 20 ก็คือเต็มเร็วกว่าแถบปกติ 5 เท่า 100 คือ 1 เท่า
กรณีที่ต้องการใช้ความเร็วเท่ากันก็สามารถใส่ดังนี้ได้เลย
- Code:
when "เคียรี่","เคียริค","สโตน่า"
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cooperative Skills (ระบบโจมตีประสาน)
เมื่อมีการใช้ทักษะที่กำหนด แถบจะเปลื่ยนเป็นสีน้ำตาลทั้งคู่
และเมื่อแถบเต็มจะเป็นการใช้ทักษะพร้อมกัน
สคริป
หาได้จากตัวอย่างในเรปแรก
วิธีการใช้
ประมาณบรรทัดที่ 29 ตรง
- Code:
synthe_s.push(["ชื่อมนต์","ชื่อมนต์"],"ชื่อเวทย์ผสม"])
จากนั้นไปตรงส่วน case magic
- Code:
when "ชื่อเวทย์ผสม"
spells = ["ชื่อมนต์1","ชื่อมนต์1"]
success = spell_effect(battler, synthe_b, spells)
ถ้าต้องการให้เป็นท่าประสาน 3 คนที่เกิดจากมาน๖ 3 ชนิดก็ใส่ว่า
- Code:
synthe_s.push(["ชื่อมนต์1","ชื่อมนต์2","ชื่อมนต์3"],"ชื่อเวทย์ผสม"])
- Code:
when "ชื่อเวทย์ผสม"
spells = ["ชื่อมนต์1","ชื่อมนต์2","ชื่อมนต์3"]
success = spell_effect(battler, synthe_b, spells)
ปล2.Cooperative Skills ต้องใช้คู่กับสคริป Skill Casting Time Counter เพราะถ้าไม่มีการหน่วงเวลา จะเป็นการใช้ทักษะไปเลย
Re: [สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
สคริปแถบ HP/SP/EXP
1.แบบที่ผมใช้อยู่ของcogwheel
2.แบบที่ใช้ในเกม Tales of the Quest ของท่าน nongkong03
3.แบบที่ 3 (แบบที่ใช้ใน CRISIS M.E.T.E.O.R ของท่านลู)
http://members.jcom.home.ne.jp/cogwheel/script/gauge_a.html
แถบพลังจะมีการเคลื่อนไหวตลอดเวลา
ปล.สคริปนี้จะไปตีกับสคริป Limit Break
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Damage Display (เลขดาเมจหลากสี)
http://members.jcom.home.ne.jp/cogwheel/script/damage.html
วิธีใช้
1.โหลด d_rtab.zip ลงเครื่อง
2.ก็อป โฟลเดอร์ String ไปวางในโฟลเดอร์ Graphics ของเกม
3.ก็อปสคริปไปวาง
1.แบบที่ผมใช้อยู่ของcogwheel
- Code:
# HP/SP/EXP Gauge Script v1.00
# Distribution original support URL
# http://members.jcom.home.ne.jp/cogwheel/
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Draw HP Gauge
#--------------------------------------------------------------------------
# Modification of the original Draw HP process
alias :draw_actor_hp_hpsp :draw_actor_hp
def draw_actor_hp(actor, x, y, width = 144)
# Determine the rate of fill based on the actor's HP and HP Max
if actor.maxhp != 0
rate = actor.hp.to_f / actor.maxhp
else
rate = 0
end
# plus_x: revised x-coordinate
# rate_x: revised X-coordinate as (%)
# plus_y: revised y-coordinate
# plus_width: revised width
# rate_width: revised width as (%)
# height: Vertical width
# align1: Type 1 ( 0: left justify 1: center justify 2: right justify )
# align2: Type 2 ( 0: Upper stuffing 1: Central arranging 2:Lower stuffing )
# align3: Gauge type 0:Left justify 1: Right justify
plus_x = 0
rate_x = 0
plus_y = 25
plus_width = 0
rate_width = 100
height = 10
align1 = 1
align2 = 2
align3 = 0
# Gradation settings: grade1: Empty gauge grade2:Actual gauge
# (0:On side gradation 1:Vertically gradation 2: Slantedly gradation)
grade1 = 1
grade2 = 0
# Color setting. color1: Outermost framework, color2: Medium framework
# color3: Empty framework dark color, color4: Empty framework light/write color
color1 = Color.new(0, 0, 0, 192)
color2 = Color.new(255, 255, 192, 192)
color3 = Color.new(0, 0, 0, 192)
color4 = Color.new(64, 0, 0, 192)
# Color setting of gauge
# Usually color setting of the time
color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
# Determine the gauge's width & fill based on the actor's HP
if actor.maxhp != 0
hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
else
hp = 0
end
# Drawing of gauge
gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
width, plus_width + width * rate_width / 100,
height, hp, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
# Call the original Draw HP process
draw_actor_hp_hpsp(actor, x, y, width)
end
#--------------------------------------------------------------------------
# * Draw SP Gauge
#--------------------------------------------------------------------------
# Modification of the original Draw SP process
alias :draw_actor_sp_hpsp :draw_actor_sp
def draw_actor_sp(actor, x, y, width = 144)
# Determine the rate of fill based on the actor's SP and SP Max
if actor.maxsp != 0
rate = actor.sp.to_f / actor.maxsp
else
rate = 1
end
# plus_x: revised x-coordinate
# rate_x: revised X-coordinate as (%)
# plus_y: revised y-coordinate
# plus_width: revised width
# rate_width: revised width as (%)
# height: Vertical width
# align1: Type 1 ( 0: left justify 1: center justify 2: right justify )
# align2: Type 2 ( 0: Upper stuffing 1: Central arranging 2:Lower stuffing )
# align3: Gauge type 0:Left justify 1: Right justify
plus_x = 0
rate_x = 0
plus_y = 25
plus_width = 0
rate_width = 100
height = 10
align1 = 1
align2 = 2
align3 = 0
# Gradation settings: grade1: Empty gauge grade2:Actual gauge
# (0:On side gradation 1:Vertically gradation 2: Slantedly gradation)
grade1 = 1
grade2 = 0
# Color setting. color1: Outermost framework, color2: Medium framework
# color3: Empty framework dark color, color4: Empty framework light/write color
color1 = Color.new(0, 0, 0, 192)
color2 = Color.new(255, 255, 192, 192)
color3 = Color.new(0, 0, 0, 192)
color4 = Color.new(0, 64, 0, 192)
# Color setting of gauge
# Usually color setting of the time
color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
# Determine the gauge's width & fill based on the actor's SP
if actor.maxsp != 0
sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
else
sp = (width + plus_width) * rate_width / 100
end
# Drawing of gauge
gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
width, plus_width + width * rate_width / 100,
height, sp, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
# Call the original Draw HP process
draw_actor_sp_hpsp(actor, x, y, width)
end
#--------------------------------------------------------------------------
# * Draw EXP Gauge
#--------------------------------------------------------------------------
# Modification of the original Draw HP process
alias :draw_actor_exp_hpsp :draw_actor_exp
def draw_actor_exp(actor, x, y, width = 204)
# Determine the rate of fill based on the actor's EXP and Next EXP
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
# plus_x: revised x-coordinate
# rate_x: revised X-coordinate as (%)
# plus_y: revised y-coordinate
# plus_width: revised width
# rate_width: revised width as (%)
# height: Vertical width
# align1: Type 1 ( 0: left justify 1: center justify 2: right justify )
# align2: Type 2 ( 0: Upper stuffing 1: Central arranging 2:Lower stuffing )
# align3: Gauge type 0:Left justify 1: Right justify
plus_x = 0
rate_x = 0
plus_y = 25
plus_width = 0
rate_width = 100
height = 10
align1 = 1
align2 = 2
align3 = 0
# Gradation settings: grade1: Empty gauge grade2:Actual gauge
# (0:On side gradation 1:Vertically gradation 2: Slantedly gradation)
grade1 = 1
grade2 = 0
# Color setting. color1: Outermost framework, color2: Medium framework
# color3: Empty framework dark color, color4: Empty framework light/write color
color1 = Color.new(0, 0, 0, 192)
color2 = Color.new(255, 255, 192, 192)
color3 = Color.new(0, 0, 0, 192)
color4 = Color.new(64, 0, 0, 192)
# Color setting of gauge
# Usually color setting of the time
color5 = Color.new(80 * rate, 80 - 80 * rate ** 2, 80 - 80 * rate, 192)
color6 = Color.new(240 * rate, 240 - 240 * rate ** 2, 240 - 240 * rate, 192)
# Determine the gauge's width & fill based on the actor's Next EXP
if actor.next_exp != 0
exp = (width + plus_width) * actor.now_exp * rate_width /
100 / actor.next_exp
else
exp = (width + plus_width) * rate_width / 100
end
# Drawing of gauge
gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
width, plus_width + width * rate_width / 100,
height, exp, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
# Call the original Draw EXP process
draw_actor_exp_hpsp(actor, x, y)
end
#--------------------------------------------------------------------------
# * Drawing of gauge
#--------------------------------------------------------------------------
def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
color1, color2, color3, color4, color5, color6, grade1, grade2)
case align1
when 1
x += (rect_width - width) / 2
when 2
x += rect_width - width
end
case align2
when 1
y -= height / 2
when 2
y -= height
end
# Framework Drawing
self.contents.fill_rect(x, y, width, height, color1)
self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
if align3 == 0
if grade1 == 2
grade1 = 3
end
if grade2 == 2
grade2 = 3
end
end
if (align3 == 1 and grade1 == 0) or grade1 > 0
color = color3
color3 = color4
color4 = color
end
if (align3 == 1 and grade2 == 0) or grade2 > 0
color = color5
color5 = color6
color6 = color
end
# Drawing of empty gauge
self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
color3, color4, grade1)
if align3 == 1
x += width - gauge
end
# Drawing of actual gauge
self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
color5, color6, grade2)
end
end
#------------------------------------------------------------------------------
# New routine added to the Bitmap class.
#==============================================================================
class Bitmap
#--------------------------------------------------------------------------
# * Rectangle Gradation Indicator
# color1: Start color
# color2: Ending color
# align: 0: On side gradation
# 1: Vertically gradation
# 2: The gradation (intense concerning slantedly heavily note)
#--------------------------------------------------------------------------
def gradation_rect(x, y, width, height, color1, color2, align = 0)
if align == 0
for i in x...x + width
red = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
green = color1.green +
(color2.green - color1.green) * (i - x) / (width - 1)
blue = color1.blue +
(color2.blue - color1.blue) * (i - x) / (width - 1)
alpha = color1.alpha +
(color2.alpha - color1.alpha) * (i - x) / (width - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(i, y, 1, height, color)
end
elsif align == 1
for i in y...y + height
red = color1.red +
(color2.red - color1.red) * (i - y) / (height - 1)
green = color1.green +
(color2.green - color1.green) * (i - y) / (height - 1)
blue = color1.blue +
(color2.blue - color1.blue) * (i - y) / (height - 1)
alpha = color1.alpha +
(color2.alpha - color1.alpha) * (i - y) / (height - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(x, i, width, 1, color)
end
elsif align == 2
for i in x...x + width
for j in y...y + height
red = color1.red + (color2.red - color1.red) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color1.green + (color2.green - color1.green) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color1.blue + (color2.blue - color1.blue) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color1.alpha + (color2.alpha - color1.alpha) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
elsif align == 3
for i in x...x + width
for j in y...y + height
red = color1.red + (color2.red - color1.red) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color1.green + (color2.green - color1.green) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color1.blue + (color2.blue - color1.blue) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color1.alpha + (color2.alpha - color1.alpha) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
end
end
end
2.แบบที่ใช้ในเกม Tales of the Quest ของท่าน nongkong03
- Code:
#===========================================================================
# *** HP/MP/ATB/LimitBreak bar Slanted Style Compatible with RTAB ***
# *** Version 2.1
#---------------------------------------------------------------------------
# by Clive
# based on Cogwheel's Bars and Sephiroth Spawn's Slanted Bars.
#---------------------------------------------------------------------------
# ----- GREAT THANKS to DerVVulfman for solving the lag problem
#------This is a plug and play script so it should work without any problem!
#=============================================================================
# If using with Limit Break, must paste BELOW the Limit Break script as it re-
# writes the 'Gauge drawing' system. Will cause an error if not properly put.
# If used with Trickster's STEAL SCRIPT version 6 R1 (revision 1), then the
# height of RTAB's AT Bar (Draw Actor ATG) may not be smaller than 5 pixels
# due to a float-to-float error. A height of 6 pixels is the smallest.
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Get the current EXP
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get the next level's EXP
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#==========================================================================
# * Draw Slant Bar(by SephirothSpawn)
#==========================================================================
def draw_slant_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255),
end_color = Color.new(255, 255, 60, 255))
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min.to_f / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end
#==========================================================================
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#==========================================================================
alias :draw_actor_hp_hpsp :draw_actor_hp
def draw_actor_hp(actor, x, y, width = 144)
draw_slant_bar(x, y + 12, actor.hp, actor.maxhp, width, 6,
bar_color = Color.new(150, 0, 0, 255),
end_color = Color.new(255, 255, 60, 255))
draw_actor_hp_hpsp(actor, x, y, width)
end
#==========================================================================
# * Draw SP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#==========================================================================
alias :draw_actor_sp_hpsp :draw_actor_sp
def draw_actor_sp(actor, x, y, width = 144)
draw_slant_bar(x, y + 12, actor.sp, actor.maxsp, width, 6,
bar_color = Color.new(0, 0, 155, 255),
end_color = Color.new(255, 255, 255, 255))
draw_actor_sp_hpsp(actor, x, y, width)
end
#==========================================================================
# * Draw EXP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#==========================================================================
alias raz_bars_base_exp draw_actor_exp
def draw_actor_exp(actor, x, y)
if actor.level == 99
draw_slant_bar(x, y + 18, 1, 1, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255))
else
draw_slant_bar(x, y + 18, actor.now_exp, actor.next_exp, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(255, 255, 255, 255))
end
raz_bars_base_exp(actor, x, y)
end
#==========================================================================
# * Draw Parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type (0-6)
#==========================================================================
alias raz_bars_base_parameter draw_actor_parameter
def draw_actor_parameter(actor, x, y, type)
case type
when 0
para_color1 = Color.new(100,0,0)
para_color2 = Color.new(255,0,0)
para_begin = actor.atk
when 1
para_color1 = Color.new(100,100,0)
para_color2 = Color.new(255,255,0)
para_begin = actor.pdef
when 2
para_color1 = Color.new(100,0,100)
para_color2 = Color.new(255,0,255)
para_begin = actor.mdef
when 3
para_color1 = Color.new(50,0,100)
para_color2 = Color.new(50,0,255)
para_begin = actor.str
when 4
para_color1 = Color.new(0,100,0)
para_color2 = Color.new(0,255,0)
para_begin = actor.dex
when 5
para_color1 = Color.new(50,0,50)
para_color2 = Color.new(255,0,255)
para_begin = actor.agi
when 6
para_color1 = Color.new(0,100,100)
para_color2 = Color.new(0,255,255)
para_begin = actor.int
end
draw_slant_bar(x, y + 18, para_begin, 999, 155, 4, bar_color = para_color1,
end_color = para_color2)
raz_bars_base_parameter(actor, x, y, type)
end
#=========================================================================
# * Draw Actor ATG
# actor : Actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#=========================================================================
def draw_actor_atg(actor, x, y, width = 144, height = 6)
if @at_gauge == nil
# plus_x: revised x-coordinate
# rate_x: revised X-coordinate as (%)
# plus_y: revised y-coordinate
# plus_width: revised width
# rate_width: revised width as (%)
# height: Vertical width
# align1: Type 1 ( 0: left justify 1: center justify 2: right justify )
# align2: Type 2 ( 0: Upper stuffing 1: Central arranging 2:Lower stuffing )
# align3: Gauge type 0:Left justify 1: Right justify
@plus_x = 0
@rate_x = 0
@plus_y = 16
@plus_width = 0
@rate_width = 100
@width = @plus_width + width * @rate_width / 100
@height = 6
@align1 = 0
@align2 = 1
@align3 = 0
# Gradation settings: grade1: Empty gauge grade2:Actual gauge
# (0:On side gradation 1:Vertically gradation 2: Slantedly gradation)
grade1 = 1
grade2 = 0
# Color setting. color1: Outermost framework, color2: Medium framework
# color3: Empty framework dark color, color4: Empty framework light/write color
color1 = Color.new(0, 0, 0)
color2 = Color.new(255, 255, 192)
color3 = Color.new(0, 0, 0, 192)
color4 = Color.new(0, 0, 64, 192)
# Color setting of gauge
# Usually color setting of the time
color5 = Color.new(0, 64, 80)
color6 = Color.new(255, 255, 255)#(0, 128, 160)
# When gauge is MAX, color setting
color7 = Color.new(80, 0, 0)
color8 = Color.new(255, 255,255) #(240,0,0)
# Color setting at time of cooperation skill use
color9 = Color.new(80, 64, 32)
color10 = Color.new(255, 255, 255) #(240, 192, 96)
# Color setting at time of skill permanent residence
color11 = Color.new(80, 0, 64)
color12 = Color.new(255,255, 255) #(240, 0, 192)
# Drawing of gauge
gauge_rect_at(@width, @height, @align3, color1, color2, color3, color4,
color5, color6, color7, color8, color9, color10, color11, color12,
grade1, grade2)
end
# Variable at substituting the width of the gauge which is drawn
if actor.rtp == 0
at = (width + @plus_width) * actor.atp * @rate_width / 10000
else
at = (width + @plus_width) * actor.rt * @rate_width / actor.rtp / 100
end
# AT Width Check
if at > width
at = width
end
# Revision such as the left stuffing central posture of gauge
case @align1
when 1
x += (@rect_width - width) / 2
when 2
x += @rect_width - width
end
case @align2
when 1
y -= @height / 2
when 2
y -= @height
end
# Draw Border
for i in 0..height
self.contents.fill_rect(x + 1.5 + i, y + 12 + height - i, width - 2 , 3,
Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + 1.5 + i, y + 12 + height - i, width - 3, 3,
Color.new(r, b, g, a))
end
# Rect_X control
if @align3 == 0
rect_x = 0
else
x += @width - at - 1
rect_x = @width - at - 1
end
# Color setting of gauge
if at == width
#Gauge drawing at the time of MAX
for i in 0..height
self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y -i +
@plus_y, @at_gauge, Rect.new(rect_x, @height * 2, at, @height))
end
else
if actor.rtp == 0
for i in 0..height
# Usually gauge drawing of the time
self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y- i +
@plus_y, @at_gauge,Rect.new(rect_x, @height, at, @height))
end
else
if actor.spell == true
for i in 0..height
#Gauge drawing at time of cooperation skill use
self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y - i +
@plus_y, @at_gauge, Rect.new(rect_x, @height * 3, at, @height))
end
else
for i in 0..height
# Gauge drawing at time of skill permanent residence
self.contents.blt(x + i + @plus_x + @width * @rate_x / 100, y - i +
@plus_y, @at_gauge, Rect.new(rect_x, @height * 4, at, @height))
end
end
end
end
end
#=========================================================================
# * Draw Actor Limit Break Bar
# actor : Actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#=========================================================================
def draw_actor_lb(actor, x, y, width = 144)
rate = actor.limitbreak.to_f / LB_MAX
plus_x = 0
rate_x = 0
plus_y = 15
plus_width = 0
rate_width = 100
height = 7
lb = (width + plus_width) * actor.limitbreak * rate_width / 100 / LB_MAX
# Drawing of gauge
if actor.limitbreak == LB_MAX
# Draw Silver Blue Bar
draw_slant_bar(x + plus_x + width * rate_x / 100, y + plus_y, lb, width,
width, height, od_color1 = Color.new(0,80,200,192),
od_color2 = Color.new(255,255,255,192))
else
# Draw Green Bar
draw_slant_bar(x + plus_x + width * rate_x / 100, y + plus_y, lb, width,
width, height, od_color1 = Color.new(31, 128, 0, 128),
od_color2 = Color.new(255, 255, 191))
end
end
end
3.แบบที่ 3 (แบบที่ใช้ใน CRISIS M.E.T.E.O.R ของท่านลู)
http://members.jcom.home.ne.jp/cogwheel/script/gauge_a.html
แถบพลังจะมีการเคลื่อนไหวตลอดเวลา
ปล.สคริปนี้จะไปตีกับสคริป Limit Break
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Damage Display (เลขดาเมจหลากสี)
http://members.jcom.home.ne.jp/cogwheel/script/damage.html
วิธีใช้
1.โหลด d_rtab.zip ลงเครื่อง
2.ก็อป โฟลเดอร์ String ไปวางในโฟลเดอร์ Graphics ของเกม
3.ก็อปสคริปไปวาง
แก้ไขล่าสุดโดย boyhit เมื่อ Mon Oct 31, 2011 5:23 am, ทั้งหมด 1 ครั้ง
Re: [สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
การเอา Battlers มาใช้
ในสคริปนี้เราสามารถเลือกใช้ Battlers ได้หลายแบบ ทั้งแบบ 4 แถว 7แถว 12แถว
แล้วแต่จะอยากใช้หรืออยากใช้มากกว่า 12 แถวก็ได้ หรือจะใช้รูป Battlers
ปกติเลยก็ได้ โดยการตั้งท่าต่างๆสามารถดูได้ที่สคริป 1 - Configuration
เราสามารถเซตจำนวนแถว ได้ที่บรรทัด 33
MNK_POSES = 12 # Maximum # of poses (stances) in the template
12 คือจำนวนแถวที่จะใช้ทุกตัวละคร
เราสามารถเซตจำนวนเฟรม(จำนวนท่าทางการเคลื่อนไหว)ได้ที่บรรทัด 34
MNK_FRAMES = 4 # Maximum # of frames in each pose
4 คือจำนวนเฟรมที่จะใช้ทุกตัวละคร
โดยแต่ละแถวจะแสดงท่าทางอย่างไรมาดูที่ประมาณบรรทัด 59-70
Editable Template (Some people wanted to change their template design)
MNK_POSE1 = 1 #ท่าทางแถวที่1 ยืนปกติ
MNK_POSE2 = 2 #ท่าทางแถวที่2 บาดเจ็บ
MNK_POSE3 = 3 #ท่าทางแถวที่3 ใกล้ตาย
MNK_POSE4 = 4 #ท่าทางแถวที่4 ป้องกัน
MNK_POSE5 = 5 #ท่าทางแถวที่5 เดินซ้าย
MNK_POSE6 = 6 #ท่าทางแถวที่6 เดินขวา
MNK_POSE7 = 7 #ท่าทางแถวที่7 โจมตี1
MNK_POSE8 = 8 #ท่าทางแถวที่8 โจมตี2
MNK_POSE9 = 9 #ท่าทางแถวที่9 ทักษะ
MNK_POSE10 = 10 #ท่าทางแถวที่10 ชนะ
MNK_POSE11 = 11 #ท่าทางแถวที่11 ตาย
MNK_POSE12 = 12 #ท่าทางแถวที่12 ใช้ไอเทม
MNK_POSE 1-12 คือท่าทางที่จะใช้ตอนเกิดกิจกรรมต่างๆ(ดูด้านหลังของบรรทัด)
เลข1-12 หลัง = คือแถวของรูปที่จะใช้แสดงเวลาเกิิดท่าทางต่างๆ
โจมตี1-2 จะสุ่มการแสดงอัตโนมัติ
*********************************************************************************************
ตัวอย่างการเซต Battlers
การเอารูป Battlers มาใช้เลย(รูปไม่มีการขยับ)
ให้ไป บรรทัดที่ 25
DEFAULT_ACTOR_ID = [1,2,10] #ใส่เฉพาะ ID ที่ต้องการใช้รูป Battlers เลย
ในที่นี้คือฮีโร่ ID 1,2,10 จะใช้รูป Battlers แบบไม่เคลื่อนไหว
*********************************************************************************************
แบบ 4 แถว เช่นพวก Characters ธรรมดา
1.ก็ให้ก็อบ Characters ไปใส่ใน Battlers แล้วก็เซต Battlers เป็นอันนั้น
2.จากนั้นไปเซตจำนวนแถวที่ใช้ตรง
MNK_POSES_ACTOR = {2 => 4}
2=ID ฮีโร่
4=จำนวนแถว
3.จากนั้นก็ไปเซตท่าทางที่
Editable Template (for Custom Actor Spritesheets)
MNK_APOSE1 = {2 => 2}
MNK_APOSE2 = {2 => 2}
MNK_APOSE3 = {2 => 2}
MNK_APOSE4 = {2 => 2}
MNK_APOSE5 = {2 => 2}
MNK_APOSE6 = {2 => 3}
MNK_APOSE7 = {2 => 2}
MNK_APOSE8 = {2 => 2}
MNK_APOSE9 = {2 => 2}
MNK_APOSE10 = {2 => 1}
MNK_APOSE11 = {2 => 4}
MNK_APOSE12 = {2 => 2}
2 ตัวแรกคือID ฮีโร่
2 ตัวหลังแถวที่ใช้
MNK_APOSE1-11 ท่าทางต่างๆดูรายละเอียดที่ด้านบน
เป็นอันเสร็จสิ้น
ในกรณีที่เราจะใส่หลายๆตัวละครก็จะใส่ว่า
{2 => 2 , 7 => 2 , 9 => 2}
IDฮีโร่คือ 2,7,9
*********************************************************************************************
แบบ 7 แถว
1.หา Battlers ที่ 7 แถวดังตัวอย่างไปลง
2.จากนั้นไปเซตจำนวนแถวที่ใช้ตรง
MNK_POSES_ACTOR = {2 => 7}
2=IDฮีโร่
7=จำนวนแถว
3.จากนั้นก็ไปเซตท่าทางที่
Editable Template (for Custom Actor Spritesheets)
ตัวอย่างการเซต Battlers ตามรูป
MNK_APOSE1 = {9 => 2}
MNK_APOSE2 = {9 => 4}
MNK_APOSE3 = {9 => 7}
MNK_APOSE4 = {9 => 3}
MNK_APOSE5 = {9 => 1}
MNK_APOSE6 = {9 => 4}
MNK_APOSE7 = {9 => 5}
MNK_APOSE8 = {9 => 5}
MNK_APOSE9 = {9 => 6}
MNK_APOSE10 = {9 => 2}
MNK_APOSE11 = {9 => 7}
MNK_APOSE12 = {9 => 6}
*********************************************************************************************
แบบ 11 แถว
1.หา Battlers ที่ 7 แถวดังตัวอย่างไปลง
2.จากนั้นไปเซตจำนวนแถวที่ใช้ตรง
MNK_POSES_ACTOR = {2 => 11}
2=IDฮีโร่
11=จำนวนแถว
3.จากนั้นก็ไปเซตท่าทางที่
Editable Template (for Custom Actor Spritesheets)
ตัวอย่างการเซต Battlers ตามรูป
MNK_APOSE1 = {9 => 1}
MNK_APOSE2 = {9 => 2}
MNK_APOSE3 = {9 => 3}
MNK_APOSE4 = {9 => 4}
MNK_APOSE5 = {9 => 5}
MNK_APOSE6 = {9 => 6}
MNK_APOSE7 = {9 => 7}
MNK_APOSE8 = {9 => 7}
MNK_APOSE9 = {9 => 8}
MNK_APOSE10 = {9 => 10}
MNK_APOSE11 = {9 => 11}
MNK_APOSE12 = {9 => 8}
*********************************************************************************************
ถ้าเป็นศัตรูก็ไปแก้สคริปที่ส่วน
Editable Template (for Custom Enemy Spritesheets)
*********************************************************************************************
ในตัวสคริป Minkoff ที่ผมลงที่เรปแรก ผมตั้งให้เป็นแบบ 12 แถวอยู่แล้ว
ถ้าใครใช้ Battlers แบบ 12 แถวอยู่แล้วก็ไม่ต้องมาตั้งค่าพวกนี้
ในสคริปนี้เราสามารถเลือกใช้ Battlers ได้หลายแบบ ทั้งแบบ 4 แถว 7แถว 12แถว
แล้วแต่จะอยากใช้หรืออยากใช้มากกว่า 12 แถวก็ได้ หรือจะใช้รูป Battlers
ปกติเลยก็ได้ โดยการตั้งท่าต่างๆสามารถดูได้ที่สคริป 1 - Configuration
เราสามารถเซตจำนวนแถว ได้ที่บรรทัด 33
MNK_POSES = 12 # Maximum # of poses (stances) in the template
12 คือจำนวนแถวที่จะใช้ทุกตัวละคร
เราสามารถเซตจำนวนเฟรม(จำนวนท่าทางการเคลื่อนไหว)ได้ที่บรรทัด 34
MNK_FRAMES = 4 # Maximum # of frames in each pose
4 คือจำนวนเฟรมที่จะใช้ทุกตัวละคร
โดยแต่ละแถวจะแสดงท่าทางอย่างไรมาดูที่ประมาณบรรทัด 59-70
Editable Template (Some people wanted to change their template design)
MNK_POSE1 = 1 #ท่าทางแถวที่1 ยืนปกติ
MNK_POSE2 = 2 #ท่าทางแถวที่2 บาดเจ็บ
MNK_POSE3 = 3 #ท่าทางแถวที่3 ใกล้ตาย
MNK_POSE4 = 4 #ท่าทางแถวที่4 ป้องกัน
MNK_POSE5 = 5 #ท่าทางแถวที่5 เดินซ้าย
MNK_POSE6 = 6 #ท่าทางแถวที่6 เดินขวา
MNK_POSE7 = 7 #ท่าทางแถวที่7 โจมตี1
MNK_POSE8 = 8 #ท่าทางแถวที่8 โจมตี2
MNK_POSE9 = 9 #ท่าทางแถวที่9 ทักษะ
MNK_POSE10 = 10 #ท่าทางแถวที่10 ชนะ
MNK_POSE11 = 11 #ท่าทางแถวที่11 ตาย
MNK_POSE12 = 12 #ท่าทางแถวที่12 ใช้ไอเทม
MNK_POSE 1-12 คือท่าทางที่จะใช้ตอนเกิดกิจกรรมต่างๆ(ดูด้านหลังของบรรทัด)
เลข1-12 หลัง = คือแถวของรูปที่จะใช้แสดงเวลาเกิิดท่าทางต่างๆ
โจมตี1-2 จะสุ่มการแสดงอัตโนมัติ
*********************************************************************************************
ตัวอย่างการเซต Battlers
การเอารูป Battlers มาใช้เลย(รูปไม่มีการขยับ)
ให้ไป บรรทัดที่ 25
DEFAULT_ACTOR_ID = [1,2,10] #ใส่เฉพาะ ID ที่ต้องการใช้รูป Battlers เลย
ในที่นี้คือฮีโร่ ID 1,2,10 จะใช้รูป Battlers แบบไม่เคลื่อนไหว
*********************************************************************************************
แบบ 4 แถว เช่นพวก Characters ธรรมดา
1.ก็ให้ก็อบ Characters ไปใส่ใน Battlers แล้วก็เซต Battlers เป็นอันนั้น
2.จากนั้นไปเซตจำนวนแถวที่ใช้ตรง
MNK_POSES_ACTOR = {2 => 4}
2=ID ฮีโร่
4=จำนวนแถว
3.จากนั้นก็ไปเซตท่าทางที่
Editable Template (for Custom Actor Spritesheets)
MNK_APOSE1 = {2 => 2}
MNK_APOSE2 = {2 => 2}
MNK_APOSE3 = {2 => 2}
MNK_APOSE4 = {2 => 2}
MNK_APOSE5 = {2 => 2}
MNK_APOSE6 = {2 => 3}
MNK_APOSE7 = {2 => 2}
MNK_APOSE8 = {2 => 2}
MNK_APOSE9 = {2 => 2}
MNK_APOSE10 = {2 => 1}
MNK_APOSE11 = {2 => 4}
MNK_APOSE12 = {2 => 2}
2 ตัวแรกคือID ฮีโร่
2 ตัวหลังแถวที่ใช้
MNK_APOSE1-11 ท่าทางต่างๆดูรายละเอียดที่ด้านบน
เป็นอันเสร็จสิ้น
ในกรณีที่เราจะใส่หลายๆตัวละครก็จะใส่ว่า
{2 => 2 , 7 => 2 , 9 => 2}
IDฮีโร่คือ 2,7,9
*********************************************************************************************
แบบ 7 แถว
1.หา Battlers ที่ 7 แถวดังตัวอย่างไปลง
2.จากนั้นไปเซตจำนวนแถวที่ใช้ตรง
MNK_POSES_ACTOR = {2 => 7}
2=IDฮีโร่
7=จำนวนแถว
3.จากนั้นก็ไปเซตท่าทางที่
Editable Template (for Custom Actor Spritesheets)
ตัวอย่างการเซต Battlers ตามรูป
MNK_APOSE1 = {9 => 2}
MNK_APOSE2 = {9 => 4}
MNK_APOSE3 = {9 => 7}
MNK_APOSE4 = {9 => 3}
MNK_APOSE5 = {9 => 1}
MNK_APOSE6 = {9 => 4}
MNK_APOSE7 = {9 => 5}
MNK_APOSE8 = {9 => 5}
MNK_APOSE9 = {9 => 6}
MNK_APOSE10 = {9 => 2}
MNK_APOSE11 = {9 => 7}
MNK_APOSE12 = {9 => 6}
*********************************************************************************************
แบบ 11 แถว
1.หา Battlers ที่ 7 แถวดังตัวอย่างไปลง
2.จากนั้นไปเซตจำนวนแถวที่ใช้ตรง
MNK_POSES_ACTOR = {2 => 11}
2=IDฮีโร่
11=จำนวนแถว
3.จากนั้นก็ไปเซตท่าทางที่
Editable Template (for Custom Actor Spritesheets)
ตัวอย่างการเซต Battlers ตามรูป
MNK_APOSE1 = {9 => 1}
MNK_APOSE2 = {9 => 2}
MNK_APOSE3 = {9 => 3}
MNK_APOSE4 = {9 => 4}
MNK_APOSE5 = {9 => 5}
MNK_APOSE6 = {9 => 6}
MNK_APOSE7 = {9 => 7}
MNK_APOSE8 = {9 => 7}
MNK_APOSE9 = {9 => 8}
MNK_APOSE10 = {9 => 10}
MNK_APOSE11 = {9 => 11}
MNK_APOSE12 = {9 => 8}
*********************************************************************************************
ถ้าเป็นศัตรูก็ไปแก้สคริปที่ส่วน
Editable Template (for Custom Enemy Spritesheets)
*********************************************************************************************
ในตัวสคริป Minkoff ที่ผมลงที่เรปแรก ผมตั้งให้เป็นแบบ 12 แถวอยู่แล้ว
ถ้าใครใช้ Battlers แบบ 12 แถวอยู่แล้วก็ไม่ต้องมาตั้งค่าพวกนี้
Re: [สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
ถ้าต้องการสลับตำแหน่งการต่อสู้
ก่อนเริ่มการต่อสู้ให้ใส่โค๊ตว่า
เมื่อกลับด้านแล้วรูป Battlers ต่างๆจะกลับด้านให้เองโดยอัตโนมัติ
สรุปก็คือให้วาด Battlers หันไปทางซ้ายทั้งหมดเป็นดี
ถ้าต้องการให้เป็นแบบเดิมก็ใส่
ปล.แต่สคริปนี้มีข้อเสียตรงที่ อนิเมชั่นมันไม่ได้กลับด้านด้วย เวลาตีศัตรูมันเลยพิลิกๆไงไม่รู้
------------------------------------------------------------------------------------------------------------------------------------------------------------------
การปรับแต่งอื่นๆ
มอนสเตอร์ตัวไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_ENEMY_IDS = [31,32,33,34,37] # (IDมอนสเตอร์ ที่ไม่มีการเคลื่อนที่)
อาวุธอันไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_WEAPONS = [167,168,169,170,171] # (IDอาวุธประเภทธนูและปืน ที่ไม่มีการเคลื่อนที่)
ทักษะอันไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_SKILLS = []# (IDทักษะ ที่ไม่มีการเคลื่อนที่)
ไอเทมอันไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_ITEMS = []# (IDไอเทม ที่ไม่มีการเคลื่อนที่)
ถ้าอยากให้เวลาวิ่งไปโจมตีศัตรูแล้วจะไม่หายไปแวบนึงไปปรับที่นี่
MNK_PHASING = true # If battlers fade in/out while charging
ปรับเป็น false เป็นอันเรียบร้อย แต่ถ้าตัวละครยังอยากให้หายอยู่ก็ใส่ ID ตัวละครใน
MNK_PHASING_ACTOR = [1] # IDs of actors that fade in/out if charging
MNK_PHASING_ENEMY = [9] # IDs of enemies that fade in/out if charging
ถ้าลงสคริปแล้วไม่มีตัวอักษรขึ้น
ให้ไปที่สคริป Main แล้วใส่
$fontface = "CordiaUPC" #ใส่ฟอนท์ที่ต้องการ
$fontsize = 40 #ใส่ขนาดฟอนท์ที่ต้องการ
Font.default_name = $fontface
Font.default_size = $fontsize
ต่อจาก
begin
เครดิต Shinryu
ก่อนเริ่มการต่อสู้ให้ใส่โค๊ตว่า
- Code:
$sideview_mirror = 1
เมื่อกลับด้านแล้วรูป Battlers ต่างๆจะกลับด้านให้เองโดยอัตโนมัติ
สรุปก็คือให้วาด Battlers หันไปทางซ้ายทั้งหมดเป็นดี
ถ้าต้องการให้เป็นแบบเดิมก็ใส่
- Code:
$sideview_mirror = 0
ปล.แต่สคริปนี้มีข้อเสียตรงที่ อนิเมชั่นมันไม่ได้กลับด้านด้วย เวลาตีศัตรูมันเลยพิลิกๆไงไม่รู้
------------------------------------------------------------------------------------------------------------------------------------------------------------------
การปรับแต่งอื่นๆ
มอนสเตอร์ตัวไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_ENEMY_IDS = [31,32,33,34,37] # (IDมอนสเตอร์ ที่ไม่มีการเคลื่อนที่)
อาวุธอันไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_WEAPONS = [167,168,169,170,171] # (IDอาวุธประเภทธนูและปืน ที่ไม่มีการเคลื่อนที่)
ทักษะอันไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_SKILLS = []# (IDทักษะ ที่ไม่มีการเคลื่อนที่)
ไอเทมอันไหนที่ไม่ต้องการให้เคลื่อนที่ไปปรับที่นี่
MNK_STATIONARY_ITEMS = []# (IDไอเทม ที่ไม่มีการเคลื่อนที่)
ถ้าอยากให้เวลาวิ่งไปโจมตีศัตรูแล้วจะไม่หายไปแวบนึงไปปรับที่นี่
MNK_PHASING = true # If battlers fade in/out while charging
ปรับเป็น false เป็นอันเรียบร้อย แต่ถ้าตัวละครยังอยากให้หายอยู่ก็ใส่ ID ตัวละครใน
MNK_PHASING_ACTOR = [1] # IDs of actors that fade in/out if charging
MNK_PHASING_ENEMY = [9] # IDs of enemies that fade in/out if charging
ถ้าลงสคริปแล้วไม่มีตัวอักษรขึ้น
ให้ไปที่สคริป Main แล้วใส่
$fontface = "CordiaUPC" #ใส่ฟอนท์ที่ต้องการ
$fontsize = 40 #ใส่ขนาดฟอนท์ที่ต้องการ
Font.default_name = $fontface
Font.default_size = $fontsize
ต่อจาก
begin
เครดิต Shinryu
Re: [สคริปต์] ระบบฉากต่อสู้ด้านข้าง (Minkoff) ดัดแปลงโดย Shinryu
วันนี้ขอเสนอ
สคริปปรับแต่งการต่อสู้
อันนี้ตัวต้นแบบ
วิธีลง
เอาสคริปนี้ไปวางใต้สคริป Sideviewbattle ทั้งหมด
วิธีใช้
-เรียกสคริปด้วย
CODE
$scene = Scene_Customize.new
-Battle speed = ความเร็วฉากต่อสู้ยิ่งเลขน้อยยิ่งแถบขึ้นเร็ว(ศัตรูก็ขึ้นเร็วด้วย)
-Active = ปรับให้ระหว่างต่อสู้ว่ามีการรอขณะเลือกคำสั่งหรือเปล่า?(แบบไฟนอลนะ)
-Camera work = มีการใช้การซูมระหว่างโจมตี
อันนี้ผมเอามาดัดแปลง แก้เป็นภาษาไทย+ตัดเมนูซูมออกไป
วิธีใช้+ลง เหมือนกัน
Credit: Shinryu
สคริปปรับแต่งการต่อสู้
อันนี้ตัวต้นแบบ
- Code:
# RTAB Configuration System
# Support bulletin board http: http://www2.ezbbs.net/21/minto-aaa/
#
# Updated for use with:
# Real time active battle (RTAB) Ver 1.12
# Distribution original support URL
# http://members.jcom.home.ne.jp/cogwheel/
=begin
REVISED:
This script brings up an options menu geared to handle the speed, action and
camera functions of Cogwheel's RTAB CBS.
Originally designed and encorporated in a working main menu, you will note on
line 368 of this script that the designer intended the menu to return to menu
option #6 ( $scene = Scene_Menu.new(6) ).
As $scene = Scene_Menu.new(5) would have returned to the menu, highlighting the
"End Game" option, the designer's menu obviously had more than the default num-
ber of options.
Obviously for anyone designing their own menu, this system is already set up
to be encorporated into your own menu. But for those who want a system where
an event (such as a savepoint-like object) brings up the RTAB configuration
menu, you merely need to alter line #368 as such:
$scene = Scene_Map.new
-------------------------------------------------------------------------------
To call this script, use:
$scene = Scene_Customize.new
=end
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# This class handles data surrounding the system. Backround music, etc.
# is managed here as well. Refer to "$game_system" for the instance of
# this class.
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :battle_speed # ????
attr_accessor :battle_active # ?????
attr_accessor :battle_camera # ?????
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias initialize_MINT_RTAB_Customize initialize
def initialize
# Call original initialization process
initialize_MINT_RTAB_Customize
@battle_speed = 150 # Default: RTAB speed
@battle_active = 2 # Default: Wait during Item/Skill Select
@battle_camera = false # Default: Camera turned off
end
end
#==============================================================================
# ** Window_Customize
#==============================================================================
class Window_Customize < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(160, 92, 320, 288)
@column_max = 1
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
@element = []
#Acquiring the skill which you have acquired
get_data
get_element
# If the number of items is not 0, drawing item
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Acquire the menu option items
#--------------------------------------------------------------------------
def get_data
data = [
"Battle speed",
"Active",
"Camera work"]
@data = data
end
#--------------------------------------------------------------------------
# * Acquire the menu option settings
#--------------------------------------------------------------------------
def get_element
case $game_system.battle_active
when 1
active = "Wait"
when 2
active = "Semi active"
else
active = "Full active"
end
if $game_system.battle_camera
camera = "ON"
else
camera = "OFF"
end
data = [$game_system.battle_speed.to_s, active, camera]
@element = data
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
deta = @element[index]
x = 0
y = index * 32
self.contents.draw_text(x + 4, y, 140, 32, item, 0)
self.contents.draw_text(x + 144, y, 140, 32, deta, 2)
end
#--------------------------------------------------------------------------
# * Set Help Text
#--------------------------------------------------------------------------
def help_text(index)
case index
when 0
text = "Modifies the combat speed. Lower numbers increases combat speed."
when 1
text = "Modifies the flow of time in battle"
else
text = "Sets whether the camera follows the moving battler."
end
end
#--------------------------------------------------------------------------
# * Update Help Text
#--------------------------------------------------------------------------
def update_help
text = help_text(self.index)
@help_window.set_text(text)
end
end
#==============================================================================
# ** Window_Command2
#------------------------------------------------------------------------------
# This window deals with new command choices.
#==============================================================================
class Window_Command2 < Window_Selectable
#--------------------------------------------------------------------------
# * Object initilization
#--------------------------------------------------------------------------
def initialize(width, commands)
# Calculating the height of the window from the quantity of command
super(0, 0, width, commands.size * 32 + 32)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * 32)
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# color : text color
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
self.contents.font.size = 20
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# * Set Help Text
#--------------------------------------------------------------------------
def help_text(index)
case index
when 0
text = "Pauses when choosing a Skill, an Item or an Enemy. (Beginners)"
when 1
text = "Pauses when the Skill or Item windows are active. (Recommended)"
else
text = "Action never pauses. (Expert-mode)"
end
end
#--------------------------------------------------------------------------
# * Update Help Text
#--------------------------------------------------------------------------
def update_help
text = help_text(self.index)
@help_window.set_text(text)
end
end
#==============================================================================
# ** Window_Help2
#------------------------------------------------------------------------------
# This window shows explanations for new options.
#==============================================================================
class Window_Help2 < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 420, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.pause = false
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 1)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Scene_Customize
#------------------------------------------------------------------------------
# This class performs RTAB Player Options decisions
#==============================================================================
class Scene_Customize
#--------------------------------------------------------------------------
# * Main processing
#--------------------------------------------------------------------------
def main
# Make help window, main window
@help_window = Window_Help2.new
@main_window = Window_Customize.new
@main_window.refresh
@dummy_window = Window_Base.new(480,92,100,64)
@dummy_window.visible = false
@number_window = Window_InputNumber.new(3)
@number_window.x = 480
@number_window.y = 92
@number_window.visible = false
@number_window.active = false
command = ["Wait", "Semi-Active", "Fully-Active"]
camera_command = ["On", "Off"]
@command_window = Window_Command2.new(120, command)
@command_window.x = 480
@command_window.y = 136
@command_window.visible = false
@command_window.active = false
@camera_window = Window_Command.new(120, camera_command)
@camera_window.x = 480
@camera_window.y = 172
@camera_window.visible = false
@camera_window.active = false
# Associate help window
@main_window.help_window = @help_window
@command_window.help_window = @help_window
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@help_window.dispose
@main_window.dispose
@number_window.dispose
@dummy_window.dispose
@command_window.dispose
@camera_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# If main window is active: call update_main
if @main_window.active
@main_window.update
update_main
return
end
if @number_window.active
@number_window.update
update_number
return
end
if @command_window.active
@command_window.update
update_command
return
end
if @camera_window.active
@camera_window.update
update_camera
return
end
end
#--------------------------------------------------------------------------
# * Main Update (when main window is active)
#--------------------------------------------------------------------------
def update_main
# If B Button is pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
# Return to Menu (THIS is where you return from an options menu)
#$scene = Scene_Menu.new(6)
$scene = Scene_Map.new
return
end
# If C Button was pressed
if Input.trigger?(Input::C)
# Branch by main command decision
@index = @main_window.index
# Play decision SE
$game_system.se_play($data_system.decision_se)
case @index
when 0
@number_window.active = true
@number_window.visible = true
@dummy_window.visible = true
@main_window.active = false
when 1
@command_window.active = true
@command_window.visible = true
@main_window.active = false
when 2
@camera_window.active = true
@camera_window.visible = true
@main_window.active = false
when 3
@camera_window.active = true
@camera_window.visible = true
@main_window.active = false
end
return
end
end
#--------------------------------------------------------------------------
# * Number Update (when number window is active)
#--------------------------------------------------------------------------
def update_number
# If B Button was pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
@number_window.active = false
@number_window.visible = false
@dummy_window.visible = false
@main_window.active = true
return
end
# If C Button was Pressed
if Input.trigger?(Input::C)
# Obtain Current RTAB Battle Speed
$game_system.battle_speed = @number_window.number
$game_system.battle_speed = 1 if @number_window.number == 0
# Play Decision SE
$game_system.se_play($data_system.decision_se)
@number_window.active = false
@number_window.visible = false
@dummy_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Command Update (when command window is active)
#--------------------------------------------------------------------------
def update_command
# If B Button was pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
@command_window.active = false
@command_window.visible = false
@main_window.active = true
return
end
# If C Button was pressed
if Input.trigger?(Input::C)
# Branch by "Active" window cursor position
case @command_window.index
when 0
$game_system.battle_active = 1
when 1
$game_system.battle_active = 2
when 2
$game_system.battle_active = 3
end
# Play Decision SE
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@command_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Camera Update (when camera window is active)
#--------------------------------------------------------------------------
def update_camera
# If B button was pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
@camera_window.active = false
@camera_window.visible = false
@main_window.active = true
return
end
# If C Button was pressed
if Input.trigger?(Input::C)
# Branch by camera window cursor position
case @camera_window.index
when 0
$game_system.battle_camera = true
when 1
$game_system.battle_camera = false
end
# Play Decision SE
$game_system.se_play($data_system.decision_se)
@camera_window.active = false
@camera_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
end
#==============================================================================
# Real time active battle (RTAB) Ver 1.12
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * ATB fundamental setup
#--------------------------------------------------------------------------
def atb_setup
# ATB initialization
#
# speed : Battle speed decision. The lower the value, the faster the system
#
# @active : Degree of active setting
# 3 : Always active state
# 2 : ATB pauses when selecting skill/item
# 1 : Same as 2, but pauses during target selection
# 0 : Same as 1, but pauses during command window selection.
#
# @action : Others while acting is the fact that by their causes conduct permitted?
# 3 : If by his is not incapacitation, limited to you permit
# 2 : If by his has not received the damage, you permit
# 1 : In addition to the state of 2, if the target has not acted, you permit
# 0 : Conduct is not permitted. Until it finishes to act in order, it waits
#
# @anime_wait : When it makes true, during battle animation damage indicating wait catches
# @damage_wait : Damage indicatory waiting (as for unit frame)
#
# @after_wait : At the time of ally enemy total loss, until moves to next processing, waiting
# [a, b] a) At the time of party total loss, b) At time of enemy total loss (unit frame)
#
# @enemy_speed : Thought speed of enemy. If 1 immediately conduct.
# In every frame, conduct is caused with the probability of 1/@enemy_speed
#
# @force : With forced action forced condition at time of skill use
# 2: As for skill everything not to reside permanently, by all means immediately execution
# 1: As for independent skill to reside permanently, only cooperation skill immediately execution
# 0: All the skill permanent residence just are done
#
# ($scene.force = Usually by making x, from the script of the event modification possibility)
#
# CAMERA DRIVE SYSTEM: This system moves the Camera POV to the currently moving battler
# @drive : Camera drive system ON/OFF. When true, drive ON, when false drive OFF
# @scroll_time : Time it takes to scroll/move the camera POV during battle
#
# @zoom_rate = [i, j] : Zoom Rate (Changes the size of the enemy based on perspective)
# i) When arranging in the picture first section, enlargement ratio
# j) When arranging in the picture lowest section, enlargement ratio
# 1 When liking to make time, 1.0 be sure to set with decimal
speed = $game_system.battle_speed # IN FRAMES / FOR ATB SYSTEM
@active = $game_system.battle_active # Active Setting (Range of 0 - 3)
@action = 2 # Action Setting (Range of 0 - 3)
@anime_wait = false #
@damage_wait = 10 #
@after_wait = [80, 0] #
@enemy_speed = 40 #
@force = 0 #
@drive = $game_system.battle_camera # Turns camera system on/off
@scroll_time = 15 # Speed of camera system
@zoom_rate = [1.0, 1.0] # Change size of battler based on perspective
@help_time = 40
@escape == false
@camera = nil
@max = 0
@turn_cnt = 0
@help_wait = 0
@action_battlers = []
@synthe = []
@spell_p = {}
@spell_e = {}
@command_a = false
@command = []
@party = false
for battler in $game_party.actors + $game_troop.enemies
spell_reset(battler)
battler.at = battler.agi * rand(speed / 2)
battler.damage_pop = {}
battler.damage = {}
battler.damage_sp = {}
battler.critical = {}
battler.recover_hp = {}
battler.recover_sp = {}
battler.state_p = {}
battler.state_m = {}
battler.animation = []
if battler.is_a?(Game_Actor)
@max += battler.agi
end
end
@max *= speed
@max /= $game_party.actors.size
for battler in $game_party.actors + $game_troop.enemies
battler.atp = 100 * battler.at / @max
end
end
end
วิธีลง
เอาสคริปนี้ไปวางใต้สคริป Sideviewbattle ทั้งหมด
วิธีใช้
-เรียกสคริปด้วย
CODE
$scene = Scene_Customize.new
-Battle speed = ความเร็วฉากต่อสู้ยิ่งเลขน้อยยิ่งแถบขึ้นเร็ว(ศัตรูก็ขึ้นเร็วด้วย)
-Active = ปรับให้ระหว่างต่อสู้ว่ามีการรอขณะเลือกคำสั่งหรือเปล่า?(แบบไฟนอลนะ)
-Camera work = มีการใช้การซูมระหว่างโจมตี
อันนี้ผมเอามาดัดแปลง แก้เป็นภาษาไทย+ตัดเมนูซูมออกไป
- Code:
# RTABER“tB“OEVXe€ ver 1.10
# T|[gfฆ”ย http://www2.ezbbs.net/21/minto-aaa/
# by ๑ฦ
# A^C€EANeBuog(RTAB) Ver 1.10
# ”z•zณET|[gURL
# http://members.jcom.home.ne.jp/cogwheel/
# by VE
=begin
XV——๐ 1.10
wvEB“hEฬ–ผ‘OชA
•ิฬ้ณ๑ฬj…[‘ขฬเฬฦ”ํมฤขฝฬล•ฯXB
iwvช”ํมฤฉฆศญศ้ฝ฿j
CAEgเแฑCณB
๑ฦฬจ•”ฎฬ}X^[XNvgอ—v่น๑
RTAB–{‘ฬๆ่Aบษ“ฑ“ตฤญพณข
ศจAฑฬXNvgฬฟ–โyัT|[gอ
๑ฦฬจ•”ฎลจ่ขตท
ศจAR“tB“Oๆ–สฬฤัoตอ
$scene = Scene_Customize.new
ฦ“—อตฤญพณข
=end
#==============================================================================
# ก Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ๖JC“X^“X•ฯ”
#--------------------------------------------------------------------------
attr_accessor :battle_speed # ํ“ฌ‘ฌ“x
attr_accessor :battle_active # ANeBu
attr_accessor :battle_camera # Jา“ฎ
#--------------------------------------------------------------------------
# IuWFNg๚ป
#--------------------------------------------------------------------------
alias initialize_MINT_RTAB_Customize initialize
def initialize
# ณฬ—๐ภs
initialize_MINT_RTAB_Customize
@battle_speed = 150
@battle_active = 2
@battle_camera = true
end
end
#==============================================================================
# ก Window_Customize
#==============================================================================
class Window_Customize < Window_Selectable
#--------------------------------------------------------------------------
# IuWFNg๚ป
#--------------------------------------------------------------------------
def initialize
super(0, 64, 320, 96)
@column_max = 1
refresh
self.index = 0
self.opacity = 200 # เพิ่ม
end
#--------------------------------------------------------------------------
# tbV…
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
@element = []
# K“พตฤข้XL๐ๆ“พ
get_data
get_element
# €–ฺ”ช0ลศฏ๊ฮ€–ฺ๐•`ๆ
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# •`สท้€–ฺ๐ๆ“พ
#--------------------------------------------------------------------------
def get_data
data = [
"ความเร็วฉากต่อสู้",
"โหมดต่อสู้"]
@data = data
end
#--------------------------------------------------------------------------
# €–ฺฬf[^๐ๆ“พ
#--------------------------------------------------------------------------
def get_element
case $game_system.battle_active
when 1
active = "หยุดรอ"
when 2
active = "ต่อเนื่อง"
else
active = "ไม่หยุดรอ"
end
if $game_system.battle_camera
camera = "ปิด"
else
camera = "เปิด"
end
data = [$game_system.battle_speed.to_s, active, camera]
@element = data
end
#--------------------------------------------------------------------------
# €–ฺฬ•`ๆ
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
deta = @element[index]
x = 0
y = index * 32
self.contents.draw_text(x, y, 288, 32, item, 0)
self.contents.draw_text(x, y, 288, 32, deta, 2)
end
#--------------------------------------------------------------------------
# wveLXgๆ“พ
#--------------------------------------------------------------------------
def help_text(index)
case index
when 0
text = "แก้ไขความเร็วฉากต่อสู้(ตัวเลขน้อยๆจะทำให้ความเร็วการต่อสู้เพิ่มขึ้น)"
when 1
text = "แก้ไขโหมดการต่อสู้ว่ามีการรอขณะเลือกคำสั่งหรือเปล่า?"
end
end
#--------------------------------------------------------------------------
# wveLXgXV
#--------------------------------------------------------------------------
def update_help
text = help_text(self.index)
@help_window.set_text(text)
end
end
#==============================================================================
# ก Window_Command2
#==============================================================================
class Window_Command2 < Window_Selectable
#--------------------------------------------------------------------------
# IuWFNg๚ป
#--------------------------------------------------------------------------
def initialize(width, commands)
# R}“hฬย”ฉ็EB“hEฬณ๐Zo
super(0, 0, width, commands.size * 32 + 32)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * 32)
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# tbV…
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# €–ฺฬ•`ๆ
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
end
#--------------------------------------------------------------------------
# €–ฺฬ–ณ๘ป
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# wveLXgๆ“พ
#--------------------------------------------------------------------------
def help_text(index)
case index
when 0
text = "หยุดทุกสถานะการณ์เมื่อมีเหตุการณ์ใดๆเกิดขึ้น(สำหรับผู้เริ่มเล่น)"
when 1
text = "หยุดเมื่อมีการโจมตีหรือใช้ทักษะต่างๆ(สำหรับผู้ที่คล่องแล้ว)"
else
text = "ไม่มีการหยุดคอย(สำหรับผู้ที่ชำนาญ)"
end
end
#--------------------------------------------------------------------------
# wveLXgXV
#--------------------------------------------------------------------------
def update_help
text = help_text(self.index)
@help_window.set_text(text)
end
end
#==============================================================================
# ก Window_Help_RTAB
#==============================================================================
class Window_Help_RTAB < Window_Base
#--------------------------------------------------------------------------
# IuWFNg๚ป
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 200 # เพิ่ม
self.pause = false
end
#--------------------------------------------------------------------------
# eLXg’่
#--------------------------------------------------------------------------
def set_text(text, align = 0)
# eLXgฦAC““gฬญศญฦเ๊•๛ช‘O๑ฦแมฤข้๊
if text != @text or align != @align
# eLXg๐ฤ•`ๆ
self.contents.clear
self.contents.font.color = normal_color
width = self.width - 40
# sฬ”ป’่•ถ
split = " "
text1 = text.split(/#{split}/)[0].to_s
text2 = text.split(/#{split}/)[1].to_s
text3 = text.split(/#{split}/)[2].to_s
text4 = text.split(/#{split}/)[3].to_s
text5 = text.split(/#{split}/)[4].to_s
self.contents.draw_text(4, 0, width, 32, text1, align)
self.contents.draw_text(4, 32, width, 32, text2, align)
self.contents.draw_text(4, 64, width, 32, text3, align)
self.contents.draw_text(4, 96, width, 32, text4, align)
self.contents.draw_text(4, 128, width, 32, text5, align)
@text = text
@align = align
end
self.visible = true
end
end
#==============================================================================
# ก Scene_Customize
#==============================================================================
class Scene_Customize
#--------------------------------------------------------------------------
# C“—
#--------------------------------------------------------------------------
def main
# XvCgZbg๐์ฌ
#@spriteset = Spriteset_Map.new
# EB“hE๐์ฌ
#เพิ่ม
if $pic_as_back == true
@sprite = Sprite.new
else
@map = Spriteset_Map.new
end
#จบ
@help_window = Window_Help_RTAB.new
@main_window = Window_Customize.new
@main_window.refresh
@dummy_window = Window_Base.new(320,64,110,64)
@dummy_window.visible = false
@number_window = Window_InputNumber.new(3)
@number_window.x = 320
@number_window.y = 64
@number_window.opacity = 160
@number_window.visible = false
@number_window.active = false
command = ["หยุดรอ", "ต่อเนื่อง", "ไม่หยุดรอ"]
camera_command = ["ON", "OFF"]
@command_window = Window_Command2.new(160, command)
@command_window.x = 320
@command_window.y = 64
@command_window.opacity = 160
@command_window.visible = false
@command_window.active = false
@camera_window = Window_Command.new(120, camera_command)
@camera_window.x = 480
@camera_window.y = 240
@camera_window.visible = false
@camera_window.active = false
# wvEB“hE๐ึA•tฏ
@main_window.help_window = @help_window
@command_window.help_window = @help_window
Graphics.transition(20, "Graphics/Transitions/" +"004-Blind04")#เพิ่ม
# g“WV“ภs
Graphics.transition
# C“[v
loop do
# Q[€ๆ–ส๐XV
Graphics.update
# “—อ๎•๑๐XV
Input.update
# t[€XV
update
# ๆ–สชุ่‘ึํมฝ็[v๐’’f
if $scene != self
break
end
end
# g“WV“€”๕
Graphics.freeze
# XvCgZbg๐๐•๚
#@spriteset.dispose
# EB“hE๐๐•๚
@help_window.dispose
@main_window.dispose
@number_window.dispose
@dummy_window.dispose
@command_window.dispose
@camera_window.dispose
#เพิ่ม
if $pic_as_back == true
@sprite.dispose
else
@map.dispose
end
#จบ
end
#--------------------------------------------------------------------------
# t[€XV
#--------------------------------------------------------------------------
def update
# EB“hE๐XV
if @main_window.active
@main_window.update
update_main
return
end
if @number_window.active
@number_window.update
update_number
return
end
if @command_window.active
@command_window.update
update_command
return
end
if @camera_window.active
@camera_window.update
update_camera
return
end
end
#--------------------------------------------------------------------------
# t[€XV (C“EB“hEชANeBuฬ๊)
#--------------------------------------------------------------------------
def update_main
# B {^“ชณ๊ฝ๊
if Input.trigger?(Input::B)
# L“Z SE ๐‘t
$game_system.se_play($data_system.cancel_se)
# j…[ๆ–สษุ่‘ึฆ
$scene = Scene_Option.new
return
end
# C {^“ชณ๊ฝ๊
if Input.trigger?(Input::C)
# C“fbNX๐ๆ“พ
@index = @main_window.index
# ’่ SE ๐‘t
$game_system.se_play($data_system.decision_se)
case @index
when 0
@number_window.active = true
@number_window.visible = true
@dummy_window.visible = true
@main_window.active = false
when 1
@command_window.active = true
@command_window.visible = true
@main_window.active = false
when 2
@camera_window.active = true
@camera_window.visible = true
@main_window.active = false
when 3
@camera_window.active = true
@camera_window.visible = true
@main_window.active = false
end
return
end
end
#--------------------------------------------------------------------------
# t[€XV (”’l“—อEB“hEชANeBuฬ๊)
#--------------------------------------------------------------------------
def update_number
# B {^“ชณ๊ฝ๊
if Input.trigger?(Input::B)
# L“Z SE ๐‘t
$game_system.se_play($data_system.cancel_se)
@number_window.active = false
@number_window.visible = false
@dummy_window.visible = false
@main_window.active = true
return
end
# C {^“ชณ๊ฝ๊
if Input.trigger?(Input::C)
# ”’l๐ๆ“พตฤ‘ใ“
$game_system.battle_speed = @number_window.number
$game_system.battle_speed = 1 if @number_window.number == 0
# ’่ SE ๐‘t
$game_system.se_play($data_system.decision_se)
@number_window.active = false
@number_window.visible = false
@dummy_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
#--------------------------------------------------------------------------
# t[€XV (R}“hEB“hEชANeBuฬ๊)
#--------------------------------------------------------------------------
def update_command
# B {^“ชณ๊ฝ๊
if Input.trigger?(Input::B)
# L“Z SE ๐‘t
$game_system.se_play($data_system.cancel_se)
@command_window.active = false
@command_window.visible = false
@main_window.active = true
return
end
# C {^“ชณ๊ฝ๊
if Input.trigger?(Input::C)
# C“fbNX๐ๆ“พตฤ‘ใ“
case @command_window.index
when 0
$game_system.battle_active = 1
when 1
$game_system.battle_active = 2
when 2
$game_system.battle_active = 3
end
# ’่ SE ๐‘t
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@command_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
#--------------------------------------------------------------------------
# t[€XV (Jุ่‘ึฆEB“hEชANeBuฬ๊)
#--------------------------------------------------------------------------
def update_camera
# B {^“ชณ๊ฝ๊
if Input.trigger?(Input::B)
# L“Z SE ๐‘t
$game_system.se_play($data_system.cancel_se)
@camera_window.active = false
@camera_window.visible = false
@main_window.active = true
return
end
# C {^“ชณ๊ฝ๊
if Input.trigger?(Input::C)
# C“fbNX๐ๆ“พตฤ‘ใ“
case @camera_window.index
when 0
$game_system.battle_camera = true
when 1
$game_system.battle_camera = false
end
# ’่ SE ๐‘t
$game_system.se_play($data_system.decision_se)
@camera_window.active = false
@camera_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
end
#==============================================================================
# ศบA•ิฬ้EVE—lป์ฬRTAB•”•ช ver 1.07 ป
#==============================================================================
# ก Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ATB๎‘bZbgAbv
#--------------------------------------------------------------------------
def atb_setup
# ATB๚ป
# speed : ogXs[h’่B’lชฌณขูว‘ข
# @active : ANeBu“x’่
# 3 : ํษANeBu๓‘ิ
# 2 : XLEACe€‘I‘๐’ฬANeBuQ[Wช~้
# 1 : 2ฬ๓‘ิษมฆA^[Qbg‘I‘๐เEFCgช|ฉ้
# 0 : 1ฬ๓‘ิษมฆAR}“h“—อษเEFCgช|ฉ้
# @action : ‘ผlชs“ฎ’ษฉ•ชเs“ฎ๐Nฑทฑฦ๐–ทฉ
# 3 : ฉ•ชชs“ฎ•s”\ลศขภ่ภ่–ท
# 2 : ฉ•ชช_[W๐๓ฏฤขศขภ่–ท
# 1 : 2ฬ๓‘ิษมฆA^[Qbgชs“ฎตฤขศขภ่–ท
# 0 : s“ฎ๐–ณศขB”ิษs“ฎตIฆ้ล‘าย
# @anime_wait : trueษท้ฦogAjE_[W•\ฆ’อEFCgช|ฉ้
# @damage_wait : _[W•\ฆ‘าฟิi’Pสอt[€j
# @enemy_speed : “Gฬvl‘ฌ“xB1ศ็‘ฆs“ฎB
# 1t[€–ษA1/@enemy_speedฬm—ฆลs“ฎ๐Nฑท
# @force : ญงANV“ลXLg—pฬญง๏
# 2:XLอ‘SฤrฅนธA•Kธ‘ฆภs
# 1:’P“ฦXLอrฅตAAgXLฬ‘ฆภs
# 0:‘SXLrฅ๐sคพฏ
# ($scene.force = x ฦท้ฑฦษๆ่A’สํCx“gฬXNvgฉ็•ฯXย”\j
# @drive : J์“ฎON/OFFBtrueล์“ฎONAfalseล์“ฎOFF
# @scroll_time : XN[“ฺ“ฎษ—vท้๎–{ิ
# @zoom_rate = [i, j] : Gl~[ฬY[€—ฆ
# i ชๆ–สลใ•”ษ”z’uตฝฬg‘ๅ—ฆ
# j ชๆ–สลบ•”ษ”z’uตฝฬg‘ๅ—ฆ
# 1 ”{ฦตฝขฦซเA1.0 ฦ•Kธฌ”ล’่ท้ฑฦ
speed = $game_system.battle_speed
@active = $game_system.battle_active
@action = 2
@anime_wait = true
@damage_wait = 10
@enemy_speed = 40
@force = 2
@drive = $game_system.battle_camera
@scroll_time = 15
#@zoom_rate = [0.2, 1.0]
@zoom_rate = [1.0, 1.0]
@help_time = 40
@escape == false
@camera = nil
@max = 0
@turn_cnt = 0
@help_wait = 0
@action_battlers = []
@synthe = []
@spell_p = {}
@spell_e = {}
@command_a = false
@command = []
@after_wait = [40, 0]
@party = false
for battler in $game_party.actors + $game_troop.enemies
spell_reset(battler)
battler.at = battler.agi * rand(speed / 2)
battler.damage_pop = {}
battler.damage = {}
battler.damage_sp = {}
battler.critical = {}
battler.recover_hp = {}
battler.recover_sp = {}
battler.state_p = {}
battler.state_m = {}
battler.animation = []
if battler.is_a?(Game_Actor)
@max += battler.agi
end
end
@max *= speed
@max /= $game_party.actors.size
for battler in $game_party.actors + $game_troop.enemies
battler.atp = 100 * battler.at / @max
end
end
end
วิธีใช้+ลง เหมือนกัน
Credit: Shinryu
Similar topics
» [สคริปต์] Atoa Custom Battle System 2.0 ดัดแปลงโดย Shinryu
» [สคริปต์] Minkoff Animated + ATB Bar Script
» [สคริปต์] Enemy HP/SP (โชว์พลังศัตรู) [ใช้กับ minkoff/Atoa ได้]
» สคริปต์ เชื่อมต่อแผนที่โลก
» [Side-view Battlers] แจก Battlers มอนเตอร์จาก RTP by Shinryu
» [สคริปต์] Minkoff Animated + ATB Bar Script
» [สคริปต์] Enemy HP/SP (โชว์พลังศัตรู) [ใช้กับ minkoff/Atoa ได้]
» สคริปต์ เชื่อมต่อแผนที่โลก
» [Side-view Battlers] แจก Battlers มอนเตอร์จาก RTP by Shinryu
หน้า 1 จาก 1
Permissions in this forum:
คุณไม่สามารถพิมพ์ตอบ