累计送礼: 0 个 累计收礼: 1 个 TA的每日心情 开心 2026-7-12 04:10
签到天数: 209 天
连续签到: 2 天
[LV.7]常住居民III
管理员
VIP
7
卡币
58883
OK点
16
推广点
0
同能卷
50
积分 68848
Simple Formation Menu
By: FamilyGamer7
Introduction
A simple way to make the formation it's own scene and with unique formatting.
Click to expand...
Features
This script gives the formation command its own scene and re-organizes into a unique approach that is different from the standard formation implementation. This new formation will only support up to 6 actors per its design.
Click to expand...
Screenshot(s)
Click to expand...
Script
Spoiler: FG7 - Simple Formation Menu
Ruby: #============================================================================== # Title: Simple Formation Menu # Author: FamilyGamer7 (FG7) # Version: 1.0 # Engine: RPG Maker VX Ace #============================================================================== # ** Change Log | # --------------- # 1.0 => Created Script #============================================================================== # ** Description | # ---------------- # A simple way to make the formation it's own scene and with unique formatting. #============================================================================== # ** Terms of Use | # ----------------- # * Free to use in non-commercial projects and commercial projects # * Feel free to modify and improve the script. Credit is still required. # * Credit FamilyGamer7 #============================================================================== # ** Usage | # --------- # Plug & Play (With some customization in module section) # # ----------------------------------------------------------------------------- # # For the module section, you can use a value like "30" or "-30" which is to # add/subtract to the existing "x" coordinate placement of the scene. The same # applies for the "y" coordinate placement. See examples below. # # - Ex: Scene_X_Horizontal = 30 - moves everything to the right # - Ex: Scene_X_Horizontal = -30 - moves everything to the left # # - Ex: Scene_Y_Vertical = 30 - moves everything to the bottom # - Ex: Scene_Y_Vertical = -30 - moves everything to the top #============================================================================== # ** Important Note | # ------------------ # This script only supports up to 6 actors at a time to function properly. #============================================================================== #============================================================================== # ** Module: FG7::Simple_Formation_Menu #------------------------------------------------------------------------------ # This modules creates a static variable to be used within the script. #============================================================================== module FG7 module Simple_Formation_Menu #============================================================================== # -------------------- ALLOWED TO EDIT BELOW THIS LINE ---------------------- # #============================================================================== # Sets the value to change the "x" coordinates of the formation scene. # (This is needed if screen is resized higher - For flexibility) Scene_X_Horizontal = 0 # Sets the value to change the "y" coordinates of the formation scene. # (This is needed if screen is resized higher - For flexibility) Scene_Y_Vertical = 0 #============================================================================== # ---------- DO NOT EDIT BELOW THIS LINE (FOR ADVANCED USERS) --------------- # #============================================================================== end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # This is a super class of all windows within the game. #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * New Method: Draw Simple Status [Formation] #-------------------------------------------------------------------------- def draw_actor_formation_status(actor, x, y) draw_actor_name(actor, x, y - 5) draw_actor_level(actor, x, y - 14 + line_height * 2.2) draw_actor_icons(actor, x + 122, y + line_height * 1 - 37) draw_actor_hp(actor, x, y - 9 + line_height * 1) end end #============================================================================== # ** Window_MenuStatus #------------------------------------------------------------------------------ # This window displays party member status on the menu screen. #============================================================================== class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # * Added Method: Object Initialization #-------------------------------------------------------------------------- alias :fg7_simple_formation_menu_initialize :initialize def initialize(x, y) fg7_simple_formation_menu_initialize(x, y) # Set window opacity to "0" if on Formation scene self.opacity = 0 if SceneManager.scene_is?(Scene_Formation) end #-------------------------------------------------------------------------- # * Added/Override Method: Get Rectangle for Drawing Items #-------------------------------------------------------------------------- def item_rect(index) # Checks if on the Formation scene - draw new rect placement if SceneManager.scene_is?(Scene_Formation) rect = Rect.new rect.width = 135 rect.height = 67 rect.x = index % col_max * (item_width + spacing) rect.y = 106 + index / col_max * item_height rect # Since not on Formation scene - draw original rect placement. else rect = Rect.new rect.width = item_width rect.height = item_height rect.x = index % col_max * (item_width + spacing) rect.y = index / col_max * item_height rect end end #-------------------------------------------------------------------------- # * Alias Method: Get Column Max #-------------------------------------------------------------------------- alias :fg7_simple_formation_menu_col_max :col_max def col_max return 3 if SceneManager.scene_is?(Scene_Formation) fg7_simple_formation_menu_col_max end #-------------------------------------------------------------------------- # * Alias Method: Get Window Width #-------------------------------------------------------------------------- alias :fg7_simple_formation_menu_window_width :window_width def window_width return 620 if SceneManager.scene_is?(Scene_Formation) fg7_simple_formation_menu_window_width end #-------------------------------------------------------------------------- # * Alias Method: Get Window Height #-------------------------------------------------------------------------- alias :fg7_simple_formation_menu_window_height :window_height def window_height return Graphics.height + 300 if SceneManager.scene_is?(Scene_Formation) fg7_simple_formation_menu_window_height end #-------------------------------------------------------------------------- # * Alias Method: Get Number of Items #-------------------------------------------------------------------------- alias :fg7_simple_formation_menu_item_max :item_max def item_max return 6 if SceneManager.scene_is?(Scene_Formation) fg7_simple_formation_menu_item_max end #-------------------------------------------------------------------------- # * Alias Method: Get Item Height #-------------------------------------------------------------------------- alias :fg7_simple_formation_menu_item_height :item_height def item_height return 188 if SceneManager.scene_is?(Scene_Formation) fg7_simple_formation_menu_item_height end #-------------------------------------------------------------------------- # * Alias Method: Get Item Width #-------------------------------------------------------------------------- alias :fg7_simple_formation_menu_item_width :item_width def item_width return 140 if SceneManager.scene_is?(Scene_Formation) fg7_simple_formation_menu_item_width end #-------------------------------------------------------------------------- # * Override Method: Draw Item #-------------------------------------------------------------------------- def draw_item(index) # Checks if on the Formation scene - draw new placement if SceneManager.scene_is?(Scene_Formation) actor = $game_party.members[index] enabled = $game_party.battle_members.include?(actor) rect = item_rect(index) draw_item_background(index) draw_actor_face(actor, rect.x + 7, rect.y - 110 + line_height / 2) draw_actor_formation_status(actor, rect.x + 5, rect.y - 7 + line_height / 2) # Since not on Formation scene - draw original placement. else actor = $game_party.members[index] enabled = $game_party.battle_members.include?(actor) rect = item_rect(index) draw_item_background(index) draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled) draw_actor_simple_status(actor, rect.x + 108, rect.y + line_height / 2) end end end #============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # This class performs the menu screen processing. #============================================================================== class Scene_Menu < Scene_MenuBase #-------------------------------------------------------------------------- # * Override Method: [Formation] Command #-------------------------------------------------------------------------- def command_formation # Calls the new Formation scene SceneManager.call(Scene_Formation) end end #============================================================================== # ** Scene_Formation #------------------------------------------------------------------------------ # This class performs the item screen processing. #============================================================================== class Scene_Formation < Scene_MenuBase #-------------------------------------------------------------------------- # * New Method: Start Processing #-------------------------------------------------------------------------- def start super create_menustatus_bg_partymember1 create_menustatus_bg_partymember2 create_menustatus_bg_partymember3 create_menustatus_bg_partymember4 create_menustatus_bg_partymember5 create_menustatus_bg_partymember6 create_status_window end #-------------------------------------------------------------------------- # * Added/Edited Method: Create Status Window #-------------------------------------------------------------------------- def create_status_window x = 21 + FG7::Simple_Formation_Menu::Scene_X_Horizontal y = 9 + FG7::Simple_Formation_Menu::Scene_Y_Vertical @status_window = Window_MenuStatus.new(x, y) @status_window.select_last @status_window.activate @status_window.set_handler(:ok, method(:on_formation_ok)) @status_window.set_handler(:cancel, method(:on_formation_cancel)) end #-------------------------------------------------------------------------- # * New Method: Create MenuStatus Party Member 1 Background Window (Formation) #-------------------------------------------------------------------------- def create_menustatus_bg_partymember1 x = 24 + FG7::Simple_Formation_Menu::Scene_X_Horizontal y = 118 + FG7::Simple_Formation_Menu::Scene_Y_Vertical @menustatus_bg_window_partymember1 = Window_Base.new(x, y, 153, 85) end #-------------------------------------------------------------------------- # * New Method: Create MenuStatus Party Member 2 Background Window (Formation) #-------------------------------------------------------------------------- def create_menustatus_bg_partymember2 x = 196 + FG7::Simple_Formation_Menu::Scene_X_Horizontal y = 118 + FG7::Simple_Formation_Menu::Scene_Y_Vertical @menustatus_bg_window_partymember2 = Window_Base.new(x, y, 153, 85) end #-------------------------------------------------------------------------- # * New Method: Create MenuStatus Party Member 3 Background Window (Formation) #-------------------------------------------------------------------------- def create_menustatus_bg_partymember3 x = 368 + FG7::Simple_Formation_Menu::Scene_X_Horizontal y = 118 + FG7::Simple_Formation_Menu::Scene_Y_Vertical @menustatus_bg_window_partymember3 = Window_Base.new(x, y, 153, 85) end #-------------------------------------------------------------------------- # * New Method: Create MenuStatus Party Member 4 Background Window (Formation) #-------------------------------------------------------------------------- def create_menustatus_bg_partymember4 x = 24 + FG7::Simple_Formation_Menu::Scene_X_Horizontal y = 306 + FG7::Simple_Formation_Menu::Scene_Y_Vertical @menustatus_bg_window_partymember4 = Window_Base.new(x, y, 153, 85) end #-------------------------------------------------------------------------- # * New Method: Create MenuStatus Party Member 5 Background Window (Formation) #-------------------------------------------------------------------------- def create_menustatus_bg_partymember5 x = 196 + FG7::Simple_Formation_Menu::Scene_X_Horizontal y = 306 + FG7::Simple_Formation_Menu::Scene_Y_Vertical @menustatus_bg_window_partymember5 = Window_Base.new(x, y, 153, 85) end #-------------------------------------------------------------------------- # * New Method: Create MenuStatus Party Member 6 Background Window (Formation) #-------------------------------------------------------------------------- def create_menustatus_bg_partymember6 x = 368 + FG7::Simple_Formation_Menu::Scene_X_Horizontal y = 306 + FG7::Simple_Formation_Menu::Scene_Y_Vertical @menustatus_bg_window_partymember6 = Window_Base.new(x, y, 153, 85) end #-------------------------------------------------------------------------- # * Added Method: Formation [OK] #-------------------------------------------------------------------------- def on_formation_ok if @status_window.pending_index >= 0 $game_party.swap_order(@status_window.index, @status_window.pending_index) @status_window.pending_index = -1 @status_window.redraw_item(@status_window.index) @status_window.refresh else @status_window.pending_index = @status_window.index end @status_window.activate end #-------------------------------------------------------------------------- # * Added Method: Formation [Cancel] #-------------------------------------------------------------------------- def on_formation_cancel if @status_window.pending_index >= 0 @status_window.pending_index = -1 @status_window.activate else SceneManager.return end end end 复制代码
How to Use
Add this script in the script editor under in the "Materials" section and above "Main Process".
The instructions and setup for the script are held within the script header itself. No need to repeat here.
Click to expand...
Terms of Use
- Free to use in non-commercial projects and commercial projects
- Feel free to modify and improve the script. Credit is still required.
- Credit FamilyGamer7
Click to expand...
本贴来自国际rpgmaker官方论坛作者:FG7处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:
https://forums.rpgmakerweb.com/threads/fg7-simple-formation-menu.144735/
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x