1

Sonntag, 1. März 2009, 14:43

Optische Menüveränderung ein Menüpunkt

In diesem Tutorial zeige ich euch wie ihr euer optisch schöner gestalten könnt und einen Menüpunkt mehr anlegt
aber ihr solltet es nur bei spielen anwenden bei denen immer nur EIN Charakter im Menü steht weil diese Anzeige verkleinert wird. (Alles wird in der Scene_Menu gemacht)

Spoiler: Fenstertranzparenz
Als erstes machen wir alle Menüfenster halbtranzparent:
1. Schreibe unter Zeile 30 diesen code

Ruby Quellcode

1
@command_window.back_opacity = 150


2. jetzt dasselbe unter Zeile 49

Ruby Quellcode

1
@playtime_window.back_opacity = 150


3. jetzt in Zeile 54

Ruby Quellcode

1
@gold_window.back_opacity = 150


4. jetzt in zeile 59

Ruby Quellcode

1
@status_window.back_opacity = 150
zum Lesen den Text mit der Maus markieren

Spoiler: Fensterkoordinaten
Jetzt verschieben wir die einzelnen Fenster:
1. Ändere in der zeile 30 den code so:

Ruby Quellcode

1
@command_window.y = 128


2.in den zeilen 47 und 48 so:

Ruby Quellcode

1
2
@playtime_window.x = 160
@playtime_window.y = 320


3. aber dass, das auch passt müsst ihr in der window_playtime in zeile 12 den code ändern

Ruby Quellcode

1
super(0, 0, 300, 64)


4. jetzt ändert ihr die zeilen 42 und 43

Ruby Quellcode

1
2
@gold_window.x = 460
@gold_window.y = 320


5. aber dass, dieses fenster passt müsst ihr in der winow_gold zeile 12 ändern

Ruby Quellcode

1
super(0, 0, 180, 64)


6. jetzt zum statuswindow dazu ändert ihr in den zeilen 57 und 58 den code

Ruby Quellcode

1
2
@status_window.x = 160
@status_window.y = 128


7. tja jetzt müssen wir aber wieder die größe des fensters in der window_menustatus ändern in der zeile 12

Ruby Quellcode

1
super(0, 0, 480, 192)
zum Lesen den Text mit der Maus markieren


Spoiler: Extra Menüpunkt
Hier zeige ich wie ihr einen extra Menüpunkt erstellt (Ich mache einen Menüpunkt zu Caesars Questlog)
Schreibt unter zeile 26

Ruby Quellcode

1
s7 = "Questlog"

und ersetzt zeile 28 damit

Ruby Quellcode

1
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])

jetzt ersetzt die zeilen 168-175 damit

Ruby Quellcode

1
2
3
4
5
6
7
8
when 6  # questlog
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to questlog screen
$scene = Scene_Questlog.new
end
return
end
zum Lesen den Text mit der Maus markieren


Ja das wars schon euer RPG Nullchecker :thumbsup:


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

2

Sonntag, 1. März 2009, 15:14

schönes tutorial ist verständlich auch wenn ich es nicht brauche :D aber schön das es leute gitb die sich um diesen ebreich bemühen ;)

3

Sonntag, 1. März 2009, 16:40

Wenn du die Fesnter schon transparent machst, dann kannst du
gleich die Map im Hintergrund anzeigen, sieht dann auch noch besser aus ;)

Einfach unter def main das einfügen:

spriteset = Spriteset_Map.new

4

Sonntag, 1. März 2009, 20:35

achso, ich dachte das is im standard schon so


Dieser Beitrag wurde bereits so oft editiert, dass der Zähler sich in die Luft gesprengt hat.

5

Sonntag, 1. März 2009, 21:02

Wie soll denn das gehn, wenn die Scene_Map nicht läuft?^^

Achso btw. ich hab vergessen, dass dann auch noch ganz unten im def main

Ruby Quellcode

1
spriteset.dispose

hinzugefügt werden muss^^

Psyhunter

Ankömmling

Motto: "Was du nicht willst was man dir tu, das füg auch keinem andern zu."

  • Nachricht senden

6

Montag, 9. Dezember 2013, 23:17

Wenn ich das Menü aufrufen möchte erhalte ich folgende Fehlermeldung:

Quellcode

1
2
3
Script 'Scene_Menu' line 45: NoMethodError occured.
 
undefined method `x='for nil:NilClass

Meine Scene Menu

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs menu screen processing.
#==============================================================================
 
class Scene_Menu
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     menu_index : command cursor's initial position
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    spriteset = Spriteset_Map.new 
    # Make command window
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Status"
    s5 = "Speichern"
    s6 = "Beenden"
    s7 = "Questlog"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.index = @menu_index
    @command_window.y = 128# If number of party members is 0
    if $game_party.actors.size == 0
 
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @command_window.disable_item(4)
    end
    # Make play time window
    @gold_window.x = 460
    @gold_window.y = 320
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 160
    @playtime_window.y = 320
    @playtime_window.back_opacity = 150
    # Make steps window
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.back_opacity = 150
    @gold_window.x = 0
    @gold_window.y = 416
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.back_opacity = 150
    @status_window.x = 160
    @status_window.y = 0
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @command_window.dispose
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @spriteset.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If status window is active: call update_status
    if @status_window.active
      update_status
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when command window is active)
  #--------------------------------------------------------------------------
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If command other than save or end game, and party members = 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Branch by command window cursor position
      case @command_window.index
      when 0  # item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        $scene = Scene_Item.new
      when 1  # skill
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # save
        # If saving is forbidden
        if $game_system.save_disabled
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to save screen
        $scene = Scene_Save.new
      when 6  # questlog
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to questlog screen
$scene = Scene_Questlog.new
end
return
end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when status window is active)
  #--------------------------------------------------------------------------
  def update_status
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Make command window active
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 1  # skill
        # If this actor's action limit is 2 or more
        if $game_party.actors[@status_window.index].restriction >= 2
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to skill screen
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to equipment screen
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to status screen
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end

Revito

Rekrut

Motto: Verschwendet ist das Leben viel zu kurz.

  • Nachricht senden

7

Montag, 9. Dezember 2013, 23:28

Erst in Zeile 56 wird das Gold Window deklariert.
Setz die Positionierung einfach dahinter.
Enslaved - Von Sklaverei und Freiheit

Psyhunter

Ankömmling

Motto: "Was du nicht willst was man dir tu, das füg auch keinem andern zu."

  • Nachricht senden

8

Montag, 9. Dezember 2013, 23:51

Aiii Danke für die schnelle Antwort! :3

So hat geklappt ich komme in das Menü rein. Allerdings wird es Fehlerhaft dargestellt:
Bild

Wenn ich das Menü verlasse und wieder betreten möchte reagiert das Spiel nicht auf die Taste. Noch mal gedrückt: abgestürzt.
Folgender Absturzbericht seitens Windows 7:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Problemsignatur:
  Problemereignisname:	APPCRASH
  Anwendungsname:	Game.exe
  Anwendungsversion:	1.0.0.1
  Anwendungszeitstempel:	40d19497
  Fehlermodulname:	RGSS102E.dll_unloaded
  Fehlermodulversion:	0.0.0.0
  Fehlermodulzeitstempel:	42c8ac9a
  Ausnahmecode:	c0000005
  Ausnahmeoffset:	10003a70
  Betriebsystemversion:	6.1.7601.2.1.0.256.1
  Gebietsschema-ID:	1031
  Zusatzinformation 1:	257d
  Zusatzinformation 2:	257d8f504c598531c429b24cac277ae5
  Zusatzinformation 3:	c8b8
  Zusatzinformation 4:	c8b8c006f3806b32b42cc750449028ad

Ähnliche Themen

Social Bookmarks