扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 83|回复: 0

[转载发布] 关于菜单界面显示角色HP/MP数值排版的问题

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 170 天

    连续签到: 1 天

    [LV.7]常住居民III

    2547

    主题

    644

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    15662
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    18881

    灌水之王

    发表于 前天 14:14 | 显示全部楼层 |阅读模式
    图一使用了Yanfly的菜单脚本,包括技能、状态等界面在内,角色的HP/MP是以值槽右侧对其来显示的,也不存在如图二所示因为数字位数过长导致字体被严重压缩的情况

    图三则是使用了如下所示的 Galv's Menu Themes Engine 菜单主题脚本,当前值/最大值的位置如默认排版一样位于固定位置,因数字位数过长被压缩。

    特来请教一下如何在Galv的菜单脚本下实现这种右对齐的排版样式?

    另附galv的脚本:

    RUBY 代码
    [code]#------------------------------------------------------------------------------#
    #  Galv's Menu Themes Engine
    #------------------------------------------------------------------------------#
    #  For: RPGMAKER VX ACE
    #  Version 1.6
    #------------------------------------------------------------------------------#
    #  NOTICE: This script is NOT free for commercial use.
    #  Contact Galv via PM at one of the following forums:
    #  http://www.rpgmakervxace.net/
    #  http://forums.rpgmakerweb.com/
    #------------------------------------------------------------------------------#

    #------------------------------------------------------------------------------#
    #  2013-06-27 - Version 1.6 - compatibility fix for xp rate
    #  2013-06-11 - Version 1.5 - bug fixed with help menu text on incorrect menu
    #  2013-06-09 - Version 1.4 - bug missed with last fix... now fixed. I hope.
    #  2013-06-08 - Version 1.3 - fixed bug with hidden menu items
    #                           - made disabled buttons text transparent
    #  2013-04-16 - Version 1.2 - fixed a graphic object bug. Also included
    #                           - Killozappit's Cache Back script in the demo to
    #                           - help with lag on slower computers.
    #  2013-04-15 - Version 1.1 - fixed a bug with using items/skills on actors
    #  2013-04-15 - Version 1.0 - release
    #------------------------------------------------------------------------------#
    #  This script replaces the default menu and thus will not be compatible with
    #  other scripts that do the same. The new changes to the menu offer a few
    #  things such as:
    #  - Image controlled menu scenes (including moving backgrounds)
    #  - 'Themes' allow you to customize the look of the menu and change it in game
    #  - Other scenes can change with theme (eg. item, equip, custom scenes, etc.)
    #  - Customisable menu commands (icons, visibility switches, order, vocab)
    #  - Animated (sliding) commands
    #  - Help window for selected command
    #  - Information bar with gold, current location and play time
    #  - Modified actor status to include exp and tp (for actors with preserve tp)
    #------------------------------------------------------------------------------#

    #-------------------------------------------------------------------------------
    #  SCRIPT CALL
    #-------------------------------------------------------------------------------
    #
    #  theme("Theme_Name")      # Changes your menu theme to use the specified one.
    #
    #-------------------------------------------------------------------------------

    ($imported ||= {})["Galv_Menu_Themes"] = true
    module GMENU
        COMMAND_LIST = [# don't touch

    #-------------------------------------------------------------------------------
    #
    #  *  MENU - COMMAND SETUP
    #
    #-------------------------------------------------------------------------------
    #  Below list is your in-game menu commands. This replaces the database vocab
    #  names and adds more control over customizing your game menu.
    #-------------------------------------------------------------------------------

    # ["Menu Text", :command_type, :Scene, switch1, switch2, help txt, icon]
      ["Items",     :cmd, :Scene_Item,   0, 0, "View or use items from your inventory.",270],
      ["Skills",    :sel, :Scene_Skill,  0, 0, "View or use character skills.",112],
      ["Equip",     :sel, :Scene_Equip,  0, 0, "Equip your characters with weapons and armor.",170],
      ["Status",    :sel, :Scene_Status, 0, 0, "View status of your characters.",117],
      ["Formation", :sel, :Formation,    0, 0, "Change your character order",121],
      ["Save",      :cmd, :Scene_Save,   0, 0, "Record your game progress.",224],
      ["Game End",  :cmd, :Scene_End,    0, 0, "End or restart the game.",6],

      ["Example1",:cmd, 1, 0, 0, "Example command - calls common event 1",278],
      ["Example2",:cmd, 1, 0, 0, "Example command - calls common event 1",278],



      # Here are examples of adding functionality via script. The script code for
      # these examples is in the "Example Script Commands" script in the list.
      #["Gold!",  :cmd, :custom1, 0, 0, "Scripted custom symbol example",280],
      #["Levelup!",  :sel, :custom2, 0, 0, "Scripted custom symbol on actor select example",290],

    #-------------------------------------------------------------------------------
        ]# don't touch
    #-------------------------------------------------------------------------------
    #  INSTRUCTIONS
    #-------------------------------------------------------------------------------
    #  "Menu Text"........ the text used for the menu item
    #  :command_type...... :cmd - goes to the scene when menu item accessed.
    #                      :sel - select actor before going to the scene.
    #  scene.............. name of the scene as a symbol. eg. :Scene_Item  (*)
    #                      make this a number instead to call a common event.
    #  switch1............ if switch is OFF, item is disabled. 0 to not use
    #  switch2............ if switch is OFF, item will not appear. 0 to not use
    #  help txt........... text that appears at the top of the menu screen
    #  icon............... the icon id to use an icon next to your menu command
    #-------------------------------------------------------------------------------
    #  (*) Scripters can use a custom symbol here to do other functions by aliasing
    #  or overwriting methods found on
    #-------------------------------------------------------------------------------


    #-------------------------------------------------------------------------------
    #
    #  *  MENU SETTINGS
    #
    #-------------------------------------------------------------------------------


        SHOW_TP = true    # Show TP if actor has 'preserve tp' feature true or false

        ACTORS_SHOWN = 4  # Number of actors visible in the menu before scrolling

        DEFAULT_THEME = "Theme_Default"  # The theme your game will use to begin.


    #-------------------------------------------------------------------------------
    #  THEME SETUP - DEFAULT THEME
    #-------------------------------------------------------------------------------
        module Theme_Default

          # Gerenal Options
          FONT = "Arial"             # Font used throughout theme.
          FONT_SIZE = 21             # Font size used throughout theme.
          WINDOW_TONE = [22,52,72,0]# Color tone of scenes that use windowskins

          # Background
          BACK1_XY = [1,1]           # X,Y movement for background1 (default stars)
          BACK1_OPACITY = 190        # Background opacity

          BACK2_XY = [0,0]           # X,Y movement for background2 (default top bar)
          BACK2_OPACITY = 255        # Background opacity

          BACK3_XY = [0,0]       # X,Y movement for background2 (default bottom bar)
          BACK3_OPACITY = 255    # Background opacity

          SCENE_BACK_OPACITY = 255  # Background opacity for other scene background

          # Command Menu
          MENU_FONT = "Arial"        # Different font used for the menu text
          MENU_FONT_SIZE = 21        # Size of menu text
          MENU_TXT_COLOR = Color.new(255, 255, 255, 255)   # Color of menu text
          MENU_TXT_OUT = Color.new(27, 57, 97, 255)     # Color of menu text outline
          MENU_TXT_XY = [0,-2]      # X,Y offset for text in command menu
          MENU_ICON_XY = [35,1]     # X,Y offset for icons in command menu
          SLIDE_ICON = true         # true or false to slide icon with menu text
          SLIDE_SPEED = 5           # Speed the menu buttons slide in and out
          SLIDE_OFF = -30           # X Position of button when cursor not on it
          SLIDE_ON = 0            # X Position of button when cursor is on it
          MENU_Y_OFFSET = 45        # Distance Y from top of screen
          MENU_WIDTH = 170          # Width reserved for the main menu.

          # Help Window
          HELP_XY = [44,2]          # X,Y offset for help text
          HELP_TEXT_COLOR = Color.new(200, 235, 255, 255)# Color of help text

          # Game Info Window
          INFO_XY = [0,0]          # X,Y offset for info text
          GAME_INFO_TXT_COLOR = Color.new(200, 235, 255, 255)# Game Info text color
          CURRENCY_ICON = 262       # Icon used instead of currency vocab. 0 = vocab

          # Actor Status
          STAT_COLOR = Color.new(167, 223, 248, 255)# Color used for lvl,hp,mp
          GAUGEB_COLOR = Color.new(20, 20, 20, 255)# Color of gauge backs
          HP_COLOR1 = Color.new(74, 197, 61, 255)# Color for hp gauge gradient
          HP_COLOR2 = Color.new(169, 206, 89, 255)# Color for hp gauge gradient
          MP_COLOR1 = Color.new(5, 132, 179, 255)# Color for mp gauge gradient
          MP_COLOR2 = Color.new(40, 197, 255, 255)# Color for mp gauge gradient
          XP_COLOR1 = Color.new(88, 147, 174, 255)# Color for xp gauge gradient
          XP_COLOR2 = Color.new(133, 181, 203, 255)# Color for xp gauge gradient
          TP_COLOR1 = Color.new(255, 166, 12, 255)# Color for tp gauge gradient
          TP_COLOR2 = Color.new(255, 126, 12, 255)# Color for tp gauge gradient
          GAUGE_FONT = "VL Gothic Regular"  # Font used for hp/mp and amounts.
        end

    #-------------------------------------------------------------------------------
    #  CUSTOM THEMES
    #-------------------------------------------------------------------------------
    #  You can make your own custom menu themes and swap between them during the
    #  game or make them available for others to use. Each theme has it's own folder
    #  in your project located in /Graphics/GMenu/Theme_Name/
    #  For example the default theme is:
    #  /Graphics/GMenu/Theme_Default/
    #
    #  HOW TO MAKE A THEME:
    #  1. Make a duplicate of the /Theme_Default/ folder and rename it.
    #  2. Modify the graphics how you see fit, using the default as templates
    #  3. (Optional) You can use the theme_settings.txt file found in the template
    #     folder to create new settings for the theme. Copy the script from the
    #     file and paste it a new script position below this menu script. Change
    #     "Theme_Default" at the top to the name of your theme's folder.
    #  4. If you did that right, now in your game, you can use the script call:
    #     theme("Theme_Name")
    #     To change your menu theme during the game to any theme you have installed.
    #
    #  If you do not create your own settings script (step 3) for your custom theme,
    #  it will use the settings from Theme_Default.
    #-------------------------------------------------------------------------------

    #-------------------------------------------------------------------------------
    #  THEME SETUP - INNER SCENES
    #-------------------------------------------------------------------------------
    #  Inner scenes (such as item, equip, skills etc) can use the same Background
    #  (using BACK1 setting) as well as windowskin used in the current theme.
    #  List scenes below that you wish for this to occur.
    #-------------------------------------------------------------------------------
        SCENE_THEMES = [# don't touch
    #-------------------------------------------------------------------------------

          "Scene_Item",
          "Scene_Skill",
          "Scene_Equip",
          "Scene_Status",
          "Scene_Save",
          "Scene_End",
          "Scene_Party",
          "Scene_System",
          "Scene_Load",

          #"Scene_File",
          #"Scene_Load",
          #"Scene_Shop",
          #"Scene_Name",
          #"Scene_Gameover",
          #"Scene_Title",

    #-------------------------------------------------------------------------------
          ]# don't touch
    #-------------------------------------------------------------------------------
    #  In addition to this, the script will check the theme folder for any images.
    #  with the scene name (above) followed by "_Background" and "_Background2".
    #  For example if the following file is found in the theme folder:
    #  Scene_Item_Background.png (or jpg)
    #  It will use that image INSTEAD of Background.jpg for Background1. It will
    #  also look for Scene_Item_Background2.png (or jpg) which will appear above
    #  the first background. This background is static and does not move.
    #-------------------------------------------------------------------------------

    #-------------------------------------------------------------------------------
    #
    #  * END SETTINGS
    #
    #-------------------------------------------------------------------------------

    end# GMENU


    module Check_Theme
      def mtheme
        Object.const_get("GMENU").const_get($game_system.menu_theme)rescue
          GMENU::Theme_Default
      end
    end# Check_Theme


        #----------------------#
    #---|   GAME_INTERPERTER   |----------------------------------------------------
        #----------------------#

    class Game_Interpreter
      def theme(name)
        $game_system.menu_theme = name
      end
    end# Game_Interpreter


        #-----------#
    #---|   CACHE   |---------------------------------------------------------------
        #-----------#

    module Cache
      defself.gmenu(filename,theme)
        load_bitmap("Graphics/GMenu/" + theme + "/", filename)
      end
    end# Cache


        #-----------------#
    #---|   GAME_SYSTEM   |---------------------------------------------------------
        #-----------------#

    class Game_System
      attr_accessor :menu_theme

      alias gmenu_engine_gs_initialize initialize
      def initialize
        @menu_theme = GMENU::DEFAULT_THEME
        gmenu_engine_gs_initialize
      end
    end# Game_System


        #---------------#
    #---|   GAME_TEMP   |-----------------------------------------------------------
        #---------------#

    class Game_Temp
      attr_accessor :themed_scene
      attr_accessor :menuindexes

      alias gmenu_engine_gt_initialize initialize
      def initialize
        @themed_scene = false
        gmenu_engine_gt_initialize
      end
    end# Game_Temp


        #----------------#
    #---|   GAME_ACTOR   |----------------------------------------------------------
        #----------------#

    class Game_Actor < Game_Battler
      def xp_rate
        a = (exp.to_f - current_level_exp.to_f)
        b = (next_level_exp.to_f - current_level_exp.to_f)
        if exp > 0 && b > 0
          return a / b
        else
          return0
        end
      end
    end# Game_Actor < Game_Battler


        #----------------#
    #---|   SCENE_MENU   |----------------------------------------------------------
        #----------------#

    class Scene_Menu < Scene_MenuBase
      attr_accessor :command_window
      include Check_Theme

      # OVERWRITE
      def start
        super
        create_graphics
        create_help_window
        create_new_command_window
        create_gameinfo_window
        create_status_window
      end

    #---|   CREATE WINDOWS   |

      def create_help_window
        @help_window = Window_MenuHelp.new
      end

      # OVERWRITE
      def create_status_window
        @status_window = Window_MainMenuStatus.new(@command_window.width,
          @help_window.height,Graphics.height - @help_window.height -
          @gameinfo_window.height)
      end

      # OVERWRITE
      def create_new_command_window
        @command_window = Window_MenuCommand.new(0,@help_window.height)
        @command_window.help_window = @help_window
        menu_array = Array.new(GMENU::COMMAND_LIST)
        menu_array.each{ |cmd|
          handle = cmd[0].delete(' ').downcase.to_sym
          @command_window.set_handler(handle, method(cmd[1]))
        }
        @command_window.set_handler(:cancel, method(:return_scene))
      end

      def create_gameinfo_window
        @gameinfo_window = Window_GameInfo.new
        @gameinfo_window.x = 0
        @gameinfo_window.y = Graphics.height - @gameinfo_window.height
      end

    #---|   CREATE GRAPHICS   |

      def create_graphics
        create_background2
        create_background3
      end

      def create_background2
        @background2 = Plane.new
        @background2.bitmap = Cache.gmenu("Background2",$game_system.menu_theme)
        @background2.opacity = mtheme::BACK2_OPACITY
      end

      def create_background3
        @background3 = Plane.new
        @background3.bitmap = Cache.gmenu("Background3",$game_system.menu_theme)
        @background3.opacity = mtheme::BACK3_OPACITY
        @background3.oy = -Graphics.height
      end

    #---|   UPDATING   |

      def update
        super
        update_background2
        update_background3
        update_gameinfo
      end

      def update_background2
        @background2.ox -= mtheme::BACK2_XY[0]
        @background2.oy -= mtheme::BACK2_XY[1]
      end
      def update_background3
        @background3.ox -= mtheme::BACK3_XY[0]
        @background3.oy -= mtheme::BACK3_XY[1]
      end
      def update_gameinfo
        @gameinfo_window.refresh
      end

    #---|   FUNCTIONALITY   |

      alias gmenu_engine_sm_dispose_background dispose_background
      def dispose_background
        gmenu_engine_sm_dispose_background
        if@background2
          @background2.bitmap.dispose
          @background2.dispose
        end
        if@background3
          @background3.bitmap.dispose
          @background3.dispose
        end
      end

      def cmd
        cmd = $game_temp.menuindexes[@command_window.index]
        symbol = GMENU::COMMAND_LIST[cmd][2]
        ifGMENU::COMMAND_LIST[cmd][2].is_a?(Integer)
          common_event_command(GMENU::COMMAND_LIST[cmd][2])
        elsif custom_symbol(symbol)
          custom_on_command_ok(symbol)
        else
          SceneManager.call(GMENU::COMMAND_LIST[cmd][2])
        end
      end

      def common_event_command(id)
        $game_temp.reserve_common_event(id)
        SceneManager.return
      end

      def sel
        command_personal
      end

      # OVERWRITE
      def command_personal
        @status_window.select_last
        @status_window.activate
        @status_window.set_handler(:ok,     method(:on_personal_ok))
        @status_window.set_handler(:cancel, method(:on_personal_cancel))
      end

      # OVERWRITE
      def on_personal_ok
        cmd = $game_temp.menuindexes[@command_window.index]
        symbol = GMENU::COMMAND_LIST[cmd][2]
        if symbol == :Formation
          on_formation_ok
        elsif custom_symbol(symbol)
          custom_on_personal_ok(symbol)
        else
          SceneManager.call(symbol)
        end
      end

      def custom_symbol(symbol)
        # Alias/overwrite this method for custom symbols.
        # Make this method return true if symbol equals your custom symbol.
      end

      def custom_on_command_ok(symbol)
        # Alias/overwrite this method for custom symbols. (For 'ok' on command)
        # Add your functionality here including if symbol equals your custom symbol.
      end

      def custom_on_personal_ok(symbol)
        # Alias/overwrite this method for custom symbols. (For 'ok' on actor)
        # Add your functionality here including if symbol equals your custom symbol.
      end

      def custom_on_personal_cancel(symbol)
        # Alias/overwrite this method for custom symbols. (Cancelling on actor)
        # Add your cancel code here including if symbol equals your custom symbol.
      end

      # OVERWRITE
      def on_personal_cancel
        cmd = @command_window.index
        symbol = GMENU::COMMAND_LIST[cmd][2]
        if symbol == :Formation
          on_formation_cancel
        elsif custom_symbol(symbol)
          custom_on_personal_cancel(symbol)
        else
          @status_window.unselect
          @command_window.activate
        end
      end
    end# Scene_Menu < Scene_MenuBase


        #------------------------#
    #---|   WINDOW_MENUCOMMAND   |--------------------------------------------------
        #------------------------#

    class Window_MenuCommand < Window_Command

      #OVERWRITE
      def initialize(x,y)
        @menu_buttons = []
        super(x, y)
        select_last
        self.opacity = 0
      end

      def draw_item(index)
        @menu_buttons  0 && !$game_switches[cmd[4]]
          $game_temp.menuindexes  0 && !$game_switches[switch]
        case symbol
        when:Formation
          formation_enabled
        when:Scene_Save
          save_enabled
        else
          main_commands_enabled
        end
      end

      def make_command_list
        add_new_main_commands
      end

    end# Window_MenuCommand < Window_Command


        #----------------------#
    #---|   WINDOW_MENUSTATUS  |----------------------------------------------------
        #----------------------#

    class Window_MainMenuStatus < Window_MenuStatus
      include Check_Theme

      def initialize(x, y, h = 0)
        @height = h
        super(x, y)
        self.opacity = 0
      end

      def window_width
        Graphics.width - mtheme::MENU_WIDTH
      end

      def standard_padding
        return6
      end

      def window_height
        @height
      end

      def item_height
        (@height - 12) / GMENU::ACTORS_SHOWN
      end

      def draw_item(index)
        actor = $game_party.members[index]
        enabled = $game_party.battle_members.include?(actor)
        rect = item_rect(index)
        draw_item_background(index)
        draw_back_graphics(index,item_height,item_width,enabled)
        draw_gface(actor.face_name,actor.face_index,rect.x + 1,rect.y + 1,
          item_height - 2,enabled)
        draw_gsimple_status(actor, rect.x + 108, rect.y, item_height)
      end
    end


        #--------------------#
    #---|   WINDOW_MENUHELP  |------------------------------------------------------
        #--------------------#

    class Window_MenuHelp < Window_Help
      include Check_Theme

      def initialize
        super(1)
        self.opacity = 0
      end

      def standard_padding
        return6
      end

      def clear
        ind = $game_temp.menuindexes[SceneManager.scene.command_window.index]
        set_text(GMENU::COMMAND_LIST[ind][5])
      end

      def refresh
        contents.clear
        draw_text_ex(mtheme::HELP_XY[0], mtheme::HELP_XY[1], @text)
      end

      def draw_text_ex(x, y, text)
        reset_font_settings
        change_color(mtheme::HELP_TEXT_COLOR)
        self.contents.font.name = mtheme::FONT
        self.contents.font.size = mtheme::FONT_SIZE
        text = convert_escape_characters(text)
        pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
        process_character(text.slice!(0, 1), text, pos)until text.empty?
      end
    end


        #---------------------#
    #---|   WINDOW_GAMEINFO   |-----------------------------------------------------
        #---------------------#

    class Window_GameInfo < Window_Base
      include Check_Theme

      def initialize
        super(0, 0, Graphics.width, fitting_height(1))
        self.opacity = 0
        refresh
      end

      def standard_padding
        return6
      end

      def refresh
        contents.clear
        self.contents.font.name = mtheme::FONT
        self.contents.font.size = mtheme::FONT_SIZE
        draw_gld
        draw_location
        draw_playtime
      end

      def draw_gld
        value = $game_party.gold
        if mtheme::CURRENCY_ICON > 0
          i = draw_icon(mtheme::CURRENCY_ICON, contents.width / 4 - 43, -1, true)
          draw_currency_value(value,i,tx+4,ty,contents.width / 4 - 45)
        else
          draw_currency_value(value,Vocab::currency_unit,tx+4,ty,contents.width / 4 - 18)
        end
      end

      def tx
        mtheme::INFO_XY[0]
      end
      def ty
        mtheme::INFO_XY[1]
      end

      def draw_location
        change_color(mtheme::GAME_INFO_TXT_COLOR)
        draw_text(tx,ty,Graphics.width,line_height,$game_map.display_name,1)
      end

      def draw_playtime
        draw_text(tx,ty,Graphics.width - 20,line_height,time_text,2)
      end

      def time_text
        sprintf("%02d:%02d:%02d", (Graphics.frame_count / 60**2) / 60,
          Graphics.frame_count / 60**2 % 60,
          Graphics.frame_count / 60 % 60)
      end

      def draw_currency_value(value, unit, x, y, width)
        cx = text_size(unit).width
        change_color(mtheme::GAME_INFO_TXT_COLOR)
        draw_text(x, y, width - cx - 2, line_height, value, 2)
        change_color(system_color)
        draw_text(x, y, width, line_height, unit, 2)
      end

      defopen
        refresh
        super
      end
    end


        #-----------------#
    #---|   WINDOW_BASE   |---------------------------------------------------------
        #-----------------#

    class Window_Base < Window
      include Check_Theme

      alias galv_gmenu_engine_wb_initialize initialize
      def initialize(x, y, width, height)
        galv_gmenu_engine_wb_initialize(x, y, width, height)
        if$game_temp.themed_scene
          self.windowskin = Cache.gmenu("Windowskin",$game_system.menu_theme)rescue
            Cache.system("Window")
            set_theme_tone
        end
      end

      alias galv_gmenu_engine_wb_system_color system_color
      def system_color
        if$game_temp.themed_scene
          mtheme::STAT_COLOR
        else
          galv_gmenu_engine_wb_system_color
        end
      end

      alias galv_gmenu_engine_wb_gauge_back_color gauge_back_color
      def gauge_back_color
        if$game_temp.themed_scene
          mtheme::GAUGEB_COLOR
        else
          galv_gmenu_engine_wb_gauge_back_color
        end
      end

      def set_theme_tone
        a,b,c,d = mtheme::WINDOW_TONE
        self.tone.set(a,b,c,d)
      end

      alias galv_gmenu_engine_wb_update_tone update_tone
      def update_tone
        if$game_temp.themed_scene
          set_theme_tone
        else
          galv_gmenu_engine_wb_update_tone
        end
      end

      def draw_back_graphics(ind,height,width,enabled = true)
        if enabled
          bitmap = Cache.gmenu("ActorBackground",$game_system.menu_theme)
        else
          bitmap = Cache.gmenu("ActorBackgroundDisabled",$game_system.menu_theme)
        end
        rect = Rect.new(1,0,width - 2,bitmap.height + 2)
        y = (rect.y + height) * ind - (bitmap.height - height) - 2
        contents.blt(rect.x, y, bitmap, rect, 255)
        bitmap.dispose
      end

      def draw_gsimple_status(actor, x, y, height)
        contents.font.name = mtheme::FONT
        contents.font.size = mtheme::FONT_SIZE
        draw_actor_name(actor, x, y + height - 30)
        draw_glevel(actor, x, y + height - 30 - line_height * 1)
        draw_gicons(actor, x - 108, y + line_height * 2 + 3)
        draw_gclass(actor, x, y + height - 30)
        contents.font.size = 20
        contents.font.name = mtheme::GAUGE_FONT
        w = contents.width - 260
        h = (height - 80) / 2
        draw_ghp(actor, x + 140, y + h / 2 , w)
        draw_gmp(actor, x + 140, y + line_height - 4 + h,w)
        if actor.preserve_tp? && GMENU::SHOW_TP
          draw_gtp(actor, x + 75, y + line_height - 4 + h,40)
        end
        draw_gxp(actor, x + 6, y + height - 23, contents.width - 120)
      end

      def draw_gtp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.tp_rate,mtheme::TP_COLOR1,mtheme::TP_COLOR1)
        change_color(system_color)
        draw_text(x - 30, y + 7, 30, line_height, Vocab::tp_a,2)
        change_color(tp_color(actor))
        draw_text(x + width - 42, y + 3, 42, line_height, actor.tp.to_i, 2)
      end

      def draw_gxp(actor,x,y,width = 124)
        draw_xpgauge(x, y, width, actor.xp_rate, mtheme::XP_COLOR1, mtheme::XP_COLOR2)
      end

      def draw_xpgauge(x, y, width, rate, color1, color2)
        fill_w = (width * rate).to_i
        gauge_y = y + line_height - 8
        contents.fill_rect(x, gauge_y, width, 4, gauge_back_color)
        contents.gradient_fill_rect(x, gauge_y, fill_w, 4, color1, color2)
      end

      def draw_ghp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.hp_rate, mtheme::HP_COLOR1, mtheme::HP_COLOR2)
        change_color(system_color)
        draw_text(x - 30, y + 7, 30, line_height, Vocab::hp_a,2)
        draw_current_and_max_values(x, y + 3, width, actor.hp, actor.mhp,
          hp_color(actor), normal_color)
      end

      def draw_gmp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.mp_rate, mtheme::MP_COLOR1, mtheme::MP_COLOR2)
        change_color(system_color)
        draw_text(x - 30, y + 7, 30, line_height, Vocab::mp_a,2)
        draw_current_and_max_values(x, y + 3, width, actor.mp, actor.mmp,
          mp_color(actor), normal_color)
      end

      def draw_gicons(actor, x, y, width = 96)
        icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
        icons.each_with_index{|n, i| draw_icon(n, x, y - 16 * i)}
      end

      def draw_gface(face_name, face_index, x, y, height, enabled = true)
        bitmap = Cache.face(face_name)
        h = [height,96].min - 1
        y_offset = GMENU::ACTORS_SHOWN > 4 ? 1.25 : 1
        h2 = 96 - h * y_offset
        rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96 + h2, 96, h)
        contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
        bitmap.dispose
      end

      def draw_glevel(actor, x, y)
        wid = Graphics.width - 300
        change_color(system_color)
        draw_text(x, y, wid, line_height, Vocab::level_a + " " + actor.level.to_s, 0)
      end

      def draw_gclass(actor, x, y)
        change_color(normal_color)
        draw_text(x, y, Graphics.width - 290, line_height, actor.class.name,2)
      end
    end# Window_Base < Window


        #-----------------#
    #---|   SCENEMANAGER  |---------------------------------------------------------
        #-----------------#

    module SceneManager
      class = mtheme::SLIDE_ON
          @btn.x += mtheme::SLIDE_SPEED
          @text.x += mtheme::SLIDE_SPEED
          @icon.x += mtheme::SLIDE_SPEED if mtheme::SLIDE_ICON
        else
          @btn.opacity = 160
          returnif@btn.x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-1-9 17:40 , Processed in 0.148830 second(s), 50 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表