赞 | 0 |
VIP | 0 |
好人卡 | 2 |
积分 | 1 |
经验 | 952 |
最后登录 | 2013-12-27 |
在线时间 | 336 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 336 小时
- 注册时间
- 2010-8-26
- 帖子
- 428
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 巧克力猫咪 于 2011-2-20 18:00 编辑
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- #_/ ◆ 拡張ステータス画面 - KGC_ExtendedStatusScene ◆ VX ◆
- #_/ ◇ Last update : 2009/09/26 ◇
- #_/----------------------------------------------------------------------------
- #_/ ステータス画面に表示する内容を詳細化します。
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- $data_states = load_data("Data/States.rvdata") if $data_states == nil
- $data_system = load_data("Data/System.rvdata") if $data_system == nil
- #==============================================================================
- # ★ カスタマイズ項目 - Customize BEGIN ★
- #==============================================================================
- module KGC
- module ExtendedStatusScene
- # ◆ プロフィール
- PROFILE = []
- # ここから下に
- # PROFILE[アクターID] = 'プロフィール'
- # という書式で設定。
- # 改行する場合は、改行したい位置に \| を入力。
- PROFILE[1] =
- '丧失了自己的记忆,被法尔王所救,在法尔国被灭后带着公主卡' +
- '\|' +
- '丽安开始帮助爱科特,是个拥有迷一样身世的年轻人'
- # ◆ コマンド
- # コマンドを表示したい順に記述。
- # 表示したくないコマンドは省略可 (0 個はダメ)。
- # :param .. パラメータ
- # :resist .. 属性/ステート耐性
- # :element_resist .. 属性耐性
- # :state_resist .. ステート耐性
- # :profile .. プロフィール
- COMMANDS = [:param, :element_resist, :state_resist, :profile, :actor ]
- # ◆ コマンド名
- COMMAND_NAME = {
- :param => " 基本能力",
- :resist => "耐性",
- :element_resist => " 属性抗性",
- :state_resist => " 状态抗性",
- :profile => " 人物背景",
- :actor => " 人物图像",
- }
- # ◆ 表示するパラメータ
- # :param ページに表示したい順に記述。
- # 表示したくない項目は省略可。
- # :atk .. 攻击力
- # :def .. 防御力
- # :spi .. 精神力
- # :agi .. 敏捷性
- # :hit .. 命中率
- # :eva .. 回避率
- # :cri .. 致命一击
- # :cp .. CP (≪スキルCP制≫ に対応)
- # :ep .. EP (≪装備拡張≫ に対応)
- PARAMS = [:atk, :def, :spi, :agi, :hit, :eva, :cri, :cp, :ep]
- # ◆ パラメータ名
- # :param, :resist コマンドで使用。
- PARAMETER_NAME = {
- # :param 用
- :hit => "命中",
- :eva => "回避",
- :cri => "暴击",
- # :resist 用
- :element_resist => "属性耐性",
- :state_resist => "属性抵抗",
- } # ← これは消さないこと!
- # ◆ 属性耐性の表記方法
- # 0 .. 数値
- # 1 .. チャート
- # 2 .. チャート&数値 (:resist はチャートのみ)
- # 1, 2 は ≪ビットマップ拡張≫ が必要。
- RESIST_STYLE = 2
- # ◆ 耐性の数値
- # 0 .. 属性: 100 で通常、99 以下は軽減 (マイナスは吸収)、101 以上は弱点
- # ステート: 付加成功率 (かかりやすさ)
- # 1 .. 属性: 0 で通常、プラスは軽減 (101 以上は吸収)、マイナスは弱点
- # ステート: 付加回避率 (かかりにくさ)
- RESIST_NUM_STYLE = 1
- # ◆ チャート色
- CHART_LINE_COLOR = Color.new(128, 255, 128) # ライン色
- CHART_BASE_COLOR = Color.new(128, 192, 255) # ベース色
- CHART_FLASH_COLOR = Color.new(128, 255, 128) # フラッシュ色
- # ◆ チャートをなめらかにする
- # true : 高品質、低速
- # false : 低品質、高速
- CHART_HIGHQUALITY = true
- # ~ 以下の項目は ≪モンスター図鑑≫ と互換性があります。 ~
- # ~ ≪モンスター図鑑≫ 側の設定をコピーしても構いません。~
- # ◆ 属性耐性を調べる範囲
- # 耐性を調べる属性の ID を配列に格納。
- # .. や ... を使用した範囲指定も可能。
- ELEMENT_RANGE = [1..16]
- # ◆ 属性のアイコン
- # 各属性に対応するアイコンの番号を指定。
- # 配列の添字が属性 ID に対応。
- # (最初が属性 ID: 0 に対応、あとは ID: 1, 2, 3, ... の順)
- ELEMENT_ICON = [0, # ID: 0 はダミー (未使用)
- 2, 109, 108, 104, 107, 106, 111, 110, # ID: 1 ~ 8
- 104, 105, 106, 107, 108, 109, 110, 111, # ID: 9 ~ 16
- ] # ← これは消さないこと!
- # ◆ ステート耐性を調べる範囲
- # 耐性を調べるステートの ID を配列に格納。
- # 記述方法は ELEMENT_RANGE と同様。$data_states.size
- STATE_RANGE = [1...9]
- end
- end
- #==============================================================================
- # ☆ カスタマイズ項目 終了 - Customize END ☆
- #==============================================================================
- $imported = {} if $imported == nil
- $imported["ExtendedStatusScene"] = true
- module KGC::ExtendedStatusScene
- module_function
- #--------------------------------------------------------------------------
- # ○ Range と Integer の配列を Integer の配列に変換 (重複要素は排除)
- #--------------------------------------------------------------------------
- def convert_integer_array(array, type = nil)
- result = []
- array.each { |i|
- case i
- when Range
- result |= i.to_a
- when Integer
- result |= [i]
- end
- }
- case type
- when :element
- result.delete_if { |x| x >= $data_system.elements.size }
- when :state
- result.delete_if { |x|
- x >= $data_states.size ||
- $data_states[x].nonresistance ||
- $data_states[x].priority == 0
- }
- end
- return result
- end
- # チェックする属性リスト
- CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE, :element)
- # チェックするステートリスト
- CHECK_STATE_LIST = convert_integer_array(STATE_RANGE, :state)
- # 耐性表記方法
- case RESIST_STYLE
- when 0
- RESIST_STYLE_SYMBOL = :num
- when 1
- RESIST_STYLE_SYMBOL = :chart
- else
- RESIST_STYLE_SYMBOL = :both
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # □ Window_StatusCommand
- #------------------------------------------------------------------------------
- # ステータス画面で、表示する内容を選択するウィンドウです。
- #==============================================================================
- class Window_StatusCommand < Window_Command
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize
- commands = []
- KGC::ExtendedStatusScene::COMMANDS.each { |c|
- commands << KGC::ExtendedStatusScene::COMMAND_NAME[c]
- }
- super(160, commands)
- self.height = WLH * 5 + 32
- self.active = true
- end
- #--------------------------------------------------------------------------
- # ○ 選択中のコマンド取得
- #--------------------------------------------------------------------------
- def command
- return KGC::ExtendedStatusScene::COMMANDS[index]
- end
- #--------------------------------------------------------------------------
- # ● カーソルを 1 ページ後ろに移動
- #--------------------------------------------------------------------------
- def cursor_pagedown
- return if Input.repeat?(Input::R)
- super
- end
- #--------------------------------------------------------------------------
- # ● カーソルを 1 ページ前に移動
- #--------------------------------------------------------------------------
- def cursor_pageup
- return if Input.repeat?(Input::L)
- super
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Window_Status
- #==============================================================================
- class Window_Status < Window_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # actor : アクター
- #--------------------------------------------------------------------------
- def initialize(actor)
- super(160, 0, Graphics.width - 160, WLH * 5 + 32)
- @actor = actor
- refresh
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- draw_basic(104, 0)
- draw_exp(104, WLH * 3)
- end
- #--------------------------------------------------------------------------
- # ● 基本情報の描画
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_basic(x, y)
- draw_actor_face(@actor, 0, (contents.height - 96) / 2)
- draw_actor_name(@actor, x, y)
- draw_actor_class(@actor, x + 120, y)
- draw_actor_level(@actor, x, y + WLH)
- draw_actor_state(@actor, x, y + WLH * 2)
- draw_actor_hp(@actor, x + 120, y + WLH)
- draw_actor_mp(@actor, x + 120, y + WLH * 2)
- end
- #--------------------------------------------------------------------------
- # ● 経験値情報の描画
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- #--------------------------------------------------------------------------
- def draw_exp(x, y)
- if $imported["GenericGauge"]
- draw_actor_exp(@actor, x, y + WLH * 0, 240)
- draw_actor_next_exp(@actor, x, y + WLH * 1, 240)
- end
- s1 = @actor.exp_s
- s2 = @actor.next_rest_exp_s
- s_next = sprintf(Vocab::ExpNext, Vocab::level)
- self.contents.font.color = system_color
- self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
- self.contents.draw_text(x, y + WLH * 1, 180, WLH, s_next)
- self.contents.font.color = normal_color
- unless $imported["GenericGauge"]
- self.contents.draw_text(x, y + WLH * 0, 240, WLH, s1, 2)
- self.contents.draw_text(x, y + WLH * 1, 240, WLH, s2, 2)
- end
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # □ Window_StatusDetail
- #------------------------------------------------------------------------------
- # ステータス画面で、アクターの詳細情報を表示するウィンドウです。
- #==============================================================================
- class Window_StatusDetail < Window_Base
- #--------------------------------------------------------------------------
- # ○ 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_reader :category
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # actor : アクター
- #--------------------------------------------------------------------------
- def initialize(actor)
- @category = nil
- y = WLH * 5 + 32
- super(0, y, Graphics.width, Graphics.height - y)
- create_chart_sprite
- @actor = actor
- @duration = 0
- self.z = z
- end
- #--------------------------------------------------------------------------
- # ○ レーダーチャートスプライト作成
- #--------------------------------------------------------------------------
- def create_chart_sprite
- @element_chart_sprite = Sprite_Base.new
- @element_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
- @element_chart_sprite.ox = @element_chart_sprite.width / 2
- @element_chart_sprite.oy = @element_chart_sprite.height / 2
- @element_chart_sprite.blend_type = 1
- @element_chart_sprite.opacity = 0
- @element_chart_sprite.visible = false
- @state_chart_sprite = Sprite_Base.new
- @state_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
- @state_chart_sprite.ox = @state_chart_sprite.width / 2
- @state_chart_sprite.oy = @state_chart_sprite.height / 2
- @state_chart_sprite.blend_type = 1
- @state_chart_sprite.opacity = 0
- @state_chart_sprite.visible = false
- end
- #--------------------------------------------------------------------------
- # ● 破棄
- #--------------------------------------------------------------------------
- def dispose
- @element_chart_sprite.bitmap.dispose
- @element_chart_sprite.dispose
- @state_chart_sprite.bitmap.dispose
- @state_chart_sprite.dispose
- super
- end
- #--------------------------------------------------------------------------
- # ○ Z 座標設定
- #--------------------------------------------------------------------------
- def z=(value)
- super(value)
- @element_chart_sprite.z = z + 1 if @element_chart_sprite != nil
- @state_chart_sprite.z = z + 1 if @state_chart_sprite != nil
- end
- #--------------------------------------------------------------------------
- # ○ カテゴリー設定
- #--------------------------------------------------------------------------
- def category=(category)
- return if @category == category
- @category = category
- refresh
- end
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- def refresh
- @element_chart_sprite.visible = false
- @state_chart_sprite.visible = false
- return if @category == nil
- self.contents.clear
- case @category
- when :param
- draw_parameter_list
- when :resist
- draw_resistance
- when :element_resist
- draw_element_resistance(0, 0,
- KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)
- when :state_resist
- draw_state_resistance(0, 0,
- KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)
- when :profile
- draw_profile
- when :actor
- draw_actor_list
- end
- Graphics.frame_reset
- end
- #--------------------------------------------------------------------------
- # ○ パラメータ描画actor.id
- #--------------------------------------------------------------------------
- def draw_parameter_list
- y = 0
- KGC::ExtendedStatusScene::PARAMS.each { |param|
- draw_parameter(param, 0, y)
- y += WLH
- }
- x = 192
- contents.font.color = system_color
- contents.draw_text(x, 0, 120, WLH, Vocab::equip)
- @actor.equips.each_with_index { |item, i|
- draw_item_name(item, x, WLH * (i + 1))
- }
- contents.font.color = normal_color
- end
- #--------------------------------------------------------------------------
- # ○ 個別パラメータ描画
- #--------------------------------------------------------------------------
- def draw_parameter(param, x, y)
- case param
- when :atk
- draw_actor_parameter(@actor, x, y, 0)
- when :def
- draw_actor_parameter(@actor, x, y, 1)
- when :spi
- draw_actor_parameter(@actor, x, y, 2)
- when :agi
- draw_actor_parameter(@actor, x, y, 3)
- when :hit
- draw_actor_parameter(@actor, x, y, 4)
- when :eva
- draw_actor_parameter(@actor, x, y, 5)
- when :cri
- draw_actor_parameter(@actor, x, y, 6)
- when :cp
- return unless $imported["SkillCPSystem"]
- return unless KGC::SkillCPSystem::SHOW_STATUS_CP
- draw_actor_cp(@actor, x, y, 156)
- when :ep
- return unless $imported["EquipExtension"]
- return unless KGC::EquipExtension::SHOW_STATUS_EP
- draw_actor_ep(@actor, x, y, 156)
- end
- end
- #--------------------------------------------------------------------------
- # ● 能力値の描画
- # actor : アクター
- # x : 描画先 X 座標
- # y : 描画先 Y 座標
- # type : 能力値の種類 (0~6)
- #--------------------------------------------------------------------------
- def draw_actor_parameter(actor, x, y, type)
- return super(actor, x, y, type) if type <= 3
- names = KGC::ExtendedStatusScene::PARAMETER_NAME
- case type
- when 4
- parameter_name = names[:hit]
- parameter_value = actor.hit
- when 5
- parameter_name = names[:eva]
- parameter_value = actor.eva
- when 6
- parameter_name = names[:cri]
- parameter_value = actor.cri
- end
- self.contents.font.color = system_color
- self.contents.draw_text(x, y, 120, WLH, parameter_name)
- self.contents.font.color = normal_color
- self.contents.draw_text(x + 120, y, 36, WLH, parameter_value, 2)
- end
- #--------------------------------------------------------------------------
- # ○ 耐性描画
- #--------------------------------------------------------------------------
- def draw_resistance
- case KGC::ExtendedStatusScene::RESIST_STYLE
- when 0
- type = :num
- else
- type = :chart
- end
- x = 0
- contents.font.color = system_color
- contents.draw_text(x, 0, 120, WLH,
- KGC::ExtendedStatusScene::PARAMETER_NAME[:element_resist])
- contents.font.color = normal_color
- x = draw_element_resistance(x, WLH, type)
- contents.font.color = system_color
- contents.draw_text(x, 0, 120, WLH,
- KGC::ExtendedStatusScene::PARAMETER_NAME[:state_resist])
- x = draw_state_resistance(x, WLH, type)
- contents.font.color = normal_color
- end
- #--------------------------------------------------------------------------
- # ○ 属性耐性描画
- # x, y : 描画先 X, Y
- # type : 表示形式 (:num, :chart, :both)
- # 描画終了時の X 座標を返す。
- #--------------------------------------------------------------------------
- def draw_element_resistance(x, y, type)
- if $imported["BitmapExtension"]
- if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
- Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
- end
- if [:chart, :both].include?(type)
- x = draw_element_resistance_chart(x, y)
- @element_chart_sprite.visible = true
- end
- Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT
- end
- if [:num, :both].include?(type)
- x = draw_element_resistance_num(x, y)
- end
- return x
- end
- #--------------------------------------------------------------------------
- # ○ 属性耐性描画 (チャート)
- # x, y : 描画先 X, Y
- # 描画終了時の X 座標を返す。
- #--------------------------------------------------------------------------
- def draw_element_resistance_chart(x, y)
- r = (contents.height - y - 56) / 2
- cx = x + r + 28
- cy = y + r + 28
- pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
- elements = KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST
- draw_chart_line(cx, cy, r, elements.size, 3, pw)
- # チャート
- points = []
- elements.each_with_index { |e, i|
- n = @actor.element_rate(e)
- n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
- n = [[n, -100].max, 200].min
- dr = r * (n + 100) / 100 / 3
- rad = Math::PI * (360.0 * i / elements.size - 90.0) / 180.0
- dx = cx + Integer(dr * Math.cos(-rad))
- dy = cy + Integer(dr * Math.sin(rad))
- points << [dx, dy]
- dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
- dy = cy + Integer((r + 14) * Math.sin(rad)) - 12
- draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[e], dx, dy)
- }
- draw_chart(cx, cy, r, points, pw)
- draw_chart_flash(@element_chart_sprite, x, y, r, points, pw)
- return (x + cx + r + 42)
- end
- #--------------------------------------------------------------------------
- # ○ 属性耐性描画 (数値)
- # x, y : 描画先 X, Y
- # 描画終了時の X 座標を返す。
- #--------------------------------------------------------------------------
- def draw_element_resistance_num(x, y)
- origin_y = y
- contents.font.color = normal_color
- KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST.each { |i|
- if y + WLH > contents.height
- x += 84
- y = origin_y
- end
- draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[i], x, y)
- n = @actor.element_rate(i)
- n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
- rate = sprintf("%4d%%", n)
- contents.draw_text(x + 24, y, 52, WLH, rate, 2)
- y += WLH
- }
- return (x + 96)
- end
- #--------------------------------------------------------------------------
- # ○ ステート耐性描画
- # x, y : 描画先 X, Y
- # type : 表示形式 (:num, :chart, :both)
- # 描画終了時の X 座標を返す。
- #--------------------------------------------------------------------------
- def draw_state_resistance(x, y, type)
- if $imported["BitmapExtension"]
- if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
- Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
- end
- if [:chart, :both].include?(type)
- x = draw_state_resistance_chart(x, y)
- @state_chart_sprite.visible = true
- end
- Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT
- end
- if [:num, :both].include?(type)
- x = draw_state_resistance_num(x, y)
- end
- return x
- end
- #--------------------------------------------------------------------------
- # ○ ステート耐性描画 (チャート)
- # x, y : 描画先 X, Y
- # 描画終了時の X 座標を返す。
- #--------------------------------------------------------------------------
- def draw_state_resistance_chart(x, y)
- r = (contents.height - y - 56) / 2
- cx = x + r + 28
- cy = y + r + 28
- pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
- states = KGC::ExtendedStatusScene::CHECK_STATE_LIST
- draw_chart_line(cx, cy, r, states.size, 2, pw)
- # チャート
- points = []
- states.each_with_index { |s, i|
- state = $data_states[s]
- n = @actor.state_probability(s)
- n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
- dr = r * n / 100
- rad = Math::PI * (360.0 * i / states.size - 90.0) / 180.0
- dx = cx + Integer(dr * Math.cos(-rad))
- dy = cy + Integer(dr * Math.sin(rad))
- points << [dx, dy]
- dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
- dy = cy + Integer((r + 14) * Math.sin(rad)) - 12
- draw_icon(state.icon_index, dx, dy)
- }
- draw_chart(cx, cy, r, points, pw)
- draw_chart_flash(@state_chart_sprite, x, y, r, points, pw)
- return (x + cx + r + 42)
- end
- #--------------------------------------------------------------------------
- # ○ ステート耐性描画 (数値)
- # x, y : 描画先 X, Y
- # 描画終了時の X 座標を返す。
- #--------------------------------------------------------------------------
- def draw_state_resistance_num(x, y)
- origin_y = y
- contents.font.color = normal_color
- KGC::ExtendedStatusScene::CHECK_STATE_LIST.each { |i|
- state = $data_states[i]
- if y + WLH > contents.height
- x += 76
- y = origin_y
- end
- draw_icon(state.icon_index, x, y)
- n = @actor.state_probability(i)
- n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
- rate = sprintf("%3d%%", n)
- contents.draw_text(x + 24, y, 44, WLH, rate, 2)
- y += WLH
- }
- return x
- end
- #--------------------------------------------------------------------------
- # ○ チャートライン描画
- # cx, cy : 中心 X, Y
- # r : 半径
- # n : 頂点数
- # breaks : 空間数
- # pw : ペン幅
- #--------------------------------------------------------------------------
- def draw_chart_line(cx, cy, r, n, breaks, pw)
- color = KGC::ExtendedStatusScene::CHART_BASE_COLOR.clone
- contents.draw_regular_polygon(cx, cy, r, n, color, pw)
- color.alpha = color.alpha * 5 / 8
- contents.draw_spoke(cx, cy, r, n, color, pw)
- (1..breaks).each { |i|
- contents.draw_regular_polygon(cx, cy, r * i / breaks, n, color, pw)
- }
- end
- #--------------------------------------------------------------------------
- # ○ チャート描画
- # cx, cy : 中心 X, Y
- # r : 半径
- # points : 頂点リスト
- # pw : ペン幅
- #--------------------------------------------------------------------------
- def draw_chart(cx, cy, r, points, pw)
- contents.draw_polygon(points, KGC::ExtendedStatusScene::CHART_LINE_COLOR, 2)
- end
- #--------------------------------------------------------------------------
- # ○ チャートフラッシュ描画
- # sprite : チャートスプライト
- # x, y : 基準 X, Y
- # r : 半径
- # points : 頂点リスト
- # pw : ペン幅
- #--------------------------------------------------------------------------
- def draw_chart_flash(sprite, x, y, r, points, pw)
- points = points.clone
- points.each { |pt| pt[0] -= x }
- cx = x + r + 28
- cy = y + r + 28
- color = KGC::ExtendedStatusScene::CHART_FLASH_COLOR
- sprite.bitmap.clear
- sprite.bitmap.fill_polygon(points, Color.new(0, 0, 0, 0), color)
- sprite.ox = cx - x
- sprite.oy = cy
- sprite.x = self.x + cx + 16
- sprite.y = self.y + cy + 16
- end
- #--------------------------------------------------------------------------
- # ○ プロフィール描画
- #--------------------------------------------------------------------------
- def draw_profile
- profile = KGC::ExtendedStatusScene::PROFILE[@actor.id]
- return if profile == nil
- contents.font.color = normal_color
- profile.split(/\\\|/).each_with_index { |line, i|
- draw_profile_text(0, WLH * i, line)
- }
- end
- #--------------------------------------------------------------------------
- # ○ プロフィールテキスト描画
- # x, y : 描画先座標
- # text : 描画テキスト
- #--------------------------------------------------------------------------
- def draw_profile_text(x, y, text)
- buf = convert_special_characters(text)
- while (c = buf.slice!(/./m)) != nil
- case c
- when "\x01" # \C[n] (文字色変更)
- buf.sub!(/\[(\d+)\]/, "")
- contents.font.color = text_color($1.to_i)
- next
- when "\x02" # \G (所持金表示)
- n = $game_party.gold.to_s
- cw = contents.text_size(n).width
- contents.draw_text(x, y, cw + 8, WLH, n)
- x += cw
- else # 普通の文字
- contents.draw_text(x, y, 40, WLH, c)
- x += contents.text_size(c).width
- end
- end
- contents.font.color = normal_color
- end
- #--------------------------------------------------------------------------
- # ○ 人物描画
- # x, y : 描画先座標
- # text : 描画
- def draw_actor_list(actor, x, y)
- case @actor.id
- when 1
- i = "流"
- when 2
- i = "卡利"
- end
- bitmap = Cache.picture(i)
- rect = Rect.new(0,0,bitmap.width,bitmap.height)
- self.contents.blt(x, -230, bitmap, rect)
- end
- #--------------------------------------------------------------------------
- # ○ 特殊文字の変換
- # text : 変換対象テキスト
- #--------------------------------------------------------------------------
- def convert_special_characters(text)
- buf = text.dup
- buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
- buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
- buf.gsub!(/\\N\[(\d+)\]/i) { $game_actors[$1.to_i].name }
- buf.gsub!(/\\C\[(\d+)\]/i) { "\x01[#{$1}]" }
- buf.gsub!(/\\G/) { "\x02" }
- buf.gsub!(/\\\\/) { "\\" }
- return buf
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- super
- update_chart
- end
- #--------------------------------------------------------------------------
- # ○ チャート更新
- #--------------------------------------------------------------------------
- def update_chart
- return if @element_chart_sprite == nil
- @element_chart_sprite.update
- @state_chart_sprite.update
- zoom = opacity = 0
- case @duration
- when 0..11
- zoom = @duration / 11.0
- opacity = 255
- when 12..27
- zoom = 1
- opacity = (27 - @duration) * 16
- end
- @element_chart_sprite.zoom_x = @element_chart_sprite.zoom_y = zoom
- @element_chart_sprite.opacity = opacity
- @state_chart_sprite.zoom_x = @state_chart_sprite.zoom_y = zoom
- @state_chart_sprite.opacity = opacity
- @duration = (@duration + 1) % Graphics.frame_rate
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Scene_Status
- #==============================================================================
- class Scene_Status < Scene_Base
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- # actor_index : アクターインデックス
- # command_index : コマンドインデックス
- #--------------------------------------------------------------------------
- def initialize(actor_index = 0, command_index = 0)
- @actor_index = actor_index
- @command_index = command_index
- end
- #--------------------------------------------------------------------------
- # ● 開始処理
- #--------------------------------------------------------------------------
- alias start_KGC_ExtendedStatusScene start
- def start
- start_KGC_ExtendedStatusScene
- @command_window = Window_StatusCommand.new
- @command_window.index = @command_index
- @detail_window = Window_StatusDetail.new(@actor)
- @detail_window.category = @command_window.command
- end
- #--------------------------------------------------------------------------
- # ● 終了処理
- #--------------------------------------------------------------------------
- alias terminate_KGC_ExtendedStatusScene terminate
- def terminate
- terminate_KGC_ExtendedStatusScene
- @command_window.dispose
- @detail_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 次のアクターの画面に切り替え
- #--------------------------------------------------------------------------
- def next_actor
- @actor_index += 1
- @actor_index %= $game_party.members.size
- $scene = Scene_Status.new(@actor_index, @command_window.index)
- end
- #--------------------------------------------------------------------------
- # ● 前のアクターの画面に切り替え
- #--------------------------------------------------------------------------
- def prev_actor
- @actor_index += $game_party.members.size - 1
- @actor_index %= $game_party.members.size
- $scene = Scene_Status.new(@actor_index, @command_window.index)
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias update_KGC_ExtendedStatusScene update
- def update
- @command_window.update
- @detail_window.update
- @detail_window.category = @command_window.command
- update_KGC_ExtendedStatusScene
- end
- end
复制代码 唉,我想新建个人物图像的选项,可是自己本事不够啊,脚本忙求人帮我看看,现在错误出哪了,我改不来了,自己改的敌方大概也有错吧 |
|