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

Project1

 找回密码
 注册会员
搜索

【VX】各位前辈帮我看看这个战斗选项傍边的图标怎么弄?

查看数: 1914 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2011-12-19 19:50

正文摘要:

本帖最后由 月夜神音 于 2011-12-20 09:15 编辑 各位前辈帮我看看这个战斗选项傍边的图标怎么弄?像样战斗选项丰富些。。   (附加一个问题:怎么让暴击率和回避率显示?我用脚本可是会出错。。) ...

回复

1341469131 发表于 2011-12-19 22:26:53
1341469131 发表于 2011-12-19 22:12
那个战斗选项图标的我加进去了。。但木有反应啊。。我用的是论坛下载的CP集合4.0的系统 ...

我发给了版主了。。但不知道需要什么格式。。我就说很满意你的回答,对你表示认可。。这样行不?

点评

可以,不过以后编辑帖子吧,连贴会被扣分哦 O(∩_∩)O~~  发表于 2011-12-19 22:29

评分

参与人数 1星屑 -2 收起 理由
月夜神音 -2 小小警告,不要连帖哦

查看全部评分

1341469131 发表于 2011-12-19 22:12:06
1341469131 发表于 2011-12-19 22:02
太感动了。。小白前辈。。。谢谢你。。等了一整天。。也只有好心的你来帮了 ...

那个战斗选项图标的我加进去了。。但木有反应啊。。我用的是论坛下载的CP集合4.0的系统

点评

替换Window_ActorCommand,找到原来的Window_ActorCommand删除  发表于 2011-12-19 22:17
1341469131 发表于 2011-12-19 22:02:42
小白玩家 发表于 2011-12-19 21:11
还没人回答吗给你个吧,柳柳的哦,使用方法,替换原来的Window_ActorCommand脚本一个小脚本:美化战斗时候 ...

太感动了。。小白前辈。。。谢谢你。。等了一整天。。也只有好心的你来帮了

点评

上面有2个脚本,2个问题都解决了吧  发表于 2011-12-19 22:04
能看明白吗  发表于 2011-12-19 22:03
小白玩家 发表于 2011-12-19 21:11:09
本帖最后由 小白玩家 于 2011-12-19 22:01 编辑

还没人回答吗给你个吧,柳柳的哦,使用方法,替换原来的Window_ActorCommand脚本
  1. #==============================================================================

  2. # ■ Window_ActorCommand

  3. #------------------------------------------------------------------------------

  4. #  战斗画面显示角色指令的窗口。

  5. #==============================================================================


  6. class Window_ActorCommand < Window_Selectable

  7.   #--------------------------------------------------------------------------

  8.   # ● 定义实例变量

  9.   #--------------------------------------------------------------------------  

  10.   attr_reader   :commands                 # 命令  

  11.   #--------------------------------------------------------------------------

  12.   # ● 初始化对象

  13.   #     width      : 窗口的宽

  14.   #     commands   : 命令字符串序列

  15.   #     column_max : 行数 (2 行以上时选择)

  16.   #     row_max    : 列数 (0:列数加起来)

  17.   #     spacing : 选项横向排列时间隔空白宽度

  18.   #--------------------------------------------------------------------------

  19.   def initialize(width = 128, commands = [], column_max = 1, row_max = 4, spacing = 32)

  20.     if row_max == 0

  21.       row_max = (commands.size + column_max - 1) / column_max

  22.     end

  23.     super(0, 0, width, row_max * WLH + 32, spacing)

  24.     self.active = false

  25.     @commands = []

  26.     @icon_list = [1, 52, 128, 144]

  27.     @item_max = commands.size

  28.     @column_max = column_max

  29.     @remember_index = -1

  30.     self.index = 0

  31.     # refresh

  32.     update

  33.   end

  34.   #--------------------------------------------------------------------------

  35.   # ● 刷新

  36.   #--------------------------------------------------------------------------

  37.   def refresh

  38.     self.contents.clear

  39.     for i in 0...@item_max

  40.       draw_item(i)

  41.     end

  42.   end

  43.   #--------------------------------------------------------------------------

  44.   # ● 设置自定义特技指令名称

  45.   #     actor :角色

  46.   #--------------------------------------------------------------------------

  47.   def setup(actor)

  48.     s1 = Vocab::attack

  49.     s2 = Vocab::skill

  50.     s3 = Vocab::guard

  51.     s4 = Vocab::item

  52.     if actor.class.skill_name_valid     # 特技指令名称有效?

  53.       s2 = actor.class.skill_name       # 替换指令名

  54.     end

  55.     @commands = [s1, s2, s3, s4]

  56.     @item_max = 4

  57.     refresh

  58.     self.index = 0

  59.   end  

  60.   

  61.   #--------------------------------------------------------------------------

  62.   # ● 描绘项目

  63.   #     index : 项目编号

  64.   #     enabled : 有效标记录。是false 的时候半透明绘画

  65.   #--------------------------------------------------------------------------

  66.   def draw_item(index, enabled = true)

  67.     rect = item_rect(index)

  68.     rect.x += 4

  69.     rect.width -= 8

  70.     self.contents.clear_rect(rect)

  71.     draw_icon(@icon_list[index], rect.x, rect.y, true) if index == self.index

  72.     self.contents.font.color = normal_color

  73.     self.contents.font.color.alpha = enabled ? 255 : 128

  74.     rect.x += 26

  75.     self.contents.draw_text(rect, @commands[index])

  76.   end

  77.   

  78.   #--------------------------------------------------------------------------

  79.   # ● 刷新类型

  80.   #--------------------------------------------------------------------------

  81.   def update

  82.     super

  83.     @remember_index = self.index if self.index == -1

  84.     if @remember_index != self.index

  85.       @remember_index = self.index

  86.       refresh

  87.     end

  88.   end

  89.   

  90. end
复制代码
一个小脚本:美化战斗时候的角色选项窗口↓
http://rpg.blue/forum.php?mod=vi ... B%E9%80%89%E9%A1%B9
第二个问题 需要 状态界面扩张脚本
  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.     'Name: \N[1]\|'


  22.   # ◆ コマンド

  23.   #  コマンドを表示したい順に記述。

  24.   #  表示したくないコマンドは省略可 (0 個はダメ)。

  25.   #   :param          .. パラメータ

  26.   #   :resist         .. 属性/ステート耐性

  27.   #   :element_resist .. 属性耐性

  28.   #   :state_resist   .. ステート耐性

  29.   #   :profile        .. プロフィール

  30.   COMMANDS = [:param, :element_resist, :state_resist, :profile]


  31.   # ◆ コマンド名

  32.   COMMAND_NAME = {

  33.     :param          => "能力値",

  34.     :resist         => "耐性",

  35.     :element_resist => "属性耐性",

  36.     :state_resist   => "效果耐性",

  37.     :profile        => "人物介绍",

  38.   }


  39.   # ◆ 表示するパラメータ

  40.   #  :param ページに表示したい順に記述。

  41.   #  表示したくない項目は省略可。

  42.   #   :atk .. 攻撃力

  43.   #   :def .. 防御力

  44.   #   :spi .. 精神力

  45.   #   :agi .. 敏捷性

  46.   #   :hit .. 命中率

  47.   #   :eva .. 回避率

  48.   #   :cri .. クリティカル率

  49.   #   :cp  .. CP (≪スキルCP制≫ に対応)

  50.   #   :ep  .. EP (≪装備拡張≫ に対応)

  51.   PARAMS = [:atk, :def, :spi, :agi, :hit, :eva, :cri, :cp, :ep]


  52.   # ◆ パラメータ名

  53.   #  :param, :resist コマンドで使用。

  54.   PARAMETER_NAME = {

  55.     # :param 用

  56.     :hit => "命中率",

  57.     :eva => "回避率",

  58.     :cri => "暴击率",

  59.     # :resist 用

  60.     :element_resist => "属性耐性",

  61.     :state_resist   => "状态耐性",

  62.   }  # ← これは消さないこと!


  63.   # ◆ 属性耐性の表記方法

  64.   #   0 .. 数値

  65.   #   1 .. チャート

  66.   #   2 .. チャート&数値 (:resist はチャートのみ)

  67.   #  1, 2 は ≪ビットマップ拡張≫ が必要。

  68.   RESIST_STYLE = 2

  69.   # ◆ 耐性の数値

  70.   #   0 .. 属性: 100 で通常、99 以下は軽減 (マイナスは吸収)、101 以上は弱点

  71.   #        ステート: 付加成功率 (かかりやすさ)

  72.   #   1 .. 属性: 0 で通常、プラスは軽減 (101 以上は吸収)、マイナスは弱点

  73.   #        ステート: 付加回避率 (かかりにくさ)

  74.   RESIST_NUM_STYLE = 1


  75.   # ◆ チャート色

  76.   CHART_LINE_COLOR  = Color.new(128, 255, 128)  # ライン色

  77.   CHART_BASE_COLOR  = Color.new(128, 192, 255)  # ベース色

  78.   CHART_FLASH_COLOR = Color.new(128, 255, 128)  # フラッシュ色

  79.   # ◆ チャートをなめらかにする

  80.   #   true  : 高品質、低速

  81.   #   false : 低品質、高速

  82.   CHART_HIGHQUALITY = true


  83.   # ~ 以下の項目は ≪モンスター図鑑≫ と互換性があります。 ~

  84.   # ~ ≪モンスター図鑑≫ 側の設定をコピーしても構いません。~


  85.   # ◆ 属性耐性を調べる範囲

  86.   #  耐性を調べる属性の ID を配列に格納。

  87.   #  .. や ... を使用した範囲指定も可能。

  88.   ELEMENT_RANGE = [1..16]

  89.   # ◆ 属性のアイコン

  90.   #  各属性に対応するアイコンの番号を指定。

  91.   #  配列の添字が属性 ID に対応。

  92.   #  (最初が属性 ID: 0 に対応、あとは ID: 1, 2, 3, ... の順)

  93.   ELEMENT_ICON = [0,                         # ID: 0 はダミー (未使用)

  94.      50,   1,   4,  14,  24,  12, 189, 136,  # ID: 1 ~  8

  95.     104, 105, 106, 107, 108, 109, 110, 111,  # ID: 9 ~ 16

  96.   ]  # ← これは消さないこと!


  97.   # ◆ ステート耐性を調べる範囲

  98.   #  耐性を調べるステートの ID を配列に格納。

  99.   #  記述方法は ELEMENT_RANGE と同様。

  100.   STATE_RANGE = [1...12,16...25,]#$data_states.size

  101. end

  102. end


  103. #==============================================================================

  104. # ☆ カスタマイズ項目 終了 - Customize END ☆

  105. #==============================================================================


  106. $imported = {} if $imported == nil

  107. $imported["ExtendedStatusScene"] = true


  108. module KGC::ExtendedStatusScene

  109.   module_function

  110.   #--------------------------------------------------------------------------

  111.   # ○ Range と Integer の配列を Integer の配列に変換 (重複要素は排除)

  112.   #--------------------------------------------------------------------------

  113.   def convert_integer_array(array, type = nil)

  114.     result = []

  115.     array.each { |i|

  116.       case i

  117.       when Range

  118.         result |= i.to_a

  119.       when Integer

  120.         result |= [i]

  121.       end

  122.     }

  123.     case type

  124.     when :element

  125.       result.delete_if { |x| x >= $data_system.elements.size }

  126.     when :state

  127.       result.delete_if { |x|

  128.         x >= $data_states.size ||

  129.         $data_states[x].nonresistance ||

  130.         $data_states[x].priority == 0

  131.       }

  132.     end

  133.     return result

  134.   end


  135.   # チェックする属性リスト

  136.   CHECK_ELEMENT_LIST = convert_integer_array(ELEMENT_RANGE, :element)

  137.   # チェックするステートリスト

  138.   CHECK_STATE_LIST   = convert_integer_array(STATE_RANGE, :state)


  139.   # 耐性表記方法

  140.   case RESIST_STYLE

  141.   when 0

  142.     RESIST_STYLE_SYMBOL = :num

  143.   when 1

  144.     RESIST_STYLE_SYMBOL = :chart

  145.   else

  146.     RESIST_STYLE_SYMBOL = :both

  147.   end

  148. end


  149. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


  150. #==============================================================================

  151. # □ Window_StatusCommand

  152. #------------------------------------------------------------------------------

  153. #   ステータス画面で、表示する内容を選択するウィンドウです。

  154. #==============================================================================


  155. class Window_StatusCommand < Window_Command

  156.   #--------------------------------------------------------------------------

  157.   # ● オブジェクト初期化

  158.   #--------------------------------------------------------------------------

  159.   def initialize

  160.     commands = []

  161.     KGC::ExtendedStatusScene::COMMANDS.each { |c|

  162.       commands << KGC::ExtendedStatusScene::COMMAND_NAME[c]

  163.     }

  164.     super(160, commands)

  165.     self.height = WLH * 5 + 32

  166.     self.active = true

  167.   end

  168.   #--------------------------------------------------------------------------

  169.   # ○ 選択中のコマンド取得

  170.   #--------------------------------------------------------------------------

  171.   def command

  172.     return KGC::ExtendedStatusScene::COMMANDS[index]

  173.   end

  174.   #--------------------------------------------------------------------------

  175.   # ● カーソルを 1 ページ後ろに移動

  176.   #--------------------------------------------------------------------------

  177.   def cursor_pagedown

  178.     return if Input.repeat?(Input::R)

  179.     super

  180.   end

  181.   #--------------------------------------------------------------------------

  182.   # ● カーソルを 1 ページ前に移動

  183.   #--------------------------------------------------------------------------

  184.   def cursor_pageup

  185.     return if Input.repeat?(Input::L)

  186.     super

  187.   end

  188. end


  189. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


  190. #==============================================================================

  191. # ■ Window_Status

  192. #==============================================================================


  193. class Window_Status < Window_Base

  194.   #--------------------------------------------------------------------------

  195.   # ● オブジェクト初期化

  196.   #     actor : アクター

  197.   #--------------------------------------------------------------------------

  198.   def initialize(actor)

  199.     super(160, 0, Graphics.width - 160, WLH * 5 + 32)

  200.     @actor = actor

  201.     refresh

  202.   end

  203.   #--------------------------------------------------------------------------

  204.   # ● リフレッシュ

  205.   #--------------------------------------------------------------------------

  206.   def refresh

  207.     self.contents.clear

  208.     draw_basic(104, 0)

  209.     draw_exp(104, WLH * 3)

  210.   end

  211.   #--------------------------------------------------------------------------

  212.   # ● 基本情報の描画

  213.   #     x : 描画先 X 座標

  214.   #     y : 描画先 Y 座標

  215.   #--------------------------------------------------------------------------

  216.   def draw_basic(x, y)

  217.     draw_actor_face(@actor, 0, (contents.height - 96) / 2)

  218.     draw_actor_name(@actor, x, y)

  219.     draw_actor_class(@actor, x + 120, y)

  220.     draw_actor_level(@actor, x, y + WLH)

  221.     draw_actor_state(@actor, x, y + WLH * 2)

  222.     draw_actor_hp(@actor, x + 120, y + WLH)

  223.     draw_actor_mp(@actor, x + 120, y + WLH * 2)

  224.   end

  225.   #--------------------------------------------------------------------------

  226.   # ● 経験値情報の描画

  227.   #     x : 描画先 X 座標

  228.   #     y : 描画先 Y 座標

  229.   #--------------------------------------------------------------------------

  230.   def draw_exp(x, y)

  231.     if $imported["GenericGauge"]

  232.       draw_actor_exp(@actor, x, y + WLH * 0, 240)

  233.       draw_actor_next_exp(@actor, x, y + WLH * 1, 240)

  234.     end


  235.     s1 = @actor.exp_s

  236.     s2 = @actor.next_rest_exp_s

  237.     s_next = sprintf(Vocab::ExpNext, Vocab::level)

  238.     self.contents.font.color = system_color

  239.     self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)

  240.     self.contents.draw_text(x, y + WLH * 1, 180, WLH, s_next)

  241.     self.contents.font.color = normal_color


  242.     unless $imported["GenericGauge"]

  243.       self.contents.draw_text(x, y + WLH * 0, 240, WLH, s1, 2)

  244.       self.contents.draw_text(x, y + WLH * 1, 240, WLH, s2, 2)

  245.     end

  246.   end

  247. end


  248. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


  249. #==============================================================================

  250. # □ Window_StatusDetail

  251. #------------------------------------------------------------------------------

  252. #   ステータス画面で、アクターの詳細情報を表示するウィンドウです。

  253. #==============================================================================


  254. class Window_StatusDetail < Window_Base

  255.   #--------------------------------------------------------------------------

  256.   # ○ 公開インスタンス変数

  257.   #--------------------------------------------------------------------------

  258.   attr_reader   :category

  259.   #--------------------------------------------------------------------------

  260.   # ● オブジェクト初期化

  261.   #     actor : アクター

  262.   #--------------------------------------------------------------------------

  263.   def initialize(actor)

  264.     @category = nil

  265.     y = WLH * 5 + 32

  266.     super(0, y, Graphics.width, Graphics.height - y)

  267.     create_chart_sprite

  268.     @actor    = actor

  269.     @duration = 0

  270.     self.z = z

  271.   end

  272.   #--------------------------------------------------------------------------

  273.   # ○ レーダーチャートスプライト作成

  274.   #--------------------------------------------------------------------------

  275.   def create_chart_sprite

  276.     @element_chart_sprite = Sprite_Base.new

  277.     @element_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)

  278.     @element_chart_sprite.ox = @element_chart_sprite.width  / 2

  279.     @element_chart_sprite.oy = @element_chart_sprite.height / 2

  280.     @element_chart_sprite.blend_type = 1

  281.     @element_chart_sprite.opacity = 0

  282.     @element_chart_sprite.visible = false


  283.     @state_chart_sprite = Sprite_Base.new

  284.     @state_chart_sprite.bitmap = Bitmap.new(height - 32, height - 32)

  285.     @state_chart_sprite.ox = @state_chart_sprite.width  / 2

  286.     @state_chart_sprite.oy = @state_chart_sprite.height / 2

  287.     @state_chart_sprite.blend_type = 1

  288.     @state_chart_sprite.opacity = 0

  289.     @state_chart_sprite.visible = false

  290.   end

  291.   #--------------------------------------------------------------------------

  292.   # ● 破棄

  293.   #--------------------------------------------------------------------------

  294.   def dispose

  295.     @element_chart_sprite.bitmap.dispose

  296.     @element_chart_sprite.dispose

  297.     @state_chart_sprite.bitmap.dispose

  298.     @state_chart_sprite.dispose

  299.     super

  300.   end

  301.   #--------------------------------------------------------------------------

  302.   # ○ Z 座標設定

  303.   #--------------------------------------------------------------------------

  304.   def z=(value)

  305.     super(value)

  306.     @element_chart_sprite.z = z + 1 if @element_chart_sprite != nil

  307.     @state_chart_sprite.z   = z + 1 if @state_chart_sprite   != nil

  308.   end

  309.   #--------------------------------------------------------------------------

  310.   # ○ カテゴリー設定

  311.   #--------------------------------------------------------------------------

  312.   def category=(category)

  313.     return if @category == category

  314.     @category = category

  315.     refresh

  316.   end

  317.   #--------------------------------------------------------------------------

  318.   # ● リフレッシュ

  319.   #--------------------------------------------------------------------------

  320.   def refresh

  321.     @element_chart_sprite.visible = false

  322.     @state_chart_sprite.visible   = false

  323.     return if @category == nil


  324.     self.contents.clear

  325.     case @category

  326.     when :param

  327.       draw_parameter_list

  328.     when :resist

  329.       draw_resistance

  330.     when :element_resist

  331.       draw_element_resistance(0, 0,

  332.         KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)

  333.     when :state_resist

  334.       draw_state_resistance(0, 0,

  335.         KGC::ExtendedStatusScene::RESIST_STYLE_SYMBOL)

  336.     when :profile

  337.       draw_profile

  338.     end

  339.     Graphics.frame_reset

  340.   end

  341.   #--------------------------------------------------------------------------

  342.   # ○ パラメータ描画

  343.   #--------------------------------------------------------------------------

  344.   def draw_parameter_list

  345.     y = 0

  346.     KGC::ExtendedStatusScene::PARAMS.each { |param|

  347.       draw_parameter(param, 0, y)

  348.       y += WLH

  349.     }


  350.     x = 192

  351.     contents.font.color = system_color

  352.     contents.draw_text(x, 0, 120, WLH, Vocab::equip)

  353.     @actor.equips.each_with_index { |item, i|

  354.       draw_item_name(item, x, WLH * (i + 1))

  355.     }

  356.     contents.font.color = normal_color

  357.   end

  358.   #--------------------------------------------------------------------------

  359.   # ○ 個別パラメータ描画

  360.   #--------------------------------------------------------------------------

  361.   def draw_parameter(param, x, y)

  362.     case param

  363.     when :atk

  364.       draw_actor_parameter(@actor, x, y, 0)

  365.     when :def

  366.       draw_actor_parameter(@actor, x, y, 1)

  367.     when :spi

  368.       draw_actor_parameter(@actor, x, y, 2)

  369.     when :agi

  370.       draw_actor_parameter(@actor, x, y, 3)

  371.     when :hit

  372.       draw_actor_parameter(@actor, x, y, 4)

  373.     when :eva

  374.       draw_actor_parameter(@actor, x, y, 5)

  375.     when :cri

  376.       draw_actor_parameter(@actor, x, y, 6)

  377.     when :cp

  378.       return unless $imported["SkillCPSystem"]

  379.       return unless KGC::SkillCPSystem::SHOW_STATUS_CP

  380.       draw_actor_cp(@actor, x, y, 156)

  381.     when :ep

  382.       return unless $imported["EquipExtension"]

  383.       return unless KGC::EquipExtension::SHOW_STATUS_EP

  384.       draw_actor_ep(@actor, x, y, 156)

  385.     end

  386.   end

  387.   #--------------------------------------------------------------------------

  388.   # ● 能力値の描画

  389.   #     actor : アクター

  390.   #     x     : 描画先 X 座標

  391.   #     y     : 描画先 Y 座標

  392.   #     type  : 能力値の種類 (0~6)

  393.   #--------------------------------------------------------------------------

  394.   def draw_actor_parameter(actor, x, y, type)

  395.     return super(actor, x, y, type) if type <= 3


  396.     names = KGC::ExtendedStatusScene::PARAMETER_NAME

  397.     case type

  398.     when 4

  399.       parameter_name  = names[:hit]

  400.       parameter_value = actor.hit

  401.     when 5

  402.       parameter_name  = names[:eva]

  403.       parameter_value = actor.eva

  404.     when 6

  405.       parameter_name  = names[:cri]

  406.       parameter_value = actor.cri

  407.     end

  408.     self.contents.font.color = system_color

  409.     self.contents.draw_text(x, y, 120, WLH, parameter_name)

  410.     self.contents.font.color = normal_color

  411.     self.contents.draw_text(x + 120, y, 36, WLH, parameter_value, 2)

  412.   end

  413.   #--------------------------------------------------------------------------

  414.   # ○ 耐性描画

  415.   #--------------------------------------------------------------------------

  416.   def draw_resistance

  417.     case KGC::ExtendedStatusScene::RESIST_STYLE

  418.     when 0

  419.       type = :num

  420.     else

  421.       type = :chart

  422.     end


  423.     x = 0

  424.     contents.font.color = system_color

  425.     contents.draw_text(x, 0, 120, WLH,

  426.       KGC::ExtendedStatusScene::PARAMETER_NAME[:element_resist])

  427.     contents.font.color = normal_color

  428.     x = draw_element_resistance(x, WLH, type)


  429.     contents.font.color = system_color

  430.     contents.draw_text(x, 0, 120, WLH,

  431.       KGC::ExtendedStatusScene::PARAMETER_NAME[:state_resist])

  432.     x = draw_state_resistance(x, WLH, type)


  433.     contents.font.color = normal_color

  434.   end

  435.   #--------------------------------------------------------------------------

  436.   # ○ 属性耐性描画

  437.   #     x, y : 描画先 X, Y

  438.   #     type : 表示形式 (:num, :chart, :both)

  439.   #    描画終了時の X 座標を返す。

  440.   #--------------------------------------------------------------------------

  441.   def draw_element_resistance(x, y, type)

  442.     if $imported["BitmapExtension"]

  443.       if KGC::ExtendedStatusScene::CHART_HIGHQUALITY

  444.         Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS

  445.       end

  446.       if [:chart, :both].include?(type)

  447.         x = draw_element_resistance_chart(x, y)

  448.         @element_chart_sprite.visible = true

  449.       end

  450.       Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT

  451.     end


  452.     if [:num, :both].include?(type)

  453.       x = draw_element_resistance_num(x, y)

  454.     end


  455.     return x

  456.   end

  457.   #--------------------------------------------------------------------------

  458.   # ○ 属性耐性描画 (チャート)

  459.   #     x, y : 描画先 X, Y

  460.   #    描画終了時の X 座標を返す。

  461.   #--------------------------------------------------------------------------

  462.   def draw_element_resistance_chart(x, y)

  463.     r  = (contents.height - y - 56) / 2

  464.     cx = x + r + 28

  465.     cy = y + r + 28

  466.     pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)

  467.     elements = KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST


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


  469.     # チャート

  470.     points = []

  471.     elements.each_with_index { |e, i|

  472.       n   = @actor.element_rate(e)

  473.       n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1

  474.       n   = [[n, -100].max, 200].min

  475.       dr  = r * (n + 100) / 100 / 3

  476.       rad = Math::PI * (360.0 * i / elements.size - 90.0) / 180.0

  477.       dx  = cx + Integer(dr * Math.cos(-rad))

  478.       dy  = cy + Integer(dr * Math.sin(rad))

  479.       points << [dx, dy]


  480.       dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12

  481.       dy = cy + Integer((r + 14) * Math.sin(rad))  - 12

  482.       draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[e], dx, dy)

  483.     }


  484.     draw_chart(cx, cy, r, points, pw)

  485.     draw_chart_flash(@element_chart_sprite, x, y, r, points, pw)


  486.     return (x + cx + r + 42)

  487.   end

  488.   #--------------------------------------------------------------------------

  489.   # ○ 属性耐性描画 (数値)

  490.   #     x, y : 描画先 X, Y

  491.   #    描画終了時の X 座標を返す。

  492.   #--------------------------------------------------------------------------

  493.   def draw_element_resistance_num(x, y)

  494.     origin_y = y

  495.     contents.font.color = normal_color

  496.     KGC::ExtendedStatusScene::CHECK_ELEMENT_LIST.each { |i|

  497.       if y + WLH > contents.height

  498.         x += 84

  499.         y  = origin_y

  500.       end

  501.       draw_icon(KGC::ExtendedStatusScene::ELEMENT_ICON[i], x, y)

  502.       n = @actor.element_rate(i)

  503.       n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1

  504.       rate = sprintf("%4d%%", n)

  505.       contents.draw_text(x + 24, y, 52, WLH, rate, 2)

  506.       y += WLH

  507.     }

  508.     return (x + 96)

  509.   end

  510.   #--------------------------------------------------------------------------

  511.   # ○ ステート耐性描画

  512.   #     x, y : 描画先 X, Y

  513.   #     type : 表示形式 (:num, :chart, :both)

  514.   #    描画終了時の X 座標を返す。

  515.   #--------------------------------------------------------------------------

  516.   def draw_state_resistance(x, y, type)

  517.     if $imported["BitmapExtension"]

  518.       if KGC::ExtendedStatusScene::CHART_HIGHQUALITY

  519.         Bitmap.smoothing_mode = TRGSSX::SM_ANTIALIAS

  520.       end

  521.       if [:chart, :both].include?(type)

  522.         x = draw_state_resistance_chart(x, y)

  523.         @state_chart_sprite.visible = true

  524.       end

  525.       Bitmap.smoothing_mode = TRGSSX::SM_DEFAULT

  526.     end


  527.     if [:num, :both].include?(type)

  528.       x = draw_state_resistance_num(x, y)

  529.     end


  530.     return x

  531.   end

  532.   #--------------------------------------------------------------------------

  533.   # ○ ステート耐性描画 (チャート)

  534.   #     x, y : 描画先 X, Y

  535.   #    描画終了時の X 座標を返す。

  536.   #--------------------------------------------------------------------------

  537.   def draw_state_resistance_chart(x, y)

  538.     r  = (contents.height - y - 56) / 2

  539.     cx = x + r + 28

  540.     cy = y + r + 28

  541.     pw = (Bitmap.smoothing_mode == TRGSSX::SM_ANTIALIAS ? 2 : 1)

  542.     states = KGC::ExtendedStatusScene::CHECK_STATE_LIST


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


  544.     # チャート

  545.     points = []

  546.     states.each_with_index { |s, i|

  547.       state = $data_states[s]

  548.       n   = @actor.state_probability(s)

  549.       n   = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1

  550.       dr  = r * n / 100

  551.       rad = Math::PI * (360.0 * i / states.size - 90.0) / 180.0

  552.       dx  = cx + Integer(dr * Math.cos(-rad))

  553.       dy  = cy + Integer(dr * Math.sin(rad))

  554.       points << [dx, dy]


  555.       dx = cx + Integer((r + 14) * Math.cos(-rad)) - 12

  556.       dy = cy + Integer((r + 14) * Math.sin(rad))  - 12

  557.       draw_icon(state.icon_index, dx, dy)

  558.     }


  559.     draw_chart(cx, cy, r, points, pw)

  560.     draw_chart_flash(@state_chart_sprite, x, y, r, points, pw)


  561.     return (x + cx + r + 42)

  562.   end

  563.   #--------------------------------------------------------------------------

  564.   # ○ ステート耐性描画 (数値)

  565.   #     x, y : 描画先 X, Y

  566.   #    描画終了時の X 座標を返す。

  567.   #--------------------------------------------------------------------------

  568.   def draw_state_resistance_num(x, y)

  569.     origin_y = y

  570.     contents.font.color = normal_color

  571.     KGC::ExtendedStatusScene::CHECK_STATE_LIST.each { |i|

  572.       state = $data_states[i]

  573.       if y + WLH > contents.height

  574.         x += 76

  575.         y  = origin_y

  576.       end

  577.       draw_icon(state.icon_index, x, y)

  578.       n = @actor.state_probability(i)

  579.       n = 100 - n if KGC::ExtendedStatusScene::RESIST_NUM_STYLE == 1

  580.       rate = sprintf("%3d%%", n)

  581.       contents.draw_text(x + 24, y, 44, WLH, rate, 2)

  582.       y += WLH

  583.     }

  584.     return x

  585.   end

  586.   #--------------------------------------------------------------------------

  587.   # ○ チャートライン描画

  588.   #     cx, cy : 中心 X, Y

  589.   #     r      : 半径

  590.   #     n      : 頂点数

  591.   #     breaks : 空間数

  592.   #     pw     : ペン幅

  593.   #--------------------------------------------------------------------------

  594.   def draw_chart_line(cx, cy, r, n, breaks, pw)

  595.     color = KGC::ExtendedStatusScene::CHART_BASE_COLOR.clone

  596.     contents.draw_regular_polygon(cx, cy, r, n, color, pw)

  597.     color.alpha = color.alpha * 5 / 8

  598.     contents.draw_spoke(cx, cy, r, n, color, pw)

  599.     (1..breaks).each { |i|

  600.       contents.draw_regular_polygon(cx, cy, r * i / breaks, n, color, pw)

  601.     }

  602.   end

  603.   #--------------------------------------------------------------------------

  604.   # ○ チャート描画

  605.   #     cx, cy : 中心 X, Y

  606.   #     r      : 半径

  607.   #     points : 頂点リスト

  608.   #     pw     : ペン幅

  609.   #--------------------------------------------------------------------------

  610.   def draw_chart(cx, cy, r, points, pw)

  611.     contents.draw_polygon(points, KGC::ExtendedStatusScene::CHART_LINE_COLOR, 2)

  612.   end

  613.   #--------------------------------------------------------------------------

  614.   # ○ チャートフラッシュ描画

  615.   #     sprite : チャートスプライト

  616.   #     x, y   : 基準 X, Y

  617.   #     r      : 半径

  618.   #     points : 頂点リスト

  619.   #     pw     : ペン幅

  620.   #--------------------------------------------------------------------------

  621.   def draw_chart_flash(sprite, x, y, r, points, pw)

  622.     points = points.clone

  623.     points.each { |pt| pt[0] -= x }


  624.     cx = x + r + 28

  625.     cy = y + r + 28

  626.     color = KGC::ExtendedStatusScene::CHART_FLASH_COLOR

  627.     sprite.bitmap.clear

  628.     sprite.bitmap.fill_polygon(points, Color.new(0, 0, 0, 0), color)

  629.     sprite.ox = cx - x

  630.     sprite.oy = cy

  631.     sprite.x  = self.x + cx + 16

  632.     sprite.y  = self.y + cy + 16

  633.   end

  634.   #--------------------------------------------------------------------------

  635.   # ○ プロフィール描画

  636.   #--------------------------------------------------------------------------

  637.   def draw_profile

  638.     profile = KGC::ExtendedStatusScene::PROFILE[@actor.id]

  639.     return if profile == nil


  640.     contents.font.color = normal_color

  641.     profile.split(/\\\|/).each_with_index { |line, i|

  642.       draw_profile_text(0, WLH * i, line)

  643.     }

  644.   end

  645.   #--------------------------------------------------------------------------

  646.   # ○ プロフィールテキスト描画

  647.   #     x, y : 描画先座標

  648.   #     text : 描画テキスト

  649.   #--------------------------------------------------------------------------

  650.   def draw_profile_text(x, y, text)

  651.     buf = convert_special_characters(text)

  652.     while (c = buf.slice!(/./m)) != nil

  653.       case c

  654.       when "\x01"                       # \C[n]  (文字色変更)

  655.         buf.sub!(/\[(\d+)\]/, "")

  656.         contents.font.color = text_color($1.to_i)

  657.         next

  658.       when "\x02"                       # \G  (所持金表示)

  659.         n  = $game_party.gold.to_s

  660.         cw = contents.text_size(n).width

  661.         contents.draw_text(x, y, cw + 8, WLH, n)

  662.         x += cw

  663.       else                              # 普通の文字

  664.         contents.draw_text(x, y, 40, WLH, c)

  665.         x += contents.text_size(c).width

  666.       end

  667.     end

  668.     contents.font.color = normal_color

  669.   end

  670.   #--------------------------------------------------------------------------

  671.   # ○ 特殊文字の変換

  672.   #     text : 変換対象テキスト

  673.   #--------------------------------------------------------------------------

  674.   def convert_special_characters(text)

  675.     buf = text.dup

  676.     buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }

  677.     buf.gsub!(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i] }

  678.     buf.gsub!(/\\N\[(\d+)\]/i) { $game_actors[$1.to_i].name }

  679.     buf.gsub!(/\\C\[(\d+)\]/i) { "\x01[#{$1}]" }

  680.     buf.gsub!(/\\G/)           { "\x02" }

  681.     buf.gsub!(/\\\\/)          { "\\" }

  682.     return buf

  683.   end

  684.   #--------------------------------------------------------------------------

  685.   # ● フレーム更新

  686.   #--------------------------------------------------------------------------

  687.   def update

  688.     super

  689.     update_chart

  690.   end

  691.   #--------------------------------------------------------------------------

  692.   # ○ チャート更新

  693.   #--------------------------------------------------------------------------

  694.   def update_chart

  695.     return if @element_chart_sprite == nil


  696.     @element_chart_sprite.update

  697.     @state_chart_sprite.update


  698.     zoom = opacity = 0

  699.     case @duration

  700.     when 0..11

  701.       zoom    = @duration / 11.0

  702.       opacity = 255

  703.     when 12..27

  704.       zoom    = 1

  705.       opacity = (27 - @duration) * 16

  706.     end

  707.     @element_chart_sprite.zoom_x  = @element_chart_sprite.zoom_y = zoom

  708.     @element_chart_sprite.opacity = opacity

  709.     @state_chart_sprite.zoom_x    = @state_chart_sprite.zoom_y   = zoom

  710.     @state_chart_sprite.opacity   = opacity


  711.     @duration = (@duration + 1) % Graphics.frame_rate

  712.   end

  713. end


  714. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★


  715. #==============================================================================

  716. # ■ Scene_Status

  717. #==============================================================================


  718. class Scene_Status < Scene_Base

  719.   #--------------------------------------------------------------------------

  720.   # ● オブジェクト初期化

  721.   #     actor_index   : アクターインデックス

  722.   #     command_index : コマンドインデックス

  723.   #--------------------------------------------------------------------------

  724.   def initialize(actor_index = 0, command_index = 0)

  725.     @actor_index   = actor_index

  726.     @command_index = command_index

  727.   end

  728.   #--------------------------------------------------------------------------

  729.   # ● 開始処理

  730.   #--------------------------------------------------------------------------

  731.   alias start_KGC_ExtendedStatusScene start

  732.   def start

  733.     start_KGC_ExtendedStatusScene


  734.     @command_window = Window_StatusCommand.new

  735.     @command_window.index = @command_index

  736.     @detail_window = Window_StatusDetail.new(@actor)

  737.     @detail_window.category = @command_window.command

  738.   end

  739.   #--------------------------------------------------------------------------

  740.   # ● 終了処理

  741.   #--------------------------------------------------------------------------

  742.   alias terminate_KGC_ExtendedStatusScene terminate

  743.   def terminate

  744.     terminate_KGC_ExtendedStatusScene


  745.     @command_window.dispose

  746.     @detail_window.dispose

  747.   end

  748.   #--------------------------------------------------------------------------

  749.   # ● 次のアクターの画面に切り替え

  750.   #--------------------------------------------------------------------------

  751.   def next_actor

  752.     @actor_index += 1

  753.     @actor_index %= $game_party.members.size

  754.     $scene = Scene_Status.new(@actor_index, @command_window.index)

  755.   end

  756.   #--------------------------------------------------------------------------

  757.   # ● 前のアクターの画面に切り替え

  758.   #--------------------------------------------------------------------------

  759.   def prev_actor

  760.     @actor_index += $game_party.members.size - 1

  761.     @actor_index %= $game_party.members.size

  762.     $scene = Scene_Status.new(@actor_index, @command_window.index)

  763.   end

  764.   #--------------------------------------------------------------------------

  765.   # ● フレーム更新

  766.   #--------------------------------------------------------------------------

  767.   alias update_KGC_ExtendedStatusScene update

  768.   def update

  769.     @command_window.update

  770.     @detail_window.update

  771.     @detail_window.category = @command_window.command


  772.     update_KGC_ExtendedStatusScene

  773.   end

  774. end
复制代码

1.jpg (162.88 KB, 下载次数: 24)

1.jpg

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
月夜神音 + 200 + 2 认可答案

查看全部评分

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

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

GMT+8, 2024-12-31 07:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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