การสร้างเมนูโดยใช้อีเวนท์ สามารถนำไปใช้ได้ทั้ง RMXP,RMVX,RMVX ACE
บทความนี้ค่อนข้างยากและต้องใช้ความชำนาญเอ็นจิ้นพอสมควรนะครับตรงไหนงงก็ถามได้จะพยายามอธิบายไปทีละขั้นตอน
บทความนี้ไม่อนุญาติให้นำไปเผยแพร่ที่อื่นโดยไม่ได้รับอนุญาต
การทำเมนูโดยใช้อีเวนท์มีคำสั่งหลักๆที่ต้องใช้ให้คล่องอยู่สี่คำสั่งครับ
1.โชว์ภาพ
2.เช็คเงื่อนไข
3.สวิตซ์
4.ตัวแปร
ถามว่าทำไมต้องทำเมนูโดยใช้อีเวนท์เพราะมันง่ายกว่าการเขียนสคริปท์และมีอิสระพอสมควรสามารถนำไปประยุกต์ใช้ได้หลายอย่างไ่ม่จำเป็นต้องใช้ทำเป็นเมนูเพียงอย่างเดียว อาจทำเป็นหน้าแสดงภารกิจ หรือแสดงความสัมพันธ์ตัวละครก็ได้ตามแต่ละประยุกต์ใช้
ตัวอย่างการใช้ทำเมนูโดยใช้คำสั่งโชว์ภาพจากโปรเจ็คที่ผมเคยทำทิ้งไว้ ตั้งแต่เริ่มเข้าเกมไปจนถึงคำสั่งที่ใช้ในเกมรวมถึงคำสั่งแต่ละคำสั่งล้วนมีการใช้คำสั่งโชว์ภาพเป็นส่วนประกอบทั้งสิ้นครับ
ทีนี้มาดูวิธีทำกันทีละขั้นตอนเลยว่าทำอย่างไร
ตัวอย่างภาพที่ใช้เป็นเมนูให้ทำภาพเมนูกับภาพปุ่มเลืิอกแยกกันไว้แบบนี้
ขออธิบายเฉพาะคำสั่งที่ใช้ในหัวข้อนี้เท่านั้นนะครับบางคำสั่งที่เห็นในภาพเป็นส่วนประกอบของโปรเจ็คที่ทำคาไว้ อีเวนท์นี้สามารถทำในเหตุการณ์ทั่วไปได้เลยเพื่อให้เรียกใช้ได้เรื่อยๆไม่ต้องทำใหม่โดยให้เลือกเงื่อนไขเป็น parallel แล้วกำหนด สวิตซ์หนึ่งไว้สำหรับเปิดปิดเหตุการณ์
-เพราะไม่จำเป็นต้องใช้เมนูของระบบผมเลยใช้คำสั่งปิดเมนูไปเลย
-คำสั่งสคริปท์ในช่องถัดมาคือการทำให้ตัวฮีโร่ขยับไม่ได้ครับใช้โค้ดนี้เลย
$game_temp.message_window_showing = true หากต้องการให้ฮีโร่ขยับได้ตรงไหนก็ใส่โค้ดไว้อีกที่ตรงนั้น เปลี่ยนจาก true เป็น false
เช่นให้ตอนเปิดเมนูฮีโร่ขยับไม่ได้แล้วตอนปิดเมนูถึงจะขยับได้ก็เอาโค้ดไปใส่ตอนเปิดเมนูแล้วตอนปิดก็ใช้โค้ดเดิมแต่เปลี่ยน true เป็น false
-ให้ใช้คำสั่งตรวจเช็คเงื่อนไข เมื่อกดปุ่มลง แล้วให้เพิ่มเคสไว้ด้วยสำหรับตรวจเช็คเงื่อนไขอีกอันเป็นปุ่มขึ้นตามภาพ
-ใช้คำสั่งรอเวลาสักหน่อยตามความเหมาะสมเพื่อไม่ให้กดปุ่มรัวจนระบบรวนได้
-อาจใช้คำัสั่งเอฟเฟคเป็นเสียงปุ่มกดตามภาพ
-ให้กำหนดตัวแปรมาตัวหนึ่งให้เป็นหมายเลขคำสั่งที่เลือกกำหนดให้กดลงเป็นการบวกตัวแปรไป 1 หน่วย ถ้ากดขึ้นก็ให้ลบ 1 หน่วย (สามารถสลับกันได้)
-ตรวจเช็คคำสั่งที่แทนค่าเป็นตัวแปร อันนี้ใช้สำหรับเวลาที่กดขึ้นลงเกินไปจากคำสั่งที่กำหนดจะย้อนกลับไปเป็นสั่งแรก เช่น มีอยู่5คำสั่งถ้าเรากดลงไปอีกจากคำสั่งที่5จะย้อนไปคำสั่งที่1แทนหรือเรากดขึ้นที่คำสั่งที่1จะลงไปอยู่ที่คำสั่งที่5แทน ให้ตั้งตัวแปรไว้น้อยกว่าหรือมากกว่าจำนวนคำสั่ง 1 หน่วย แล้วเมื่อเงื่อนไขตรงตามนั้นก็ไปเซ็ตตัวแปรในเงื่อนไขเป็นเป็นตัวแปรที่ต้องการเช่นจะให้ย้อนไปที่คำสั่งแรกก็เซ็ตตัวแปรเป็น 1 ซะ
-จากคำสั่งตรวจเช็คเงื่อนไขกดปุ่มขึ้นให้เลือกเพิ่มเคสอีกครั้งหนึ่งแล้วใช้คำสั่งตรวจเช็คเงื่อนไขอีกครั้งเป็นการกดปุ่ม C ให้เพิ่มเคสไว้ด้วยเดี๋ยวต้องใช้อีก
-ทีนี้เราก็ทำการเช็คเงื่อนไขตัวแปรที่เราแทนค่าเป็นหมายเลขคำสั่ง เช่น ในวีดิโอตัวอย่างผมให้คำสั่ง move เป็นสั่งแรก ถ้าตัวแปรเท่ากับ 1 ก็จะเป็นคำสั่ง move จากนั้นเราก็ทำอีเวนท์ตามคำสั่งที่ใช้
-ที่เห็นคำสั่งโชว์ภาพเป็นภาพตัวเลือกคำสั่งครับเซ็ตไว้ให้เมื่อกดปุ่มCจะทำให้จางและเข้มขึ้นเหมือนเดิมตามลำดับเป็นการกระพริบคำสั่งนั้นแหละ
-ขออธิบายแค่คำสั่งที่จำเป็นแล้วกันครับนอกนั้นเป็นคำสั่งส่วนประกอบในโปรเจ็คเก่าผมไม่มีา่วนเกี่ยวข้องกับบทความนี้ ให้เราใช้คำสั่งเปิดสวิตซ์ไปยังเหตุการณ์อื่นที่เราเซ็ตไว้อย่างเช่นผมเซ็ตไว้ให้คำัสั่งแรกเป็นคำสั่งหมุนรูเล็ตเพื่อเดินก็จำเป็นต้องไปทำอีเวนท์คำสั่งนี้อีกเหตุการณ์หนึ่ง คำสั่งที่ใช้ในเหตุการณ์นี้เป็นแค่ทางผ่านเท่านั้น
-ตรงนี้อย่าลืมลบภาพที่ใช้เป็นเมนูกับตัวเลือกด้วยเมื่อสับสวิตซ์ลิงค์ไปที่เหตุการณ์อื่นแล้ว
-เมื่อเปิดสวิตซ์ไปเหตุการณ์อิ่นแล้วก็ปิดสวิตซ์เหตุการณ์นี้ซะเพื่อจบเหตุการณ์
-ให้ทำแบบเดียวกันในทุกๆคำสั่ง
อันนี้ไม่มีรูปภาพเนื่องจากโปรเจ็คผมไม่ได้ใช้ส่วนนี้แต่จะขออธิบายไปทีละขั้นตอนเช่นกัน
-จากคำสั่งเพิ่มเคสของการตรวจเช็คเงื่อนไขโดยการกดปุ่มC ให้ตรวจเช็คเงื่อนไขอีกรอบโดยเงื่อนไชเป็นการกดปุ่ม B เพื่อเป็นการให้ออกจากหน้าเมนูได้
-ถ้าเราอยากให้คำสั่งมาเริ่มต้นที่คำสั่งแรกก็ให้ควบคุมตัวแปรที่ใช้เป็นหมายเลขคำสั่งเป็น 1 ซะหรือถ้าอยากให้จดจำไว้ว่าเลือกไว้ที่คำสั่งไหนก็ไม่ต้องทำอะไร
-ทำการใช้คำสั่งลบรูปภาพที่ใช้ทั้งหมด ไม่ว่าจะเป็นหน้าเมนูหรือตัวเลือกคำสั่ง ตรงนี้ยังไม่ถึงขั้นตอนนั้นอาจจะยังงงๆว่าให้ลบอะไรให้ดูต่อไปก่อนครับแล้วย้อนกลับมาทำก็ได้
-ให้สับสวิตซ์ปิดเหตุการณ์หน้าเมนูซะก็เป็นการออกจากเมนู
-(การเรียกเมนูมีวิธีทำได้สองทางคือให้ทำอีเวนท์อื่นมาเช็คเงื่อนไขว่าถ้ากดปุ่มหนึ่งจะเป็นการเปิดเมนูแล้วให้เปิดสวิตซ์เหตุการณ์นี้ขึ้นมาหรือถ้าอยากให้เป็นอีเวนท์เดียวก็ใช้สวิตซ์สองอันในเหตุการณ์แล้วเช็คเงื่อนไขไว้ว่าถ้าสวิตซ์นั้นเปิดก็ให้แสดงเมนูถ้าสวิตซ์นั้นปิดแล้วทำการกดปุ่มหนึ่งขึ้นมาก็เป็นการเรียกเมนู)
-สำหรับการแสดงการโชว์ภาพให้ตรวจเช็คเงื่อนไขแล้วเพิ่มเคสซ้อนกันเรื่อยๆเช็คเงื่อนไขหมายเลขคำสั่งตามที่ตั้งไว้ เช่น ตามวีดิโอตัวอย่าง move=1 survey=2 item=3 equip=4 data=5 เราก็เช็คเงื่อนไขไปตามที่ตั้งไว้
-คำสั่งโชว์รูปจริงๆใช้แค่ที่ผมกดเลือกไว้ในภาพก็พอเป็นหน้าตอนเลือกคำสั่งแล้วปรับตำแหน่งภาพตามคำสั่งของมันเท่านั้นแต่ถ้าอยากให้เวลากดเลือกคำสั่งอื่นไปแล้วสามารถกดออกมาเป็นเมนูนี้ได้ด้วยก็ให้ใช้คำสั่งโชว์ภาพเมนูขึ้นมาใหม่แบบในภาพด้วย(ต้องให้หมายเลขภาพเป็นหมายเลขเดียวกันด้วย) ให้สังเกตจากภาพนะครับว่าตำแหน่งแกนyจะเปลี่ยนไปตามคำสั่งแต่ละอย่าง หลักคือให้ใช้หมายเลขภาพมากกว่าภาพที่เราทำเป็นหน้าเมนู
จากขั้นตอนที่ผ่านมาจะได้แบบนี้แล้วครับ (ดูแค่เมนูทางด้านซ้ายนะ)
การเซ็ตแต่ละปุ่มว่าจะให้ทำอะไรก็แล้วแต่คนสร้างจะทำเลยครับ อาจจะต้องมีส่วนของการเรียกใช้สคริปท์บ้าง เ่ช่นถ้าอยากให้เรียกเมนูไอเทมขึ้นมาก็ใช้คำสั่งเรียกใช้สคิปท์แล้วใส่โค้ดไป
$scene = Scene_Item.new
ทีนี้ก็เป็นคำสั่งเรียกเมนูไอเทมแล้ว ถ้าจะให้เรียกคำสั่งเซฟก็ใช้คำสั่งเรียกเมนูบันทึกเกมใส่ไป
จะทำยังไงกับคำสั่งแต่ละคำสั่งคราวนี้ขึ้นอยู่กับจินตนาการของผู้สร้างแล้วครับว่าจะทำอย่างไร
อย่างในเกม IB ก็ใช้เมนูรูปภาพแต่ไม่ได้ทำเมนูเป็นตัวเลือกแบบนี้ ใช้แค่คำสั่งเช็คเงื่อนไขมาแสดงภาพเท่านั้นเอง
ป.ล.มีคำถามสามารถถามได้ครับแต่ช่วงนี้ผมอาจไม่มีเวลามาตอบเท่าไหร่เพราะร่วมกิจกรรมมหาโหดอยู่
ยังไงฝากคนที่เข้าใจช่วยตอบแทนด้วย