Nazuth Away   02-02-2014, 02:56 PM
#1
การสร้างเมนูโดยใช้อีเวนท์ สามารถนำไปใช้ได้ทั้ง RMXP,RMVX,RMVX ACE

บทความนี้ค่อนข้างยากและต้องใช้ความชำนาญเอ็นจิ้นพอสมควรนะครับตรงไหนงงก็ถามได้จะพยายามอธิบายไปทีละขั้นตอน

บทความนี้ไม่อนุญาติให้นำไปเผยแพร่ที่อื่นโดยไม่ได้รับอนุญาต

การทำเมนูโดยใช้อีเวนท์มีคำสั่งหลักๆที่ต้องใช้ให้คล่องอยู่สี่คำสั่งครับ
1.โชว์ภาพ
2.เช็คเงื่อนไข
3.สวิตซ์
4.ตัวแปร

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

ตัวอย่างการใช้ทำเมนูโดยใช้คำสั่งโชว์ภาพจากโปรเจ็คที่ผมเคยทำทิ้งไว้ ตั้งแต่เริ่มเข้าเกมไปจนถึงคำสั่งที่ใช้ในเกมรวมถึงคำสั่งแต่ละคำสั่งล้วนมีการใช้คำสั่งโชว์ภาพเป็นส่วนประกอบทั้งสิ้นครับ




ทีนี้มาดูวิธีทำกันทีละขั้นตอนเลยว่าทำอย่างไร
ตัวอย่างภาพที่ใช้เป็นเมนูให้ทำภาพเมนูกับภาพปุ่มเลืิอกแยกกันไว้แบบนี้
[Image: RTTM5Oi.png] [Image: YwDKSCW.png]
ขออธิบายเฉพาะคำสั่งที่ใช้ในหัวข้อนี้เท่านั้นนะครับบางคำสั่งที่เห็นในภาพเป็นส่วนประกอบของโปรเจ็คที่ทำคาไว้ อีเวนท์นี้สามารถทำในเหตุการณ์ทั่วไปได้เลยเพื่อให้เรียกใช้ได้เรื่อยๆไม่ต้องทำใหม่โดยให้เลือกเงื่อนไขเป็น parallel แล้วกำหนด สวิตซ์หนึ่งไว้สำหรับเปิดปิดเหตุการณ์

[Image: YhNlV7s.png]

-เพราะไม่จำเป็นต้องใช้เมนูของระบบผมเลยใช้คำสั่งปิดเมนูไปเลย
-คำสั่งสคริปท์ในช่องถัดมาคือการทำให้ตัวฮีโร่ขยับไม่ได้ครับใช้โค้ดนี้เลย
$game_temp.message_window_showing = true หากต้องการให้ฮีโร่ขยับได้ตรงไหนก็ใส่โค้ดไว้อีกที่ตรงนั้น เปลี่ยนจาก true เป็น false
เช่นให้ตอนเปิดเมนูฮีโร่ขยับไม่ได้แล้วตอนปิดเมนูถึงจะขยับได้ก็เอาโค้ดไปใส่ตอนเปิดเมนูแล้วตอนปิดก็ใช้โค้ดเดิมแต่เปลี่ยน true เป็น false
-ให้ใช้คำสั่งตรวจเช็คเงื่อนไข เมื่อกดปุ่มลง แล้วให้เพิ่มเคสไว้ด้วยสำหรับตรวจเช็คเงื่อนไขอีกอันเป็นปุ่มขึ้นตามภาพ
-ใช้คำสั่งรอเวลาสักหน่อยตามความเหมาะสมเพื่อไม่ให้กดปุ่มรัวจนระบบรวนได้
-อาจใช้คำัสั่งเอฟเฟคเป็นเสียงปุ่มกดตามภาพ
-ให้กำหนดตัวแปรมาตัวหนึ่งให้เป็นหมายเลขคำสั่งที่เลือกกำหนดให้กดลงเป็นการบวกตัวแปรไป 1 หน่วย ถ้ากดขึ้นก็ให้ลบ 1 หน่วย (สามารถสลับกันได้)
-ตรวจเช็คคำสั่งที่แทนค่าเป็นตัวแปร อันนี้ใช้สำหรับเวลาที่กดขึ้นลงเกินไปจากคำสั่งที่กำหนดจะย้อนกลับไปเป็นสั่งแรก เช่น มีอยู่5คำสั่งถ้าเรากดลงไปอีกจากคำสั่งที่5จะย้อนไปคำสั่งที่1แทนหรือเรากดขึ้นที่คำสั่งที่1จะลงไปอยู่ที่คำสั่งที่5แทน ให้ตั้งตัวแปรไว้น้อยกว่าหรือมากกว่าจำนวนคำสั่ง 1 หน่วย แล้วเมื่อเงื่อนไขตรงตามนั้นก็ไปเซ็ตตัวแปรในเงื่อนไขเป็นเป็นตัวแปรที่ต้องการเช่นจะให้ย้อนไปที่คำสั่งแรกก็เซ็ตตัวแปรเป็น 1 ซะ


[Image: KLV5wMZ.png]

-จากคำสั่งตรวจเช็คเงื่อนไขกดปุ่มขึ้นให้เลือกเพิ่มเคสอีกครั้งหนึ่งแล้วใช้คำสั่งตรวจเช็คเงื่อนไขอีกครั้งเป็นการกดปุ่ม C ให้เพิ่มเคสไว้ด้วยเดี๋ยวต้องใช้อีก
-ทีนี้เราก็ทำการเช็คเงื่อนไขตัวแปรที่เราแทนค่าเป็นหมายเลขคำสั่ง เช่น ในวีดิโอตัวอย่างผมให้คำสั่ง move เป็นสั่งแรก ถ้าตัวแปรเท่ากับ 1 ก็จะเป็นคำสั่ง move จากนั้นเราก็ทำอีเวนท์ตามคำสั่งที่ใช้
-ที่เห็นคำสั่งโชว์ภาพเป็นภาพตัวเลือกคำสั่งครับเซ็ตไว้ให้เมื่อกดปุ่มCจะทำให้จางและเข้มขึ้นเหมือนเดิมตามลำดับเป็นการกระพริบคำสั่งนั้นแหละ
-ขออธิบายแค่คำสั่งที่จำเป็นแล้วกันครับนอกนั้นเป็นคำสั่งส่วนประกอบในโปรเจ็คเก่าผมไม่มีา่วนเกี่ยวข้องกับบทความนี้ ให้เราใช้คำสั่งเปิดสวิตซ์ไปยังเหตุการณ์อื่นที่เราเซ็ตไว้อย่างเช่นผมเซ็ตไว้ให้คำัสั่งแรกเป็นคำสั่งหมุนรูเล็ตเพื่อเดินก็จำเป็นต้องไปทำอีเวนท์คำสั่งนี้อีกเหตุการณ์หนึ่ง คำสั่งที่ใช้ในเหตุการณ์นี้เป็นแค่ทางผ่านเท่านั้น
-ตรงนี้อย่าลืมลบภาพที่ใช้เป็นเมนูกับตัวเลือกด้วยเมื่อสับสวิตซ์ลิงค์ไปที่เหตุการณ์อื่นแล้ว
-เมื่อเปิดสวิตซ์ไปเหตุการณ์อิ่นแล้วก็ปิดสวิตซ์เหตุการณ์นี้ซะเพื่อจบเหตุการณ์
-ให้ทำแบบเดียวกันในทุกๆคำสั่ง

อันนี้ไม่มีรูปภาพเนื่องจากโปรเจ็คผมไม่ได้ใช้ส่วนนี้แต่จะขออธิบายไปทีละขั้นตอนเช่นกัน
-จากคำสั่งเพิ่มเคสของการตรวจเช็คเงื่อนไขโดยการกดปุ่มC ให้ตรวจเช็คเงื่อนไขอีกรอบโดยเงื่อนไชเป็นการกดปุ่ม B เพื่อเป็นการให้ออกจากหน้าเมนูได้
-ถ้าเราอยากให้คำสั่งมาเริ่มต้นที่คำสั่งแรกก็ให้ควบคุมตัวแปรที่ใช้เป็นหมายเลขคำสั่งเป็น 1 ซะหรือถ้าอยากให้จดจำไว้ว่าเลือกไว้ที่คำสั่งไหนก็ไม่ต้องทำอะไร
-ทำการใช้คำสั่งลบรูปภาพที่ใช้ทั้งหมด ไม่ว่าจะเป็นหน้าเมนูหรือตัวเลือกคำสั่ง ตรงนี้ยังไม่ถึงขั้นตอนนั้นอาจจะยังงงๆว่าให้ลบอะไรให้ดูต่อไปก่อนครับแล้วย้อนกลับมาทำก็ได้
-ให้สับสวิตซ์ปิดเหตุการณ์หน้าเมนูซะก็เป็นการออกจากเมนู
-(การเรียกเมนูมีวิธีทำได้สองทางคือให้ทำอีเวนท์อื่นมาเช็คเงื่อนไขว่าถ้ากดปุ่มหนึ่งจะเป็นการเปิดเมนูแล้วให้เปิดสวิตซ์เหตุการณ์นี้ขึ้นมาหรือถ้าอยากให้เป็นอีเวนท์เดียวก็ใช้สวิตซ์สองอันในเหตุการณ์แล้วเช็คเงื่อนไขไว้ว่าถ้าสวิตซ์นั้นเปิดก็ให้แสดงเมนูถ้าสวิตซ์นั้นปิดแล้วทำการกดปุ่มหนึ่งขึ้นมาก็เป็นการเรียกเมนู)

[Image: chRLqOB.png]

-สำหรับการแสดงการโชว์ภาพให้ตรวจเช็คเงื่อนไขแล้วเพิ่มเคสซ้อนกันเรื่อยๆเช็คเงื่อนไขหมายเลขคำสั่งตามที่ตั้งไว้ เช่น ตามวีดิโอตัวอย่าง move=1 survey=2 item=3 equip=4 data=5 เราก็เช็คเงื่อนไขไปตามที่ตั้งไว้
-คำสั่งโชว์รูปจริงๆใช้แค่ที่ผมกดเลือกไว้ในภาพก็พอเป็นหน้าตอนเลือกคำสั่งแล้วปรับตำแหน่งภาพตามคำสั่งของมันเท่านั้นแต่ถ้าอยากให้เวลากดเลือกคำสั่งอื่นไปแล้วสามารถกดออกมาเป็นเมนูนี้ได้ด้วยก็ให้ใช้คำสั่งโชว์ภาพเมนูขึ้นมาใหม่แบบในภาพด้วย(ต้องให้หมายเลขภาพเป็นหมายเลขเดียวกันด้วย) ให้สังเกตจากภาพนะครับว่าตำแหน่งแกนyจะเปลี่ยนไปตามคำสั่งแต่ละอย่าง หลักคือให้ใช้หมายเลขภาพมากกว่าภาพที่เราทำเป็นหน้าเมนู

จากขั้นตอนที่ผ่านมาจะได้แบบนี้แล้วครับ (ดูแค่เมนูทางด้านซ้ายนะ)
[Image: PLSkqjT.gif]

การเซ็ตแต่ละปุ่มว่าจะให้ทำอะไรก็แล้วแต่คนสร้างจะทำเลยครับ อาจจะต้องมีส่วนของการเรียกใช้สคริปท์บ้าง เ่ช่นถ้าอยากให้เรียกเมนูไอเทมขึ้นมาก็ใช้คำสั่งเรียกใช้สคิปท์แล้วใส่โค้ดไป
$scene = Scene_Item.new
ทีนี้ก็เป็นคำสั่งเรียกเมนูไอเทมแล้ว ถ้าจะให้เรียกคำสั่งเซฟก็ใช้คำสั่งเรียกเมนูบันทึกเกมใส่ไป

จะทำยังไงกับคำสั่งแต่ละคำสั่งคราวนี้ขึ้นอยู่กับจินตนาการของผู้สร้างแล้วครับว่าจะทำอย่างไร
อย่างในเกม IB ก็ใช้เมนูรูปภาพแต่ไม่ได้ทำเมนูเป็นตัวเลือกแบบนี้ ใช้แค่คำสั่งเช็คเงื่อนไขมาแสดงภาพเท่านั้นเอง


ป.ล.มีคำถามสามารถถามได้ครับแต่ช่วงนี้ผมอาจไม่มีเวลามาตอบเท่าไหร่เพราะร่วมกิจกรรมมหาโหดอยู่ Me gusta
ยังไงฝากคนที่เข้าใจช่วยตอบแทนด้วย
This post was last modified: 02-03-2014, 03:09 PM by Nazuth.

[Image: 76561198134933497.png]
Show ContentFanPage:


Mary   02-02-2014, 08:04 PM
#2
ขอบคุณสำหรับความรู้ดีๆค่ะ

[Image: 150530082811.jpg]
hengmana   02-02-2014, 08:38 PM
#3
รู้สึกจะอธิบายข้ามขั้นตอนตรง
Quote:เรียกใช้สคริปต์ $game_temp.message_window_showing = true
ใครยังไม่รู้คืออะไร ให้ดูกระทู้นี้ (ของ RMXP )
http://irpg.in.th/thread-275.html

ว่าแต่ดูๆ แล้วไม่เห็นเรียกสั่งปิดตรงตรงไหนเลย ; -;?? หรือว่าไม่ต้องปิดก็ได้
This post was last modified: 02-02-2014, 08:46 PM by hengmana.
Nazuth Away   02-03-2014, 01:13 AM
#4
(02-02-2014, 08:38 PM)hengmana Wrote: รู้สึกจะอธิบายข้ามขั้นตอนตรง
Quote:เรียกใช้สคริปต์ $game_temp.message_window_showing = true
ใครยังไม่รู้คืออะไร ให้ดูกระทู้นี้ (ของ RMXP )
http://irpg.in.th/thread-275.html

ว่าแต่ดูๆ แล้วไม่เห็นเรียกสั่งปิดตรงตรงไหนเลย ; -;?? หรือว่าไม่ต้องปิดก็ได้

ผมเอาไปใส่ไว้ในอีเวนท์อื่นที่ลิงค์กันอยู่นะครับเลยไม่ได้ใส่ในอีเวนท์นี้

[Image: 76561198134933497.png]
Show ContentFanPage:


PorKaDas   02-03-2014, 02:53 AM
#5
สายอีเวนท์เหมือนกันเลย อิอิอิ
dreamknight   02-03-2014, 08:48 AM
#6
;3

สุดยอดเลยขอรับ ท่านนัทสึกิ

เอาไปใช้ประยุกต์ได้หลายอย่างเลย ขอบคุณฮับ

May the flames guide your way. Every ending will make you stronger.

Kuma   02-03-2014, 03:04 PM
#7
Master Eventer Nutsukikung แมวน้ำเต้น

เอาไปประยุกต์กับ Ace ท่าจะแจ่ม


motley   04-29-2014, 09:54 PM
#8
เป็นประโยชน์อย่างมากเลยครับ ขอบคุณครับ /confident
Diamond   06-01-2014, 03:47 PM
#9
ถ้ามี Demo ให้จะดีมากๆเลยครับ
เพราะว่าผมลองทำแล้วมันทำไม่ได้/ohgod

มือใหม่หัดสร้างเกม มือใหม่หัดดอท มือใหม่หัดดองเกม
มือใหม่หัดทำระบบเดินยิง มือใหม่หัดขี้เกียจดอท
มือใหม่หัดขี้เกียจทำระบบเดินยิง มือใหม่หัดถาม
มือใหม่หัดขี้เกียจถาม(What??)
  
Users browsing this thread: 2 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.