(http://imagesload.net/img/Titel5.png)
Hallo, in diesem Tutorial möchte ich euch zeigen, wie ihr ein Menü mit drei Einträgen und einem Bild machen könnt. Das ganze sollte später zum Beispiel so aussehen: (http://imagesload.net/img/Ziel.png)
Also dann fangen wir mal ganz von vorne an:
1. Als erstes öffnet ihr euer Projekt oder fang ein neues an.
2. Als nächstes öffnet ihr den Script-Editor und ersetzt den Script "Scene_Menu" mit dem hier: #==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# * Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@gold_window = Window_Gold.new(0, 360)
@status_window = Window_MenuStatus.new(160, 0)
sample_name = "Graphics/System/menu_pic.png"
x = 0
y = 104
temp=Bitmap.new(sample_name)
@sample_window = Window_Base.new(x,y,temp.width+32,temp.height+32)
@sample_window.contents = Bitmap.new(temp.width,temp.height)
@sample_window.contents.blt(0,0,temp,temp.rect)
temp.dispose
@sample_window.back_opacity = 0
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@gold_window.dispose
@status_window.dispose
@sample_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
@gold_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @status_window.active
update_actor_selection
end
@sample_window.update
end
#--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::save
s3 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
#--------------------------------------------------------------------------
# * Update Command Selection
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
if $game_party.members.size == 0 and @command_window.index < 4
Sound.play_buzzer
return
elsif $game_system.save_disabled and @command_window.index == 4
Sound.play_buzzer
return
end
Sound.play_decision
case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1 # Save
$scene = Scene_File.new(true, false, false)
when 2 # End Game
$scene = Scene_End.new
end
end
end
#--------------------------------------------------------------------------
# * Start Actor Selection
#--------------------------------------------------------------------------
def start_actor_selection
@command_window.active = false
@status_window.active = true
if $game_party.last_actor_index < @status_window.item_max
@status_window.index = $game_party.last_actor_index
else
@status_window.index = 0
end
end
#--------------------------------------------------------------------------
# * Update Actor Selection
#--------------------------------------------------------------------------
def update_actor_selection
if Input.trigger?(Input::B)
Sound.play_cancel
end_actor_selection
elsif Input.trigger?(Input::C)
$game_party.last_actor_index = @status_window.index
Sound.play_decision
case @command_window.index
when 3 # skill
$scene = Scene_Skill.new(@status_window.index)
when 4 # equipment
$scene = Scene_Equip.new(@status_window.index)
when 5 # status
$scene = Scene_Status.new(@status_window.index)
end
end
end
end
3. Okay damit wäre das meißte geschafft. Nun wenden wir uns dem *Create Command Window-Teil zu. Bevor ihr den neuen Script eingefügt hab sah es so aus: #--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
Nun sieht es so aus: #--------------------------------------------------------------------------
# * Create Command Window
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::item
s2 = Vocab::save
s3 = Vocab::game_end
@command_window = Window_Command.new(160, [s1, s2, s3])
@command_window.index = @menu_index
if $game_party.members.size == 0 # If number of party members is 0
@command_window.draw_item(0, false) # Disable item
@command_window.draw_item(1, false) # Disable skill
@command_window.draw_item(2, false) # Disable equipment
@command_window.draw_item(3, false) # Disable status
end
if $game_system.save_disabled # If save is forbidden
@command_window.draw_item(4, false) # Disable save
end
end
Ich habe in dem neuem Script folgendes verändert: Ich habe den Teil def create_command_window
s1 = Vocab::item
s2 = Vocab::skill
s3 = Vocab::equip
s4 = Vocab::status
s5 = Vocab::save
s6 = Vocab::game_end
auf das hier beschränkt def create_command_window
s1 = Vocab::item
s2 = Vocab::save
s3 = Vocab::game_end
. Das könnt ihr natürlich nach belieben ändern, wenn ihr zum Beispiel nur die Einträge "Item", "Status" & "Save" haben wollt dann müsste es in etwa so aussehen: def create_command_window
s1 = Vocab::item
s2 = Vocab::status
s3 = Vocab::save
!
4. Okay nun habe ich die Zeile @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
mit dem hier ersetzt @command_window = Window_Command.new(160, [s1, s2, s3])
, dies kann in jedem Fall so bleiben, denn wir wollen ja nur 3 Menü-Einträge.
5. Nun habe ich im Abschnitt *Update Command Selection den Teil case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1,2,3 # Skill, equipment, status
start_actor_selection
when 4 # Save
$scene = Scene_File.new(true, false, false)
when 5 # End Game
$scene = Scene_End.new
mit dem hier ersetzt case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1 # Save
$scene = Scene_File.new(true, false, false)
when 2 # End Game
$scene = Scene_End.new
, weil wir ja nur die 3 Einträge "Item", "Save" & "End Game" haben wollen, wollen wir aber Anstatt "End Game" "Status", und zwar über dem Eintrag "Save" müssen wir dies so ändern: case @command_window.index
when 0 # Item
$scene = Scene_Item.new
when 1 # Skill, equipment, status
start_actor_selection
when 2 # Save
$scene = Scene_File.new(true, false, false)
6. So nun müssen wir je nachdem welche 3 Einträge wir haben etwas ändern, also für die 3 Einträge "Item", Save" & "End Game" müssen wir folgendes ändern: Im Script "Scene_Item", die Zeile #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(0)
end
, dort müssen wir garnichts ändern, denn "Item" soll ja an erster Stelle bleiben, denn es gilt: 0=1
1=2
2=3!
Aber im Script "Scene_File" muss die Zeile #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(4)
end
end
mit dem hier ersetzt werden, denn wir wollen "Save" ja an zweiter Stelle (1=2): #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(1)
end
end
Nun müssen wir nurnoch im Script "Scene_End" #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(5)
end
mit dem heir ersetzen #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(2)
end
Wollen wir allerdings die Enträge "Item", "Status" & "Save" müssen wir anstatt bei "Scene_End" etwas bei "Scene_Status" ändern und zwar das #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(3)
end
mit dem #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(1)
end
und "Scene_File" mit dem hier #--------------------------------------------------------------------------
# * Return to Original Screen
#--------------------------------------------------------------------------
def return_scene
if @from_title
$scene = Scene_Title.new
elsif @from_event
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(2)
end
end
7. [Für alle die den Status wollen] Jetzt nurnoch bei "Scene_Status" im Abschnitt * Update Actor Selection case @command_window.index
when 3 # skill
$scene = Scene_Skill.new(@status_window.index)
when 4 # equipment
$scene = Scene_Equip.new(@status_window.index)
when 5 # status
$scene = Scene_Status.new(@status_window.index)
mit dem hier ersetzen case @command_window.index
when 3 # skill
$scene = Scene_Skill.new(@status_window.index)
when 4 # equipment
$scene = Scene_Equip.new(@status_window.index)
when 1 # status
$scene = Scene_Status.new(@status_window.index)
8. Soviel zu den Menü-Einträgen, in dem neuem "Scene_Menu"-Script (siehe oben) ist schon die Funktion Bilder einzubauen intigriert, ihr müsst jetzt nur noch ein Bild mit den Maßen 128 x 224 mit dem Namen menu_pic.png (sollte auch ein PNG sein) in den Ordner "System" importieren - Fertig!
Bitte entschuldigt falls es ein paar grammatische und rechtschreibliche (gibt es das Wort?) Fehler gibt. Es ist immerhin mein erstes Tutorial, aber ich habe mir sehr viel Mühe gemacht. Fragen, Lob oder Kritik ist aber dennoch erwünscht hier habe ich nochmal alles (samt Beispiel_Bild) angehängt!
Bei Verwendung bitte Credits an mich (MarcoMario)!
Special-Thanks:
An Hanmac für die freundliche Hilfe beim Bilder-Script!
LG, MarcoMario
Anhang: http://www.marco-mario.de/userfiles/RPGVX/Das_Wie-Mache-Ich-Ein-Menue-Mit-Nur-Drei-Eintraegen-Und-Bild_-Tutorial.zip (http://www.marco-mario.de/userfiles/RPGVX/Das_Wie-Mache-Ich-Ein-Menue-Mit-Nur-Drei-Eintraegen-Und-Bild_-Tutorial.zip)
PS: Ihr könnt auch einfach die im Anhang verwendeten Scripts für eure "Version" einfügen, ohne irgendetwas zu ändern, ihr müsst dann nurnoch das menu_pic.png importieren!