赞 | 0 |
VIP | 0 |
好人卡 | 5 |
积分 | 1 |
经验 | 11941 |
最后登录 | 2018-9-22 |
在线时间 | 347 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 143
- 在线时间
- 347 小时
- 注册时间
- 2010-7-7
- 帖子
- 128
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 yjl494356020 于 2012-8-31 11:51 编辑
{:2_263:} 这两天遇到的问题太多了...我使用一个胜利画面的脚本,发现胜利画面显示的时候,经验条有些问题。
首先是显示的不准确,比如这场战斗实际获得经验应该是从0%升到44%,可是这里显示的是88%,如下图,
但是人物状态菜单显示经验条是准确的,如下图,
还有就是,比如一场战斗后角色升级了,胜利画面经验条是这么显示的,如下图,
实际上升级后,距下一级还有大概70%的经验,人物状态菜单经验条显示,如下图,
但是下一场新战斗结束后,胜利画面的经验条(就是蓝色短的那个)又从0%开始计算,因此导致此后的该经验条显示的都是不准确的。
再有一点就是有时候明明没有升级,大概还差10%经验才升级,可是胜利画面的经验条却显示的是升级了。
这几个问题要怎么解决呢?本人对脚本实在是不太了解,希望有高人加以指点...
这是我使用的胜利画面的脚本,- #==============================================================================
- #
- # ▼ Yanfly Engine Ace - Victory Aftermath v1.03
- # -- Last Updated: 2012.01.07
- # -- Level: Easy, Normal, Hard
- # -- Requires: n/a
- #
- #==============================================================================
- $imported = {} if $imported.nil?
- $imported["YEA-VictoryAftermath"] = true
- #==============================================================================
- # ▼ Updates
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # 2012.01.07 - Compatibility Update: JP Manager
- # 2012.01.01 - Bug Fixed: Quote tags were mislabeled.
- # 2011.12.26 - Compatibility Update: Command Autobattle
- # 2011.12.16 - Started Script and Finished.
- #
- #==============================================================================
- # ▼ Introduction
- # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- # At the end of each battle, RPG Maker VX Ace by default shows text saying that
- # the party has gained so-and-so EXP while this person leveled up and your
- # party happened to find these drops. This script changes that text into
- # something more visual for your players to see. Active battle members will be
- # seen gaining EXP, any kind of level up changes, and a list of the items
- # obtained through drops.
- #
- #==============================================================================
- # ▼ 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.
- #
- # -----------------------------------------------------------------------------
- # Actor Notetags - These notetags go in the actors notebox in the database.
- # -----------------------------------------------------------------------------
- # <win quotes>
- # string
- # string
- # </win quotes>
- # Sets the win quote for the actor. The strings are continuous and can use
- # text codes. Use \n for a line break. Type in what you want the actor to say
- # for the particular win quote. Use [New Quote] in between the two tags to
- # start up a new quote.
- #
- # <level quotes>
- # string
- # string
- # </level quotes>
- # Sets the level up quote for the actor. The strings are continuous and can use
- # text codes. Use \n for a line break. Type in what you want the actor to say
- # for the particular win quote. Use [New Quote] in between the two tags to
- # start up a new quote.
- #
- # <drops quotes>
- # string
- # string
- # </drops quotes>
- # Sets the drops quote for the actor. The strings are continuous and can use
- # text codes. Use \n for a line break. Type in what you want the actor to say
- # for the particular win quote. Use [New Quote] in between the two tags to
- # start up a new quote.
- #
- # -----------------------------------------------------------------------------
- # Class Notetags - These notetags go in the class notebox in the database.
- # -----------------------------------------------------------------------------
- # <win quotes>
- # string
- # string
- # </win quotes>
- # Sets the win quote for the class. The strings are continuous and can use
- # text codes. Use \n for a line break. Type in what you want the actor to say
- # for the particular win quote. Use [New Quote] in between the two tags to
- # start up a new quote.
- #
- # <level quotes>
- # string
- # string
- # </level quotes>
- # Sets the level up quote for the class. The strings are continuous and can use
- # text codes. Use \n for a line break. Type in what you want the actor to say
- # for the particular win quote. Use [New Quote] in between the two tags to
- # start up a new quote.
- #
- # <drops quotes>
- # string
- # string
- # </drops quotes>
- # Sets the drops quote for the class. The strings are continuous and can use
- # text codes. Use \n for a line break. Type in what you want the actor to say
- # for the particular win quote. Use [New Quote] in between the two tags to
- # start up a new quote.
- #
- #==============================================================================
- # ▼ 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 VICTORY_AFTERMATH
-
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # - General Settings -
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # These are various settings that are used throughout the Victory Aftermath
- # portion of a battle. Adjust them as you see fit.
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- VICTORY_BGM = RPG::BGM.new("Field1", 100, 100) # Victory BGM
- VICTORY_TICK = RPG::SE.new("Decision1", 100, 150) # EXP ticking SFX
- LEVEL_SOUND = RPG::SE.new("Up4", 80, 150) # Level Up SFX
- SKILLS_TEXT = "新技能" # New skills text title.
-
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # - Important Settings -
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # These are some important settings so please set them up properly. This
- # section includes a switch that allows you to skip the victory aftermath
- # phase (for those back to back battles and making them seamless) and it
- # also allows you to declare a common event to run after each battle. If
- # you do not wish to use either of these features, set them to 0. The
- # common event will run regardless of win or escape.
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- SKIP_AFTERMATH_SWITCH = 0 # If switch on, skip aftermath. 0 to disable.
- AFTERMATH_COMMON_EVENT = 0 # Runs common event after battle. 0 to disable.
-
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # - Top Text Settings -
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # Here, you can adjust the various text that appears in the window that
- # appears at the top of the screen.
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- TOP_TEAM = "%s的队伍" # Team name used.
- TOP_VICTORY_TEXT = "%s胜利了!" # Text used to display victory.
- TOP_LEVEL_UP = "%s升级!" # Text used to display level up.
- TOP_SPOILS = "胜利战利品!" # Text used for spoils.
-
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # - EXP Gauge Settings -
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # Adjust how the EXP Gauge appears for the Victory Aftermath here. This
- # includes the text display, the font size, the colour of the gauges, and
- # more. Adjust it all here.
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- VICTORY_EXP = "+%sEXP" # Text used to display EXP.
- EXP_PERCENT = "%1.2f%%" # The way EXP percentage will be displayed.
- LEVELUP_TEXT = "LEVEL UP!" # Text to replace percentage when leveled.
- MAX_LVL_TEXT = "MAX LEVEL" # Text to replace percentage when max level.
- FONTSIZE_EXP = 20 # Font size used for EXP.
- EXP_TICKS = 15 # Ticks to full EXP
- EXP_GAUGE1 = 12 # "Window" skin text colour for gauge.
- EXP_GAUGE2 = 4 # "Window" skin text colour for gauge.
- LEVEL_GAUGE1 = 13 # "Window" skin text colour for leveling.
- LEVEL_GAUGE2 = 5 # "Window" skin text colour for leveling.
-
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # - Victory Messages -
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- # In the Victory Aftermath, actors can say unique things. This is the pool
- # of quotes used for actors without any custom victory quotes. Note that
- # actors with custom quotes will take priority over classes with custom
- # quotes, which will take priority over these default quotes. Use \n for
- # a line break in the quotes.
- #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- HEADER_TEXT = "\e>\eC[6]%s\eC[0]\e<\n" # Always at start of messages.
- FOOTER_TEXT = "" # Always at end of messages.
-
- # Win Quotes are what the actors say when a battle is won.
- VICTORY_QUOTES ={
- # :type => Quotes
- #------------------------------------------------------------------------
- :win => [ # Occurs as initial victory quote.
- '"成功消灭敌人!"',
- ],# Do not remove this.
- #------------------------------------------------------------------------
- :level => [ # Occurs as initial victory quote.
- '"实力又变强了!"',
- ],# Do not remove this.
- #------------------------------------------------------------------------
- :drops => [ # Occurs as initial victory quote.
- '"怪物掉了些东西!"',
- ],# Do not remove this.
- #------------------------------------------------------------------------
- } # Do not remove this.
-
- end # VICTORY_AFTERMATH
- 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.
- #==============================================================================
- module YEA
- module REGEXP
- module BASEITEM
-
- NEW_QUOTE = /\[(?:NEW_QUOTE|new quote)\]/i
-
- WIN_QUOTE_ON = /<(?:WIN_QUOTES|win quote|win quotes)>/i
- WIN_QUOTE_OFF = /<\/(?:WIN_QUOTES|win quote|win quotes)>/i
- LEVEL_QUOTE_ON = /<(?:LEVEL_QUOTES|level quote|level quotes)>/i
- LEVEL_QUOTE_OFF = /<\/(?:LEVEL_QUOTES|level quote|level quotes)>/i
- DROPS_QUOTE_ON = /<(?:DROPS_QUOTES|drops quote|drops quotes)>/i
- DROPS_QUOTE_OFF = /<\/(?:DROPS_QUOTES|drops quote|drops quotes)>/i
-
- end # BASEITEM
- end # REGEXP
- end # YEA
- #==============================================================================
- # ■ Switch
- #==============================================================================
- module Switch
-
- #--------------------------------------------------------------------------
- # self.skip_aftermath
- #--------------------------------------------------------------------------
- def self.skip_aftermath
- return false if YEA::VICTORY_AFTERMATH::SKIP_AFTERMATH_SWITCH <= 0
- return $game_switches[YEA::VICTORY_AFTERMATH::SKIP_AFTERMATH_SWITCH]
- end
-
- end # Switch
- #==============================================================================
- # ■ Numeric
- #==============================================================================
- class Numeric
-
- #--------------------------------------------------------------------------
- # new method: group_digits
- #--------------------------------------------------------------------------
- unless $imported["YEA-CoreEngine"]
- def group; return self.to_s; end
- end # $imported["YEA-CoreEngine"]
-
- end # Numeric
- #==============================================================================
- # ■ DataManager
- #==============================================================================
- module DataManager
-
- #--------------------------------------------------------------------------
- # alias method: load_database
- #--------------------------------------------------------------------------
- class <<self; alias load_database_va load_database; end
- def self.load_database
- load_database_va
- load_notetags_va
- end
-
- #--------------------------------------------------------------------------
- # new method: load_notetags_va
- #--------------------------------------------------------------------------
- def self.load_notetags_va
- groups = [$data_actors, $data_classes]
- for group in groups
- for obj in group
- next if obj.nil?
- obj.load_notetags_va
- end
- end
- end
-
- end # DataManager
- #==============================================================================
- # ■ RPG::BaseItem
- #==============================================================================
- class RPG::BaseItem
-
- #--------------------------------------------------------------------------
- # public instance variables
- #--------------------------------------------------------------------------
- attr_accessor :win_quotes
- attr_accessor :level_quotes
- attr_accessor :drops_quotes
-
- #--------------------------------------------------------------------------
- # common cache: load_notetags_va
- #--------------------------------------------------------------------------
- def load_notetags_va
- @win_quotes = [""]
- @level_quotes = [""]
- @drops_quotes = [""]
- @victory_quote_type = nil
- #---
- self.note.split(/[\r\n]+/).each { |line|
- case line
- #---
- when YEA::REGEXP::BASEITEM::WIN_QUOTE_ON
- @victory_quote_type = :win_quote
- when YEA::REGEXP::BASEITEM::WIN_QUOTE_OFF
- @victory_quote_type = nil
- when YEA::REGEXP::BASEITEM::LEVEL_QUOTE_ON
- @victory_quote_type = :level_quote
- when YEA::REGEXP::BASEITEM::LEVEL_QUOTE_OFF
- @victory_quote_type = nil
- when YEA::REGEXP::BASEITEM::DROPS_QUOTE_ON
- @victory_quote_type = :drops_quote
- when YEA::REGEXP::BASEITEM::DROPS_QUOTE_OFF
- @victory_quote_type = nil
- #---
- when YEA::REGEXP::BASEITEM::NEW_QUOTE
- case @victory_quote_type
- when nil; next
- when :win_quote; @win_quotes.push("")
- when :level_quote; @level_quotes.push("")
- when :drops_quote; @drops_quotes.push("")
- end
- #---
- else
- case @victory_quote_type
- when nil; next
- when :win_quote; @win_quotes[@win_quotes.size-1] += line.to_s
- when :level_quote; @level_quotes[@level_quotes.size-1] += line.to_s
- when :drops_quote; @drops_quotes[@drops_quotes.size-1] += line.to_s
- end
- end
- } # self.note.split
- #---
- return unless self.is_a?(RPG::Class)
- quotes = YEA::VICTORY_AFTERMATH::VICTORY_QUOTES
- @win_quotes = quotes[:win].clone if @win_quotes == [""]
- @level_quotes = quotes[:level].clone if @level_quotes == [""]
- @drops_quotes = quotes[:drops].clone if @drops_quotes == [""]
- end
-
- end # RPG::BaseItem
- #==============================================================================
- # ■ BattleManager
- #==============================================================================
- module BattleManager
-
- #--------------------------------------------------------------------------
- # overwrite method: self.process_victory
- #--------------------------------------------------------------------------
- def self.process_victory
- if $imported["YEA-CommandAutobattle"]
- SceneManager.scene.close_disable_autobattle_window
- end
- if Switch.skip_aftermath
- skip_aftermath
- return
- end
- play_battle_end_me
- gain_jp if $imported["YEA-JPManager"]
- display_exp
- gain_exp
- gain_gold
- gain_drop_items
- close_windows
- SceneManager.return
- replay_bgm_and_bgs
- battle_end(0)
- return true
- end
-
- #--------------------------------------------------------------------------
- # new method: self.skip_aftermath
- #--------------------------------------------------------------------------
- def self.skip_aftermath
- $game_party.all_members.each do |actor|
- actor.gain_exp($game_troop.exp_total)
- end
- $game_party.gain_gold($game_troop.gold_total)
- $game_troop.make_drop_items.each do |item|
- $game_party.gain_item(item, 1)
- end
- close_windows
- SceneManager.return
- replay_bgm_and_bgs
- battle_end(0)
- end
-
- #--------------------------------------------------------------------------
- # overwrite method: self.play_battle_end_me
- #--------------------------------------------------------------------------
- def self.play_battle_end_me
- $game_system.battle_end_me.play
- YEA::VICTORY_AFTERMATH::VICTORY_BGM.play
- end
-
- #--------------------------------------------------------------------------
- # new method: self.set_victory_text
- #--------------------------------------------------------------------------
- def self.set_victory_text(actor, type)
- text = "" + sprintf(YEA::VICTORY_AFTERMATH::HEADER_TEXT, actor.name)
- text += actor.victory_quotes(type)[rand(actor.victory_quotes(type).size)]
- text += YEA::VICTORY_AFTERMATH::FOOTER_TEXT
- $game_message.face_name = actor.face_name
- $game_message.face_index = actor.face_index
- $game_message.add(text)
- wait_for_message
- end
-
- #--------------------------------------------------------------------------
- # overwrite method: self.display_exp
- #--------------------------------------------------------------------------
- def self.display_exp
- SceneManager.scene.show_victory_display_exp
- actor = $game_party.random_target
- @victory_actor = actor
- set_victory_text(@victory_actor, :win)
- end
-
- #--------------------------------------------------------------------------
- # overwrite method: self.gain_exp
- #--------------------------------------------------------------------------
- def self.gain_exp
- $game_party.all_members.each do |actor|
- temp_actor = Marshal.load(Marshal.dump(actor))
- actor.gain_exp($game_troop.exp_total)
- next if actor.level == temp_actor.level
- SceneManager.scene.show_victory_level_up(actor, temp_actor)
- set_victory_text(actor, :level)
- wait_for_message
- end
- end
-
- #--------------------------------------------------------------------------
- # overwrite method: self.gain_gold
- #--------------------------------------------------------------------------
- def self.gain_gold
- $game_party.gain_gold($game_troop.gold_total)
- end
-
- #--------------------------------------------------------------------------
- # overwrite method: self.gain_drop_items
- #--------------------------------------------------------------------------
- def self.gain_drop_items
- drops = []
- $game_troop.make_drop_items.each do |item|
- $game_party.gain_item(item, 1)
- drops.push(item)
- end
- SceneManager.scene.show_victory_spoils($game_troop.gold_total, drops)
- set_victory_text(@victory_actor, :drops)
- wait_for_message
- end
-
- #--------------------------------------------------------------------------
- # new method: self.close_windows
- #--------------------------------------------------------------------------
- def self.close_windows
- SceneManager.scene.close_victory_windows
- end
-
- #--------------------------------------------------------------------------
- # alias method: load_database
- #--------------------------------------------------------------------------
- class <<self; alias battle_end_va battle_end; end
- def self.battle_end(result)
- battle_end_va(result)
- return if result == 2
- return if YEA::VICTORY_AFTERMATH::AFTERMATH_COMMON_EVENT <= 0
- event_id = YEA::VICTORY_AFTERMATH::AFTERMATH_COMMON_EVENT
- $game_temp.reserve_common_event(event_id)
- end
-
- end # BattleManager
- #==============================================================================
- # ■ Game_Actor
- #==============================================================================
- class Game_Actor < Game_Battler
-
- #--------------------------------------------------------------------------
- # overwrite method: gain_exp
- #--------------------------------------------------------------------------
- def gain_exp(exp)
- enabled = !SceneManager.scene_is?(Scene_Battle)
- change_exp(self.exp + (exp * final_exp_rate).to_i, enabled)
- end
-
- #--------------------------------------------------------------------------
- # new method: victory_quotes
- #--------------------------------------------------------------------------
- def victory_quotes(type)
- case type
- when :win
- return self.actor.win_quotes if self.actor.win_quotes != [""]
- return self.class.win_quotes
- when :level
- return self.actor.level_quotes if self.actor.level_quotes != [""]
- return self.class.level_quotes
- when :drops
- return self.actor.drops_quotes if self.actor.drops_quotes != [""]
- return self.class.drops_quotes
- else
- return ["NOTEXT"]
- end
- end
-
- end # Game_Actor
- #==============================================================================
- # ■ Window_VictoryTitle
- #==============================================================================
- class Window_VictoryTitle < Window_Base
-
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize
- super(0, 0, Graphics.width, fitting_height(1))
- self.z = 200
- self.openness = 0
- end
-
- #--------------------------------------------------------------------------
- # refresh
- #--------------------------------------------------------------------------
- def refresh(message = "")
- contents.clear
- draw_text(0, 0, contents.width, line_height, message, 1)
- end
-
- end # Window_VictoryTitle
- #==============================================================================
- # ■ Window_VictoryEXP_Back
- #==============================================================================
- class Window_VictoryEXP_Back < Window_Selectable
-
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize
- super(0, fitting_height(1), Graphics.width, window_height)
- self.z = 200
- self.openness = 0
- end
-
- #--------------------------------------------------------------------------
- # window_height
- #--------------------------------------------------------------------------
- def window_height
- return Graphics.height - fitting_height(4) - fitting_height(1)
- end
-
- #--------------------------------------------------------------------------
- # col_max
- #--------------------------------------------------------------------------
- def col_max; return item_max; end
-
- #--------------------------------------------------------------------------
- # spacing
- #--------------------------------------------------------------------------
- def spacing; return 8; end
-
- #--------------------------------------------------------------------------
- # item_max
- #--------------------------------------------------------------------------
- def item_max; return $game_party.battle_members.size; end
-
- #--------------------------------------------------------------------------
- # open
- #--------------------------------------------------------------------------
- def open
- @exp_total = $game_troop.exp_total
- super
- end
-
- #--------------------------------------------------------------------------
- # item_rect
- #--------------------------------------------------------------------------
- def item_rect(index)
- rect = Rect.new
- rect.width = item_width
- rect.height = contents.height
- rect.x = index % col_max * (item_width + spacing)
- rect.y = index / col_max * item_height
- return rect
- end
-
- #--------------------------------------------------------------------------
- # draw_item
- #--------------------------------------------------------------------------
- def draw_item(index)
- actor = $game_party.battle_members[index]
- return if actor.nil?
- rect = item_rect(index)
- reset_font_settings
- draw_actor_name(actor, rect)
- draw_exp_gain(actor, rect)
- draw_jp_gain(actor, rect)
- draw_actor_face(actor, rect)
- end
-
- #--------------------------------------------------------------------------
- # draw_actor_name
- #--------------------------------------------------------------------------
- def draw_actor_name(actor, rect)
- name = actor.name
- draw_text(rect.x, rect.y+line_height, rect.width, line_height, name, 1)
- end
-
- #--------------------------------------------------------------------------
- # draw_actor_face
- #--------------------------------------------------------------------------
- def draw_actor_face(actor, rect)
- face_name = actor.face_name
- face_index = actor.face_index
- bitmap = Cache.face(face_name)
- rw = [rect.width, 96].min
- face_rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, rw, 96)
- rx = (rect.width - rw) / 2 + rect.x
- contents.blt(rx, rect.y + line_height * 2, bitmap, face_rect, 255)
- end
-
- #--------------------------------------------------------------------------
- # draw_exp_gain
- #--------------------------------------------------------------------------
- def draw_exp_gain(actor, rect)
- dw = rect.width - (rect.width - [rect.width, 96].min) / 2
- dy = rect.y + line_height * 3 + 96
- fmt = YEA::VICTORY_AFTERMATH::VICTORY_EXP
- text = sprintf(fmt, actor_exp_gain(actor).group)
- contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP
- change_color(power_up_color)
- draw_text(rect.x, dy, dw, line_height, text, 2)
- end
-
- #--------------------------------------------------------------------------
- # actor_exp_gain
- #--------------------------------------------------------------------------
- def actor_exp_gain(actor)
- n = @exp_total * actor.final_exp_rate
- return n.to_i
- end
-
- #--------------------------------------------------------------------------
- # draw_jp_gain
- #--------------------------------------------------------------------------
- def draw_jp_gain(actor, rect)
- return unless $imported["YEA-JPManager"]
- dw = rect.width - (rect.width - [rect.width, 96].min) / 2
- dy = rect.y + line_height * 4 + 96
- fmt = YEA::JP::VICTORY_AFTERMATH
- text = sprintf(fmt, actor_jp_gain(actor).group, Vocab::jp)
- contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP
- change_color(power_up_color)
- draw_text(rect.x, dy, dw, line_height, text, 2)
- end
-
- #--------------------------------------------------------------------------
- # actor_jp_gain
- #--------------------------------------------------------------------------
- def actor_jp_gain(actor)
- n = actor.battle_jp_earned
- if actor.exp + actor_exp_gain(actor) > actor.exp_for_level(actor.level + 1)
- n += YEA::JP::LEVEL_UP unless actor.max_level?
- end
- return n
- end
-
- end # Window_VictoryEXP_Back
- #==============================================================================
- # ■ Window_VictoryEXP_Front
- #==============================================================================
- class Window_VictoryEXP_Front < Window_VictoryEXP_Back
-
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize
- super
- self.back_opacity = 0
- @ticks = 0
- @counter = 30
- contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP
- end
-
- #--------------------------------------------------------------------------
- # update
- #--------------------------------------------------------------------------
- def update
- super
- update_tick
- end
-
- #--------------------------------------------------------------------------
- # update_tick
- #--------------------------------------------------------------------------
- def update_tick
- return unless self.openness >= 255
- return unless self.visible
- return if complete_ticks?
- @counter -= 1
- return unless @counter <= 0
- return if @ticks >= YEA::VICTORY_AFTERMATH::EXP_TICKS
- YEA::VICTORY_AFTERMATH::VICTORY_TICK.play
- @counter = 4
- @ticks += 1
- refresh
- end
-
- #--------------------------------------------------------------------------
- # complete_ticks?
- #--------------------------------------------------------------------------
- def complete_ticks?
- for actor in $game_party.battle_members
- total_ticks = YEA::VICTORY_AFTERMATH::EXP_TICKS
- bonus_exp = actor_exp_gain(actor) * @ticks / total_ticks
- now_exp = actor.exp - actor.current_level_exp + bonus_exp
- next_exp = actor.next_level_exp - actor.current_level_exp
- rate = now_exp * 1.0 / next_exp
- return false if rate < 1.0
- end
- return true
- end
-
- #--------------------------------------------------------------------------
- # draw_item
- #--------------------------------------------------------------------------
- def draw_item(index)
- actor = $game_party.battle_members[index]
- return if actor.nil?
- rect = item_rect(index)
- draw_actor_exp(actor, rect)
- end
-
- #--------------------------------------------------------------------------
- # exp_gauge1
- #--------------------------------------------------------------------------
- def exp_gauge1; return text_color(YEA::VICTORY_AFTERMATH::EXP_GAUGE1); end
-
- #--------------------------------------------------------------------------
- # exp_gauge2
- #--------------------------------------------------------------------------
- def exp_gauge2; return text_color(YEA::VICTORY_AFTERMATH::EXP_GAUGE2); end
-
- #--------------------------------------------------------------------------
- # lvl_gauge1
- #--------------------------------------------------------------------------
- def lvl_gauge1; return text_color(YEA::VICTORY_AFTERMATH::LEVEL_GAUGE1); end
-
- #--------------------------------------------------------------------------
- # lvl_gauge2
- #--------------------------------------------------------------------------
- def lvl_gauge2; return text_color(YEA::VICTORY_AFTERMATH::LEVEL_GAUGE2); end
-
- #--------------------------------------------------------------------------
- # draw_actor_exp
- #--------------------------------------------------------------------------
- def draw_actor_exp(actor, rect)
- if actor.max_level?
- draw_exp_gauge(actor, rect, 1.0)
- return
- end
- total_ticks = YEA::VICTORY_AFTERMATH::EXP_TICKS
- bonus_exp = actor_exp_gain(actor) * @ticks / total_ticks
- now_exp = actor.exp - actor.current_level_exp + bonus_exp
- next_exp = actor.next_level_exp - actor.current_level_exp
- rate = now_exp * 1.0 / next_exp
- draw_exp_gauge(actor, rect, rate)
- end
-
- #--------------------------------------------------------------------------
- # draw_exp_gauge
- #--------------------------------------------------------------------------
- def draw_exp_gauge(actor, rect, rate)
- rate = [[rate, 1.0].min, 0.0].max
- dx = (rect.width - [rect.width, 96].min) / 2 + rect.x
- dy = rect.y + line_height * 2 + 96
- dw = [rect.width, 96].min
- colour1 = rate >= 1.0 ? lvl_gauge1 : exp_gauge1
- colour2 = rate >= 1.0 ? lvl_gauge2 : exp_gauge2
- draw_gauge(dx, dy, dw, rate, colour1, colour2)
- fmt = YEA::VICTORY_AFTERMATH::EXP_PERCENT
- text = sprintf(fmt, [rate * 100, 100.00].min)
- if [rate * 100, 100.00].min == 100.00
- text = YEA::VICTORY_AFTERMATH::LEVELUP_TEXT
- text = YEA::VICTORY_AFTERMATH::MAX_LVL_TEXT if actor.max_level?
- end
- draw_text(dx, dy, dw, line_height, text, 1)
- end
-
- end # Window_VictoryEXP_Front
- #==============================================================================
- # ■ Window_VictoryLevelUp
- #==============================================================================
- class Window_VictoryLevelUp < Window_Base
-
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize
- super(0, fitting_height(1), Graphics.width, window_height)
- self.z = 200
- hide
- end
-
- #--------------------------------------------------------------------------
- # window_height
- #--------------------------------------------------------------------------
- def window_height
- return Graphics.height - fitting_height(4) - fitting_height(1)
- end
-
- #--------------------------------------------------------------------------
- # refresh
- #--------------------------------------------------------------------------
- def refresh(actor, temp_actor)
- contents.clear
- reset_font_settings
- YEA::VICTORY_AFTERMATH::LEVEL_SOUND.play
- draw_actor_changes(actor, temp_actor)
- end
-
- #--------------------------------------------------------------------------
- # draw_actor_changes
- #--------------------------------------------------------------------------
- def draw_actor_changes(actor, temp_actor)
- dx = contents.width / 16
- draw_actor_image(actor, temp_actor, dx)
- draw_param_names(actor, dx)
- draw_former_stats(temp_actor)
- draw_arrows
- draw_newer_stats(actor, temp_actor)
- draw_new_skills(actor, temp_actor)
- end
-
- #--------------------------------------------------------------------------
- # draw_actor_image
- #--------------------------------------------------------------------------
- def draw_actor_image(actor, temp_actor, dx)
- draw_text(dx, line_height, 96, line_height, actor.name, 1)
- draw_actor_face(actor, dx, line_height * 2)
- exp = actor.exp - temp_actor.exp
- text = sprintf(YEA::VICTORY_AFTERMATH::VICTORY_EXP, exp.group)
- change_color(power_up_color)
- contents.font.size = YEA::VICTORY_AFTERMATH::FONTSIZE_EXP
- draw_text(0, line_height * 2 + 96, dx + 96, line_height, text, 2)
- reset_font_settings
- end
-
- #--------------------------------------------------------------------------
- # draw_param_names
- #--------------------------------------------------------------------------
- def draw_param_names(actor, dx)
- dx += 108
- change_color(system_color)
- text = Vocab.level
- draw_text(dx, 0, contents.width - dx, line_height, text)
- dy = 0
- for i in 0...8
- dy += line_height
- text = Vocab.param(i)
- draw_text(dx, dy, contents.width - dx, line_height, text)
- end
- end
-
- #--------------------------------------------------------------------------
- # draw_former_stats
- #--------------------------------------------------------------------------
- def draw_former_stats(actor)
- dw = contents.width / 2 - 12
- dy = 0
- change_color(normal_color)
- draw_text(0, dy, dw, line_height, actor.level.group, 2)
- for i in 0...8
- dy += line_height
- draw_text(0, dy, dw, line_height, actor.param(i).group, 2)
- end
- end
-
- #--------------------------------------------------------------------------
- # draw_arrows
- #--------------------------------------------------------------------------
- def draw_arrows
- dx = contents.width / 2 - 12
- dy = 0
- change_color(system_color)
- for i in 0..8
- draw_text(dx, dy, 24, line_height, "→", 1)
- dy += line_height
- end
- end
-
- #--------------------------------------------------------------------------
- # draw_newer_stats
- #--------------------------------------------------------------------------
- def draw_newer_stats(actor, temp_actor)
- dx = contents.width / 2 + 12
- dw = contents.width - dx
- dy = 0
- change_color(param_change_color(actor.level - temp_actor.level))
- draw_text(dx, dy, dw, line_height, actor.level.group, 0)
- for i in 0...8
- dy += line_height
- change_color(param_change_color(actor.param(i) - temp_actor.param(i)))
- draw_text(dx, dy, dw, line_height, actor.param(i).group, 0)
- end
- end
-
- #--------------------------------------------------------------------------
- # draw_new_skills
- #--------------------------------------------------------------------------
- def draw_new_skills(actor, temp_actor)
- return if temp_actor.skills.size == actor.skills.size
- dw = 172 + 24
- dx = contents.width - dw
- change_color(system_color)
- text = YEA::VICTORY_AFTERMATH::SKILLS_TEXT
- draw_text(dx, 0, dw, line_height, text, 0)
- end
-
- end # Window_VictoryLevelUp
- #==============================================================================
- # ■ Window_VictorySkills
- #==============================================================================
- class Window_VictorySkills < Window_Selectable
-
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize
- dy = fitting_height(1) + 24
- dw = 172 + 24 + 24
- dh = Graphics.height - fitting_height(4) - fitting_height(1) - 24
- super(Graphics.width - dw, dy, dw, dh)
- self.opacity = 0
- self.z = 200
- hide
- end
-
- #--------------------------------------------------------------------------
- # item_max
- #--------------------------------------------------------------------------
- def item_max; return @data.nil? ? 0 : @data.size; end
-
- #--------------------------------------------------------------------------
- # refresh
- #--------------------------------------------------------------------------
- def refresh(actor, temp_actor)
- contents.clear
- if actor.skills.size == temp_actor.skills.size
- unselect
- @data = []
- create_contents
- return
- end
- @data = actor.skills - temp_actor.skills
- if @data.size > 8
- select(0)
- activate
- else
- unselect
- deactivate
- end
- create_contents
- draw_all_items
- end
-
- #--------------------------------------------------------------------------
- # refresh
- #--------------------------------------------------------------------------
- def draw_item(index)
- rect = item_rect(index)
- skill = @data[index]
- return if skill.nil?
- rect.width -= 4
- draw_item_name(skill, rect.x, rect.y, true)
- end
-
- end # Window_VictorySkills
- #==============================================================================
- # ■ Window_VictorySpoils
- #==============================================================================
- class Window_VictorySpoils < Window_ItemList
-
- #--------------------------------------------------------------------------
- # initialize
- #--------------------------------------------------------------------------
- def initialize
- super(0, fitting_height(1), Graphics.width, window_height)
- self.z = 200
- hide
- end
-
- #--------------------------------------------------------------------------
- # window_height
- #--------------------------------------------------------------------------
- def window_height
- return Graphics.height - fitting_height(4) - fitting_height(1)
- end
-
- #--------------------------------------------------------------------------
- # spacing
- #--------------------------------------------------------------------------
- def spacing; return 32; end
-
- #--------------------------------------------------------------------------
- # make
- #--------------------------------------------------------------------------
- def make(gold, drops)
- @gold = gold
- @drops = drops
- refresh
- select(0)
- activate
- end
-
- #--------------------------------------------------------------------------
- # make_item_list
- #--------------------------------------------------------------------------
- def make_item_list
- @data = [nil]
- items = {}
- weapons = {}
- armours = {}
- @goods = {}
- for item in @drops
- case item
- when RPG::Item
- items[item] = 0 if items[item].nil?
- items[item] += 1
- when RPG::Weapon
- weapons[item] = 0 if weapons[item].nil?
- weapons[item] += 1
- when RPG::Armor
- armours[item] = 0 if armours[item].nil?
- armours[item] += 1
- end
- end
- items = items.sort { |a,b| a[0].id <=> b[0].id }
- weapons = weapons.sort { |a,b| a[0].id <=> b[0].id }
- armours = armours.sort { |a,b| a[0].id <=> b[0].id }
- for key in items; @goods[key[0]] = key[1]; @data.push(key[0]); end
- for key in weapons; @goods[key[0]] = key[1]; @data.push(key[0]); end
- for key in armours; @goods[key[0]] = key[1]; @data.push(key[0]); end
- end
-
- #--------------------------------------------------------------------------
- # draw_item
- #--------------------------------------------------------------------------
- def draw_item(index)
- item = @data[index]
- rect = item_rect(index)
- reset_font_settings
- if item.nil?
- draw_gold(rect)
- return
- end
- rect.width -= 4
- draw_item_name(item, rect.x, rect.y, true, rect.width - 24)
- draw_item_number(rect, item)
- end
-
- #--------------------------------------------------------------------------
- # draw_gold
- #--------------------------------------------------------------------------
- def draw_gold(rect)
- text = Vocab.currency_unit
- draw_currency_value(@gold, text, rect.x, rect.y, rect.width)
- end
-
- #--------------------------------------------------------------------------
- # draw_item_number
- #--------------------------------------------------------------------------
- def draw_item_number(rect, item)
- number = @goods[item].group
- if $imported["YEA-AdjustLimits"]
- contents.font.size = YEA::LIMIT::ITEM_FONT
- text = sprintf(YEA::LIMIT::ITEM_PREFIX, number)
- draw_text(rect, text, 2)
- else
- draw_text(rect, sprintf(":%s", number), 2)
- end
- end
-
- end # Window_VictorySpoils
- #==============================================================================
- # ■ Scene_Battle
- #==============================================================================
- class Scene_Battle < Scene_Base
-
- #--------------------------------------------------------------------------
- # alias method: create_all_windows
- #--------------------------------------------------------------------------
- alias scene_battle_create_all_windows_va create_all_windows
- def create_all_windows
- scene_battle_create_all_windows_va
- create_victory_aftermath_windows
- end
-
- #--------------------------------------------------------------------------
- # new method: create_victory_aftermath_windows
- #--------------------------------------------------------------------------
- def create_victory_aftermath_windows
- @victory_title_window = Window_VictoryTitle.new
- @victory_exp_window_back = Window_VictoryEXP_Back.new
- @victory_exp_window_front = Window_VictoryEXP_Front.new
- @victory_level_window = Window_VictoryLevelUp.new
- @victory_level_skills = Window_VictorySkills.new
- @victory_spoils_window = Window_VictorySpoils.new
- end
-
- #--------------------------------------------------------------------------
- # new method: show_victory_display_exp
- #--------------------------------------------------------------------------
- def show_victory_display_exp
- @victory_title_window.open
- name = $game_party.battle_members[0].name
- fmt = YEA::VICTORY_AFTERMATH::TOP_TEAM
- name = sprintf(fmt, name) if $game_party.battle_members.size > 1
- fmt = YEA::VICTORY_AFTERMATH::TOP_VICTORY_TEXT
- text = sprintf(fmt, name)
- @victory_title_window.refresh(text)
- #---
- @victory_exp_window_back.open
- @victory_exp_window_back.refresh
- @victory_exp_window_front.open
- @victory_exp_window_front.refresh
- end
-
- #--------------------------------------------------------------------------
- # new method: show_victory_level_up
- #--------------------------------------------------------------------------
- def show_victory_level_up(actor, temp_actor)
- @victory_exp_window_back.hide
- @victory_exp_window_front.hide
- #---
- fmt = YEA::VICTORY_AFTERMATH::TOP_LEVEL_UP
- text = sprintf(fmt, actor.name)
- @victory_title_window.refresh(text)
- #---
- @victory_level_window.show
- @victory_level_window.refresh(actor, temp_actor)
- @victory_level_skills.show
- @victory_level_skills.refresh(actor, temp_actor)
- end
-
- #--------------------------------------------------------------------------
- # new method: show_victory_spoils
- #--------------------------------------------------------------------------
- def show_victory_spoils(gold, drops)
- @victory_exp_window_back.hide
- @victory_exp_window_front.hide
- @victory_level_window.hide
- @victory_level_skills.hide
- #---
- text = YEA::VICTORY_AFTERMATH::TOP_SPOILS
- @victory_title_window.refresh(text)
- #---
- @victory_spoils_window.show
- @victory_spoils_window.make(gold, drops)
- end
-
- #--------------------------------------------------------------------------
- # new method: close_victory_windows
- #--------------------------------------------------------------------------
- def close_victory_windows
- @victory_title_window.close
- @victory_exp_window_back.close
- @victory_exp_window_front.close
- @victory_level_window.close
- @victory_level_skills.close
- @victory_spoils_window.close
- wait(16)
- end
-
- end # Scene_Battle
- #==============================================================================
- #
- # ▼ End of File
- #
- #==============================================================================
复制代码 |
|