irpg Community
สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RPG Maker Engine School (https://irpg.in.th/forum-7.html)
+---- Forum: Scripting Academy (https://irpg.in.th/forum-12.html)
+---- Thread: สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ (/thread-2635.html)



สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ - splendith - 10-26-2015

.

หมายเหตุ: บทความนี้แนะนำหลักการและวิธีใช้ plugin นะครับ ไม่ใช่วิธีสร้าง *0*

สวัสดีครับ หลังจากที่เจ้าตัว RPG Maker MV ได้ถูกเปิดตัวแล้ว ก็พบว่ามีสิ่งต่างๆ ที่น่าสนใจมากมาย ซึ่งส่วนที่จะมานำเสนอและแนะนำในวันนี้ คือส่วนของ Plugin ครับ ซึ่งเป็นสิ่งใหม่ที่ถูกนำเสนอในเวอร์ชันนี้

ก่อนจะอ่านต่อไป ขอนิยามศัพท์เล็กน้อย ซึ่งเป็นศัพท์ที่ไม่เป็นทางการ ใช้ในบทความนี้เท่านั้น
ผู้เขียน script - ผู้ที่ใช้งานโปรแกรม RPG Maker MV ในด้านการเขียน Javascript เป็นหลัก
ผู้ใช้งานทั่วไป - ผู้ที่ใช้ RPG Maker MV และไม่ได้เขียน script เป็นหลักหรือไม่ถนัดการใช้ script ใช้ทรัพยากรต่างๆ เพียงในโปรแกรมเท่านั้น เช่น Event, Database, Map, เป็นต้น รวมถึงมือใหม่ด้วยครับ (ใครคิดศัพท์ดีกว่านี้บอกทีครับ *0*)

RPG Maker MV Script
สำหรับผู้ที่ใช้งาน RPG Maker VX Ace, RPG Maker XP หรือเวอร์ชันก่อนหน้ามาก่อน เมื่อมาใช้ RPG Maker MV แล้ว สิ่งที่หลายคนน่าจะสงสัยสิ่งหนึ่งเลยคือ Script Editor หายไปไหน!? ไม่เห็นมีที่ให้เขียน script เลย หรือว่ามันจะกลับไปยุคโบราณที่ไม่สามารถเขียน script ได้!?

ความจริงแล้ว ในเวอร์ชันนี้ script นั้นไม่ได้หายไปไหน แต่มาอยู่ในรูปแบบภาษา Javascript แทน (Javascript นะครับ ไม่ใช่ JAVA คนละภาษา อย่าสับสนนะ) และ script ต่างๆ นั้นจะอยู่ในโฟลเดอร์ js ที่อยู่ในโฟลเดอร์ project ของเรา ส่วน Script Editor เจ้า RPG Maker เวอร์ชันนี้ก็ได้เอาออกไปเรียบร้อยโรงเรียนจีน~

คำถามที่ผุดในหัวแต่ละคนคงไม่พ้น "แล้วเอา Script Editor ออกไปทำไม"

ถ้าให้บอกเหตุผลจากทางผู้พัฒนา ผมก็คงไม่สามารถทราบได้ แต่ถ้าเป็นเหตุผลที่ผมวิเคราะห์ขึ้น น่าจะประมาณนี้
  1. ผู้เขียน script มีอิสระในการเลือก Text Editor ที่ตัวเองถนัด เพราะว่าเป็นไฟล์ text ธรรมดา ทำให้ท่านสามารถเปิดด้วย Text Editor อะไรก็ได้ อย่างผมถนัด Sublime ก็ใช้ตัวนี้เขียน script เลย เป็นต้น
  2. เป็นการแบ่งแยกระหว่างผู้เขียน script และผู้ใช้งานทั่วไปได้อย่างชัดเจน ข้อนี้คิดว่าเป็นข้อดีมากๆ ผู้ใช้งานทั่วไปจะไม่มีต้องไปเห็นโค้ดอันแสนยุ่บยั่บให้ปวดใจ ไม่สามารถไปปรับแก้โค้ดได้เลย และผู้เขียน script ทั้งหลายจึงไม่ต้องกังวลแล้วว่าคนอื่นที่นำ script ตัวเองไปใช้จะไปแก้โค้ดจนเกมพังหรือเปล่า ตาม Slogan ของเวอร์ชันนี้เลยครับ "SIMPLE ENOUGH FOR A CHILD. POWERFUL ENOUGH FOR A DEVELOPER."

คำถามต่อมาก็คงไม่พ้น "อ้าว แล้วคนใช้ RPG Maker ทั่วไป จะเอา script ไปใช้ยังไง ถ้าไม่มีหน้า Script Editor ให้เอาไปวาง"

แน่นอนว่ามันต้องมีทางออก ซึ่งใน RPG Maker MV ทางออกที่ว่าก็คือส่วนที่เรียกว่า "Plugin" นั่นเอง มันคืออะไร ใช้งานอย่างไร มาแทนทีวิธีการเก่าอย่างไร มาดูกันในหัวข้อต่อไปเลย~

Plugin คืออะไร

ในสมัยก่อนนั้น การนำสคริปต์ไปใช้ในเกม สามารถทำได้โดย
  1. copy script จากแหล่งต่างๆ ไปแปะไว้ใน Script Editor
  2. แก้ไขค่า บรรทัดนู้นบรรทัดนี้ตามวิธีการใช้งานในแต่ละ script

ปัญหาของวิธีนี้นั่นคือผู้ใช้งานทั่วไปจะรู้สึกว่า วิธีการมันไม่ friendly เอาเสียเลย บางทีอ่านวิธีใช้ผิด แก้ค่าผิด เผลอไปโดนนู่นนี่ใน script เกมก็บั๊ก หรือ crash อย่างง่ายดาย

Plugin เป็นส่วนที่จะมาเป็นตัวกลางระหว่างผู้เขียน script กับผู้ใช้งานทั่วไป ผ่าน interface ที่เข้าใจง่ายทั้งสองฝ่าย มีหน้าที่ในการนำเข้า script มาใช้งานในเกมแทนวิธีการเก่านั่นเอง ซึ่งข้อดีคือผู้ใช้งานทั่วไปสามารถนำ script มาใช้ได้อย่างง่ายดาย~

มาดูภาพปลากรอบดีกว่า

[Image: po2rMB.jpg]

สังเกตว่าในเวอร์ชันเก่านั้น script จะต้องถูกแก้ผ่านตัวโปรแกรม ทำให้ผู้ใช้งานทั่วไปแม้จะไม่มีความรู้เรื่อง script ก็จำเป็นที่จะต้องใช้งาน script อยู่ดีหากต้องลง script จากคนอื่น

แต่ใน MV นั้น มีสิ่งที่เรียกว่า Plugin Manager เป็นตัวกลางคอยดึง script เข้ามาใช้งานได้อย่างง่ายดาย ผู้ใช้งานทั่วไปไม่จำเป็นต้องเห็นโค้ดแม้แต่ตัวอักษรเดียว

ข้อดีของระบบ Plugin
  • ผู้ใช้งานทั่วไปไม่ต้องวุ่นวายกับการแก้ script เลย
  • สั่งว่าจะเปิด - ปิดใช้งานได้ทันที อันนี้มีประโยชน์มาก เมื่อก่อนอยาก disable script ถ้า script ออกแบบมาไม่ดีนี่วุ่นวายมาก
  • ปรับค่า config หรือ option (ที่ผู้เขียน script กำหนด) ผ่าน Plugin Manager ได้ทันที ไม่ต้องไป set ค่าในโค้ดเลย
  • มีระบบ plugin command กับ database note ในตัว ซึ่งจะอธิบายภายหลัง


----------


กรณีศึกษา 1 - Plugin ที่ทำให้สามารถเปลี่ยนอาวุธระหว่างการต่อสู้ได้
Plugin ที่จะลองในตัวอย่างนี้จะชื่อว่า ChangeWeaponOnBattle สร้างโดย Sasuke KANNAZUKI เป็น plugin ที่สามารถทำให้ผู้เล่นเปลี่ยนอาวุธและโล่ระหว่างการต่อสู้ได้

1. เลือก plugin (หรือ script) ที่ต้องการ
ในโปรแกรม RPG Maker MV ให้เข้าไปที่ Plugin Manager หรือกด F10 ดับเบิลคลิกที่รายการว่างๆ ในส่วนของ Name ใน General Settings จะมีให้เลือก plugin มากมาย จะเห็นว่ามีปลั๊กอินเบื้องต้นอยู่บ้าง

ในตัวอย่างนี้ให้เลือก ChangeWeaponOnBattle ในช่อง Status เลือก ON (หมายถึงเปิดใช้งาน plugin) จากนั้นลองกด Help... มันจะเป็นการบอกคุณสมบัติวิธีการใช้ต่างๆ จากคนเขียน script ซึ่งหากกดไปแล้วจะมีเขียนบอกว่า This plugin does not provide plugin commands. แปลว่าอะไร เดี๋ยวจะเฉลยในกรณีศึกษาถัดไป

plugin ตัวดังกล่าวมันแถมมาให้เลยในเกม เลยมีในรายการให้เลือก หากสงสัยว่ารายการนี้มาจากไหน จะเอา plugin อื่นๆ มาลงอย่างไร คำตอบคืออยู่ใน [โฟลเดอร์โปรเจ็กต์]\js\plugins ครับ และหากจะใช้ plugin หรือใช้ script จากที่อื่ีนนั้น จะต้องดาวน์โหลดไฟล์ .js มาวางไว้ที่นี่นั่นเอง

[Image: EPCxX5.PNG]

2. ตั้งค่าพารามิเตอร์
เมื่อเลือกเสร็จแล้วจะมีให้ตั้งค่าในส่วนของ Parameters ในส่วนนี้จะเป็นการกำหนดค่าบางอย่างตามข้อตกลงที่ผู้เขียน script อนุญาตให้ผู้ใช้งานทั่วไปปรับแต่งได้ (อารมณ์ตั้งค่า Config ในไฟล์ script ของเวอร์ชันก่อนๆ) ใน plugin ChangeWeaponOnBattle นั้นมีให้ปรับเพียงค่าเดียวคือ commandName ซึ่งมีค่าคือ Equip หากอยากเปลี่ยนค่าหรืออยากรู้ว่ามันทำอะไรได้ ให้ลองกดดับเบิลคลิกเข้าไป จะสามารถเปลี่ยนค่าได้ ซึ่งจะมีคำอธิบายประกอบด้วยว่า parameter ดังกล่าวคืออะไร ในที่นี้หมายถึงข้อความที่ใช้แสดงบนเมนูเปลี่ยนอาวุธในตอนต่อสู้นั่นเอง

เมื่อตั้งค่าเสร็จแล้ว ให้กด OK แล้วลองรันเกม เข้าฉากต่อสู้ดู จะพบว่าจะมีเมนูใหม่ขึ้นมา ซึ่งเป็นเมนูชื่อ Equip (หรือเป็นชื่ออื่นหากคุณไปเปลี่ยนค่า parameter ที่ได้กล่าวไปเมื่อกี๊) กดแล้วสามารถเปลี่ยนอาวุธและโล่ได้

[Image: M61rsG.jpg]

เป็นการจบตัวอย่างแรกในการใช้ plugin ง่ายไหมครับ ไม่ต้องแตะส่วน script ซักนิด แถมตั้งค่า parameter ได้อีกต่างหาก


-----------


กรณีศึกษา 2 - Plugin สมุด collection มอนสเตอร์หรือศัตรู

[Image: eyHgRa.PNG]

วิธีใช้ plugin ในตัวอย่างนี้จะซับซ้อนขึ้นอีกนิสสส แต่จะครอบคลุมการใช้ plugin ทั้งหมด
plugin ในตัวอย่างนี้จะใช้ของที่แถมมาเช่นเดิม มีชื่อว่า EnemyBook ซึ่งเป็น plugin หนังสือสะสมรายการ Monster / Enemy นั่นเอง จะมีบอกรายละเอียดรวมถึง status ของมอนสเตอร์ รายการจะเป็น unknown จนกว่าจะเจอมอนสเตอร์นั้นๆ (อารมณ์ podedex) ซึ่งเป็นระบบที่นิยมทำในหลายๆ เกม

เหมือนเดิมเลยครับ เปิด Plugin Manager จากนั้นเลือกไปที่ plugin ชื่อ EnemyBook แล้วทีนี้ลองกด Help ดู พบว่ามีหน้าจอดังนี้

[Image: Izi36Y.PNG]

สิ่งที่มีใน plugin นี้คือ Plugin Command และ Enemy Note มันคืออะไรมาดูกัน

1. Plugin Command
เป็นคำสั่ง plugin โดยเฉพาะ ใช้ในการกระทำคำสั่งอะไรบางอย่าง เช่นจากภาพ คำสั่ง EnemyBook open หมายถึงการเปิดสมุดภาพนั่นเอง คำสั่งสามารถเรียกใช้งานได้ใน Event Command ชื่อ Plugin Command... อยู่ในหน้าสุดท้ายอันสุดท้ายเลย

2. Enemy Note
ใครเคยใช้ script ของ RPG Maker VX Ace จะคุ้นเคย Note กันดี หากใครไม่เคยใช้หรือไม่รู้จักก็ไม่เป็นไรครับ ปกติแล้วใน Database แต่ละหมวดนั้นจะเป็นการตั้งค่าคุณลักษณะหรือข้อมูลต่างๆ ในเกม ซึ่งในบางคุณลักษณะนั้นเป็นคุณลักษณะเพิ่มเติมที่มีการเชื่อมโยงไปยัง script บางตัว วิธีการกำหนดคุณลักษณะแบบนี้ เราจะใช้ช่อง Note ใน Database กำหนดเอา ให้ท่านลองเข้าไปที่ Database ในแต่ละหมวด สังเกตว่าแทบทุกหมวดจะมีช่อง Note ด้านล่างขวา ซึ่งเป็นช่องที่สามารถเขียนอะไรลงไปก็ได้ และเขียนคำสั่งพิเศษจาก script ได้ด้วยเช่นกัน! ทีนี้เขียนอะไรยังไง ให้ลองทำตามตัวอย่างกันเล้ยย

ก่อนอื่นให้กด Ok เพื่อ เปิดใช้งาน plugin ก่อน จากนั้น

1. สร้าง Common Event ที่มีการเรียกใช้ Plugin Command: EnemyBook open ดังนี้
[Image: 3czV34.jpg]

เป็นการบอกให้ Common Event นี้เปิดหน้าจอรายการมอนสเตอร์ผ่าน Plugin Command ที่ผู้สร้าง script สร้างขึ้นมา

2. สร้าง Item ดังนี้
[Image: JgKt1u.jpg]

เป็น Item หนังสือรายการมอนสเตอร์ เมื่อกดใช้จะไปเรียก Common Event ในข้อ 1.

3. ไปที่ Enemy Database
สังเกตว่าจะมีมอนสเตอร์เริ่มต้นให้ 4 ตัว คือ Bat, Slime, Orc, Monitaur ให้เลือกไปที่ Bat ในช่อง Note ให้ใส่ข้อความดังนี้
<desc1:Very stupid monster.>
<desc2:Can kill easily in one shot.>

เป็นการใส่รายละเอียดของมอนสเตอร์ Bat

4. ไปที่ Enemy Database
ให้เลือกไปที่ Orc ในช่อง Note ให้ใส่ข้อความดังนี้
<book:no>

3. สร้างหีบสมบัติอย่างง่ายๆ ใกล้ตัวละคร โดยคลิกขวาที่พื้นในฉาก เลือก Quick Event Creation... > Treasure... เลือกไอเท็มที่สร้างในขั้นตอนก่อนหน้า

4. ตั้งค่าในฉากที่ตัวละครอยู่ให้มีการเจอมอนสเตอร์ในฉากแบบสุ่ม เลือก Bat*2

5. ลองเล่นเกม แล้วเปิดหีบรับของทันที ไปที่ Menu Item เลือก Key Item แล้วลองกดใช้ Enemy Book จะพบว่าจะเจอหน้าจอประมาณนี้

[Image: eMLEUs.JPG]

จะพบว่ามี ?????? อยู่ 3 อัน หมายความว่าในเกมมีมอนสเตอร์ที่ถูกบันทึกในหนังสือได้ 3 ชนิด และเรายังไม่เคยเจอมอนสเตอร์ซักตัวมันเลยขึ้น unknown (ถ้าอยากเปลี่ยนจาก ?????? เป็นข้อความอย่างอื่น ก็ไปปรับที่ parameter Unknown Data ใน Plugin Manager ได้)

จนถึงตรงนี้อาจสงสัยว่าเอ๊ะ ก็ใน Database เมื่อกี๊มันมี 4 ตัวนี่นา ทำไมขึ้นแค่ 3 เหตุผลเพราะว่า Monster Orc เราได้ใส่ <book:no> ในช่อง Note ซึ่งใน Help ของ plugin บอกว่า <book:no> จะทำให้รายการไม่ปรากฏบน Enemy Book นั่นเอง

6. จากนั้นให้ลองเดินวนๆ จนกว่าจะเจอค้างคาว เมื่อเจอแล้วให้สู้หรือหนีก็ได้ แล้วเข้าไปใช้ไอเท็ม Enemy Book อีกที จะพบว่าข้อมูลค้างคาวได้โผล่มาแล้ว
[Image: fGwo9P.JPG]

พร้อมมีคำอธิบาย
Very stupid monster.
Can kill easily in one shot.

ที่มุมล่างขวาด้วย เพราะเราได้ใส่คำสั่ง
<desc1:Very stupid monster.>
<desc2:Can kill easily in one shot.>
ลงไปใน Note ของ Bat ตาม Help ของ plugin นั่นเอง

เท่านี้คุณก็รู้วิธีการใช้ plugin แทบทั้งหมดแล้ว ทีนี้ผมอยากเพิ่มนิดนึง อยากให้มี NPC ลุงอาวุโสที่รู้เรื่องของเจ้า Slimeเป็นอย่างดี เมื่อเราไปคุยกับ NPC แล้วจะทำให้รู้ข้อมูล Slime ทันทีโดยไม่ต้องเคยสู้กับมอนสเตอร์มาก่อน ทำอย่างไรเอ่ยยย ลองทำดูนะ ไม่ยากกก...

เฉลยยยยยยย~~

หากดูใน Help ของ plugin นี้ จะพบว่าในส่วนของ Plugin Command มีอธิบายบรรทัดนี้ด้วย
EnemyBook add 3 # Add enemy #3 to the enemy book

ถ้าแปลแล้วก็หมายถึงเพิ่มข้อมูลศัตรูตาม id ที่ต้องการนั่นเอง เราก็ลองสร้าง Event ลุงแก่แล้วใส่ Plugin Command โดยพลัน

[Image: Rm8Kge.JPG]

สังเกตว่าผมใช้ EnemyBook add 2 เพราะเลข 2 คือ id ของ Slime สามารถดูลำดับ id ได้ที่หมายเลขหน้าชื่อของ Database

[Image: DSWOML.JPG]

เมื่อเข้าเกมใหม่ ลองคุยกับลุง แล้วใช้ Item Enemy Book อีกรอบ จะพบว่าข้อมูล Slime โผล่มาทันที แม้จะยังไม่เคยเจอหรือสู้กับ Slime ก็ตาม เป็นต้น

นอกจากนี้ยังมี Plugin Command อื่นๆ ใน Enemy Book อีก เช่น EnemyBook remove, EnemyBook complete, EnemyBook clear ก็ลองไปเล่นๆ ดูนะครับผม ^^

สรุป
ระบบ Plugin ที่มาใน RPG Maker MV นั้นสามารถอำนวยความสะดวกให้กับผู้ใช้งานทั่วไปได้เป็นอย่างดี และรองรับระบบตั่งค่าผ่าน parameter, note และใช้คำสั่งผ่าน Plugin Command ได้อีกด้วย และมี Help และคำอธิบายในทุกๆ ส่วน ทำให้ผู้ใช้งานทั่วไปสามารถเข้าใจได้ง่าย และไม่ต้องยุ่งกับ script เลย ซึ่งสิ่งที่ผมอยากแนะนำคือ เมื่อนำ plugin มาใช้แล้ว ให้อ่านรายละเอียด และดู Help เสมอครับ

บทความนี้ได้อธิบายวิธีการใช้งาน plugin ค่อนข้างละเอียด อย่างไรก็ตาม ยังไม่ได้อธิบายการเขียน plugin ซึ่งเป็นเรื่องที่ค่อนข้างซับซ้อนและยุ่งกับส่วนของ javascript เต็มๆ ซึ่งตอนนี้ผมก็กำลังพยายามศึกษาอยู่เหมือนกัน ครับ Smile

ขอให้ใช้งาน RPG Maker MV กันอย่างมีความสุขคร้าบ


RE: [RPGMV] สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ - slost - 10-27-2015

ปลั๊กอินนี่ผมว่าเป็นส่วนที่ง่ายมากเลยนะ จะไปงงก็ตอนต้องไปศึกษาภาษาจาวาสคริปต์ใหม่ แมวร้อง
แต่ก็ขอบคุณครับที่ทำบทความดีๆมาประดับบอร์ดอีกเช่นเคย

ปล.ผู้ใช้งานทั่วไป กับ ผู้ใช้งานขั้นสูง ดูเข้ากันดีมั้ยครับ ??


RE: [RPGMV] สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ - splendith - 10-27-2015

(10-27-2015, 12:14 AM)slost Wrote: ปลั๊กอินนี่ผมว่าเป็นส่วนที่ง่ายมากเลยนะ จะไปงงก็ตอนต้องไปศึกษาภาษาจาวาสคริปต์ใหม่ แมวร้อง
แต่ก็ขอบคุณครับที่ทำบทความดีๆมาประดับบอร์ดอีกเช่นเคย

ปล.ผู้ใช้งานทั่วไป กับ ผู้ใช้งานขั้นสูง ดูเข้ากันดีมั้ยครับ ??

แหะๆ บทความนี้อาจง่ายเกินไปหน่อย ต้องขออภัยล่วงหน้าครับ -/\-
พอดีไม่แน่ใจว่าเขียนแล้วคนจะเก็ตไหม เลยเขียนแล้วรู้สึกมันง่ายลงเรื่อยๆ เหมือนกัน 555+

ส่วน Javascript ถ้าสังเกตดีๆ โครงสร้างของ OOP นี่แทบ Copy มาจาก RGSS3 เลยครับ แต่เขียนในรูปแบบ Javascript Syntax แต่ผมก็งงกับหลายๆ ส่วนพอสมควร = ="


RE: [RPGMV] สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ - dreamknight - 10-27-2015

;3

มันเป็นบทความที่เหมาะกับผู้เริ่มต้นศึกษาจริงๆ นะครับ สอนการเรียกใช้สคริปต์ที่ครอบคลุมดีเลย

อธิบายความแตกต่างจากเวอร์ชั่นเก่ากับใหม่ และกรณีศึกษาทั้ง 2 ตัวอย่าง


RE: [RPGMV] สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ - Mysticphoenix - 10-27-2015

ขอบคุณคับ ดูง่ายขึ้นนะ


RE: [RPGMV] สอนการใช้งาน Plugin เบื้องต้น พร้อมตัวอย่างประกอบ - Ivan_GilDong - 10-28-2015

มีประโยชน์มากๆเลยครับ แมวเบิกบาน