จริงๆไม่มีอะไรมากก็แค่วางต่อกันไปเลย เช่น
เรียก ใช้วินโดว์
>>เราสามารถสร้าง วินโดว์มากกว่า 1 อันได้ใน Scene เดียว<<
การเรียกใช้ Scene
ใช้ คำสั่งเรียกใช้สคริปแล้วเรียกว่า
.
.
กรณีที่เรายังไม่ต้องการให้โชว์วินโดว์ไหน เราสามารถทำได้ โดยใส่โค๊ตว่า
เวลาต้องการโชว์ก็เปลื่ยนจาก false เป็น true
.
.
กรณีที่เรายังต้องการเลือกซ้อนกันหลายๆครั้ง เช่น เรียกสคริปว่าจะฝากหรือถอนเงิน จากนั้นก็แสดงวินโดว์ซ้อนไปว่าจะฝ่ากเท่าไรไปอีกชั้น
(ดูตัวอย่างด้านล่าง)
เวลาต้องการโช้ก็เปลื่ยนจาก false เป็น true และต้องเปลื่ยน @command_window.active = false(คอมมานตัวหลัก) ให้ปิดด้วย
.
.
ถ้าอยากให้เห็นพื้นหลังเลยไม่ใช้หน้าจอดำๆ ให้ใส่สคริป
**วิธีนี้ใช้ได้กับสคริปเมนูทุกชนิด**
[free]
ต.ย.สคริปธนาคาร (แบบกรอกตัวเลขได้ตามใจชอบ)
-เมื่อเลือกว่าจะฝากหรือถอน จะมีตัวเลขขึ้นว่าจะใส่จำนวนเงินเท่าใด
-เมื่อกดเอนเตอร์ ถ้ามีจำนวนเงินถูกต้องจะฝาก/ถอน ได้ทันที[/free]
[hide]
http://www.mediafire.com/?4jwiy4zjne0
[/hide]
Special Thank : shinryu
class Window_ชื่อที่ต้องการ < Window_Base #ห้ามซ้ำกับชื่อ Window ทีมีอยู่แล้วไม่งั้นมันจะเรียกใช้ Window นี้แทนอันเก่า
# ------------------------
def initialize
super(ตำแหน่งแกนx, ตำแหน่งแกนy, ความกว้าง, ความสูง)
self.contents = Bitmap.new(width - 32, height - 32) #เป็นตำแหน่งแสดงตัวหนังสือ
self.opacity = 255 # ความโปร่งใสของกรอบ (ถ้าไม่อยากมีกรอบก็ตั้งเป็น 0)
self.contents.font.name = $fontface # ชนิดของฟอนท์ที่ใช้
self.contents.font.size = $fontsize # ขนาดของฟอนท์ที่ใช้
self.z = 5 #ลำดับชั้นของกรอบ (ถ้าตั้งเลขมากๆจะบังพวกกรอบเมนูหรือพวเราปภาพได้)
refresh
end#จบ initialize
# ------------------------
def refresh
self.contents.clear
<แสดงเนื้อหาตรงนี้>
end#จบ refresh
# ------------------------
end#จบ class
# ------------------------------------------------------------------------
class Scene_ชื่อที่ต้องการ #ชื่อ Scene ที่ต้องการ
def main
s0 = "เนื้อหา 1"
s1 = "เนื้อหา 2"
s2 = "เนื้อหา 3"
# กำหนดคอมมานว่ามีอะไรบ้าง
# 200คือความกว้างWindow ส่วนเลข s0-3 คือตัวหนังสือตามที่เรากำหนด
@command_window = Window_Command.new(200, [s0, s1, s2])
# ตำแหน่งแกน y ของ command_window
@command_window.y = 64
# เรียกใช้หน้าต่างที่เราสร้างข้างบน
@ชื่อที่ต้องการ_window = Window_ชื่อที่ต้องการ.new
@ชื่อที่ต้องการ_window.x = 128 #ตำแหน่งที่จะวางแกนx
@ชื่อที่ต้องการ_window.y = 0 #ตำแหน่งที่จะวางแกนy
# เรียกใช้หน้าต่าง help
@note_window = Window_Help.new
# เริ่มเรียกใช้ Scene และเรียก window ทั้งหมด
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
#ลบ window ต่างๆเมื่อออก
@command_window.dispose
@ชื่อที่ต้องการ_window.dispose #พิมพ์ตัวนี้เพิ่มเข้ามา
@note_window.dispose
end #จบ main
#--------------------------------------------------------------------------
def update
@ชื่อที่ต้องการ_window.update #เพิ่มตัวนี้ในกรณีที่ต้องการให้หน้าต่างนี้อัพเดทตลอดเวลา
# เมื่อตำแหน่ง เคอเซอร์อยู่ที่ when ใดก็ให้โชว์ข้อความนั้นๆที่ window help
case @command_window.index
when 0
@note_window.set_text("แสดงคำอธิบายเนื้อหา 1", 0)
when 1
@note_window.set_text("แสดงคำอธิบายเนื้อหา 2", 0)
when 2
@note_window.set_text("แสดงคำอธิบายเนื้อหา 3", 0)
end
#อัพเดทตำแหน่งเคอเซอร์
@command_window.update
# เมื่อกด X (ยกเลิก)
if Input.trigger?(Input::B)
# เรียกใช้เสียงเวลากด cancel
$game_system.se_play($data_system.cancel_se)
# ไปหน้าจอ
$scene = Scene_Map.new
# จบการเช็คเมื่อกด X
end
# เมื่อกด C (ตกลง)
if Input.trigger?(Input::C)
# เรียกใช้เสียงเวลากด ตกลง
$game_system.se_play($data_system.decision_se)
# เมื่อตำแหน่ง เคอเซอร์อยู่ที่ when ใดเวลากด C ก็ให้เกิดเหตุการณ์นั้นๆ
case @command_window.index
when 0
เหตุการณ์ 1
when 1
เหตุการณ์ 2
when 2
เหตุการณ์ 3
end
# ตรงนี้อาจมีการเรียกใช้ Scene นี้อีกครั้งเพื่ออัพเดทข้อมูลหลังจากกด C
$scene = Scene_ชื่อที่ต้องการ.new
end
end
end
เพียงแต่มีการเพิ่มเรียก ใช้วินโดว์
@ชื่อที่ต้องการ_window = Window_ชื่อที่ต้องการ.new
ลบวินโดว์@ชื่อที่ต้องการ _window.dispose
อัพเดทวินโดว์@ชื่อที่ต้อง การ_window.update
ที่เรา สร้างเพิ่มขึ้นนั่นเอง>>เราสามารถสร้าง วินโดว์มากกว่า 1 อันได้ใน Scene เดียว<<
การเรียกใช้ Scene
ใช้ คำสั่งเรียกใช้สคริปแล้วเรียกว่า
$scene = ชื่อ Scene ที่เราตั้งไว้.new
แค่นี้เราก็จะได้สคริปแบบเมนูที่คนอื่นเขาแจกๆกัน แล้วนั่นเอง {:17_880:}{:17_861:}{:17_795:}.
.
กรณีที่เรายังไม่ต้องการให้โชว์วินโดว์ไหน เราสามารถทำได้ โดยใส่โค๊ตว่า
@ชื่อที่ต้องการ_window.visible = false
ต่อจากเรียกใช้วินโดว์ที่ต้องการเวลาต้องการโชว์ก็เปลื่ยนจาก false เป็น true
.
.
กรณีที่เรายังต้องการเลือกซ้อนกันหลายๆครั้ง เช่น เรียกสคริปว่าจะฝากหรือถอนเงิน จากนั้นก็แสดงวินโดว์ซ้อนไปว่าจะฝ่ากเท่าไรไปอีกชั้น
(ดูตัวอย่างด้านล่าง)
@ชื่อที่ต้องการ_window.active = false #ยังไม่ใช้
ต่อจากเรียกใช้วินโดว์ที่ต้องการเวลาต้องการโช้ก็เปลื่ยนจาก false เป็น true และต้องเปลื่ยน @command_window.active = false(คอมมานตัวหลัก) ให้ปิดด้วย
.
.
ถ้าอยากให้เห็นพื้นหลังเลยไม่ใช้หน้าจอดำๆ ให้ใส่สคริป
@map = Spriteset_Map.new
ใต้def main
และ ไปที่มีการลบวินโดว์ต่างๆ(ใต้ Graphics.freeze) ใส่แทรกไปว่า@map.dispose
เป็นอัน เสร็จเรียบร้อย (ดูตัวอย่างด้านล่าง)**วิธีนี้ใช้ได้กับสคริปเมนูทุกชนิด**
[free]
ต.ย.สคริปธนาคาร (แบบกรอกตัวเลขได้ตามใจชอบ)
-เมื่อเลือกว่าจะฝากหรือถอน จะมีตัวเลขขึ้นว่าจะใส่จำนวนเงินเท่าใด
-เมื่อกดเอนเตอร์ ถ้ามีจำนวนเงินถูกต้องจะฝาก/ถอน ได้ทันที[/free]
[hide]
http://www.mediafire.com/?4jwiy4zjne0
[/hide]
Special Thank : shinryu
[สอน] การเขียน Script อย่างง่ายๆ บทที่ 4 การรวม Scene กับ Window