Create Your Own Menu (part 4)
Engine : RPG Maker VX Ace
Click here for part 1
Click here for part 2
Click here for part 3
Like before, insert a new script and name it Scene_Menu. Then paste this code below.
Unlike other class, when created scene class will run the start method instead of initialize (you can see it in Scene_Base main method, that it will run start > post_start > then looping update).
5b. Creating Menu List
Paste this in def create_window_menu_list.
5c. Creating Windows Status
Paste this in def create_window_actor_status.
5d. Creating Location Gold Window
Paste this in def create_window_location_gold.
Now you can open the menu, and it should look like this
But it's kinda plain isn't it? How about we animate the windows so it will look more, attractive?
5e. Animating the Windows.
I want the menu list and locgold window closed first, then it's open. To do that, we have to close the windows after we created it. Change def create_window_menu_list and def create_window_location_gold to this.
Now the menu should look like this,
But it's, still not enough. How about we animate the status windows too? Yeah let's do it.
5f. Animating Status Windows
I want the windows to move from outside to inside the screen with different speed. To do that, have to set the window's x outside the screen. Change def create_window_actor_status to this.
Then, add this new method below.
It should look like this.
But there's nothing happen if you select any command, because we didn't create the method for that yet.
Click here for part 1
Click here for part 2
Click here for part 3
5. Creating Scene Menu
5a. SetupLike before, insert a new script and name it Scene_Menu. Then paste this code below.
class Scene_Menu < Scene_MenuBase def start super create_window_menu_list create_window_actor_status create_window_location_gold end def create_window_menu_list end def create_window_actor_status end def create_window_location_gold end end
5b. Creating Menu List
Paste this in def create_window_menu_list.
@menulist_window = Window_MenuList.new
5c. Creating Windows Status
Paste this in def create_window_actor_status.
#create array container for windows status @actor_status_windows = [] #spacing between each windows spacing = 16 #loop through each index for i = index in 0 until total actor in the party (0...$game_party.members.size).each do |i| #create status window @actor_status_windows[i] = Window_MenuStatus.new(i) #set window's x position @actor_status_windows[i].x = 16 + i*(@actor_status_windows[i].width+spacing) #set window's y position @actor_status_windows[i].y = 64 end
Paste this in def create_window_location_gold.
@locgold_window = Window_LocGold.new
Now you can open the menu, and it should look like this
But it's kinda plain isn't it? How about we animate the windows so it will look more, attractive?
5e. Animating the Windows.
I want the menu list and locgold window closed first, then it's open. To do that, we have to close the windows after we created it. Change def create_window_menu_list and def create_window_location_gold to this.
def create_window_menu_list @menulist_window = Window_MenuList.new #set the window's openness, 0 is the minimum and 255 is the max @menulist_window.openness = 0 #open the window @menulist_window.open end def create_window_location_gold @locgold_window = Window_LocGold.new #set the window's openness, 0 is the minimum and 255 is the max @locgold_window.openness = 0 #open the window @locgold_window.open end
But it's, still not enough. How about we animate the status windows too? Yeah let's do it.
5f. Animating Status Windows
I want the windows to move from outside to inside the screen with different speed. To do that, have to set the window's x outside the screen. Change def create_window_actor_status to this.
#create array container for windows status @actor_status_windows = [] #loop through each index for i = index in 0 until total actor in the party (0...$game_party.members.size).each do |i| #create status window @actor_status_windows[i] = Window_MenuStatus.new(i) #set window's x position @actor_status_windows[i].x = -@actor_status_windows[i].width #set window's y position @actor_status_windows[i].y = 64 end
def update super #animate the windows status unless we done animating it animate_windows_status unless @status_animated end def animate_windows_status #array for containing the speed of each window @mv_speed ||= [] #spacing between each windows spacing = 16 #for checking if every windows is already in target_x ani_done = 0 #for each window and index in @actor_status_window @actor_status_windows.each_with_index do |window, i| #set @mv_speed[index] to 2.0 if it's nil @mv_speed[i] ||= 3 #x position that windows will moved to target_x = 16+i*(window.width+spacing) #if window's x is less than target_x if window.x < target_x #increment the window's x window.x += @mv_speed[i] #if after incremented the window's x is greater than target_x if window.x > target_x #set the window's x to target_x window.x = target_x end end #if window's x equal to target_x if window.x == target_x #increase ani_done ani_done += 1 end #increase the moving speed @mv_speed[i] += 1 end #if ani_done equal to total number of windows if ani_done == @actor_status_windows.size #animated is done @status_animated = true end end
But there's nothing happen if you select any command, because we didn't create the method for that yet.
0 komentar: