赞 | 91 |
VIP | 350 |
好人卡 | 311 |
积分 | 101 |
经验 | 150139 |
最后登录 | 2024-7-17 |
在线时间 | 5020 小时 |
Lv4.逐梦者 (版主) 无限の剣制
- 梦石
- 0
- 星屑
- 10104
- 在线时间
- 5020 小时
- 注册时间
- 2013-2-28
- 帖子
- 5030
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 Sion 于 2014-4-17 17:55 编辑
这个脚本里显示装备的那栏只能显示8个装备,我希望能把更多的装备显示在第二列。
就这样
#============================================================================== # # ▼ Yanfly Engine Ace - Ace Status Menu v1.01 # -- Last Updated: 2011.12.26 # -- Level: Normal # -- Requires: n/a # #============================================================================== $imported = {} if $imported.nil? $imported["YEA-StatusMenu"] = true #============================================================================== # ▼ Updates # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 2011.12.26 - Compatibility Update: Rename Actor # 2011.12.23 - Started Script and Finished. # #============================================================================== # ▼ Introduction # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # This script changes the status screen completely to something the player can # interact with more and be able to view actor data with more clarity. The # player is able to view the general information for an actor (parameters and # experience), a parameters bar graph, the various hidden extra parameters # (named properties in the script), and a customizable biography for the actor. # Also with this script, biographies can be changed at any time using a script # call to add more of a personal touch to characters. # #============================================================================== # ▼ Instructions # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save. # # ----------------------------------------------------------------------------- # Script Calls - These commands are used with script calls. # ----------------------------------------------------------------------------- # $game_actors[x].description = string # Changes the biography description for actor x to that of the string. Use \n # to designate linebreaks in the string. If you wish to use text codes, write # them in the strings as \\n[2] or \\c[3] to make them work properly. # #============================================================================== # ▼ Compatibility # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that # it will run with RPG Maker VX without adjusting. # #============================================================================== module YEA module STATUS #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Command Window Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # This section adjusts the commands that appear in the command window used # for the status screen. Rearrange the commands, add new ones, remove them # as you see fit. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- COMMANDS =[ # The order at which the menu items are shown. # [ :command, "Display"], [ :general, "基本信息"], # [ :parameters, "数据"], [ :properties, "详细属性"], [ :biography, "人物传记"], [ :custom1, "已学技能"], [ :custom2, "当前装备"], # [ :custom3, "Class"], [ :rename, "Rename"], # Requires YEA - Rename Actor [ :retitle, "Retitle"], # Requires YEA - Rename Actor ] # Do not remove this. #-------------------------------------------------------------------------- # - Status Custom Commands - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # For those who use scripts to that may produce unique effects for the # status menu, use this hash to manage the custom commands for the Status # Command Window. You can disable certain commands or prevent them from # appearing by using switches. If you don't wish to bind them to a switch, # set the proper switch to 0 for it to have no impact. #-------------------------------------------------------------------------- CUSTOM_STATUS_COMMANDS ={ # :command => [EnableSwitch, ShowSwitch, Handler Method, Window Draw], :custom1 => [ 0, 0, :command_name1, :draw_custom1], :custom2 => [ 0, 0, :command_name2, :draw_custom2], :custom3 => [ 0, 0, :command_name3, :draw_custom3], } # Do not remove this. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - General Window Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # These settings adjust the way the general window visually appears. # Not many changes need to be done here other than vocab changes. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- PARAMETERS_VOCAB = "数据" # Title used for Parameters. EXPERIENCE_VOCAB = "经验值" # Title used for Experience. NEXT_TOTAL_VOCAB = "下次升级总经验值" # Label used for total experience. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Parameters Window Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # These settings adjust the way the parameters window visually appears. # Each of the stats have a non-window colour. Adjust them as you see fit. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- PARAM_COLOUR ={ # ParamID => [:stat, Colour1, Colour2 ], 2 => [ :atk, Color.new(225, 100, 100), Color.new(240, 150, 150)], 3 => [ :def, Color.new(250, 150, 30), Color.new(250, 180, 100)], 4 => [ :mat, Color.new( 70, 140, 200), Color.new(135, 180, 230)], 5 => [ :mdf, Color.new(135, 130, 190), Color.new(170, 160, 220)], 6 => [ :agi, Color.new( 60, 180, 80), Color.new(120, 200, 120)], 7 => [ :luk, Color.new(255, 240, 100), Color.new(255, 250, 200)], } # Do not remove this. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Properties Window Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # These settings adjust the way the properties window visually appears. # The properties have abbreviations, but leaving them as such makes things # confusing (as it's sometimes hard to figure out what the abbreviations # mean). Change the way the appear, whether or not they appear, and what # order they will appear in. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- PROPERTIES_FONT_SIZE = 16 # Font size used for properties. # These are the properties that appear in column 1. PROPERTIES_COLUMN1 =[ [:hit, "命中率"], [:eva, "闪避率"], [:cri, "暴击率"], [:cnt, "反击率"], [:tgr, "仇恨值"], [:cev, "必杀闪避率"], [:mev, "魔法闪避率"], [:mrf, "魔法反射率"], ] # Do not remove this. # These are the properties that appear in column 2. PROPERTIES_COLUMN2 =[ [:hrg, "生命恢复"], [:mrg, "魔法再生"], [:trg, "TP恢复"], [:pha, "物品效果率"], [:exr, "经验获得率"], [:rec, "恢复效果"], [:grd, "防御效果"], [:tcr, "TP恢复率"], ] # Do not remove this. # These are the properties that appear in column 3. PROPERTIES_COLUMN3 =[ #~ [:hcr, "士兵消费伤害"], # Requires YEA - Skill Cost Manager [:mcr, "魔法伤害效果"], [:tcr, "特技伤害效果"], # Requires YEA - Skill Cost Manager #~ [:cdr, "硬直伤害"], # Requires YEA - Skill Restrictions #~ [:wur, "激励伤害"], # Requires YEA - Skill Restrictions [:pdr, "物理伤害效果"], [:mdr, "魔法伤害效果"], [:fdr, "基本伤害效果"], ] # Do not remove this. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Biography Window Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # These settings adjust the way the biography appears including the title # used at the top, the font size, and whatnot. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- BIOGRAPHY_NICKNAME_TEXT = "%s · %s" # How the nickname will appear. BIOGRAPHY_NICKNAME_SIZE = 32 # Size of the font used. end # STATUS end # YEA #============================================================================== # ▼ Editting anything past this point may potentially result in causing # computer damage, incontinence, explosion of user's head, coma, death, and/or # halitosis so edit at your own risk. #============================================================================== #============================================================================== # ■ Numeric #============================================================================== class Numeric #-------------------------------------------------------------------------- # new method: group_digits #-------------------------------------------------------------------------- unless $imported["YEA-CoreEngine"] def group; return self.to_s; end end # $imported["YEA-CoreEngine"] end # Numeric #============================================================================== # ■ Game_Temp #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :scene_status_index attr_accessor :scene_status_oy end # Game_Temp #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # new method: description= #-------------------------------------------------------------------------- def description=(text) @description = text end #-------------------------------------------------------------------------- # overwrite method: description #-------------------------------------------------------------------------- def description return @description unless @description.nil? return actor.description end end # Game_Actor #============================================================================== # ■ Window_StatusCommand #============================================================================== class Window_StatusCommand < Window_Command #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :item_window #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(dx, dy) super(dx, dy) [url=home.php?mod=space&uid=95897]@actor[/url] = nil end #-------------------------------------------------------------------------- # window_width #-------------------------------------------------------------------------- def window_width; return 160; end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(actor) return if [url=home.php?mod=space&uid=95897]@actor[/url] == actor [url=home.php?mod=space&uid=95897]@actor[/url] = actor refresh end #-------------------------------------------------------------------------- # visible_line_number #-------------------------------------------------------------------------- def visible_line_number; return 4; end #-------------------------------------------------------------------------- # ok_enabled? #-------------------------------------------------------------------------- def ok_enabled? return handle?(current_symbol) end #-------------------------------------------------------------------------- # make_command_list #-------------------------------------------------------------------------- def make_command_list return unless @actor for command in YEA::STATUS::COMMANDS case command[0] #--- Default --- when :general, :parameters, :properties, :biography add_command(command[1], command[0]) #--- Yanfly Engine Ace --- when :rename next unless $imported["YEA-RenameActor"] add_command(command[1], command[0], @actor.rename_allow?) when :retitle next unless $imported["YEA-RenameActor"] add_command(command[1], command[0], @actor.retitle_allow?) #--- Custom Commands --- else process_custom_command(command) end end if !$game_temp.scene_status_index.nil? select($game_temp.scene_status_index) self.oy = $game_temp.scene_status_oy end $game_temp.scene_status_index = nil $game_temp.scene_status_oy = nil end #-------------------------------------------------------------------------- # process_ok #-------------------------------------------------------------------------- def process_ok $game_temp.scene_status_index = index $game_temp.scene_status_oy = self.oy super end #-------------------------------------------------------------------------- # process_custom_command #-------------------------------------------------------------------------- def process_custom_command(command) return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0]) show = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][1] continue = show <= 0 ? true : $game_switches[show] return unless continue text = command[1] switch = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][0] enabled = switch <= 0 ? true : $game_switches[switch] add_command(text, command[0], enabled) end #-------------------------------------------------------------------------- # update #-------------------------------------------------------------------------- def update super update_item_window end #-------------------------------------------------------------------------- # update_item_window #-------------------------------------------------------------------------- def update_item_window return if @item_window.nil? return if @current_index == current_symbol @current_index = current_symbol @item_window.refresh end #-------------------------------------------------------------------------- # item_window= #-------------------------------------------------------------------------- def item_window=(window) @item_window = window update end #-------------------------------------------------------------------------- # update_help #-------------------------------------------------------------------------- def update_help return if @actor.nil? @help_window.set_text("L,R键切换角色")#(@actor.actor.description) end end # Window_StatusCommand #============================================================================== # ■ Window_StatusActor #============================================================================== class Window_StatusActor < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(dx, dy) super(dx, dy, window_width, fitting_height(4)) @actor = nil end #-------------------------------------------------------------------------- # window_width #-------------------------------------------------------------------------- def window_width; return Graphics.width - 160; end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(actor) return if @actor == actor @actor = actor refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh contents.clear return unless @actor draw_actor_face(@actor, 0, 0) draw_actor_simple_status(@actor, 108, line_height / 2) end end # Window_StatusActor #============================================================================== # ■ Window_StatusItem #============================================================================== class Window_StatusItem < Window_Base #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(dx, dy, command_window) super(dx, dy, Graphics.width, Graphics.height - dy) @command_window = command_window @actor = nil refresh end #-------------------------------------------------------------------------- # actor= #-------------------------------------------------------------------------- def actor=(actor) return if @actor == actor @actor = actor refresh end #-------------------------------------------------------------------------- # refresh #-------------------------------------------------------------------------- def refresh contents.clear reset_font_settings return unless @actor draw_window_contents end #-------------------------------------------------------------------------- # draw_window_contents #-------------------------------------------------------------------------- def draw_window_contents case @command_window.current_symbol when :general draw_actor_general when :parameters draw_parameter_graph when :properties draw_properties_list when :biography, :rename, :retitle draw_actor_biography else draw_custom end end #-------------------------------------------------------------------------- # draw_actor_general #-------------------------------------------------------------------------- def draw_actor_general change_color(system_color) text = YEA::STATUS::PARAMETERS_VOCAB draw_text(0, 0, contents.width/2, line_height, text, 1) text = YEA::STATUS::EXPERIENCE_VOCAB draw_text(contents.width/2, 0, contents.width/2, line_height, text, 1) draw_general_parameters draw_general_experience end #-------------------------------------------------------------------------- # draw_general_parameters #-------------------------------------------------------------------------- def draw_general_parameters dx = 24 dy = line_height / 2 draw_actor_level(dx, line_height*1+dy, contents.width/2 - 24) draw_actor_param(0, dx, line_height*2+dy, contents.width/2 - 24) draw_actor_param(1, dx, line_height*3+dy, contents.width/2 - 24) draw_actor_param(2, dx, line_height*4+dy, contents.width/4 - 12) draw_actor_param(4, dx, line_height*5+dy, contents.width/4 - 12) draw_actor_param(6, dx, line_height*6+dy, contents.width/4 - 12) dx += contents.width/4 - 12 draw_actor_param(3, dx, line_height*4+dy, contents.width/4 - 12) draw_actor_param(5, dx, line_height*5+dy, contents.width/4 - 12) draw_actor_param(7, dx, line_height*6+dy, contents.width/4 - 12) end #-------------------------------------------------------------------------- # draw_actor_level #-------------------------------------------------------------------------- def draw_actor_level(dx, dy, dw) colour = Color.new(0, 0, 0, translucent_alpha/2) rect = Rect.new(dx+1, dy+1, dw-2, line_height-2) contents.fill_rect(rect, colour) change_color(system_color) draw_text(dx+4, dy, dw-8, line_height, Vocab::level) change_color(normal_color) draw_text(dx+4, dy, dw-8, line_height, @actor.level.group, 2) end #-------------------------------------------------------------------------- # draw_actor_param #-------------------------------------------------------------------------- def draw_actor_param(param_id, dx, dy, dw) colour = Color.new(0, 0, 0, translucent_alpha/2) rect = Rect.new(dx+1, dy+1, dw-2, line_height-2) contents.fill_rect(rect, colour) change_color(system_color) draw_text(dx+4, dy, dw-8, line_height, Vocab::param(param_id)) change_color(normal_color) draw_text(dx+4, dy, dw-8, line_height, @actor.param(param_id).group, 2) end #-------------------------------------------------------------------------- # draw_general_experience #-------------------------------------------------------------------------- def draw_general_experience if @actor.max_level? s1 = @actor.exp.group s2 = "-------" s3 = "-------" else s1 = @actor.exp.group s2 = (@actor.next_level_exp - @actor.exp).group s3 = @actor.next_level_exp.group end s_next = sprintf(Vocab::ExpNext, Vocab::level) total_next_text = sprintf(YEA::STATUS::NEXT_TOTAL_VOCAB, Vocab::level) change_color(system_color) dx = contents.width/2 + 12 dy = line_height * 3 / 2 dw = contents.width/2 - 36 draw_text(dx, dy + line_height * 0, dw, line_height, Vocab::ExpTotal) draw_text(dx, dy + line_height * 2, dw, line_height, s_next) draw_text(dx, dy + line_height * 4, dw, line_height, total_next_text) change_color(normal_color) draw_text(dx, dy + line_height * 1, dw, line_height, s1, 2) draw_text(dx, dy + line_height * 3, dw, line_height, s2, 2) draw_text(dx, dy + line_height * 5, dw, line_height, s3, 2) end #-------------------------------------------------------------------------- # draw_parameter_graph #-------------------------------------------------------------------------- def draw_parameter_graph draw_parameter_title dy = line_height * 3/2 maximum = 1 minimum = @actor.param_max(2) for i in 2..7 maximum = [@actor.param(i), maximum].max minimum = [@actor.param(i), minimum].min end maximum += minimum * 0.33 unless maximum == minimum for i in 2..7 rate = calculate_rate(maximum, minimum, i) dy = line_height * i - line_height/2 draw_param_gauge(i, dy, rate) change_color(system_color) draw_text(28, dy, contents.width - 56, line_height, Vocab::param(i)) dw = (contents.width - 48) * rate - 8 change_color(normal_color) draw_text(28, dy, dw, line_height, @actor.param(i).group, 2) end end #-------------------------------------------------------------------------- # calculate_rate #-------------------------------------------------------------------------- def calculate_rate(maximum, minimum, param_id) return 1.0 if maximum == minimum rate = (@actor.param(param_id).to_f - minimum) / (maximum - minimum).to_f rate *= 0.67 rate += 0.33 return rate end #-------------------------------------------------------------------------- # draw_param_gauge #-------------------------------------------------------------------------- def draw_param_gauge(param_id, dy, rate) dw = contents.width - 48 colour1 = param_gauge1(param_id) colour2 = param_gauge2(param_id) #~ draw_gauge(24, dy, dw, rate, colour1, colour2) end #-------------------------------------------------------------------------- # param_gauge1 #-------------------------------------------------------------------------- def param_gauge1(param_id) return YEA::STATUS::PARAM_COLOUR[param_id][1] end #-------------------------------------------------------------------------- # param_gauge2 #-------------------------------------------------------------------------- def param_gauge2(param_id) return YEA::STATUS::PARAM_COLOUR[param_id][2] end #-------------------------------------------------------------------------- # draw_parameter_title #-------------------------------------------------------------------------- def draw_parameter_title colour = Color.new(0, 0, 0, translucent_alpha/2) rect = Rect.new(0, 0, contents.width, contents.height) contents.fill_rect(rect, colour) change_color(system_color) text = YEA::STATUS::PARAMETERS_VOCAB draw_text(0, line_height/3, contents.width, line_height, text, 1) end #-------------------------------------------------------------------------- # draw_properties_list #-------------------------------------------------------------------------- def draw_properties_list contents.font.size = YEA::STATUS::PROPERTIES_FONT_SIZE draw_properties_column1 draw_properties_column2 draw_properties_column3 reset_font_settings end #-------------------------------------------------------------------------- # draw_properties_column1 #-------------------------------------------------------------------------- def draw_properties_column1 dx = 24 - 16 dw = (contents.width - 24) / 3 - 24+20 dy = 0 for property in YEA::STATUS::PROPERTIES_COLUMN1 dy = draw_property(property, dx, dy, dw) end end #-------------------------------------------------------------------------- # draw_properties_column2 #-------------------------------------------------------------------------- def draw_properties_column2 dx = 24 + (contents.width - 24) / 3 - 8 dw = (contents.width - 24) / 3 - 24+20 dy = 0 for property in YEA::STATUS::PROPERTIES_COLUMN2 dy = draw_property(property, dx, dy, dw) end end #-------------------------------------------------------------------------- # draw_properties_column3 #-------------------------------------------------------------------------- def draw_properties_column3 dx = 24 + (contents.width - 24) / 3 * 2 dw = (contents.width - 24) / 3 - 24+20 dy = 0 for property in YEA::STATUS::PROPERTIES_COLUMN3 dy = draw_property(property, dx, dy, dw) end end #-------------------------------------------------------------------------- # draw_property #-------------------------------------------------------------------------- def draw_property(property, dx, dy, dw) case property[0] #--- when :hit fmt = "%1.1f%%" #"%1.1f%%" value = sprintf(fmt, @actor.hit * 100) when :eva fmt = "%1.1f%%" value = sprintf(fmt, @actor.eva * 100) when :cri fmt = "%1.1f%%" value = sprintf(fmt, @actor.cri * 100) when :cev fmt = "%1.1f%%" value = sprintf(fmt, @actor.cev * 100) when :mev fmt = "%1.1f%%" value = sprintf(fmt, @actor.mev * 100) when :mrf fmt = "%1.1f%%" value = sprintf(fmt, @actor.mrf * 100) when :cnt fmt = "%1.1f%%" value = sprintf(fmt, @actor.cnt * 100) when :hrg fmt = "%1.1f" value = sprintf(fmt, @actor.hrg * @actor.mhp) when :mrg fmt = "%1.1f" value = sprintf(fmt, @actor.mrg * @actor.mmp) when :trg fmt = "%1.1f" value = sprintf(fmt, @actor.trg * 100) when :tgr fmt = "%1.1f%%" value = sprintf(fmt, @actor.tgr * 100 )#+ 100) when :grd fmt = "%1.1f%%" value = sprintf(fmt, @actor.grd * 100) when :rec fmt = "%1.1f%%" value = sprintf(fmt, @actor.rec * 100) when :pha fmt = "%1.1f%%" value = sprintf(fmt, @actor.pha * 100) when :mcr fmt = "%1.1f%%" value = sprintf(fmt, @actor.mcr * 100) when :tcr fmt = "%1.1f%%" value = sprintf(fmt, @actor.tcr * 100) when :pdr fmt = "%1.1f%%" value = sprintf(fmt, @actor.pdr * 100) when :mdr fmt = "%1.1f%%" value = sprintf(fmt, @actor.mdr * 100) when :fdr fmt = "%1.1f%%" value = sprintf(fmt, @actor.fdr * 100) when :exr fmt = "%1.1f%%" value = sprintf(fmt, @actor.exr * 100) when :hcr return dy unless $imported["YEA-SkillCostManager"] fmt = "%1.1f%%" value = sprintf(fmt, @actor.hcr * 100) when :tcr return dy unless $imported["YEA-SkillCostManager"] fmt = "%1.1f%%" value = sprintf(fmt, @actor.tcr * 100) when :gcr return dy unless $imported["YEA-SkillCostManager"] fmt = "%1.1f%%" value = sprintf(fmt, @actor.gcr * 100) when :cdr return dy unless $imported["YEA-SkillRestrictions"] fmt = "%1.1f%%" value = sprintf(fmt, @actor.cdr * 100) when :wur return dy unless $imported["YEA-SkillRestrictions"] fmt = "%1.1f%%" value = sprintf(fmt, @actor.wur * 100) #--- else; return dy end colour = Color.new(0, 0, 0, translucent_alpha/2) rect = Rect.new(dx+1, dy+1, dw-2, line_height-2) contents.fill_rect(rect, colour) change_color(system_color) draw_text(dx+4, dy, dw-8, line_height, property[1], 0) change_color(normal_color) draw_text(dx+4, dy, dw-8, line_height, value, 2) return dy + line_height end #-------------------------------------------------------------------------- # draw_actor_biography #-------------------------------------------------------------------------- def draw_actor_biography fmt = YEA::STATUS::BIOGRAPHY_NICKNAME_TEXT text = sprintf(fmt, @actor.name, @actor.nickname) contents.font.size = YEA::STATUS::BIOGRAPHY_NICKNAME_SIZE draw_text(0, 0, contents.width, line_height*2, text, 1) reset_font_settings draw_text_ex(24, line_height*2, @actor.description) end #-------------------------------------------------------------------------- # draw_custom #-------------------------------------------------------------------------- def draw_custom current_symbol = @command_window.current_symbol return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(current_symbol) method(YEA::STATUS::CUSTOM_STATUS_COMMANDS[current_symbol][3]).call end #-------------------------------------------------------------------------- # draw_custom1 #-------------------------------------------------------------------------- def draw_custom1 dx = 0; dy = 0 for skill in @actor.skills next if skill.nil? next unless @actor.added_skill_types.include?(skill.stype_id) draw_item_name(skill, dx, dy) dx = dx == contents.width / 2 + 16 ? 0 : contents.width / 2 + 16 dy += line_height if dx == 0 return if dy + line_height > contents.height end end #-------------------------------------------------------------------------- # draw_custom2 #-------------------------------------------------------------------------- def draw_custom2 dx = 4; dy = 0; slot_id = 0 for equip in @actor.equips change_color(system_color) text = Vocab.etype(@actor.equip_slots[slot_id]) draw_text(dx, dy, contents.width - dx, line_height, text) reset_font_settings draw_item_name(equip, dx+92, dy) unless equip.nil? slot_id += 1 dy += line_height break if dy + line_height > contents.height end dw = Graphics.width * 2 / 5 - 24 dx = contents.width - dw; dy = 0 param_id = 0 8.times do colour = Color.new(0, 0, 0, translucent_alpha/2) rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2) contents.fill_rect(rect, colour) size = $imported["YEA-AceEquipEngine"] ? YEA::EQUIP::STATUS_FONT_SIZE : 20 contents.font.size = size change_color(system_color) draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id)) change_color(normal_color) dwa = (Graphics.width * 2 / 5 - 2) / 2 draw_text(dx +80, dy, dwa, line_height, @actor.param(param_id).group, 2) reset_font_settings #~ change_color(system_color) #~ draw_text(dx + dwa, dy, 22, line_height, "→", 1) param_id += 1 dy += line_height break if dy + line_height > contents.height end end #-------------------------------------------------------------------------- # draw_custom3 #-------------------------------------------------------------------------- def draw_custom3 return unless $imported["YEA-ClassSystem"] data = [] for class_id in YEA::CLASS_SYSTEM::CLASS_ORDER next if $data_classes[class_id].nil? item = $data_classes[class_id] next unless @actor.unlocked_classes.include?(item.id) or YEA::CLASS_SYSTEM::DEFAULT_UNLOCKS.include?(item.id) data.push(item) end dx = 0; dy = 0; class_index = 0 for class_id in data item = data[class_index] reset_font_settings if item == @actor.class change_color(text_color(YEA::CLASS_SYSTEM::CURRENT_CLASS_COLOUR)) elsif item == @actor.subclass change_color(text_color(YEA::CLASS_SYSTEM::SUBCLASS_COLOUR)) else change_color(normal_color) end icon = item.icon_index draw_icon(icon, dx, dy) text = item.name draw_text(24, dy, contents.width-24, line_height, text) next if YEA::CLASS_SYSTEM::MAINTAIN_LEVELS level = @actor.class_level(item.id) contents.font.size = YEA::CLASS_SYSTEM::LEVEL_FONT_SIZE text = sprintf(YEA::CLASS_SYSTEM::CLASS_LEVEL, level.group) dwa = contents.width - (Graphics.width * 2 / 5 - 24) - 28 draw_text(dx, dy, dwa, line_height, text, 2) class_index += 1 dy += line_height break if dy + line_height > contents.height end dw = Graphics.width * 2 / 5 - 24 dx = contents.width - dw; dy = 0 param_id = 0 8.times do colour = Color.new(0, 0, 0, translucent_alpha/2) rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2) contents.fill_rect(rect, colour) contents.font.size = YEA::CLASS_SYSTEM::PARAM_FONT_SIZE change_color(system_color) draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id)) change_color(normal_color) dwa = (Graphics.width * 2 / 5 - 2) / 2 draw_text(dx, dy, dwa, line_height, @actor.param(param_id).group, 2) reset_font_settings change_color(system_color) draw_text(dx + dwa, dy, 22, line_height, "→", 1) param_id += 1 dy += line_height break if dy + line_height > contents.height end end end # Window_StatusItem #============================================================================== # ■ Scene_Status #============================================================================== class Scene_Status < Scene_MenuBase #-------------------------------------------------------------------------- # start #-------------------------------------------------------------------------- def start super create_help_window create_command_window create_status_window create_item_window relocate_windows end #-------------------------------------------------------------------------- # create_command_window #-------------------------------------------------------------------------- def create_command_window wy = @help_window.height @command_window = Window_StatusCommand.new(0, wy) @command_window.viewport = @viewport @command_window.actor = @actor @command_window.help_window = @help_window @command_window.set_handler(:cancel, method(:return_scene)) @command_window.set_handler(:pagedown, method(:next_actor)) @command_window.set_handler(:pageup, method(:prev_actor)) process_custom_status_commands end #-------------------------------------------------------------------------- # process_custom_status_commands #-------------------------------------------------------------------------- def process_custom_status_commands for command in YEA::STATUS::COMMANDS next unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0]) called_method = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][2] @command_window.set_handler(command[0], method(called_method)) end end #-------------------------------------------------------------------------- # create_status_window #-------------------------------------------------------------------------- def create_status_window wy = @help_window.height @status_window = Window_StatusActor.new(@command_window.width, wy) @status_window.viewport = @viewport @status_window.actor = @actor end #-------------------------------------------------------------------------- # create_item_window #-------------------------------------------------------------------------- def create_item_window dy = @command_window.y + @command_window.height @item_window = Window_StatusItem.new(0, dy, @command_window) @item_window.viewport = @viewport @item_window.actor = @actor @command_window.item_window = @item_window end #-------------------------------------------------------------------------- # relocate_windows #-------------------------------------------------------------------------- def relocate_windows return unless $imported["YEA-AceMenuEngine"] case Menu.help_window_location when 0 # Top @help_window.y = 0 @command_window.y = @help_window.height @item_window.y = @command_window.y + @command_window.height when 1 # Middle @command_window.y = 0 @help_window.y = @command_window.height @item_window.y = @help_window.y + @help_window.height else # Bottom @command_window.y = 0 @item_window.y = @command_window.height @help_window.y = @item_window.y + @item_window.height end @status_window.y = @command_window.y end #-------------------------------------------------------------------------- # on_actor_change #-------------------------------------------------------------------------- def on_actor_change @command_window.actor = @actor @status_window.actor = @actor @item_window.actor = @actor @command_window.activate end #-------------------------------------------------------------------------- # new method: command_name1 #-------------------------------------------------------------------------- def command_name1 SceneManager.call(Scene_Skill) end #-------------------------------------------------------------------------- # new method: command_name2 #-------------------------------------------------------------------------- def command_name2 SceneManager.call(Scene_Equip) end #-------------------------------------------------------------------------- # new method: command_name3 #-------------------------------------------------------------------------- def command_name3 unless $imported["YEA-ClassSystem"] @command_window.activate return end SceneManager.call(Scene_Class) end end # Scene_Status #============================================================================== # # ▼ End of File # #==============================================================================
#==============================================================================
#
# ▼ Yanfly Engine Ace - Ace Status Menu v1.01
# -- Last Updated: 2011.12.26
# -- Level: Normal
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-StatusMenu"] = true
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.26 - Compatibility Update: Rename Actor
# 2011.12.23 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script changes the status screen completely to something the player can
# interact with more and be able to view actor data with more clarity. The
# player is able to view the general information for an actor (parameters and
# experience), a parameters bar graph, the various hidden extra parameters
# (named properties in the script), and a customizable biography for the actor.
# Also with this script, biographies can be changed at any time using a script
# call to add more of a personal touch to characters.
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Script Calls - These commands are used with script calls.
# -----------------------------------------------------------------------------
# $game_actors[x].description = string
# Changes the biography description for actor x to that of the string. Use \n
# to designate linebreaks in the string. If you wish to use text codes, write
# them in the strings as \\n[2] or \\c[3] to make them work properly.
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
#==============================================================================
module YEA
module STATUS
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Command Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This section adjusts the commands that appear in the command window used
# for the status screen. Rearrange the commands, add new ones, remove them
# as you see fit.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
COMMANDS =[ # The order at which the menu items are shown.
# [ :command, "Display"],
[ :general, "基本信息"],
# [ :parameters, "数据"],
[ :properties, "详细属性"],
[ :biography, "人物传记"],
[ :custom1, "已学技能"],
[ :custom2, "当前装备"],
# [ :custom3, "Class"],
[ :rename, "Rename"], # Requires YEA - Rename Actor
[ :retitle, "Retitle"], # Requires YEA - Rename Actor
] # Do not remove this.
#--------------------------------------------------------------------------
# - Status Custom Commands -
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# For those who use scripts to that may produce unique effects for the
# status menu, use this hash to manage the custom commands for the Status
# Command Window. You can disable certain commands or prevent them from
# appearing by using switches. If you don't wish to bind them to a switch,
# set the proper switch to 0 for it to have no impact.
#--------------------------------------------------------------------------
CUSTOM_STATUS_COMMANDS ={
# :command => [EnableSwitch, ShowSwitch, Handler Method, Window Draw],
:custom1 => [ 0, 0, :command_name1, :draw_custom1],
:custom2 => [ 0, 0, :command_name2, :draw_custom2],
:custom3 => [ 0, 0, :command_name3, :draw_custom3],
} # Do not remove this.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - General Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings adjust the way the general window visually appears.
# Not many changes need to be done here other than vocab changes.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PARAMETERS_VOCAB = "数据" # Title used for Parameters.
EXPERIENCE_VOCAB = "经验值" # Title used for Experience.
NEXT_TOTAL_VOCAB = "下次升级总经验值" # Label used for total experience.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Parameters Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings adjust the way the parameters window visually appears.
# Each of the stats have a non-window colour. Adjust them as you see fit.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PARAM_COLOUR ={
# ParamID => [:stat, Colour1, Colour2 ],
2 => [ :atk, Color.new(225, 100, 100), Color.new(240, 150, 150)],
3 => [ :def, Color.new(250, 150, 30), Color.new(250, 180, 100)],
4 => [ :mat, Color.new( 70, 140, 200), Color.new(135, 180, 230)],
5 => [ :mdf, Color.new(135, 130, 190), Color.new(170, 160, 220)],
6 => [ :agi, Color.new( 60, 180, 80), Color.new(120, 200, 120)],
7 => [ :luk, Color.new(255, 240, 100), Color.new(255, 250, 200)],
} # Do not remove this.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Properties Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings adjust the way the properties window visually appears.
# The properties have abbreviations, but leaving them as such makes things
# confusing (as it's sometimes hard to figure out what the abbreviations
# mean). Change the way the appear, whether or not they appear, and what
# order they will appear in.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PROPERTIES_FONT_SIZE = 16 # Font size used for properties.
# These are the properties that appear in column 1.
PROPERTIES_COLUMN1 =[
[:hit, "命中率"],
[:eva, "闪避率"],
[:cri, "暴击率"],
[:cnt, "反击率"],
[:tgr, "仇恨值"],
[:cev, "必杀闪避率"],
[:mev, "魔法闪避率"],
[:mrf, "魔法反射率"],
] # Do not remove this.
# These are the properties that appear in column 2.
PROPERTIES_COLUMN2 =[
[:hrg, "生命恢复"],
[:mrg, "魔法再生"],
[:trg, "TP恢复"],
[:pha, "物品效果率"],
[:exr, "经验获得率"],
[:rec, "恢复效果"],
[:grd, "防御效果"],
[:tcr, "TP恢复率"],
] # Do not remove this.
# These are the properties that appear in column 3.
PROPERTIES_COLUMN3 =[
#~ [:hcr, "士兵消费伤害"], # Requires YEA - Skill Cost Manager
[:mcr, "魔法伤害效果"],
[:tcr, "特技伤害效果"], # Requires YEA - Skill Cost Manager
#~ [:cdr, "硬直伤害"], # Requires YEA - Skill Restrictions
#~ [:wur, "激励伤害"], # Requires YEA - Skill Restrictions
[:pdr, "物理伤害效果"],
[:mdr, "魔法伤害效果"],
[:fdr, "基本伤害效果"],
] # Do not remove this.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Biography Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# These settings adjust the way the biography appears including the title
# used at the top, the font size, and whatnot.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
BIOGRAPHY_NICKNAME_TEXT = "%s · %s" # How the nickname will appear.
BIOGRAPHY_NICKNAME_SIZE = 32 # Size of the font used.
end # STATUS
end # YEA
#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
#==============================================================================
# ■ Numeric
#==============================================================================
class Numeric
#--------------------------------------------------------------------------
# new method: group_digits
#--------------------------------------------------------------------------
unless $imported["YEA-CoreEngine"]
def group; return self.to_s; end
end # $imported["YEA-CoreEngine"]
end # Numeric
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :scene_status_index
attr_accessor :scene_status_oy
end # Game_Temp
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# new method: description=
#--------------------------------------------------------------------------
def description=(text)
@description = text
end
#--------------------------------------------------------------------------
# overwrite method: description
#--------------------------------------------------------------------------
def description
return @description unless @description.nil?
return actor.description
end
end # Game_Actor
#==============================================================================
# ■ Window_StatusCommand
#==============================================================================
class Window_StatusCommand < Window_Command
#--------------------------------------------------------------------------
# public instance variables
#--------------------------------------------------------------------------
attr_accessor :item_window
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy)
super(dx, dy)
[url=home.php?mod=space&uid=95897]@actor[/url] = nil
end
#--------------------------------------------------------------------------
# window_width
#--------------------------------------------------------------------------
def window_width; return 160; end
#--------------------------------------------------------------------------
# actor=
#--------------------------------------------------------------------------
def actor=(actor)
return if [url=home.php?mod=space&uid=95897]@actor[/url] == actor
[url=home.php?mod=space&uid=95897]@actor[/url] = actor
refresh
end
#--------------------------------------------------------------------------
# visible_line_number
#--------------------------------------------------------------------------
def visible_line_number; return 4; end
#--------------------------------------------------------------------------
# ok_enabled?
#--------------------------------------------------------------------------
def ok_enabled?
return handle?(current_symbol)
end
#--------------------------------------------------------------------------
# make_command_list
#--------------------------------------------------------------------------
def make_command_list
return unless @actor
for command in YEA::STATUS::COMMANDS
case command[0]
#--- Default ---
when :general, :parameters, :properties, :biography
add_command(command[1], command[0])
#--- Yanfly Engine Ace ---
when :rename
next unless $imported["YEA-RenameActor"]
add_command(command[1], command[0], @actor.rename_allow?)
when :retitle
next unless $imported["YEA-RenameActor"]
add_command(command[1], command[0], @actor.retitle_allow?)
#--- Custom Commands ---
else
process_custom_command(command)
end
end
if !$game_temp.scene_status_index.nil?
select($game_temp.scene_status_index)
self.oy = $game_temp.scene_status_oy
end
$game_temp.scene_status_index = nil
$game_temp.scene_status_oy = nil
end
#--------------------------------------------------------------------------
# process_ok
#--------------------------------------------------------------------------
def process_ok
$game_temp.scene_status_index = index
$game_temp.scene_status_oy = self.oy
super
end
#--------------------------------------------------------------------------
# process_custom_command
#--------------------------------------------------------------------------
def process_custom_command(command)
return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0])
show = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][1]
continue = show <= 0 ? true : $game_switches[show]
return unless continue
text = command[1]
switch = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][0]
enabled = switch <= 0 ? true : $game_switches[switch]
add_command(text, command[0], enabled)
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
update_item_window
end
#--------------------------------------------------------------------------
# update_item_window
#--------------------------------------------------------------------------
def update_item_window
return if @item_window.nil?
return if @current_index == current_symbol
@current_index = current_symbol
@item_window.refresh
end
#--------------------------------------------------------------------------
# item_window=
#--------------------------------------------------------------------------
def item_window=(window)
@item_window = window
update
end
#--------------------------------------------------------------------------
# update_help
#--------------------------------------------------------------------------
def update_help
return if @actor.nil?
@help_window.set_text("L,R键切换角色")#(@actor.actor.description)
end
end # Window_StatusCommand
#==============================================================================
# ■ Window_StatusActor
#==============================================================================
class Window_StatusActor < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy)
super(dx, dy, window_width, fitting_height(4))
@actor = nil
end
#--------------------------------------------------------------------------
# window_width
#--------------------------------------------------------------------------
def window_width; return Graphics.width - 160; end
#--------------------------------------------------------------------------
# actor=
#--------------------------------------------------------------------------
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
return unless @actor
draw_actor_face(@actor, 0, 0)
draw_actor_simple_status(@actor, 108, line_height / 2)
end
end # Window_StatusActor
#==============================================================================
# ■ Window_StatusItem
#==============================================================================
class Window_StatusItem < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy, command_window)
super(dx, dy, Graphics.width, Graphics.height - dy)
@command_window = command_window
@actor = nil
refresh
end
#--------------------------------------------------------------------------
# actor=
#--------------------------------------------------------------------------
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
reset_font_settings
return unless @actor
draw_window_contents
end
#--------------------------------------------------------------------------
# draw_window_contents
#--------------------------------------------------------------------------
def draw_window_contents
case @command_window.current_symbol
when :general
draw_actor_general
when :parameters
draw_parameter_graph
when :properties
draw_properties_list
when :biography, :rename, :retitle
draw_actor_biography
else
draw_custom
end
end
#--------------------------------------------------------------------------
# draw_actor_general
#--------------------------------------------------------------------------
def draw_actor_general
change_color(system_color)
text = YEA::STATUS::PARAMETERS_VOCAB
draw_text(0, 0, contents.width/2, line_height, text, 1)
text = YEA::STATUS::EXPERIENCE_VOCAB
draw_text(contents.width/2, 0, contents.width/2, line_height, text, 1)
draw_general_parameters
draw_general_experience
end
#--------------------------------------------------------------------------
# draw_general_parameters
#--------------------------------------------------------------------------
def draw_general_parameters
dx = 24
dy = line_height / 2
draw_actor_level(dx, line_height*1+dy, contents.width/2 - 24)
draw_actor_param(0, dx, line_height*2+dy, contents.width/2 - 24)
draw_actor_param(1, dx, line_height*3+dy, contents.width/2 - 24)
draw_actor_param(2, dx, line_height*4+dy, contents.width/4 - 12)
draw_actor_param(4, dx, line_height*5+dy, contents.width/4 - 12)
draw_actor_param(6, dx, line_height*6+dy, contents.width/4 - 12)
dx += contents.width/4 - 12
draw_actor_param(3, dx, line_height*4+dy, contents.width/4 - 12)
draw_actor_param(5, dx, line_height*5+dy, contents.width/4 - 12)
draw_actor_param(7, dx, line_height*6+dy, contents.width/4 - 12)
end
#--------------------------------------------------------------------------
# draw_actor_level
#--------------------------------------------------------------------------
def draw_actor_level(dx, dy, dw)
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
contents.fill_rect(rect, colour)
change_color(system_color)
draw_text(dx+4, dy, dw-8, line_height, Vocab::level)
change_color(normal_color)
draw_text(dx+4, dy, dw-8, line_height, @actor.level.group, 2)
end
#--------------------------------------------------------------------------
# draw_actor_param
#--------------------------------------------------------------------------
def draw_actor_param(param_id, dx, dy, dw)
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
contents.fill_rect(rect, colour)
change_color(system_color)
draw_text(dx+4, dy, dw-8, line_height, Vocab::param(param_id))
change_color(normal_color)
draw_text(dx+4, dy, dw-8, line_height, @actor.param(param_id).group, 2)
end
#--------------------------------------------------------------------------
# draw_general_experience
#--------------------------------------------------------------------------
def draw_general_experience
if @actor.max_level?
s1 = @actor.exp.group
s2 = "-------"
s3 = "-------"
else
s1 = @actor.exp.group
s2 = (@actor.next_level_exp - @actor.exp).group
s3 = @actor.next_level_exp.group
end
s_next = sprintf(Vocab::ExpNext, Vocab::level)
total_next_text = sprintf(YEA::STATUS::NEXT_TOTAL_VOCAB, Vocab::level)
change_color(system_color)
dx = contents.width/2 + 12
dy = line_height * 3 / 2
dw = contents.width/2 - 36
draw_text(dx, dy + line_height * 0, dw, line_height, Vocab::ExpTotal)
draw_text(dx, dy + line_height * 2, dw, line_height, s_next)
draw_text(dx, dy + line_height * 4, dw, line_height, total_next_text)
change_color(normal_color)
draw_text(dx, dy + line_height * 1, dw, line_height, s1, 2)
draw_text(dx, dy + line_height * 3, dw, line_height, s2, 2)
draw_text(dx, dy + line_height * 5, dw, line_height, s3, 2)
end
#--------------------------------------------------------------------------
# draw_parameter_graph
#--------------------------------------------------------------------------
def draw_parameter_graph
draw_parameter_title
dy = line_height * 3/2
maximum = 1
minimum = @actor.param_max(2)
for i in 2..7
maximum = [@actor.param(i), maximum].max
minimum = [@actor.param(i), minimum].min
end
maximum += minimum * 0.33 unless maximum == minimum
for i in 2..7
rate = calculate_rate(maximum, minimum, i)
dy = line_height * i - line_height/2
draw_param_gauge(i, dy, rate)
change_color(system_color)
draw_text(28, dy, contents.width - 56, line_height, Vocab::param(i))
dw = (contents.width - 48) * rate - 8
change_color(normal_color)
draw_text(28, dy, dw, line_height, @actor.param(i).group, 2)
end
end
#--------------------------------------------------------------------------
# calculate_rate
#--------------------------------------------------------------------------
def calculate_rate(maximum, minimum, param_id)
return 1.0 if maximum == minimum
rate = (@actor.param(param_id).to_f - minimum) / (maximum - minimum).to_f
rate *= 0.67
rate += 0.33
return rate
end
#--------------------------------------------------------------------------
# draw_param_gauge
#--------------------------------------------------------------------------
def draw_param_gauge(param_id, dy, rate)
dw = contents.width - 48
colour1 = param_gauge1(param_id)
colour2 = param_gauge2(param_id)
#~ draw_gauge(24, dy, dw, rate, colour1, colour2)
end
#--------------------------------------------------------------------------
# param_gauge1
#--------------------------------------------------------------------------
def param_gauge1(param_id)
return YEA::STATUS::PARAM_COLOUR[param_id][1]
end
#--------------------------------------------------------------------------
# param_gauge2
#--------------------------------------------------------------------------
def param_gauge2(param_id)
return YEA::STATUS::PARAM_COLOUR[param_id][2]
end
#--------------------------------------------------------------------------
# draw_parameter_title
#--------------------------------------------------------------------------
def draw_parameter_title
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(0, 0, contents.width, contents.height)
contents.fill_rect(rect, colour)
change_color(system_color)
text = YEA::STATUS::PARAMETERS_VOCAB
draw_text(0, line_height/3, contents.width, line_height, text, 1)
end
#--------------------------------------------------------------------------
# draw_properties_list
#--------------------------------------------------------------------------
def draw_properties_list
contents.font.size = YEA::STATUS::PROPERTIES_FONT_SIZE
draw_properties_column1
draw_properties_column2
draw_properties_column3
reset_font_settings
end
#--------------------------------------------------------------------------
# draw_properties_column1
#--------------------------------------------------------------------------
def draw_properties_column1
dx = 24 - 16
dw = (contents.width - 24) / 3 - 24+20
dy = 0
for property in YEA::STATUS::PROPERTIES_COLUMN1
dy = draw_property(property, dx, dy, dw)
end
end
#--------------------------------------------------------------------------
# draw_properties_column2
#--------------------------------------------------------------------------
def draw_properties_column2
dx = 24 + (contents.width - 24) / 3 - 8
dw = (contents.width - 24) / 3 - 24+20
dy = 0
for property in YEA::STATUS::PROPERTIES_COLUMN2
dy = draw_property(property, dx, dy, dw)
end
end
#--------------------------------------------------------------------------
# draw_properties_column3
#--------------------------------------------------------------------------
def draw_properties_column3
dx = 24 + (contents.width - 24) / 3 * 2
dw = (contents.width - 24) / 3 - 24+20
dy = 0
for property in YEA::STATUS::PROPERTIES_COLUMN3
dy = draw_property(property, dx, dy, dw)
end
end
#--------------------------------------------------------------------------
# draw_property
#--------------------------------------------------------------------------
def draw_property(property, dx, dy, dw)
case property[0]
#---
when :hit
fmt = "%1.1f%%" #"%1.1f%%"
value = sprintf(fmt, @actor.hit * 100)
when :eva
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.eva * 100)
when :cri
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.cri * 100)
when :cev
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.cev * 100)
when :mev
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.mev * 100)
when :mrf
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.mrf * 100)
when :cnt
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.cnt * 100)
when :hrg
fmt = "%1.1f"
value = sprintf(fmt, @actor.hrg * @actor.mhp)
when :mrg
fmt = "%1.1f"
value = sprintf(fmt, @actor.mrg * @actor.mmp)
when :trg
fmt = "%1.1f"
value = sprintf(fmt, @actor.trg * 100)
when :tgr
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.tgr * 100 )#+ 100)
when :grd
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.grd * 100)
when :rec
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.rec * 100)
when :pha
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.pha * 100)
when :mcr
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.mcr * 100)
when :tcr
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.tcr * 100)
when :pdr
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.pdr * 100)
when :mdr
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.mdr * 100)
when :fdr
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.fdr * 100)
when :exr
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.exr * 100)
when :hcr
return dy unless $imported["YEA-SkillCostManager"]
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.hcr * 100)
when :tcr
return dy unless $imported["YEA-SkillCostManager"]
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.tcr * 100)
when :gcr
return dy unless $imported["YEA-SkillCostManager"]
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.gcr * 100)
when :cdr
return dy unless $imported["YEA-SkillRestrictions"]
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.cdr * 100)
when :wur
return dy unless $imported["YEA-SkillRestrictions"]
fmt = "%1.1f%%"
value = sprintf(fmt, @actor.wur * 100)
#---
else; return dy
end
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
contents.fill_rect(rect, colour)
change_color(system_color)
draw_text(dx+4, dy, dw-8, line_height, property[1], 0)
change_color(normal_color)
draw_text(dx+4, dy, dw-8, line_height, value, 2)
return dy + line_height
end
#--------------------------------------------------------------------------
# draw_actor_biography
#--------------------------------------------------------------------------
def draw_actor_biography
fmt = YEA::STATUS::BIOGRAPHY_NICKNAME_TEXT
text = sprintf(fmt, @actor.name, @actor.nickname)
contents.font.size = YEA::STATUS::BIOGRAPHY_NICKNAME_SIZE
draw_text(0, 0, contents.width, line_height*2, text, 1)
reset_font_settings
draw_text_ex(24, line_height*2, @actor.description)
end
#--------------------------------------------------------------------------
# draw_custom
#--------------------------------------------------------------------------
def draw_custom
current_symbol = @command_window.current_symbol
return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(current_symbol)
method(YEA::STATUS::CUSTOM_STATUS_COMMANDS[current_symbol][3]).call
end
#--------------------------------------------------------------------------
# draw_custom1
#--------------------------------------------------------------------------
def draw_custom1
dx = 0; dy = 0
for skill in @actor.skills
next if skill.nil?
next unless @actor.added_skill_types.include?(skill.stype_id)
draw_item_name(skill, dx, dy)
dx = dx == contents.width / 2 + 16 ? 0 : contents.width / 2 + 16
dy += line_height if dx == 0
return if dy + line_height > contents.height
end
end
#--------------------------------------------------------------------------
# draw_custom2
#--------------------------------------------------------------------------
def draw_custom2
dx = 4; dy = 0; slot_id = 0
for equip in @actor.equips
change_color(system_color)
text = Vocab.etype(@actor.equip_slots[slot_id])
draw_text(dx, dy, contents.width - dx, line_height, text)
reset_font_settings
draw_item_name(equip, dx+92, dy) unless equip.nil?
slot_id += 1
dy += line_height
break if dy + line_height > contents.height
end
dw = Graphics.width * 2 / 5 - 24
dx = contents.width - dw; dy = 0
param_id = 0
8.times do
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2)
contents.fill_rect(rect, colour)
size = $imported["YEA-AceEquipEngine"] ? YEA::EQUIP::STATUS_FONT_SIZE : 20
contents.font.size = size
change_color(system_color)
draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id))
change_color(normal_color)
dwa = (Graphics.width * 2 / 5 - 2) / 2
draw_text(dx +80, dy, dwa, line_height, @actor.param(param_id).group, 2)
reset_font_settings
#~ change_color(system_color)
#~ draw_text(dx + dwa, dy, 22, line_height, "→", 1)
param_id += 1
dy += line_height
break if dy + line_height > contents.height
end
end
#--------------------------------------------------------------------------
# draw_custom3
#--------------------------------------------------------------------------
def draw_custom3
return unless $imported["YEA-ClassSystem"]
data = []
for class_id in YEA::CLASS_SYSTEM::CLASS_ORDER
next if $data_classes[class_id].nil?
item = $data_classes[class_id]
next unless @actor.unlocked_classes.include?(item.id) or
YEA::CLASS_SYSTEM::DEFAULT_UNLOCKS.include?(item.id)
data.push(item)
end
dx = 0; dy = 0; class_index = 0
for class_id in data
item = data[class_index]
reset_font_settings
if item == @actor.class
change_color(text_color(YEA::CLASS_SYSTEM::CURRENT_CLASS_COLOUR))
elsif item == @actor.subclass
change_color(text_color(YEA::CLASS_SYSTEM::SUBCLASS_COLOUR))
else
change_color(normal_color)
end
icon = item.icon_index
draw_icon(icon, dx, dy)
text = item.name
draw_text(24, dy, contents.width-24, line_height, text)
next if YEA::CLASS_SYSTEM::MAINTAIN_LEVELS
level = @actor.class_level(item.id)
contents.font.size = YEA::CLASS_SYSTEM::LEVEL_FONT_SIZE
text = sprintf(YEA::CLASS_SYSTEM::CLASS_LEVEL, level.group)
dwa = contents.width - (Graphics.width * 2 / 5 - 24) - 28
draw_text(dx, dy, dwa, line_height, text, 2)
class_index += 1
dy += line_height
break if dy + line_height > contents.height
end
dw = Graphics.width * 2 / 5 - 24
dx = contents.width - dw; dy = 0
param_id = 0
8.times do
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2)
contents.fill_rect(rect, colour)
contents.font.size = YEA::CLASS_SYSTEM::PARAM_FONT_SIZE
change_color(system_color)
draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id))
change_color(normal_color)
dwa = (Graphics.width * 2 / 5 - 2) / 2
draw_text(dx, dy, dwa, line_height, @actor.param(param_id).group, 2)
reset_font_settings
change_color(system_color)
draw_text(dx + dwa, dy, 22, line_height, "→", 1)
param_id += 1
dy += line_height
break if dy + line_height > contents.height
end
end
end # Window_StatusItem
#==============================================================================
# ■ Scene_Status
#==============================================================================
class Scene_Status < Scene_MenuBase
#--------------------------------------------------------------------------
# start
#--------------------------------------------------------------------------
def start
super
create_help_window
create_command_window
create_status_window
create_item_window
relocate_windows
end
#--------------------------------------------------------------------------
# create_command_window
#--------------------------------------------------------------------------
def create_command_window
wy = @help_window.height
@command_window = Window_StatusCommand.new(0, wy)
@command_window.viewport = @viewport
@command_window.actor = @actor
@command_window.help_window = @help_window
@command_window.set_handler(:cancel, method(:return_scene))
@command_window.set_handler(:pagedown, method(:next_actor))
@command_window.set_handler(:pageup, method(:prev_actor))
process_custom_status_commands
end
#--------------------------------------------------------------------------
# process_custom_status_commands
#--------------------------------------------------------------------------
def process_custom_status_commands
for command in YEA::STATUS::COMMANDS
next unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0])
called_method = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][2]
@command_window.set_handler(command[0], method(called_method))
end
end
#--------------------------------------------------------------------------
# create_status_window
#--------------------------------------------------------------------------
def create_status_window
wy = @help_window.height
@status_window = Window_StatusActor.new(@command_window.width, wy)
@status_window.viewport = @viewport
@status_window.actor = @actor
end
#--------------------------------------------------------------------------
# create_item_window
#--------------------------------------------------------------------------
def create_item_window
dy = @command_window.y + @command_window.height
@item_window = Window_StatusItem.new(0, dy, @command_window)
@item_window.viewport = @viewport
@item_window.actor = @actor
@command_window.item_window = @item_window
end
#--------------------------------------------------------------------------
# relocate_windows
#--------------------------------------------------------------------------
def relocate_windows
return unless $imported["YEA-AceMenuEngine"]
case Menu.help_window_location
when 0 # Top
@help_window.y = 0
@command_window.y = @help_window.height
@item_window.y = @command_window.y + @command_window.height
when 1 # Middle
@command_window.y = 0
@help_window.y = @command_window.height
@item_window.y = @help_window.y + @help_window.height
else # Bottom
@command_window.y = 0
@item_window.y = @command_window.height
@help_window.y = @item_window.y + @item_window.height
end
@status_window.y = @command_window.y
end
#--------------------------------------------------------------------------
# on_actor_change
#--------------------------------------------------------------------------
def on_actor_change
@command_window.actor = @actor
@status_window.actor = @actor
@item_window.actor = @actor
@command_window.activate
end
#--------------------------------------------------------------------------
# new method: command_name1
#--------------------------------------------------------------------------
def command_name1
SceneManager.call(Scene_Skill)
end
#--------------------------------------------------------------------------
# new method: command_name2
#--------------------------------------------------------------------------
def command_name2
SceneManager.call(Scene_Equip)
end
#--------------------------------------------------------------------------
# new method: command_name3
#--------------------------------------------------------------------------
def command_name3
unless $imported["YEA-ClassSystem"]
@command_window.activate
return
end
SceneManager.call(Scene_Class)
end
end # Scene_Status
#==============================================================================
#
# ▼ End of File
#
#==============================================================================
我还用了@后知后觉 的装备扩充脚本装备条目扩充 |
|