设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2082|回复: 2
打印 上一主题 下一主题

[已经解决] 状态里想加图片

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
336 小时
注册时间
2010-8-26
帖子
428
跳转到指定楼层
1
发表于 2011-2-19 22:25:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 巧克力猫咪 于 2011-2-20 18:00 编辑
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 拡張ステータス画面 - KGC_ExtendedStatusScene ◆ VX ◆
  3. #_/    ◇ Last update : 2009/09/26 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  ステータス画面に表示する内容を詳細化します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. $data_states = load_data("Data/States.rvdata") if $data_states == nil
  8. $data_system = load_data("Data/System.rvdata") if $data_system == nil

  9. #==============================================================================
  10. # ★ カスタマイズ項目 - Customize BEGIN ★
  11. #==============================================================================

  12. module KGC
  13. module ExtendedStatusScene
  14.   # ◆ プロフィール
  15.   PROFILE = []
  16.   # ここから下に
  17.   #  PROFILE[アクターID] = 'プロフィール'
  18.   # という書式で設定。
  19.   # 改行する場合は、改行したい位置に \| を入力。
  20.   PROFILE[1] =

  21.     '丧失了自己的记忆,被法尔王所救,在法尔国被灭后带着公主卡' +
  22.     '\|' +
  23.     '丽安开始帮助爱科特,是个拥有迷一样身世的年轻人'
  24.   # ◆ コマンド
  25.   #  コマンドを表示したい順に記述。
  26.   #  表示したくないコマンドは省略可 (0 個はダメ)。
  27.   #   :param          .. パラメータ
  28.   #   :resist         .. 属性/ステート耐性
  29.   #   :element_resist .. 属性耐性
  30.   #   :state_resist   .. ステート耐性
  31.   #   :profile        .. プロフィール
  32.   COMMANDS = [:param, :element_resist, :state_resist, :profile, :actor ]

  33.   # ◆ コマンド名
  34.   COMMAND_NAME = {
  35.     :param          => "       基本能力",
  36.     :resist         => "耐性",
  37.     :element_resist => "       属性抗性",
  38.     :state_resist   => "       状态抗性",
  39.     :profile        => "       人物背景",
  40.     :actor          => "       人物图像",
  41.     }

  42.   # ◆ 表示するパラメータ
  43.   #  :param ページに表示したい順に記述。
  44.   #  表示したくない項目は省略可。
  45.   #   :atk .. 攻击力
  46.   #   :def .. 防御力
  47.   #   :spi .. 精神力
  48.   #   :agi .. 敏捷性
  49.   #   :hit .. 命中率
  50.   #   :eva .. 回避率
  51.   #   :cri .. 致命一击
  52.   #   :cp  .. CP (≪スキルCP制≫ に対応)
  53.   #   :ep  .. EP (≪装備拡張≫ に対応)
  54.   PARAMS = [:atk, :def, :spi, :agi, :hit, :eva, :cri, :cp, :ep]

  55.   # ◆ パラメータ名
  56.   #  :param, :resist コマンドで使用。
  57.   PARAMETER_NAME = {
  58.     # :param 用
  59.     :hit => "命中",
  60.     :eva => "回避",
  61.     :cri => "暴击",
  62.     # :resist 用
  63.     :element_resist => "属性耐性",
  64.     :state_resist   => "属性抵抗",
  65.   }  # ← これは消さないこと!

  66.   # ◆ 属性耐性の表記方法
  67.   #   0 .. 数値
  68.   #   1 .. チャート
  69.   #   2 .. チャート&数値 (:resist はチャートのみ)
  70.   #  1, 2 は ≪ビットマップ拡張≫ が必要。
  71.   RESIST_STYLE = 2
  72.   # ◆ 耐性の数値
  73.   #   0 .. 属性: 100 で通常、99 以下は軽減 (マイナスは吸収)、101 以上は弱点
  74.   #        ステート: 付加成功率 (かかりやすさ)
  75.   #   1 .. 属性: 0 で通常、プラスは軽減 (101 以上は吸収)、マイナスは弱点
  76.   #        ステート: 付加回避率 (かかりにくさ)
  77.   RESIST_NUM_STYLE = 1

  78.   # ◆ チャート色
  79.   CHART_LINE_COLOR  = Color.new(128, 255, 128)  # ライン色
  80.   CHART_BASE_COLOR  = Color.new(128, 192, 255)  # ベース色
  81.   CHART_FLASH_COLOR = Color.new(128, 255, 128)  # フラッシュ色
  82.   # ◆ チャートをなめらかにする
  83.   #   true  : 高品質、低速
  84.   #   false : 低品質、高速
  85.   CHART_HIGHQUALITY = true

  86.   # ~ 以下の項目は ≪モンスター図鑑≫ と互換性があります。 ~
  87.   # ~ ≪モンスター図鑑≫ 側の設定をコピーしても構いません。~

  88.   # ◆ 属性耐性を調べる範囲
  89.   #  耐性を調べる属性の ID を配列に格納。
  90.   #  .. や ... を使用した範囲指定も可能。
  91.   ELEMENT_RANGE = [1..16]
  92.   # ◆ 属性のアイコン
  93.   #  各属性に対応するアイコンの番号を指定。
  94.   #  配列の添字が属性 ID に対応。
  95.   #  (最初が属性 ID: 0 に対応、あとは ID: 1, 2, 3, ... の順)
  96.   ELEMENT_ICON = [0,                         # ID: 0 はダミー (未使用)
  97.      2, 109, 108, 104, 107, 106, 111, 110,  # ID: 1 ~  8
  98.     104, 105, 106, 107, 108, 109, 110, 111,  # ID: 9 ~ 16
  99.   ]  # ← これは消さないこと!

  100.   # ◆ ステート耐性を調べる範囲
  101.   #  耐性を調べるステートの ID を配列に格納。
  102.   #  記述方法は ELEMENT_RANGE と同様。$data_states.size
  103.   STATE_RANGE = [1...9]
  104. end
  105. end

  106. #==============================================================================
  107. # ☆ カスタマイズ項目 終了 - Customize END ☆
  108. #==============================================================================

  109. $imported = {} if $imported == nil
  110. $imported["ExtendedStatusScene"] = true

  111. module KGC::ExtendedStatusScene
  112.   module_function
  113.   #--------------------------------------------------------------------------
  114.   # ○ Range と Integer の配列を Integer の配列に変換 (重複要素は排除)
  115.   #--------------------------------------------------------------------------
  116.   def convert_integer_array(array, type = nil)
  117.     result = []
  118.     array.each { |i|
  119.       case i
  120.       when Range
  121.         result |= i.to_a
  122.       when Integer
  123.         result |= [i]
  124.       end
  125.     }
  126.     case type
  127.     when :element
  128.       result.delete_if { |x| x >= $data_system.elements.size }
  129.     when :state
  130.       result.delete_if { |x|
  131.         x >= $data_states.size ||
  132.         $data_states[x].nonresistance ||
  133.         $data_states[x].priority == 0
  134.       }
  135.     end
  136.     return result
  137.   end

  138.   # チェックする属性リスト
  139.   CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE, :element)
  140.   # チェックするステートリスト
  141.   CHECK_STATE_LIST   = convert_integer_array(STATE_RANGE, :state)

  142.   # 耐性表記方法
  143.   case RESIST_STYLE
  144.   when 0
  145.     RESIST_STYLE_SYMBOL = :num
  146.   when 1
  147.     RESIST_STYLE_SYMBOL = :chart
  148.   else
  149.     RESIST_STYLE_SYMBOL = :both
  150.   end
  151. end

  152. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  153. #==============================================================================
  154. # □ Window_StatusCommand
  155. #------------------------------------------------------------------------------
  156. #   ステータス画面で、表示する内容を選択するウィンドウです。
  157. #==============================================================================

  158. class Window_StatusCommand < Window_Command
  159.   #--------------------------------------------------------------------------
  160.   # ● オブジェクト初期化
  161.   #--------------------------------------------------------------------------
  162.   def initialize
  163.     commands = []
  164.     KGC::ExtendedStatusScene::COMMANDS.each { |c|
  165.       commands << KGC::ExtendedStatusScene::COMMAND_NAME[c]
  166.     }
  167.     super(160, commands)
  168.     self.height = WLH * 5 + 32
  169.     self.active = true
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ○ 選択中のコマンド取得
  173.   #--------------------------------------------------------------------------
  174.   def command
  175.     return KGC::ExtendedStatusScene::COMMANDS[index]
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● カーソルを 1 ページ後ろに移動
  179.   #--------------------------------------------------------------------------
  180.   def cursor_pagedown
  181.     return if Input.repeat?(Input::R)
  182.     super
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● カーソルを 1 ページ前に移動
  186.   #--------------------------------------------------------------------------
  187.   def cursor_pageup
  188.     return if Input.repeat?(Input::L)
  189.     super
  190.   end
  191. end

  192. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  193. #==============================================================================
  194. # ■ Window_Status
  195. #==============================================================================

  196. class Window_Status < Window_Base
  197.   #--------------------------------------------------------------------------
  198.   # ● オブジェクト初期化
  199.   #     actor : アクター
  200.   #--------------------------------------------------------------------------
  201.   def initialize(actor)
  202.     super(160, 0, Graphics.width - 160, WLH * 5 + 32)
  203.     @actor = actor
  204.     refresh
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● リフレッシュ
  208.   #--------------------------------------------------------------------------
  209.   def refresh
  210.     self.contents.clear
  211.     draw_basic(104, 0)
  212.     draw_exp(104, WLH * 3)
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 基本情報の描画
  216.   #     x : 描画先 X 座標
  217.   #     y : 描画先 Y 座標
  218.   #--------------------------------------------------------------------------
  219.   def draw_basic(x, y)
  220.     draw_actor_face(@actor, 0, (contents.height - 96) / 2)
  221.     draw_actor_name(@actor, x, y)
  222.     draw_actor_class(@actor, x + 120, y)
  223.     draw_actor_level(@actor, x, y + WLH)
  224.     draw_actor_state(@actor, x, y + WLH * 2)
  225.     draw_actor_hp(@actor, x + 120, y + WLH)
  226.     draw_actor_mp(@actor, x + 120, y + WLH * 2)
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ● 経験値情報の描画
  230.   #     x : 描画先 X 座標
  231.   #     y : 描画先 Y 座標
  232.   #--------------------------------------------------------------------------
  233.   def draw_exp(x, y)
  234.     if $imported["GenericGauge"]
  235.       draw_actor_exp(@actor, x, y + WLH * 0, 240)
  236.       draw_actor_next_exp(@actor, x, y + WLH * 1, 240)
  237.     end

  238.     s1 = @actor.exp_s
  239.     s2 = @actor.next_rest_exp_s
  240.     s_next = sprintf(Vocab::ExpNext, Vocab::level)
  241.     self.contents.font.color = system_color
  242.     self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
  243.     self.contents.draw_text(x, y + WLH * 1, 180, WLH, s_next)
  244.     self.contents.font.color = normal_color

  245.     unless $imported["GenericGauge"]
  246.       self.contents.draw_text(x, y + WLH * 0, 240, WLH, s1, 2)
  247.       self.contents.draw_text(x, y + WLH * 1, 240, WLH, s2, 2)
  248.     end
  249.   end
  250. end

  251. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  252. #==============================================================================
  253. # □ Window_StatusDetail
  254. #------------------------------------------------------------------------------
  255. #   ステータス画面で、アクターの詳細情報を表示するウィンドウです。
  256. #==============================================================================

  257. class Window_StatusDetail < Window_Base
  258.   #--------------------------------------------------------------------------
  259.   # ○ 公開インスタンス変数
  260.   #--------------------------------------------------------------------------
  261.   attr_reader   :category
  262.   #--------------------------------------------------------------------------
  263.   # ● オブジェクト初期化
  264.   #     actor : アクター
  265.   #--------------------------------------------------------------------------
  266.   def initialize(actor)
  267.     @category = nil
  268.     y = WLH * 5 + 32
  269.     super(0, y, Graphics.width, Graphics.height - y)
  270.     create_chart_sprite
  271.     @actor    = actor
  272.     @duration = 0
  273.     self.z = z
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ○ レーダーチャートスプライト作成
  277.   #--------------------------------------------------------------------------
  278.   def create_chart_sprite
  279.     @element_chart_sprite = Sprite_Base.new
  280.     @element_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
  281.     @element_chart_sprite.ox = @element_chart_sprite.width  / 2
  282.     @element_chart_sprite.oy = @element_chart_sprite.height / 2
  283.     @element_chart_sprite.blend_type = 1
  284.     @element_chart_sprite.opacity = 0
  285.     @element_chart_sprite.visible = false

  286.     @state_chart_sprite = Sprite_Base.new
  287.     @state_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)
  288.     @state_chart_sprite.ox = @state_chart_sprite.width  / 2
  289.     @state_chart_sprite.oy = @state_chart_sprite.height / 2
  290.     @state_chart_sprite.blend_type = 1
  291.     @state_chart_sprite.opacity = 0
  292.     @state_chart_sprite.visible = false
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● 破棄
  296.   #--------------------------------------------------------------------------
  297.   def dispose
  298.     @element_chart_sprite.bitmap.dispose
  299.     @element_chart_sprite.dispose
  300.     @state_chart_sprite.bitmap.dispose
  301.     @state_chart_sprite.dispose
  302.     super
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ○ Z 座標設定
  306.   #--------------------------------------------------------------------------
  307.   def z=(value)
  308.     super(value)
  309.     @element_chart_sprite.z = z + 1 if @element_chart_sprite != nil
  310.     @state_chart_sprite.z   = z + 1 if @state_chart_sprite   != nil
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ○ カテゴリー設定
  314.   #--------------------------------------------------------------------------
  315.   def category=(category)
  316.     return if @category == category
  317.     @category = category
  318.     refresh
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● リフレッシュ
  322.   #--------------------------------------------------------------------------
  323.   def refresh
  324.     @element_chart_sprite.visible = false
  325.     @state_chart_sprite.visible   = false
  326.     return if @category == nil

  327.     self.contents.clear
  328.     case @category
  329.     when :param
  330.       draw_parameter_list
  331.     when :resist
  332.       draw_resistance
  333.     when :element_resist
  334.       draw_element_resistance(0, 0,
  335.         KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)
  336.     when :state_resist
  337.       draw_state_resistance(0, 0,
  338.         KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)
  339.     when :profile
  340.       draw_profile
  341.    when :actor
  342.       draw_actor_list
  343.     end
  344.     Graphics.frame_reset
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ○ パラメータ描画actor.id
  348.   #--------------------------------------------------------------------------
  349.   def draw_parameter_list
  350.     y = 0
  351.     KGC::ExtendedStatusScene::PARAMS.each { |param|
  352.       draw_parameter(param, 0, y)
  353.       y += WLH
  354.     }

  355.     x = 192
  356.     contents.font.color = system_color
  357.     contents.draw_text(x, 0, 120, WLH, Vocab::equip)
  358.     @actor.equips.each_with_index { |item, i|
  359.       draw_item_name(item, x, WLH * (i + 1))
  360.     }
  361.     contents.font.color = normal_color
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ○ 個別パラメータ描画
  365.   #--------------------------------------------------------------------------
  366.   def draw_parameter(param, x, y)
  367.     case param
  368.     when :atk
  369.       draw_actor_parameter(@actor, x, y, 0)
  370.     when :def
  371.       draw_actor_parameter(@actor, x, y, 1)
  372.     when :spi
  373.       draw_actor_parameter(@actor, x, y, 2)
  374.     when :agi
  375.       draw_actor_parameter(@actor, x, y, 3)
  376.     when :hit
  377.       draw_actor_parameter(@actor, x, y, 4)
  378.     when :eva
  379.       draw_actor_parameter(@actor, x, y, 5)
  380.     when :cri
  381.       draw_actor_parameter(@actor, x, y, 6)
  382.     when :cp
  383.       return unless $imported["SkillCPSystem"]
  384.       return unless KGC::SkillCPSystem::SHOW_STATUS_CP
  385.       draw_actor_cp(@actor, x, y, 156)
  386.     when :ep
  387.       return unless $imported["EquipExtension"]
  388.       return unless KGC::EquipExtension::SHOW_STATUS_EP
  389.       draw_actor_ep(@actor, x, y, 156)
  390.     end
  391.   end
  392.   #--------------------------------------------------------------------------
  393.   # ● 能力値の描画
  394.   #     actor : アクター
  395.   #     x     : 描画先 X 座標
  396.   #     y     : 描画先 Y 座標
  397.   #     type  : 能力値の種類 (0~6)
  398.   #--------------------------------------------------------------------------
  399.   def draw_actor_parameter(actor, x, y, type)
  400.     return super(actor, x, y, type) if type <= 3

  401.     names = KGC::ExtendedStatusScene::PARAMETER_NAME
  402.     case type
  403.     when 4
  404.       parameter_name  = names[:hit]
  405.       parameter_value = actor.hit
  406.     when 5
  407.       parameter_name  = names[:eva]
  408.       parameter_value = actor.eva
  409.     when 6
  410.       parameter_name  = names[:cri]
  411.       parameter_value = actor.cri
  412.     end
  413.     self.contents.font.color = system_color
  414.     self.contents.draw_text(x, y, 120, WLH, parameter_name)
  415.     self.contents.font.color = normal_color
  416.     self.contents.draw_text(x + 120, y, 36, WLH, parameter_value, 2)
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ○ 耐性描画
  420.   #--------------------------------------------------------------------------
  421.   def draw_resistance
  422.     case KGC::ExtendedStatusScene::RESIST_STYLE
  423.     when 0
  424.       type = :num
  425.     else
  426.       type = :chart
  427.     end

  428.     x = 0
  429.     contents.font.color = system_color
  430.     contents.draw_text(x, 0, 120, WLH,
  431.       KGC::ExtendedStatusScene::PARAMETER_NAME[:element_resist])
  432.     contents.font.color = normal_color
  433.     x = draw_element_resistance(x, WLH, type)

  434.     contents.font.color = system_color
  435.     contents.draw_text(x, 0, 120, WLH,
  436.       KGC::ExtendedStatusScene::PARAMETER_NAME[:state_resist])
  437.     x = draw_state_resistance(x, WLH, type)

  438.     contents.font.color = normal_color
  439.   end
  440.   #--------------------------------------------------------------------------
  441.   # ○ 属性耐性描画
  442.   #     x, y : 描画先 X, Y
  443.   #     type : 表示形式 (:num, :chart, :both)
  444.   #    描画終了時の X 座標を返す。
  445.   #--------------------------------------------------------------------------
  446.   def draw_element_resistance(x, y, type)
  447.     if $imported["BitmapExtension"]
  448.       if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
  449.         Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
  450.       end
  451.       if [:chart, :both].include?(type)
  452.         x = draw_element_resistance_chart(x, y)
  453.         @element_chart_sprite.visible = true
  454.       end
  455.       Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT
  456.     end

  457.     if [:num, :both].include?(type)
  458.       x = draw_element_resistance_num(x, y)
  459.     end

  460.     return x
  461.   end
  462.   #--------------------------------------------------------------------------
  463.   # ○ 属性耐性描画 (チャート)
  464.   #     x, y : 描画先 X, Y
  465.   #    描画終了時の X 座標を返す。
  466.   #--------------------------------------------------------------------------
  467.   def draw_element_resistance_chart(x, y)
  468.     r  = (contents.height - y - 56) / 2
  469.     cx = x + r + 28
  470.     cy = y + r + 28
  471.     pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
  472.     elements = KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST

  473.     draw_chart_line(cx, cy, r, elements.size, 3, pw)

  474.     # チャート
  475.     points = []
  476.     elements.each_with_index { |e, i|
  477.       n   = @actor.element_rate(e)
  478.       n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  479.       n   = [[n, -100].max, 200].min
  480.       dr  = r * (n + 100) / 100 / 3
  481.       rad = Math::PI * (360.0 * i / elements.size - 90.0) / 180.0
  482.       dx  = cx + Integer(dr * Math.cos(-rad))
  483.       dy  = cy + Integer(dr * Math.sin(rad))
  484.       points << [dx, dy]

  485.       dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
  486.       dy = cy + Integer((r + 14) * Math.sin(rad))  - 12
  487.       draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[e], dx, dy)
  488.     }

  489.     draw_chart(cx, cy, r, points, pw)
  490.     draw_chart_flash(@element_chart_sprite, x, y, r, points, pw)

  491.     return (x + cx + r + 42)
  492.   end
  493.   #--------------------------------------------------------------------------
  494.   # ○ 属性耐性描画 (数値)
  495.   #     x, y : 描画先 X, Y
  496.   #    描画終了時の X 座標を返す。
  497.   #--------------------------------------------------------------------------
  498.   def draw_element_resistance_num(x, y)
  499.     origin_y = y
  500.     contents.font.color = normal_color
  501.     KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST.each { |i|
  502.       if y + WLH > contents.height
  503.         x += 84
  504.         y  = origin_y
  505.       end
  506.       draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[i], x, y)
  507.       n = @actor.element_rate(i)
  508.       n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  509.       rate = sprintf("%4d%%", n)
  510.       contents.draw_text(x + 24, y, 52, WLH, rate, 2)
  511.       y += WLH
  512.     }
  513.     return (x + 96)
  514.   end
  515.   #--------------------------------------------------------------------------
  516.   # ○ ステート耐性描画
  517.   #     x, y : 描画先 X, Y
  518.   #     type : 表示形式 (:num, :chart, :both)
  519.   #    描画終了時の X 座標を返す。
  520.   #--------------------------------------------------------------------------
  521.   def draw_state_resistance(x, y, type)
  522.     if $imported["BitmapExtension"]
  523.       if KGC::ExtendedStatusScene::CHART_HIGHQUALITY
  524.         Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS
  525.       end
  526.       if [:chart, :both].include?(type)
  527.         x = draw_state_resistance_chart(x, y)
  528.         @state_chart_sprite.visible = true
  529.       end
  530.       Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT
  531.     end

  532.     if [:num, :both].include?(type)
  533.       x = draw_state_resistance_num(x, y)
  534.     end

  535.     return x
  536.   end
  537.   #--------------------------------------------------------------------------
  538.   # ○ ステート耐性描画 (チャート)
  539.   #     x, y : 描画先 X, Y
  540.   #    描画終了時の X 座標を返す。
  541.   #--------------------------------------------------------------------------
  542.   def draw_state_resistance_chart(x, y)
  543.     r  = (contents.height - y - 56) / 2
  544.     cx = x + r + 28
  545.     cy = y + r + 28
  546.     pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)
  547.     states = KGC::ExtendedStatusScene::CHECK_STATE_LIST

  548.     draw_chart_line(cx, cy, r, states.size, 2, pw)

  549.     # チャート
  550.     points = []
  551.     states.each_with_index { |s, i|
  552.       state = $data_states[s]
  553.       n   = @actor.state_probability(s)
  554.       n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  555.       dr  = r * n / 100
  556.       rad = Math::PI * (360.0 * i / states.size - 90.0) / 180.0
  557.       dx  = cx + Integer(dr * Math.cos(-rad))
  558.       dy  = cy + Integer(dr * Math.sin(rad))
  559.       points << [dx, dy]

  560.       dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12
  561.       dy = cy + Integer((r + 14) * Math.sin(rad))  - 12
  562.       draw_icon(state.icon_index, dx, dy)
  563.     }

  564.     draw_chart(cx, cy, r, points, pw)
  565.     draw_chart_flash(@state_chart_sprite, x, y, r, points, pw)

  566.     return (x + cx + r + 42)
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ○ ステート耐性描画 (数値)
  570.   #     x, y : 描画先 X, Y
  571.   #    描画終了時の X 座標を返す。
  572.   #--------------------------------------------------------------------------
  573.   def draw_state_resistance_num(x, y)
  574.     origin_y = y
  575.     contents.font.color = normal_color
  576.     KGC::ExtendedStatusScene::CHECK_STATE_LIST.each { |i|
  577.       state = $data_states[i]
  578.       if y + WLH > contents.height
  579.         x += 76
  580.         y  = origin_y
  581.       end
  582.       draw_icon(state.icon_index, x, y)
  583.       n = @actor.state_probability(i)
  584.       n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1
  585.       rate = sprintf("%3d%%", n)
  586.       contents.draw_text(x + 24, y, 44, WLH, rate, 2)
  587.       y += WLH
  588.     }
  589.     return x
  590.   end
  591.   #--------------------------------------------------------------------------
  592.   # ○ チャートライン描画
  593.   #     cx, cy : 中心 X, Y
  594.   #     r      : 半径
  595.   #     n      : 頂点数
  596.   #     breaks : 空間数
  597.   #     pw     : ペン幅
  598.   #--------------------------------------------------------------------------
  599.   def draw_chart_line(cx, cy, r, n, breaks, pw)
  600.     color = KGC::ExtendedStatusScene::CHART_BASE_COLOR.clone
  601.     contents.draw_regular_polygon(cx, cy, r, n, color, pw)
  602.     color.alpha = color.alpha * 5 / 8
  603.     contents.draw_spoke(cx, cy, r, n, color, pw)
  604.     (1..breaks).each { |i|
  605.       contents.draw_regular_polygon(cx, cy, r * i / breaks, n, color, pw)
  606.     }
  607.   end
  608.   #--------------------------------------------------------------------------
  609.   # ○ チャート描画
  610.   #     cx, cy : 中心 X, Y
  611.   #     r      : 半径
  612.   #     points : 頂点リスト
  613.   #     pw     : ペン幅
  614.   #--------------------------------------------------------------------------
  615.   def draw_chart(cx, cy, r, points, pw)
  616.     contents.draw_polygon(points, KGC::ExtendedStatusScene::CHART_LINE_COLOR, 2)
  617.   end
  618.   #--------------------------------------------------------------------------
  619.   # ○ チャートフラッシュ描画
  620.   #     sprite : チャートスプライト
  621.   #     x, y   : 基準 X, Y
  622.   #     r      : 半径
  623.   #     points : 頂点リスト
  624.   #     pw     : ペン幅
  625.   #--------------------------------------------------------------------------
  626.   def draw_chart_flash(sprite, x, y, r, points, pw)
  627.     points = points.clone
  628.     points.each { |pt| pt[0] -= x }

  629.     cx = x + r + 28
  630.     cy = y + r + 28
  631.     color = KGC::ExtendedStatusScene::CHART_FLASH_COLOR
  632.     sprite.bitmap.clear
  633.     sprite.bitmap.fill_polygon(points, Color.new(0, 0, 0, 0), color)
  634.     sprite.ox = cx - x
  635.     sprite.oy = cy
  636.     sprite.x  = self.x + cx + 16
  637.     sprite.y  = self.y + cy + 16
  638.   end
  639.   #--------------------------------------------------------------------------
  640.   # ○ プロフィール描画
  641.   #--------------------------------------------------------------------------
  642.   def draw_profile
  643.     profile = KGC::ExtendedStatusScene::PROFILE[@actor.id]
  644.     return if profile == nil

  645.     contents.font.color = normal_color
  646.     profile.split(/\\\|/).each_with_index { |line, i|
  647.       draw_profile_text(0, WLH * i, line)
  648.     }
  649.   end
  650.   #--------------------------------------------------------------------------
  651.   # ○ プロフィールテキスト描画
  652.   #     x, y : 描画先座標
  653.   #     text : 描画テキスト
  654.   #--------------------------------------------------------------------------
  655.   def draw_profile_text(x, y, text)
  656.     buf = convert_special_characters(text)
  657.     while (c = buf.slice!(/./m)) != nil
  658.       case c
  659.       when "\x01"                       # \C[n]  (文字色変更)
  660.         buf.sub!(/\[(\d+)\]/, "")
  661.         contents.font.color = text_color($1.to_i)
  662.         next
  663.       when "\x02"                       # \G  (所持金表示)
  664.         n  = $game_party.gold.to_s
  665.         cw = contents.text_size(n).width
  666.         contents.draw_text(x, y, cw + 8, WLH, n)
  667.         x += cw
  668.       else                              # 普通の文字
  669.         contents.draw_text(x, y, 40, WLH, c)
  670.         x += contents.text_size(c).width
  671.       end
  672.     end
  673.     contents.font.color = normal_color
  674.   end
  675.    #--------------------------------------------------------------------------
  676.   # ○ 人物描画
  677.   #     x, y : 描画先座標
  678.   #     text : 描画
  679.   def draw_actor_list(actor, x, y)
  680. case @actor.id
  681.        when 1
  682.      i = "流"
  683.        when 2
  684.      i = "卡利"
  685.      end
  686.       bitmap = Cache.picture(i)
  687.       rect = Rect.new(0,0,bitmap.width,bitmap.height)
  688.    self.contents.blt(x, -230, bitmap, rect)
  689.     end
  690.   #--------------------------------------------------------------------------
  691.   # ○ 特殊文字の変換
  692.   #     text : 変換対象テキスト
  693.   #--------------------------------------------------------------------------
  694.   def convert_special_characters(text)
  695.     buf = text.dup
  696.     buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
  697.     buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }
  698.     buf.gsub!(/\\N\[(\d+)\]/i) { $game_actors[$1.to_i].name }
  699.     buf.gsub!(/\\C\[(\d+)\]/i) { "\x01[#{$1}]" }
  700.     buf.gsub!(/\\G/)           { "\x02" }
  701.     buf.gsub!(/\\\\/)          { "\\" }
  702.     return buf
  703.   end
  704.   #--------------------------------------------------------------------------
  705.   # ● フレーム更新
  706.   #--------------------------------------------------------------------------
  707.   def update
  708.     super
  709.     update_chart
  710.   end
  711.   #--------------------------------------------------------------------------
  712.   # ○ チャート更新
  713.   #--------------------------------------------------------------------------
  714.   def update_chart
  715.     return if @element_chart_sprite == nil

  716.     @element_chart_sprite.update
  717.     @state_chart_sprite.update

  718.     zoom = opacity = 0
  719.     case @duration
  720.     when 0..11
  721.       zoom    = @duration / 11.0
  722.       opacity = 255
  723.     when 12..27
  724.       zoom    = 1
  725.       opacity = (27 - @duration) * 16
  726.     end
  727.     @element_chart_sprite.zoom_x  = @element_chart_sprite.zoom_y = zoom
  728.     @element_chart_sprite.opacity = opacity
  729.     @state_chart_sprite.zoom_x    = @state_chart_sprite.zoom_y   = zoom
  730.     @state_chart_sprite.opacity   = opacity

  731.     @duration = (@duration + 1) % Graphics.frame_rate
  732.   end
  733. end

  734. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  735. #==============================================================================
  736. # ■ Scene_Status
  737. #==============================================================================

  738. class Scene_Status < Scene_Base
  739.   #--------------------------------------------------------------------------
  740.   # ● オブジェクト初期化
  741.   #     actor_index   : アクターインデックス
  742.   #     command_index : コマンドインデックス
  743.   #--------------------------------------------------------------------------
  744.   def initialize(actor_index = 0, command_index = 0)
  745.     @actor_index   = actor_index
  746.     @command_index = command_index
  747.   end
  748.   #--------------------------------------------------------------------------
  749.   # ● 開始処理
  750.   #--------------------------------------------------------------------------
  751.   alias start_KGC_ExtendedStatusScene start
  752.   def start
  753.     start_KGC_ExtendedStatusScene

  754.     @command_window = Window_StatusCommand.new
  755.     @command_window.index = @command_index
  756.     @detail_window = Window_StatusDetail.new(@actor)
  757.     @detail_window.category = @command_window.command
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ● 終了処理
  761.   #--------------------------------------------------------------------------
  762.   alias terminate_KGC_ExtendedStatusScene terminate
  763.   def terminate
  764.     terminate_KGC_ExtendedStatusScene

  765.     @command_window.dispose
  766.     @detail_window.dispose
  767.   end
  768.   #--------------------------------------------------------------------------
  769.   # ● 次のアクターの画面に切り替え
  770.   #--------------------------------------------------------------------------
  771.   def next_actor
  772.     @actor_index += 1
  773.     @actor_index %= $game_party.members.size
  774.     $scene = Scene_Status.new(@actor_index, @command_window.index)
  775.   end
  776.   #--------------------------------------------------------------------------
  777.   # ● 前のアクターの画面に切り替え
  778.   #--------------------------------------------------------------------------
  779.   def prev_actor
  780.     @actor_index += $game_party.members.size - 1
  781.     @actor_index %= $game_party.members.size
  782.     $scene = Scene_Status.new(@actor_index, @command_window.index)
  783.   end
  784.   #--------------------------------------------------------------------------
  785.   # ● フレーム更新
  786.   #--------------------------------------------------------------------------
  787.   alias update_KGC_ExtendedStatusScene update
  788.   def update
  789.     @command_window.update
  790.     @detail_window.update
  791.     @detail_window.category = @command_window.command

  792.     update_KGC_ExtendedStatusScene
  793.   end
  794. end
复制代码
唉,我想新建个人物图像的选项,可是自己本事不够啊,脚本忙求人帮我看看,现在错误出哪了,我改不来了,自己改的敌方大概也有错吧
[

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
2
发表于 2011-2-20 00:30:14 | 只看该作者
本帖最后由 wbsy8241 于 2011-2-20 00:31 编辑

372:  draw_actor_list    缺少参数详细在730 行

372:  draw_actor_list(@actor, 0, 0)

评分

参与人数 1星屑 +6 收起 理由
巧克力猫咪 + 6 感谢

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
336 小时
注册时间
2010-8-26
帖子
428
3
 楼主| 发表于 2011-2-20 18:01:16 | 只看该作者
回复 wbsy8241 的帖子

谢谢啊,脚本盲啊,忘了还有这东西
[
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 00:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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