irpg Community
ซ่อนคำสั่งในหน้าต่างเมนูชั่วคราว - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RGSS and JS Showcase (https://irpg.in.th/forum-26.html)
+--- Thread: ซ่อนคำสั่งในหน้าต่างเมนูชั่วคราว (/thread-242.html)



ซ่อนคำสั่งในหน้าต่างเมนูชั่วคราว - Shinryu - 07-08-2012

ถ้าเคยเล่นเกม ไฟนอล8 ตอนใกล้จะจบคงเคยเห็น จะต้องสู้กับบอสถึงจะได้เมนูคืนมาทีละอย่างๆ อันนี้ก็คล้ายๆกัน สามารถเปิดปิดได้ตามสะดวกเลย
หรือในเกมเซลด้าของผมถ้ายังไม่มีกระเป๋าจะเปิดเมนูไอเทมไม่ได้
หรือจะประยุกต์ไม่มีโทรศัพท์(FF7)จะยังไม่สามารถเปลี่ยนตัวละครได้
[Image: b6gss.jpg]
ในรูปคือจะไม่สามารถใช้คำสั่งไอเทมได้

วิธีทำ

1.ไปที่ Scene_Menu แล้วใส่โค๊ตด้านล่าง
Code:
if $game_switches[x] == false  #เมื่อสวิทซ์ x ปิด
@command_window.disable_item(0) #ซ่อนคำสั่งที่ 1
end #จบ
เลข 0 ในวงเล็บคือลำดับของคำสั่ง เช่นถ้าต้องการซ่อนทักษะก็เปลื่ยนเป็น 1

ไปวางบน
Code:
# In case of saving prohibition
if $game_system.save_disabled
# Saving is made invalid
@command_window.disable_item(4)
end
ถ้าต้องการตรวจเช็คครั้งเดียวแล้วซ่อนหลายๆคำสั่งก็
Code:
if $game_switches[x] == false #เมื่อสวิทซ์ x ปิด
@command_window.disable_item(1) #ซ่อนคำสั่งที่ 2
@command_window.disable_item(2) #ซ่อนคำสั่งที่ 3
@command_window.disable_item(4) #ซ่อนคำสั่งที่ 5
end #จบ
เลยก็ได้

ตอนนี้เมื่อกดเรียกเมนูดูคำสั่งจะซ่อนแล้วแต่ยังกดเข้าไปได้อยู่

2.จากนั้นไป ประมาณบันทัดที่ 124 ให้ใส่โค๊ต
Code:
if $game_switches[x] == true #เมื่อสวิทซ์ x เปิด (ควรใส่เงื่อนไขให้ตรงกันข้ามกับข้างบน)
$game_system.se_play($data_system.decision_se) #เสียงคีย์ตกลง
$scene = Scene_Item.new #เรียก scene(เมนู)ไอเทม
else #หรือ
$game_system.se_play($data_system.buzzer_se) #เสียงคีย์ใช้ไม่ได้
end #จบ
แทน
Code:
$game_system.se_play($data_system.decision_se)
$scene = Scene_Item.new
เป็นอันเสร็จสิ้น

นอกจากนี้เรายังสามารถเปลื่ยนการเป็นตรวจเช็คด้วยอย่างอื่นก็ได้ เช่น
Quote:if $game_switches[x] == true (เมื่อ สวิทซ์ x เปิด)
if $game_party.item_number(x) >= 1 (เมื่อ ไอเทม x มีมากกว่าหรือเท่ากับ 1)
if $game_variables[x] >= 1 (เมื่อ ตัวแปร x มีมากกว่าหรือเท่ากับ 1)
if $game_actors[1].level >= 10 (เมื่อ ฮีโร่คนแรกในฐานข้อมูล มีเลเวลมากกว่าหรือเท่ากับ 10)
== คือ เท่ากับ
>= คือ มากกว่าหรือเท่ากับ
<= คือมากกว่าหรือเท่ากับ
> คือ มากกว่า
< คือ น้อยกว่า
!= คือ ไม่เท่ากับ
มันแล้วแต่จะเอาไปดัดแปลงนะครับ

ดูเหมือนเยอะแต่จริงๆเพิ่มสคริปต์แค่ 7-8 บรรทัดเอง แถมก็แค่ก็อบไปใส่ๆ

Credit : Shinryu