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

Project1

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

[已经解决] 装备扩张和装备技能修炼不能同时显示

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
139 小时
注册时间
2013-1-30
帖子
65
跳转到指定楼层
1
发表于 2013-4-9 00:41:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 575539640 于 2013-4-9 21:59 编辑

这是只用装备扩张的效果

这是都使用,但 装备扩张 脚本在 装备技能修炼 的前面

这也是都使用,但 装备技能修炼 脚本在 装备扩张 的前面


有办法让装备的项目不消失,也显示装备技能的经验栏吗?    谢谢


下面是脚本

装备扩张

RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 装備拡張 - KGC_EquipExtension ◆ VX ◆
  3. #_/    ◇ Last update : 2008/02/10 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  装備関連の機能を拡張します。
  6. #_/============================================================================
  7. #_/ 【メニュー】≪拡張装備画面≫ より下に導入してください。
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  9.  
  10. #==============================================================================
  11. # ★ カスタマイズ項目 - Customize ★
  12. #==============================================================================
  13.  
  14. module KGC
  15. module EquipExtension
  16.   # ◆ 扩张的装备种类名称
  17.   #  从前面的皆下去      4      5      6      7     8    9      10
  18.   EXTRA_EQUIP_KIND = ["项链","戒指","披风","手套","鞋","道具","其他"]
  19.  
  20.   # ◆ 装备的顺序
  21.   #  以这里设置的顺序接续在武器的下面
  22.   #  ※ 装备个数最低为1,否则二刀流会出错
  23.   #   ** 装备种类一览 **
  24.   #  0..盾  1..帽子  2..铠甲  3..徽章  4~..↑所定義的种类
  25.   EQUIP_TYPE = [0,1,4,2,6,3,5,5,7,8,9,9,10,10]
  26.  
  27.   # ◆ EP (装备点数) 制是否要使用
  28.   USE_EP_SYSTEM = true
  29.   # ◆ EP 的名称
  30.   VOCAB_EP   = "装备负重"
  31.   # ◆ EP 的名称 (略)
  32.   VOCAB_EP_A = ""
  33.   # ◆ 是否在状态介面显示EP值
  34.   SHOW_STATUS_EP = true
  35.  
  36.   # ◆ 装备预设 EP 消耗点数
  37.   #  没有设定EP消耗点数的装备自动加上的点数
  38.   DEFAULT_EP_COST   = 2
  39.   # ◆ 当消耗 EP 值为 0 时隐藏
  40.   HIDE_ZERO_EP_COST = true
  41.  
  42.   # ◆ EP 上限
  43.   EP_MAX = 300
  44.   # ◆ EP 下限
  45.   EP_MIN = 30
  46.   # ◆ 最大 EP 公式
  47.   #   level..角色等级
  48.   #  计算後小数自动取整
  49.   EP_CALC_EXP = "level * 2 + 10"
  50.  
  51.   # ◆ 消耗 EP 値的文字颜色 (接续在装备名称後面的文字)
  52.   #  数字  : 与 \C[n] 同样的颜色 (也就是在窗口外观设置的颜色色号)
  53.   #  Color : 指定颜色。 ( Color.new(128, 255, 255))
  54.   EP_COST_COLOR        = 23
  55.   # ◆ EP 槽開始色
  56.   EP_GAUGE_START_COLOR = 28
  57.   # ◆ EP 槽结束色
  58.   EP_GAUGE_END_COLOR   = 29
  59. end
  60. end
  61.  
  62. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  63.  
  64. $imported = {} if $imported == nil
  65. $imported["EquipExtension"] = true
  66.  
  67. module KGC::EquipExtension
  68.   # EP 制を使用しない場合の設定
  69.   unless USE_EP_SYSTEM
  70.     SHOW_STATUS_EP = false
  71.     HIDE_ZERO_EP_COST = true
  72.   end
  73.  
  74.   # 正規表現
  75.   module Regexp
  76.     # ベースアイテム
  77.     module BaseItem
  78.       # 消費 EP
  79.       EP_COST = /<EP\s*(\d+)>/i
  80.       # 装備タイプ
  81.       EQUIP_TYPE = /<(?:EQUIP_TYPE|装備タイプ)\s*(\d+(?:\s*,\s*\d+)*)>/
  82.     end
  83.  
  84.     # 防具
  85.     module Armor
  86.       # 装備種別
  87.       EQUIP_KIND = /<(?:EQUIP_KIND|武器种类)\s*(.+)>/i
  88.     end
  89.   end
  90. end
  91.  
  92. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  93.  
  94. #==============================================================================
  95. # □ KGC::Commands
  96. #==============================================================================
  97.  
  98. module KGC::Commands
  99.   module_function
  100.   #--------------------------------------------------------------------------
  101.   # ○ アクターの装備を修復
  102.   #--------------------------------------------------------------------------
  103.   def restore_equip
  104.     (1...$data_actors.size).each { |i|
  105.       actor = $game_actors[i]
  106.       actor.restore_equip
  107.     }
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ○ アクターの装備タイプを設定
  111.   #     actor_id   : アクター ID
  112.   #     equip_type : 装備タイプ
  113.   #--------------------------------------------------------------------------
  114.   def set_actor_equip_type(actor_id, equip_type = nil)
  115.     actor = $game_actors[actor_id]
  116.     return if actor == nil
  117.     actor.equip_type = equip_type
  118.   end
  119. end
  120.  
  121. class Game_Interpreter
  122.   include KGC::Commands
  123. end
  124.  
  125. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  126.  
  127. #==============================================================================
  128. # ■ Vocab
  129. #==============================================================================
  130.  
  131. module Vocab
  132.   # EP
  133.   def self.ep
  134.     return KGC::EquipExtension::VOCAB_EP
  135.   end
  136.  
  137.   # EP (略)
  138.   def self.ep_a
  139.     return KGC::EquipExtension::VOCAB_EP_A
  140.   end
  141.  
  142.   # 拡張防具欄
  143.   def self.extra_armor(index)
  144.     return KGC::EquipExtension::EXTRA_EQUIP_KIND[index]
  145.   end
  146. end
  147.  
  148. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  149.  
  150. #==============================================================================
  151. # ■ RPG::BaseItem
  152. #==============================================================================
  153.  
  154. class RPG::BaseItem
  155.   #--------------------------------------------------------------------------
  156.   # ○ 装備拡張のキャッシュを作成
  157.   #--------------------------------------------------------------------------
  158.   def create_equip_extension_cache
  159.     @__ep_cost = KGC::EquipExtension::DEFAULT_EP_COST
  160.     @__equip_type = []
  161.  
  162.     self.note.split(/[\r\n]+/).each { |line|
  163.       case line
  164.       when KGC::EquipExtension::Regexp::BaseItem::EP_COST
  165.         # 消費 EP
  166.         @__ep_cost = $1.to_i
  167.       when KGC::EquipExtension::Regexp::BaseItem::EQUIP_TYPE
  168.         # 装備タイプ
  169.         @__equip_type = []
  170.         $1.scan(/\d+/) { |num|
  171.           @__equip_type << num.to_i
  172.         }
  173.       end
  174.     }
  175.  
  176.     # EP 制を使用しない場合は消費 EP = 0
  177.     @__ep_cost = 0 unless KGC::EquipExtension::USE_EP_SYSTEM
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ○ 消費 EP
  181.   #--------------------------------------------------------------------------
  182.   def ep_cost
  183.     create_equip_extension_cache if @__ep_cost == nil
  184.     return @__ep_cost
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ○ 装備タイプ
  188.   #--------------------------------------------------------------------------
  189.   def equip_type
  190.     create_equip_extension_cache if @__equip_type == nil
  191.     return @__equip_type
  192.   end
  193. end
  194.  
  195. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  196.  
  197. #==============================================================================
  198. # ■ RPG::Armor
  199. #==============================================================================
  200.  
  201. class RPG::Armor < RPG::BaseItem
  202.   #--------------------------------------------------------------------------
  203.   # ○ 装備拡張のキャッシュを作成
  204.   #--------------------------------------------------------------------------
  205.   def create_equip_extension_cache
  206.     super
  207.     @__kind = -1
  208.  
  209.     self.note.split(/[\r\n]+/).each { |line|
  210.       if line =~ KGC::EquipExtension::Regexp::Armor::EQUIP_KIND
  211.         # 装備タイプ
  212.         e_index = KGC::EquipExtension::EXTRA_EQUIP_KIND.index($1)
  213.         next if e_index == nil
  214.         @__kind = e_index + 4
  215.       end
  216.     }
  217.   end
  218.  
  219. unless $@
  220.   #--------------------------------------------------------------------------
  221.   # ○ 種別
  222.   #--------------------------------------------------------------------------
  223.   alias kind_KGC_EquipExtension kind
  224.   def kind
  225.     create_equip_extension_cache if @__kind == nil
  226.     return (@__kind == -1 ? kind_KGC_EquipExtension : @__kind)
  227.   end
  228. end
  229.  
  230. end
  231.  
  232. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  233.  
  234. #==============================================================================
  235. # ■ Game_Actor
  236. #==============================================================================
  237.  
  238. class Game_Actor < Game_Battler
  239.   #--------------------------------------------------------------------------
  240.   # ● 公開インスタンス変数
  241.   #--------------------------------------------------------------------------
  242.   attr_writer   :equip_type               # 装備タイプ
  243.   #--------------------------------------------------------------------------
  244.   # ● セットアップ
  245.   #     actor_id : アクター ID
  246.   #--------------------------------------------------------------------------
  247.   alias setup_KGC_EquipExtension setup
  248.   def setup(actor_id)
  249.     actor = $data_actors[actor_id]
  250.     @extra_armor_id = []
  251.  
  252.     setup_KGC_EquipExtension(actor_id)
  253.  
  254.     restore_equip
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ○ MaxEP 取得
  258.   #--------------------------------------------------------------------------
  259.   def maxep
  260.     n = Integer(eval(KGC::EquipExtension::EP_CALC_EXP))
  261.     return [[n, ep_limit].min, KGC::EquipExtension::EP_MIN].max
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ○ EP 取得
  265.   #--------------------------------------------------------------------------
  266.   def ep
  267.     n = 0
  268.     equips.compact.each { |item| n += item.ep_cost }
  269.     return [maxep - n, 0].max
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ○ EP 上限取得
  273.   #--------------------------------------------------------------------------
  274.   def ep_limit
  275.     return KGC::EquipExtension::EP_MAX
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ○ 防具欄の取得
  279.   #--------------------------------------------------------------------------
  280.   def equip_type
  281.     if @equip_type.is_a?(Array)
  282.       return @equip_type
  283.     else
  284.       return KGC::EquipExtension::EQUIP_TYPE
  285.     end
  286.   end
  287.   #--------------------------------------------------------------------------
  288.   # ○ 防具欄の数
  289.   #--------------------------------------------------------------------------
  290.   def armor_number
  291.     return equip_type.size
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ○ 拡張防具欄の数
  295.   #--------------------------------------------------------------------------
  296.   def extra_armor_number
  297.     return [armor_number - 4, 0].max
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ○ 防具 ID リストの取得
  301.   #--------------------------------------------------------------------------
  302.   def extra_armor_id
  303.     @extra_armor_id = [] if @extra_armor_id == nil
  304.     return @extra_armor_id
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 防具オブジェクトの配列取得
  308.   #--------------------------------------------------------------------------
  309.   alias armors_KGC_EquipExtension armors
  310.   def armors
  311.     result = armors_KGC_EquipExtension
  312.  
  313.     # 5番目以降の防具を追加
  314.     extra_armor_number.times { |i|
  315.       armor_id = extra_armor_id[i]
  316.       result << (armor_id == nil ? nil : $data_armors[armor_id])
  317.     }
  318.     return result
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 装備の変更 (オブジェクトで指定)
  322.   #     equip_type : 装備部位
  323.   #     item       : 武器 or 防具 (nil なら装備解除)
  324.   #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  325.   #--------------------------------------------------------------------------
  326.   alias change_equip_KGC_EquipExtension change_equip
  327.   def change_equip(equip_type, item, test = false)
  328.     change_equip_KGC_EquipExtension(equip_type, item, test)
  329.  
  330.     # 拡張防具欄がある場合のみ
  331.     if extra_armor_number > 0
  332.       item_id = item == nil ? 0 : item.id
  333.       case equip_type
  334.       when 5..armor_number  # 拡張防具欄
  335.         @extra_armor_id = [] if @extra_armor_id == nil
  336.         @extra_armor_id[equip_type - 5] = item_id
  337.       end
  338.     end
  339.  
  340.     restore_battle_skill if $imported["SkillCPSystem"]
  341.     restore_passive_rev  if $imported["PassiveSkill"]
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 装備の破棄
  345.   #     item : 破棄する武器 or 防具
  346.   #    武器/防具の増減で「装備品も含める」のとき使用する。
  347.   #--------------------------------------------------------------------------
  348.   alias discard_equip_KGC_EquipExtension discard_equip
  349.   def discard_equip(item)
  350.     last_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  351.  
  352.     discard_equip_KGC_EquipExtension(item)
  353.  
  354.     curr_armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  355.     return unless item.is_a?(RPG::Armor)  # 防具でない
  356.     return if last_armors != curr_armors  # 既に破棄された
  357.  
  358.     # 拡張防具欄を検索
  359.     extra_armor_number.times { |i|
  360.       if extra_armor_id[i] == item.id
  361.         @extra_armor_id[i] = 0
  362.         break
  363.       end
  364.     }
  365.  
  366.     restore_battle_skill if $imported["SkillCPSystem"]
  367.     restore_passive_rev  if $imported["PassiveSkill"]
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ● 職業 ID の変更
  371.   #     class_id : 新しい職業 ID
  372.   #--------------------------------------------------------------------------
  373.   alias class_id_equal_KGC_EquipExtension class_id=
  374.   def class_id=(class_id)
  375.     class_id_equal_KGC_EquipExtension(class_id)
  376.  
  377.     return if extra_armor_number == 0  # 拡張防具欄がない
  378.  
  379.     # 装備できない拡張防具を外す
  380.     for i in 5..armor_number
  381.       change_equip(i, nil) unless equippable?(equips[i])
  382.     end
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ○ EP 条件クリア判定
  386.   #     equip_type : 装備部位
  387.   #     item       : 武器 or 防具
  388.   #--------------------------------------------------------------------------
  389.   def ep_condition_clear?(equip_type, item)
  390.     return true if item == nil  # nil は解除なので OK
  391.  
  392.     curr_item = equips[equip_type]
  393.     offset = (curr_item != nil ? curr_item.ep_cost : 0)
  394.     return false if self.ep < (item.ep_cost - offset)   # EP 不足
  395.  
  396.     return true
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ○ 装備を修復
  400.   #--------------------------------------------------------------------------
  401.   def restore_equip
  402.     # 以前の装備品・パラメータを退避
  403.     last_equips = equips
  404.     last_hp = self.hp
  405.     last_mp = self.mp
  406.     if $imported["SkillCPSystem"]
  407.       last_battle_skill_ids = battle_skill_ids.clone
  408.     end
  409.  
  410.     # 全装備解除
  411.     last_equips.each_index { |i| change_equip(i, nil) }
  412.  
  413.     # 装備品・パラメータを復元
  414.     last_equips.compact.each { |item| equip_legal_slot(item) }
  415.     self.hp = last_hp
  416.     self.mp = last_mp
  417.     if $imported["SkillCPSystem"]
  418.       last_battle_skill_ids.each_with_index { |s, i| set_battle_skill(i, s) }
  419.     end
  420.     Graphics.frame_reset
  421.   end
  422.   #--------------------------------------------------------------------------
  423.   # ○ 装備品を正しい箇所にセット
  424.   #     item : 武器 or 防具
  425.   #--------------------------------------------------------------------------
  426.   def equip_legal_slot(item)
  427.     if item.is_a?(RPG::Weapon)
  428.       if @weapon_id == 0
  429.         # 武器 1
  430.         change_equip(0, item)
  431.       elsif two_swords_style && @armor1_id == 0
  432.         # 武器 2 (二刀流の場合)
  433.         change_equip(1, item)
  434.       end
  435.     elsif item.is_a?(RPG::Armor)
  436.       if !two_swords_style && item.kind == equip_type[0] && @armor1_id == 0
  437.         # 先頭の防具 (二刀流でない場合)
  438.         change_equip(1, item)
  439.       else
  440.         # 装備箇所リストを作成
  441.         list = [-1, @armor2_id, @armor3_id, @armor4_id]
  442.         list += extra_armor_id
  443.         # 正しい、かつ空いている箇所にセット
  444.         equip_type.each_with_index { |kind, i|
  445.           if kind == item.kind && list[i] == 0
  446.             change_equip(i + 1, item)
  447.             break
  448.           end
  449.         }
  450.       end
  451.     end
  452.   end
  453. end
  454.  
  455. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  456.  
  457. #==============================================================================
  458. # ■ Window_Base
  459. #==============================================================================
  460.  
  461. class Window_Base < Window
  462.   #--------------------------------------------------------------------------
  463.   # ○ EP の文字色を取得
  464.   #     actor : アクター
  465.   #--------------------------------------------------------------------------
  466.   def ep_color(actor)
  467.     return knockout_color if actor.maxep > 0 && actor.ep == 0
  468.     return normal_color
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ○ EP ゲージの色 1 の取得
  472.   #--------------------------------------------------------------------------
  473.   def ep_gauge_color1
  474.     color = KGC::EquipExtension::EP_GAUGE_START_COLOR
  475.     return (color.is_a?(Integer) ? text_color(color) : color)
  476.   end
  477.   #--------------------------------------------------------------------------
  478.   # ○ EP ゲージの色 2 の取得
  479.   #--------------------------------------------------------------------------
  480.   def ep_gauge_color2
  481.     color = KGC::EquipExtension::EP_GAUGE_END_COLOR
  482.     return (color.is_a?(Integer) ? text_color(color) : color)
  483.   end
  484.   #--------------------------------------------------------------------------
  485.   # ○ EP の描画
  486.   #     actor : アクター
  487.   #     x     : 描画先 X 座標
  488.   #     y     : 描画先 Y 座標
  489.   #     width : 幅
  490.   #--------------------------------------------------------------------------
  491.   def draw_actor_ep(actor, x, y, width = 120)
  492.     draw_actor_ep_gauge(actor, x, y, width)
  493.     self.contents.font.color = system_color
  494.     self.contents.draw_text(x, y, 30, WLH, Vocab::ep_a)
  495.     self.contents.font.color = ep_color(actor)
  496.     xr = x + width
  497.     if width < 120
  498.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.ep, 2)
  499.     else
  500.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.ep, 2)
  501.       self.contents.font.color = normal_color
  502.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  503.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxep, 2)
  504.     end
  505.     self.contents.font.color = normal_color
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # ○ EP ゲージの描画
  509.   #     actor : アクター
  510.   #     x     : 描画先 X 座標
  511.   #     y     : 描画先 Y 座標
  512.   #     width : 幅
  513.   #--------------------------------------------------------------------------
  514.   def draw_actor_ep_gauge(actor, x, y, width = 120)
  515.     gw = width * actor.ep / [actor.maxep, 1].max
  516.     gc1 = ep_gauge_color1
  517.     gc2 = ep_gauge_color2
  518.     self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
  519.     self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  520.   end
  521.   #--------------------------------------------------------------------------
  522.   # ○ 消費 EP の描画
  523.   #     item    : 武器 or 防具
  524.   #     rect    : 描画する領域
  525.   #     enabled : 許可状態
  526.   #--------------------------------------------------------------------------
  527.   def draw_equipment_ep_cost(item, rect, enabled = true)
  528.     return if item == nil
  529.     # 消費 EP 0 を表示しない場合
  530.     return if KGC::EquipExtension::HIDE_ZERO_EP_COST && item.ep_cost == 0
  531.  
  532.     color = KGC::EquipExtension::EP_COST_COLOR
  533.     self.contents.font.color = (color.is_a?(Integer) ?
  534.       text_color(color) : color)
  535.     self.contents.font.color.alpha = enabled ? 255 : 128
  536.     self.contents.draw_text(rect, item.ep_cost, 2)
  537.   end
  538. end
  539.  
  540. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  541.  
  542. #==============================================================================
  543. # ■ Window_Equip
  544. #==============================================================================
  545.  
  546. class Window_Equip < Window_Selectable
  547.   #--------------------------------------------------------------------------
  548.   # ● リフレッシュ
  549.   #--------------------------------------------------------------------------
  550.   def refresh
  551.     self.contents.clear
  552.     @data = @actor.equips.clone
  553.     @item_max = [@data.size, @actor.armor_number + 1].min
  554.     create_contents
  555.  
  556.     # 装備箇所を描画
  557.     self.contents.font.color = system_color
  558.     if @actor.two_swords_style
  559.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  560.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  561.     else
  562.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  563.       name = armor_slot_name(@actor.equip_type[0])
  564.       self.contents.draw_text(4, WLH * 1, 92, WLH, name)
  565.     end
  566.     for i in [email]1...@actor.armor_number[/email]
  567.       name = armor_slot_name(@actor.equip_type[i])
  568.       self.contents.draw_text(4, WLH * (i + 1), 92, WLH, name)
  569.     end
  570.  
  571.     # 装備品を描画
  572.     rect = Rect.new(92, 0, self.width - 128, WLH)
  573.     @item_max.times { |i|
  574.       rect.y = WLH * i
  575.       draw_item_name(@data[i], rect.x, rect.y)
  576.       draw_equipment_ep_cost(@data[i], rect)
  577.     }
  578.   end
  579.   #--------------------------------------------------------------------------
  580.   # ○ 防具欄の名称を取得
  581.   #     kind : 種別
  582.   #--------------------------------------------------------------------------
  583.   def armor_slot_name(kind)
  584.     case kind
  585.     when 0..3
  586.       return eval("Vocab.armor#{kind + 1}")
  587.     else
  588.       return Vocab.extra_armor(kind - 4)
  589.     end
  590.   end
  591.  
  592. unless $imported["ExtendedEquipScene"]
  593.   #--------------------------------------------------------------------------
  594.   # ● カーソルを 1 ページ後ろに移動
  595.   #--------------------------------------------------------------------------
  596.   def cursor_pagedown
  597.     return if Input.repeat?(Input::R)
  598.     super
  599.   end
  600.   #--------------------------------------------------------------------------
  601.   # ● カーソルを 1 ページ前に移動
  602.   #--------------------------------------------------------------------------
  603.   def cursor_pageup
  604.     return if Input.repeat?(Input::L)
  605.     super
  606.   end
  607.   #--------------------------------------------------------------------------
  608.   # ● フレーム更新
  609.   #--------------------------------------------------------------------------
  610.   def update
  611.     super
  612.     return unless self.active
  613.  
  614.     if Input.repeat?(Input::RIGHT)
  615.       cursor_pagedown
  616.     elsif Input.repeat?(Input::LEFT)
  617.       cursor_pageup
  618.     end
  619.   end
  620. end
  621.  
  622. end
  623.  
  624. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  625.  
  626. #==============================================================================
  627. # ■ Window_EquipItem
  628. #==============================================================================
  629.  
  630. class Window_EquipItem < Window_Item
  631.   #--------------------------------------------------------------------------
  632.   # ● リフレッシュ
  633.   #--------------------------------------------------------------------------
  634.   def refresh
  635.     @item_enabled = []
  636.     super
  637.     @data.each { |item| @item_enabled << enable?(item) }
  638.   end
  639.   #--------------------------------------------------------------------------
  640.   # ● アイテムをリストに含めるかどうか
  641.   #     item : アイテム
  642.   #--------------------------------------------------------------------------
  643.   def include?(item)
  644.     return true if item == nil
  645.     if @equip_type == 0
  646.       return false unless item.is_a?(RPG::Weapon)
  647.     else
  648.       return false unless item.is_a?(RPG::Armor)
  649.       return false unless item.kind == @equip_type - 1
  650.     end
  651.     return @actor.equippable?(item)
  652.   end
  653.   #--------------------------------------------------------------------------
  654.   # ● アイテムを許可状態で表示するかどうか
  655.   #     item : アイテム
  656.   #--------------------------------------------------------------------------
  657.   def enable?(item)
  658.     return false unless @actor.equippable?(item)                      # 装備不可
  659.     return false unless @actor.ep_condition_clear?(@equip_type, item)  # EP 不足
  660.  
  661.     return true
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ● 項目の描画
  665.   #     index : 項目番号
  666.   #--------------------------------------------------------------------------
  667.   def draw_item(index)
  668.     super(index)   
  669.     rect = item_rect(index)
  670.     item = @data[index]
  671.  
  672.     # 個数表示分の幅を削る
  673.     cw = self.contents.text_size(sprintf(":%2d", 0)).width
  674.     rect.width -= cw + 4
  675.     draw_equipment_ep_cost(item, rect, enable?(item))
  676.   end
  677.   #--------------------------------------------------------------------------
  678.   # ○ 簡易リフレッシュ
  679.   #     equip_type : 装備部位
  680.   #--------------------------------------------------------------------------
  681.   def simple_refresh(equip_type)
  682.     # 一時的に装備部位を変更
  683.     last_equip_type = @equip_type
  684.     @equip_type = equip_type
  685.  
  686.     @data.each_with_index { |item, i|
  687.       # 許可状態が変化した項目のみ再描画
  688.       if enable?(item) != @item_enabled[i]
  689.         draw_item(i)
  690.         @item_enabled[i] = enable?(item)
  691.       end
  692.     }
  693.     # 装備部位を戻す
  694.     @equip_type = last_equip_type
  695.   end
  696. end
  697.  
  698. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  699.  
  700. #==============================================================================
  701. # ■ Window_EquipStatus
  702. #==============================================================================
  703.  
  704. class Window_EquipStatus < Window_Base
  705.   #--------------------------------------------------------------------------
  706.   # ● リフレッシュ
  707.   #--------------------------------------------------------------------------
  708.   alias refresh_KGC_EquipExtension refresh
  709.   def refresh
  710.     refresh_KGC_EquipExtension
  711.  
  712.     draw_actor_ep(@actor, 120, 0, 56) if KGC::EquipExtension::USE_EP_SYSTEM
  713.   end
  714. end
  715.  
  716. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  717.  
  718. #==============================================================================
  719. # ■ Window_Status
  720. #==============================================================================
  721.  
  722. class Window_Status < Window_Base
  723.  
  724. if KGC::EquipExtension::SHOW_STATUS_EP
  725.   #--------------------------------------------------------------------------
  726.   # ● 基本情報の描画
  727.   #     x : 描画先 X 座標
  728.   #     y : 描画先 Y 座標
  729.   #--------------------------------------------------------------------------
  730.   alias draw_basic_info_KGC_EquipExtension draw_basic_info
  731.   def draw_basic_info(x, y)
  732.     draw_basic_info_KGC_EquipExtension(x, y)
  733.  
  734.     draw_actor_ep(@actor, x + 180, y + WLH * 4)
  735.   end
  736. end
  737.  
  738.   #--------------------------------------------------------------------------
  739.   # ● 装備品の描画
  740.   #     x : 描画先 X 座標
  741.   #     y : 描画先 Y 座標
  742.   #--------------------------------------------------------------------------
  743.   def draw_equipments(x, y)
  744.     self.contents.font.color = system_color
  745.     self.contents.draw_text(x, y, 120, WLH, Vocab::equip)
  746.  
  747.     item_number = [@actor.equips.size, @actor.armor_number + 1].min
  748.     item_number.times { |i|
  749.       draw_item_name(@actor.equips[i], x + 16, y + WLH * (i + 1))
  750.     }
  751.   end
  752. end
  753.  
  754. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  755.  
  756. #==============================================================================
  757. # ■ Scene_Equip
  758. #==============================================================================
  759.  
  760. class Scene_Equip < Scene_Base
  761.   #--------------------------------------------------------------------------
  762.   # ● 定数
  763.   #--------------------------------------------------------------------------
  764.   EQUIP_TYPE_MAX = KGC::EquipExtension::EXTRA_EQUIP_KIND.size + 5
  765.   #--------------------------------------------------------------------------
  766.   # ● オブジェクト初期化
  767.   #     actor_index : アクターインデックス
  768.   #     equip_index : 装備インデックス
  769.   #--------------------------------------------------------------------------
  770.   alias initialize_KGC_EquipExtension initialize
  771.   def initialize(actor_index = 0, equip_index = 0)
  772.     initialize_KGC_EquipExtension(actor_index, equip_index)
  773.  
  774.     unit = ($imported["LargeParty"] ?
  775.       $game_party.all_members : $game_party.members)
  776.     actor = unit[actor_index]
  777.     @equip_index = [@equip_index, actor.armor_number].min
  778.   end
  779.   #--------------------------------------------------------------------------
  780.   # ● アイテムウィンドウの作成
  781.   #--------------------------------------------------------------------------
  782.   alias create_item_windows_KGC_EquipExtension create_item_windows
  783.   def create_item_windows
  784.     create_item_windows_KGC_EquipExtension
  785.  
  786.     kind = equip_kind(@equip_index)
  787.     EQUIP_TYPE_MAX.times { |i|
  788.       @item_windows[i].visible = (kind == i)
  789.     }
  790.   end
  791.   #--------------------------------------------------------------------------
  792.   # ● アイテムウィンドウの更新
  793.   #--------------------------------------------------------------------------
  794.   def update_item_windows
  795.     kind = equip_kind(@equip_window.index)
  796.     for i in 0...EQUIP_TYPE_MAX
  797.       @item_windows[i].visible = (kind == i)
  798.       @item_windows[i].update
  799.     end
  800.     @item_window = @item_windows[kind]
  801.     @item_window.simple_refresh(@equip_window.index)
  802.   end
  803.   #--------------------------------------------------------------------------
  804.   # ○ 装備欄の種別を取得
  805.   #     index : 装備欄インデックス
  806.   #--------------------------------------------------------------------------
  807.   def equip_kind(index)
  808.     if index == 0
  809.       return 0
  810.     else
  811.       return @actor.equip_type[index - 1] + 1
  812.     end
  813.   end
  814.  
  815. unless $imported["ExtendedEquipScene"]
  816.   #--------------------------------------------------------------------------
  817.   # ● ステータスウィンドウの更新
  818.   #--------------------------------------------------------------------------
  819.   def update_status_window
  820.     if @equip_window.active
  821.       @status_window.set_new_parameters(nil, nil, nil, nil)
  822.     elsif @item_window.active
  823.       temp_actor = Marshal.load(Marshal.dump(@actor))
  824.       temp_actor.change_equip(@equip_window.index, @item_window.item, true)
  825.       new_atk = temp_actor.atk
  826.       new_def = temp_actor.def
  827.       new_spi = temp_actor.spi
  828.       new_agi = temp_actor.agi
  829.       @status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
  830.     end
  831.     @status_window.update
  832.   end
  833. end
  834.  
  835.   #--------------------------------------------------------------------------
  836.   # ● アイテム選択の更新
  837.   #--------------------------------------------------------------------------
  838.   alias update_item_selection_KGC_EquipExtension update_item_selection
  839.   def update_item_selection
  840.     if Input.trigger?(Input::C)
  841.       # 装備不可能な場合
  842.       index = @equip_window.index
  843.       item = @item_window.item
  844.       unless item == nil ||
  845.           (@actor.equippable?(item) && @actor.ep_condition_clear?(index, item))
  846.         Sound.play_buzzer
  847.         return
  848.       end
  849.     end
  850.  
  851.     update_item_selection_KGC_EquipExtension
  852.   end
  853. end
  854.  
  855. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  856.  
  857. #==============================================================================
  858. # ■ Scene_File
  859. #==============================================================================
  860.  
  861. class Scene_File < Scene_Base
  862.   #--------------------------------------------------------------------------
  863.   # ● セーブデータの読み込み
  864.   #     file : 読み込み用ファイルオブジェクト (オープン済み)
  865.   #--------------------------------------------------------------------------
  866.   alias read_save_data_KGC_EquipExtension read_save_data
  867.   def read_save_data(file)
  868.     read_save_data_KGC_EquipExtension(file)
  869.  
  870.     KGC::Commands.restore_equip
  871.     Graphics.frame_reset
  872.   end
  873. end








下面是  装备技能




RUBY 代码复制
  1. #------------------------------------------------------------------------------
  2. # ■ 装备技能修炼v1.0(VX)
  3. # by:Ultra
  4. # 1.0(XP)
  5. #        /2010.5.29
  6. # 1.0(VX)
  7. #        /2010.7.12
  8. #        -添加了VX专属条形槽(RGSS2渐变描绘)
  9. #        -添加了VX双手武器的判断
  10. #        -部分逻辑的改变
  11. #------------------------------------------------------------------------------
  12. # -AP条形槽设定
  13. #----类型
  14. #1:正常  2:渐变型 3:自定义
  15. $VXAS_AP = 3
  16. #----背景的颜色[r,g,b,o]
  17. $VXAS_B     = [0,0,0,200]
  18. #----自定义渐变条形槽
  19. $VXAS_K     = [255,255,255,0]  #边框颜色[r,g,b,o]
  20. $VXAS_RGBO1 = [50,100,200,255] #始渐变色[r,g,b,o]
  21. $VXAS_RGBO2 = [180,200,50,255] #终渐变色[r,g,b,o]
  22. #~ -武器 防具对应的技能:
  23. #~ ----在武器,防具名称最后加上 @技能ID
  24. #~ ----例如:铜剑@20★ 铜剑的对应技能为 20 号
  25. #~ -AP增减方法:
  26. #~ ----全队员增加 $as.gain_ap(5,$as.sk) ★全部队员技能 ap+5
  27. #~ ----详细角色增加 $as.gain_ap(33,{1=>[1,2,3],7=>[2]}) ★1号角色技能1,2,3号 ap+33,7号角色技能2号 ap+33
  28. #~ ----多角色增加
  29. #~     for i in 1..8
  30. #~        $as.gain_ap(10,$as.sk(2,i)) ★1到8号角色技能 ap+10
  31. #~     end
  32. #~ ----减少ap方法同上,gain_ap改为lose_ap即可
  33. #~ -AP最大值设定:
  34. #~ ----脚本24行
  35. #~ -战斗胜利获得的AP:
  36. #~ ----在敌人队伍名称最后加上 @AP值
  37. #~ ----例如:幽灵*2@10 ★ 战斗胜利 全部队员 ap+10
  38. #~ -检查更新AP的方法:
  39. #~ ----$game_actors[id].iniek ★ 正常情况下不会用到。(注明此方法以提供需求用户使用)
  40. #~ -事件的 增减特技:
  41. #~ ----1:如果减少技能时,这个技能正被角色装备中,是无效的(减不掉)
  42. #~ ----2:与 1 相反(即没装备中),是可以遗忘的(ap=0)
  43. #~ ----3:增加时,该技能的ap直接满(直接习得)
  44. #~ -事件的‘更改角色职业’
  45. #~ ----更改职业时被脱下装备时,它的技能也会遗忘(ap值保留,改回职业时 可以继续修炼这个技能)
  46. #~ ----这样设定希望你可以更好的做到‘职业平衡’的效果
  47. #------------------------------------------------------------------------------
  48. class As
  49.   attr_accessor :as
  50.   attr_accessor :maxas
  51.   def initialize
  52.     @as = {}
  53.     @maxas = {}
  54.     for i in 1...$data_actors.size
  55.       @as[i] = []
  56.       for n in 0...$data_skills.size
  57.         @as[i][n] = 0
  58.       end
  59.     end
  60.     for i in 1...$data_actors.size
  61.       @maxas[i] = []
  62.       for n in 0...$data_skills.size
  63.         @maxas[i][n] = 100
  64.       end
  65.     end
  66.     ##################MAXAP##################
  67.     #基本设定方法
  68.     @maxas[1][10] = 10    # 1号角色10号技能最大ap=888
  69.     @maxas[1][82] = 999
  70.     ##################MAXAP##################
  71.   end
  72.   def sk(n = 0,w = 0)
  73.     @data = []
  74.     @data_s = {}
  75.     case n
  76.     when 0
  77.     for b in 0...$game_party.members.size
  78.       actor = $game_party.members[b]
  79.       for i in  0...$game_party.members[b].skills.size
  80.         skill = $game_party.members[b].skills[i]
  81.         if skill != nil
  82.          @data.push(skill.id)
  83.         end
  84.       end
  85.      @data_s[actor.id] = @data
  86.      @data = []
  87.     end
  88.     when 1
  89.       actor = $game_party.members[w]
  90.       for i in  0...$game_party.members[w].skills.size
  91.         skill = $game_party.members[w].skills[i]
  92.         if skill != nil
  93.          @data.push(skill.id)
  94.         end
  95.       end
  96.      @data_s[actor.id] = @data
  97.      @data = []
  98.      when 2
  99.       actor = $game_actors[w]
  100.       for i in  0...$game_actors[w].skills.size
  101.         skill = $game_actors[w].skills[i]
  102.         if skill != nil
  103.          @data.push(skill.id)
  104.         end
  105.       end
  106.      @data_s[actor.id] = @data
  107.      @data = []
  108.      end
  109.     return @data_s
  110.   end
  111.   def gain_ap(s,id ={})
  112.     for b in id.keys
  113.       for i in 0...id[b].size
  114.         max = @maxas[b][id[b][i]]
  115.         if not max == nil
  116.         @as[b][id[b][i]] += s
  117.         if @as[b][id[b][i]] >= max
  118.           @as[b][id[b][i]] = max
  119.         end
  120.         end
  121.       end
  122.     end
  123.   end
  124.   def lose_ap(s,id ={})
  125.     for b in id.keys
  126.       for i in 0...id[b].size
  127.         @as[b][id[b][i]] -= s
  128.         if @as[b][id[b][i]] <= 0
  129.           @as[b][id[b][i]] = 0
  130.         end
  131.       end
  132.     end
  133.   end
  134.   #actor_id:角色ID skill_id[id,newid]:技能ID ewhy:0=旧装备 1=新装备 2=空白装备 3=空白物品
  135.   def lf_ap(actor_id,ewhy,skill_id=[])
  136.     if ewhy == 0
  137.       $game_actors[actor_id].learn_skills(skill_id[0])
  138.     elsif ewhy == 1
  139.       eap = $as.as[actor_id][skill_id[0]] == $as.maxas[actor_id][skill_id[0]] ? true : false
  140.       if eap == true
  141.         $game_actors[actor_id].learn_skills(skill_id[0])
  142.         $game_actors[actor_id].learn_skills(skill_id[1])
  143.       else
  144.         $game_actors[actor_id].forget_skills(skill_id[0])
  145.         $game_actors[actor_id].learn_skills(skill_id[1])
  146.       end
  147.     elsif ewhy == 2
  148.       $game_actors[actor_id].learn_skills(skill_id[1])
  149.     elsif ewhy == 3
  150.       eap = $as.as[actor_id][skill_id[0]] == $as.maxas[actor_id][skill_id[0]] ? true : false
  151.       if eap == true
  152.         $game_actors[actor_id].learn_skills(skill_id[0])
  153.       else
  154.         $game_actors[actor_id].forget_skills(skill_id[0])
  155.       end
  156.     end
  157.   end
  158. end
  159. class Game_Actor
  160.   def equippable_as?(item)
  161.     if item.is_a?(RPG::Weapon)
  162.       v = self.class.weapon_set.include?(item.id)
  163.       if !v
  164.         aek = $data_weapons[item.id].aek
  165.         $as.lf_ap(self.id,3,[aek]) if aek != nil
  166.       end
  167.       return v
  168.     end
  169.     if item.is_a?(RPG::Armor)
  170.       v = self.class.armor_set.include?(item.id)
  171.       if !v
  172.         aek = $data_armors[item.id].aek
  173.         $as.lf_ap(self.id,3,[aek]) if aek != nil
  174.       end
  175.       return false if two_swords_style and item.kind == 0
  176.       return v
  177.     end
  178.     return false
  179.   end
  180.   def class_id=(class_id)
  181.     @class_id = class_id
  182.     for i in 0..4     # 卸下不可装备的装备物品
  183.       change_equip(i, nil) unless equippable_as?(equips[i])
  184.     end
  185.   end
  186.   def iniek
  187.     data = equips
  188.     data.compact!
  189.     for i in 0...data.size
  190.       if data[i].aek != nil
  191.        $as.lf_ap(self.id,0,[data[i].aek])
  192.       end
  193.     end
  194.   end
  195.   def skill_aek
  196.     data = equips
  197.     data2 = []
  198.     data.compact!
  199.     for i in 0...data.size
  200.       if data[i].aek != nil
  201.        data2.push(data[i].aek)
  202.       end
  203.     end
  204.     return data2
  205.   end
  206.   def learn_skill(skill_id)
  207.     unless skill_learn?($data_skills[skill_id])
  208.       $as.as[self.id][skill_id] = $as.maxas[self.id][skill_id]
  209.       @skills.push(skill_id)
  210.       @skills.sort!
  211.     end
  212.   end
  213.   def forget_skill(skill_id)
  214.     skill_aek = $game_actors[self.id].skill_aek
  215.     if not skill_aek.include?(skill_id)
  216.       $as.as[self.id][skill_id] = 0
  217.       @skills.delete(skill_id)
  218.     end
  219.   end
  220.   def learn_skills(skill_id)
  221.     unless skill_learn?($data_skills[skill_id])
  222.       @skills.push(skill_id)
  223.       @skills.sort!
  224.     end
  225.   end
  226.   def forget_skills(skill_id)
  227.     @skills.delete(skill_id)
  228.   end
  229.   def change_equip(equip_type, item, test = false)
  230.     last_item = equips[equip_type]
  231.     unless test
  232.       return if $game_party.item_number(item) == 0 if item != nil
  233.       $game_party.gain_item(last_item, 1)
  234.       $game_party.lose_item(item, 1)
  235.     end
  236.     item_id = item == nil ? 0 : item.id
  237.     case equip_type
  238.     when 0  # 武器
  239.       @weapon_id = item_id
  240.       unless two_hands_legal?             # 非双手装备的场合,自动卸下装备
  241.         #★VX★
  242.         aek = $data_armors[equips[1].id].aek
  243.         $as.lf_ap(self.id,3,[aek]) if aek != nil
  244.         change_equip(1, nil, test)
  245.         #★VX★
  246.       end
  247.     when 1  # 盾
  248.       @armor1_id = item_id
  249.       unless two_hands_legal?             # 非双手装备的场合,自动卸下装备
  250.         #★VX★
  251.         aek = $data_weapons[equips[0].id].aek
  252.         $as.lf_ap(self.id,3,[aek]) if aek != nil
  253.         #★VX★
  254.         change_equip(0, nil, test)
  255.       end
  256.     when 2  # 头部防具
  257.       @armor2_id = item_id
  258.     when 3  # 身体防具
  259.       @armor3_id = item_id
  260.     when 4  # 装饰品
  261.       @armor4_id = item_id
  262.     end
  263.   end
  264. end
  265. class Game_Party
  266.   def setup_starting_members
  267.     @actors = []
  268.     for i in $data_system.party_members
  269.       @actors.push(i)
  270.       $game_actors[i].iniek
  271.     end
  272.   end
  273.   def add_actor(actor_id)
  274.     if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id)
  275.       $game_actors[actor_id].iniek
  276.       @actors.push(actor_id)
  277.       $game_player.refresh
  278.     end
  279.   end
  280. end
  281. module RPG
  282.   class Troop
  283.     def name
  284.       name = @name.split(/@/)[0]
  285.       return name != nil ? name : ""
  286.     end
  287.     def ap
  288.       ap = @name.split(/@/)[1]
  289.       return ap != nil ? ap.to_i : 0
  290.     end
  291.   end
  292.   class Armor
  293.     def name
  294.       name = @name.split(/@/)[0]
  295.       return name != nil ? name : ""
  296.     end
  297.     def aek
  298.        aek = @name.split(/@/)[1]
  299.       return aek != nil ? aek.to_i : nil
  300.     end
  301.   end
  302.   class Weapon
  303.     def name
  304.       name = @name.split(/@/)[0]
  305.       return name != nil ? name : ""
  306.     end
  307.     def aek
  308.        aek = @name.split(/@/)[1]
  309.       return aek != nil ? aek.to_i : nil
  310.     end
  311.   end
  312. end
  313. class Window_Base < Window
  314.   def draw_actor_ap(actor_id,skill_id,x,y,width = 128,value = false)
  315.     as = $as.as[actor_id][skill_id]
  316.     maxas = $as.maxas[actor_id][skill_id]
  317.     r = 10
  318.     g = 100
  319.     b = 255
  320.     r2 = 100
  321.     g2 = 200
  322.     b2 = 150
  323.     o = 255
  324.     color_b = Color.new(55,180,255,200)
  325.     w = width * as / maxas
  326.     y += 14
  327.     #背景
  328.     self.contents.fill_rect(x, y, width, 4,
  329.     Color.new($VXAS_B[0],$VXAS_B[1],$VXAS_B[2],$VXAS_B[3]))
  330.     #描绘
  331.     if $VXAS_AP == 1
  332.       color_b = Color.new(55,180,255,255)
  333.       self.contents.fill_rect(x, y, w, 1,Color.new(r+46,g+79,b+12,o))
  334.       self.contents.fill_rect(x, y+1, w, 1,Color.new(r+46,g+79,b+10,o))
  335.       self.contents.fill_rect(x, y+2, w, 1,Color.new(r+13,g+59,b-41,o))
  336.       self.contents.fill_rect(x, y+3, w, 1,Color.new(r+18,g+73,b-43,o))
  337.     elsif $VXAS_AP == 2
  338.       color_b = Color.new(255,255,255,255)
  339.       self.contents.gradient_fill_rect(x, y, w, 1,
  340.       Color.new(r+46,g+79,b+12,o),Color.new(r2+46,g2+79,b2+12,o))
  341.       self.contents.gradient_fill_rect(x, y+1, w, 1,
  342.       Color.new(r+46,g+79,b+10,o),Color.new(r2+46,g2+79,b2+10,o))
  343.       self.contents.gradient_fill_rect(x, y+2, w, 1,
  344.       Color.new(r+13,g+59,b-41,o),Color.new(r2+13,g2+59,b2-41,o))
  345.       self.contents.gradient_fill_rect(x, y+3, w, 1,
  346.       Color.new(r+18,g+73,b-43,o),Color.new(r2+18,g2+73,b2-43,o))
  347.     elsif $VXAS_AP == 3 && !$VXAS_RGBO1.empty? && !$VXAS_RGBO2.empty?
  348.       color_b = Color.new($VXAS_K[0],$VXAS_K[1],$VXAS_K[2],$VXAS_K[3])
  349.       r  = $VXAS_RGBO1[0]
  350.       g  = $VXAS_RGBO1[1]
  351.       b  = $VXAS_RGBO1[2]
  352.       o  = $VXAS_RGBO1[3]
  353.       r2 = $VXAS_RGBO2[0]
  354.       g2 = $VXAS_RGBO2[1]
  355.       b2 = $VXAS_RGBO2[2]
  356.       o2 = $VXAS_RGBO2[3]
  357.       self.contents.gradient_fill_rect(x, y, w, 1,
  358.       Color.new(r+46,g+79,b+12,o),Color.new(r2+46,g2+79,b2+12,o2))
  359.       self.contents.gradient_fill_rect(x, y+1, w, 1,
  360.       Color.new(r+46,g+79,b+10,o),Color.new(r2+46,g2+79,b2+10,o2))
  361.       self.contents.gradient_fill_rect(x, y+2, w, 1,
  362.       Color.new(r+13,g+59,b-41,o),Color.new(r2+13,g2+59,b2-41,o2))
  363.       self.contents.gradient_fill_rect(x, y+3, w, 1,
  364.       Color.new(r+18,g+73,b-43,o),Color.new(r2+18,g2+73,b2-43,o2))
  365.     else
  366.       color_b = Color.new(55,180,255,255)
  367.       self.contents.fill_rect(x, y, w, 1,Color.new(r+46,g+79,b+12,o))
  368.       self.contents.fill_rect(x, y+1, w, 1,Color.new(r+46,g+79,b+10,o))
  369.       self.contents.fill_rect(x, y+2, w, 1,Color.new(r+13,g+59,b-41,o))
  370.       self.contents.fill_rect(x, y+3, w, 1,Color.new(r+18,g+73,b-43,o))
  371.     end
  372.     #边框
  373.     self.contents.fill_rect(x-1, y-1, width+2, 1, color_b)
  374.     self.contents.fill_rect(x-1, y+4, width+2, 1, color_b)
  375.     self.contents.fill_rect(x-1, y, 1, 4, color_b)
  376.     self.contents.fill_rect(x+width, y, 1, 4, color_b)
  377.     self.contents.font.size = 15
  378.     name = $data_skills[skill_id].name
  379.     self.contents.draw_text(x-20, y-22, 48, 32, "Ap")
  380.     self.contents.draw_text(x, y-(11+14), 68, 32, name)
  381.     self.contents.font.size = 15
  382.     unless value
  383.       self.contents.draw_text(x+width, y-15, 20, 32, as.to_s, 2)
  384.       self.contents.draw_text(x+width+20, y-15, 12, 32, "/", 1)
  385.     self.contents.draw_text(x+width+20+12, y-15, 20, 32, maxas.to_s)
  386.     end
  387.     self.contents.font.size = Font.default_size
  388.   end
  389. end
  390. #-------------------------------------------------------------------------------
  391. class Scene_Title
  392.   alias :orig_create_game_objects :create_game_objects
  393.   def create_game_objects
  394.     orig_create_game_objects
  395.     #★★★★★★★★★★★★★★★★★★★
  396.     $as                 = As.new
  397.     #★★★★★★★★★★★★★★★★★★★
  398.   end
  399. end
  400. class Window_Help
  401.   def set_es(text,actor_id,aek)
  402.     if text != @text
  403.       self.contents.clear
  404.       self.contents.font.color = normal_color
  405.       self.contents.draw_text(4, 0, self.width - 40, WLH, text)
  406.       draw_actor_ap(actor_id,aek,380,4,80)
  407.       @text = text
  408.     end
  409.   end
  410. end
  411. class Window_Equip
  412.   def refresh
  413.     self.contents.clear
  414.     @data = []
  415.     for item in @actor.equips do @data.push(item) end
  416.     @item_max = @data.size
  417.     self.contents.font.color = system_color
  418.     if @actor.two_swords_style
  419.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  420.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  421.     else
  422.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  423.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  424.     end
  425.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  426.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  427.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  428.     draw_item_name(@data[0], 62, WLH * 0)
  429.     draw_item_name(@data[1], 62, WLH * 1)
  430.     draw_item_name(@data[2], 62, WLH * 2)
  431.     draw_item_name(@data[3], 62, WLH * 3)
  432.     draw_item_name(@data[4], 62, WLH * 4)
  433.   #★★★★★★★★★★★★★★★★★★★
  434.    x=190
  435.    for i in 0..4
  436.     if @data[i] != nil and @data[i].aek != nil
  437.      if $as.maxas[@actor.id][@data[i].aek] == nil
  438.         return
  439.        else
  440.         self.contents.font.size = 15
  441.         draw_actor_ap(@actor.id,@data[i].aek,x+15,4+WLH*i,80,true)
  442.         self.contents.font.size = Font.default_size
  443.      end
  444.     end
  445.    end
  446.   #★★★★★★★★★★★★★★★★★★★
  447.   end
  448.   def update_help
  449.     if item != nil && item.aek != nil
  450.       @help_window.set_es(item.description,@actor.id,item.aek)
  451.     else
  452.       @help_window.set_text(item == nil ? "" : item.description)
  453.     end
  454.   end
  455. end
  456. class Window_Item
  457.   def update_help
  458.     if item != nil && item.aek != nil && @actor != nil
  459.       @help_window.set_es(item.description,@actor.id,item.aek)
  460.     else
  461.       @help_window.set_text(item == nil ? "" : item.description)
  462.     end
  463.   end
  464. end
  465. class Scene_Equip
  466.   def update_item_selection
  467.     if Input.trigger?(Input::B)
  468.       Sound.play_cancel
  469.       @equip_window.active = true
  470.       @item_window.active = false
  471.       @item_window.index = -1
  472.     elsif Input.trigger?(Input::C)
  473.       Sound.play_equip
  474.       #★★★★★★★★★★★★★★★★★★★
  475.       item = @item_window.item
  476.       i = @equip_window.item
  477.        if i.id == item.id
  478.         elsif i.id != item.id and i != nil and item != nil
  479.          if i.aek != nil and item.aek != nil
  480.           $as.lf_ap(@actor.id,1,[i.aek,item.aek])
  481.           elsif i.aek != nil
  482.            $as.lf_ap(@actor.id,3,[i.aek,nil])
  483.           elsif item.aek != nil
  484.            $as.lf_ap(@actor.id,2,[nil,item.aek])
  485.          end
  486.         elsif i == nil
  487.          if item.aek != nil
  488.           $as.lf_ap(@actor.id,2,[nil,item.aek])
  489.          end
  490.         elsif item == nil
  491.          if i.aek != nil
  492.           $as.lf_ap(@actor.id,3,[i.aek,nil])
  493.          end
  494.        end
  495.       #★★★★★★★★★★★★★★★★★★★
  496.       @actor.change_equip(@equip_window.index, @item_window.item)
  497.       @equip_window.active = true
  498.       @item_window.active = false
  499.       @item_window.index = -1
  500.       @equip_window.refresh
  501.       for item_window in @item_windows
  502.         item_window.refresh
  503.       end
  504.     end
  505.   end
  506. end
  507. class Scene_File
  508.   alias :orig_write_save_data :write_save_data
  509.   def write_save_data(file)
  510.     orig_write_save_data(file)
  511.     Marshal.dump($as,file)
  512.   end
  513.   alias :orig_read_save_data :read_save_data
  514.   def read_save_data(file)
  515.     orig_read_save_data(file)
  516.     $as = Marshal.load(file)
  517.   end
  518. end
  519. class Scene_Battle
  520.   alias :orig_process_victory :process_victory
  521.   def process_victory
  522.     orig_process_victory
  523.     #★★★★★★★★★★★★★★★★★★★
  524.     ap = $game_troop.troop.ap
  525.     $as.gain_ap(ap,$as.sk)
  526.     #★★★★★★★★★★★★★★★★★★★
  527.   end
  528. end



点评

上传最简工程,复制代码有点小问题  发表于 2013-4-9 13:41
愁死我了。。。。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-15 11:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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