RPGVX.net

Ressourcen & Tutorials => Tutorials => Thema gestartet von: MarcoMario am Mai 11, 2009, 20:52:41

Titel: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: MarcoMario am Mai 11, 2009, 20:52:41
(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!
Titel: Re: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: Sk!p am Mai 12, 2009, 04:55:33
Ich will ja nicht meckern, aber ich dachte es ist ein Tutorial.

Viel mehr ist es eine Anleitung wie man ein Skript benutzt.
Ich dachte immer ein Tutorial wäre etwas, was man ohne Großen Aufwand nachmachen könnte.
Aber der erste Satz ist schon ''Man nehme das ... und kopiere es hier rein...'' Naja =/
Titel: Re: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: Husky32m am Mai 12, 2009, 14:05:30
Sehe ich irgendwie auch so...
Aber naja hast dir die Zeit dafür genommen =)
Titel: Re: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: MarcoMario am Mai 12, 2009, 15:17:16
Dann kanns ja jemand verschieben ;-)
Titel: Re: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: OceanBlue am Mai 12, 2009, 16:26:40
Ein Tutorial ist eine Anleitung und dies ist eine Anleitung für ein Script, also passt das schon so.
Auf jeden Fall mal danke MM, einige können sowas bestimmt gebrauchen.
Titel: Re: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: Valentine am Juni 01, 2012, 13:23:12
Hey schönes TuT!
Mich würde interessieren wie man dieses Custom Bild auch in andere Menü Skripte einbauen kann, falls das geht?
Bei dem Standard Menü gehts ja wunderbar.

Hätte das gerne bei diesem hier: http://www.rpgvx.net/index.php/topic,2058.0.html (http://www.rpgvx.net/index.php/topic,2058.0.html)
Da ist ja noch ein kleiner Zwischenraum, wo ich mir so ein Bild vorstellen könnte.

Machbar oder nicht?
Titel: Re: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: FlipelyFlip am Juli 05, 2012, 23:15:58
da ich weniger glaube dass MarcoMario dir noch antworten wird, mach ichs einfach und zwar:

Möglich ist es, machbar auch. Dieses Tutorial zeigt dir den Sourcecode, wie es ausguckt und du musst es eigentlich nur noch rein kopieren und etwas bearbeiten, dann haste die ganze Sache drin ;)

Es ist nicht viel Zauberei dahinter (:

lg flip
Titel: Re: Das Wie-Mache-Ich-Ein-Menü-Mit-Nur-Drei-Einträgen-Und-Bild -Tutorial
Beitrag von: Valentine am Juli 24, 2012, 20:51:41
Danke Flip, glaube wird er auch nicht mehr.
Recht haste, soweit dacht ich auch schon, aber ich hab eh gemerkt das es sich wirklich nur hier lohnt wenn man ne größere Fläche dafür hat. Könnte man bestimmt was feines mit anstellen, aber der Aufwand lohnt sich eh nicht.
SimplePortal 2.3.3 © 2008-2010, SimplePortal