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

Project1

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

求高手解决两个脚本冲突问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
13 小时
注册时间
2009-3-11
帖子
25
跳转到指定楼层
1
发表于 2009-5-10 02:41:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
能力突破极限的脚本
和这个商店的5个脚本发生了冲突
  1. #==============================================================================
  2. # ■ Window_ShopBuy
  3. #------------------------------------------------------------------------------
  4. #  购买窗口。
  5. #==============================================================================

  6. class Window_ShopBuy < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化
  9.   #     x : X 坐标
  10.   #     y : Y 坐标
  11.   #--------------------------------------------------------------------------
  12.   def initialize(x, y)
  13.     super(x, y, 384, 256)
  14.     @shop_goods = $game_temp.shop_goods
  15.     refresh
  16.     self.index = 0
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 帮助文字更新
  20.   #--------------------------------------------------------------------------
  21.   def update_help
  22.     @help_window.set_item(item)
  23.   end
  24. end
复制代码
  1. #==============================================================================
  2. # ■ Window_ShopBuy
  3. #------------------------------------------------------------------------------
  4. #  购买窗口。
  5. #==============================================================================

  6. class Window_ShopBuy < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化
  9.   #     x : X 坐标
  10.   #     y : Y 坐标
  11.   #--------------------------------------------------------------------------
  12.   def initialize(x, y)
  13.     super(x, y, 384, 256)
  14.     @shop_goods = $game_temp.shop_goods
  15.     refresh
  16.     self.index = 0
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 帮助文字更新
  20.   #--------------------------------------------------------------------------
  21.   def update_help
  22.     @help_window.set_item(item)
  23.   end
  24. end
复制代码
  1. #==============================================================================
  2. # ■ Window_ShopNumber
  3. #------------------------------------------------------------------------------
  4. #  买卖输入个数窗口。
  5. #==============================================================================

  6. class Window_ShopNumber < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化
  9.   #     x : 窗口 X 坐标
  10.   #     y : 窗口 Y 坐标
  11.   #--------------------------------------------------------------------------
  12.   def initialize(x, y)
  13.     super(x, y, 384, 256)
  14.     @item = nil
  15.     @max = 1
  16.     @price = 0
  17.     @number = 1
  18.   end
  19. end
复制代码
  1. #==============================================================================
  2. # ■ Window_ShopHelp
  3. #------------------------------------------------------------------------------
  4. #  商店说明。
  5. #==============================================================================

  6. class Window_ShopHelp < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 312, 544, 104)
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 文字设定
  15.   #     item  : 物品
  16.   #--------------------------------------------------------------------------
  17.   def set_item(item)
  18.     if item.nil?
  19.       self.contents.clear
  20.       self.contents.font.color = normal_color
  21.       self.contents.draw_text(0, 0, 512, 24, $game_temp.shop_word)
  22.       @item = nil
  23.       return
  24.     end
  25.     if item != @item
  26.       @item = item
  27.       self.contents.clear
  28.       self.contents.font.color = normal_color
  29.       self.contents.draw_text(0, 0, 512, 24, @item.description)
  30.       if @item.is_a?(RPG::Item)
  31.         # 物品范围描述
  32.         scope = "[对象] : "
  33.         case @item.scope
  34.         when 0;  scope += "无"
  35.         when 1;  scope += "敌单体"
  36.         when 2;  scope += "敌全体"
  37.         when 3;  scope += "敌单体 连续"
  38.         when 4;  scope += "敌单体 随机"
  39.         when 5;  scope += "敌二体 随机"
  40.         when 6;  scope += "敌三体 随机"
  41.         when 7;  scope += "我方单体"
  42.         when 8;  scope += "我方全体"
  43.         when 9;  scope += "我方单体 (阵亡)"
  44.         when 10; scope += "我方全体 (阵亡)"
  45.         when 11; scope += "使用者"
  46.         end
  47.         self.contents.draw_text(0, 24, 512, 24, scope)
  48.         # 物品范围描述结束
  49.         # 物品恢复效果描述
  50.         effection = "[效果] : "
  51.         if @item.hp_recovery_rate > 0
  52.           effection += "#{Vocab.hp}+#{@item.hp_recovery_rate}% "
  53.         elsif @item.hp_recovery_rate < 0
  54.           effection += "#{Vocab.hp}-#{@item.hp_recovery_rate}% "
  55.         elsif @item.hp_recovery > 0
  56.           effection += "#{Vocab.hp}+#{@item.hp_recovery} "
  57.         elsif @item.hp_recovery < 0
  58.           effection += "#{Vocab.hp}-#{@item.hp_recovery} "
  59.         end
  60.         if @item.mp_recovery_rate > 0
  61.           effection += "#{Vocab.mp}+#{@item.mp_recovery_rate}% "
  62.         elsif @item.mp_recovery_rate < 0
  63.           effection += "#{Vocab.mp}-#{@item.mp_recovery_rate}% "
  64.         elsif @item.mp_recovery > 0
  65.           effection += "#{Vocab.mp}+#{@item.mp_recovery} "
  66.         elsif @item.mp_recovery < 0
  67.           effection += "#{Vocab.mp}-#{@item.mp_recovery} "
  68.         end
  69.         effection += "伤害#{@item.base_damage} " if @item.base_damage != 0
  70.         case @item.parameter_type
  71.         when 1
  72.           effection += "最大#{Vocab.hp}+#{@item.parameter_points}"
  73.         when 2
  74.           effection += "最大#{Vocab.mp}+#{@item.parameter_points}"
  75.         when 3
  76.           effection += "#{Vocab.atk}+#{@item.parameter_points}"
  77.         when 4
  78.           effection += "#{Vocab.def}+#{@item.parameter_points}"
  79.         when 5
  80.           effection += "#{Vocab.spi}+#{@item.parameter_points}"
  81.         when 6
  82.           effection += "#{Vocab.agi}+#{@item.parameter_points}"
  83.         end
  84.         self.contents.draw_text(0, 48, 512, 24, effection)
  85.         # 物品恢复效果描述结束
  86.       else
  87.         # 武器防具可装备人员描述
  88.         equip = "[可装备] : "
  89.         for actor in $game_party.members
  90.           if actor.equippable?(@item)
  91.             equip += "、" if equip != "[可装备] : "
  92.             equip += actor.name
  93.           end
  94.         end
  95.         equip += "无" if equip == "[可装备] : "
  96.         self.contents.draw_text(0, 24, 512, 24, equip)
  97.         # 武器防具可装备人员描述结束
  98.         # 武器防具攻防增减描述
  99.         effection = "[属性] : "
  100.         if @item.atk != 0
  101.           effection += "攻击力+#{@item.atk} "
  102.         end
  103.         if @item.def != 0
  104.           effection += "防御力+#{@item.def} "
  105.         end
  106.         if @item.spi != 0
  107.           effection += "精神力+#{@item.spi} "
  108.         end
  109.         if @item.agi != 0
  110.           effection += "敏捷性+#{@item.agi} "
  111.         end
  112.         # 武器防具攻防增减描述结束
  113.         if @item.is_a?(RPG::Armor)
  114.           # 防具特殊属性描述
  115.           if @item.prevent_critical
  116.             effection += "防止会心一击 "
  117.           end
  118.           if @item.half_mp_cost
  119.             effection += "消费MP减半 "
  120.           end
  121.           if @item.double_exp_gain
  122.             effection += "双倍经验 "
  123.           end
  124.           if @item.auto_hp_recover
  125.             effection += "自动恢复HP "
  126.           end
  127.           # 防具特殊属性描述结束
  128.         else
  129.           # 武器特殊属性描述
  130.           if @item.two_handed
  131.             effection += "双手持 "
  132.           end
  133.           if @item.fast_attack
  134.             effection += "先发制人 "
  135.           end
  136.           if @item.dual_attack
  137.             effection += "连击 "
  138.           end
  139.           if @item.critical_bonus
  140.             effection += "频发会心一击 "
  141.           end
  142.           # 武器特殊属性描述结束
  143.         end
  144.         unless @item.element_set.empty?
  145.           # 武器防具属性描述(左边那一栏需要打勾的)
  146.           effection += @item.is_a?(RPG::Armor) ? "  [防具状态] : " : "  [武器属性] : "
  147.           for state in @item.element_set
  148.             effection += $data_system.elements[state] + " "
  149.           end
  150.           # 武器防具属性描述结束
  151.         end
  152.         unless @item.state_set.empty?
  153.           # 武器防具状态描述(右边那一栏需要打勾的)
  154.           effection += @item.is_a?(RPG::Armor) ? "  [无效化属性] : " : "  [附加状态] : "
  155.           for state in @item.state_set
  156.             effection += $data_states[state].name + " "
  157.           end
  158.           # 武器防具状态描述结束
  159.         end
  160.         self.contents.draw_text(0, 48, 512, 24, effection)
  161.       end
  162.     end
  163.   end
  164. end
复制代码
  1. class Game_Temp
  2.   attr_accessor :shop_name
  3.   attr_accessor :shop_word
  4.   attr_accessor :shop_mm
  5.   alias old_ini initialize
  6.   def initialize
  7.     old_ini
  8.     @shop_name = ""
  9.     @shop_word = ""
  10.     @shop_mm = ""
  11.   end
  12. end
  13. #==============================================================================
  14. # ■ Scene_Shop
  15. #------------------------------------------------------------------------------
  16. #  ショップ画面の処理を行うクラスです。
  17. #==============================================================================

  18. class Scene_Shop < Scene_Base
  19.   #--------------------------------------------------------------------------
  20.   # ● 開始処理
  21.   #--------------------------------------------------------------------------
  22.   def start
  23.     super
  24.     create_menu_background
  25.     create_command_window
  26.     @help_window = Window_ShopHelp.new
  27.     @gold_window = Window_Gold.new(384, 56)
  28.     @title_window = Window_Base.new(0, 0, @command_window.x, 56)
  29.     @title_window.contents.draw_text(0, 0, @title_window.width - 32, 24, $game_temp.shop_name)
  30.     @buy_window = Window_ShopBuy.new(0, 56)
  31.     @buy_window.active = false
  32.     @buy_window.visible = false
  33.     @buy_window.help_window = @help_window
  34.     @sell_window = Window_ShopSell.new(0, 56, 384, 256)
  35.     @sell_window.active = false
  36.     @sell_window.visible = false
  37.     @sell_window.help_window = @help_window
  38.     @number_window = Window_ShopNumber.new(0, 56)
  39.     @number_window.active = false
  40.     @number_window.visible = false
  41.     @loli_sprite = Sprite.new
  42.     @loli_sprite.x = 384
  43.     @loli_sprite.y = 112
  44.     @loli_sprite.bitmap = Cache.picture($game_temp.shop_mm)
  45.     @help_window.set_item(nil)
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 終了処理
  49.   #--------------------------------------------------------------------------
  50.   def terminate
  51.     super
  52.     dispose_menu_background
  53.     dispose_command_window
  54.     @help_window.dispose
  55.     @gold_window.dispose
  56.     @title_window.dispose
  57.     @buy_window.dispose
  58.     @sell_window.dispose
  59.     @number_window.dispose
  60.     @loli_sprite.bitmap.dispose
  61.     @loli_sprite.dispose
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● フレーム更新
  65.   #--------------------------------------------------------------------------
  66.   def update
  67.     super
  68.     update_menu_background
  69.     @help_window.update
  70.     @command_window.update
  71.     @gold_window.update
  72.     @buy_window.update
  73.     @sell_window.update
  74.     @number_window.update
  75.     if @command_window.active
  76.       update_command_selection
  77.     elsif @buy_window.active
  78.       update_buy_selection
  79.     elsif @sell_window.active
  80.       update_sell_selection
  81.     elsif @number_window.active
  82.       update_number_input
  83.     end
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● コマンドウィンドウの作成
  87.   #--------------------------------------------------------------------------
  88.   def create_command_window
  89.     s1 = Vocab::ShopBuy
  90.     s2 = Vocab::ShopSell
  91.     s3 = Vocab::ShopCancel
  92.     @command_window = Window_Command.new(384, [s1, s2, s3], 3)
  93.     @command_window.x = Graphics.width - @command_window.width
  94.     if $game_temp.shop_purchase_only
  95.       @command_window.draw_item(1, false)
  96.     end
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● コマンドウィンドウの解放
  100.   #--------------------------------------------------------------------------
  101.   def dispose_command_window
  102.     @command_window.dispose
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● コマンド選択の更新
  106.   #--------------------------------------------------------------------------
  107.   def update_command_selection
  108.     if Input.trigger?(Input::B)
  109.       Sound.play_cancel
  110.       $scene = Scene_Map.new
  111.     elsif Input.trigger?(Input::C)
  112.       case @command_window.index
  113.       when 0  # 購入する
  114.         Sound.play_decision
  115.         @command_window.active = false
  116.         @buy_window.active = true
  117.         @buy_window.visible = true
  118.         @buy_window.refresh
  119.         @buy_window.update_help
  120.       when 1  # 売却する
  121.         if $game_temp.shop_purchase_only
  122.           Sound.play_buzzer
  123.         else
  124.           Sound.play_decision
  125.           @command_window.active = false
  126.           @sell_window.active = true
  127.           @sell_window.visible = true
  128.           @sell_window.refresh
  129.           @sell_window.update_help
  130.         end
  131.       when 2  # やめる
  132.         Sound.play_decision
  133.         $scene = Scene_Map.new
  134.       end
  135.     end
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 購入アイテム選択の更新
  139.   #--------------------------------------------------------------------------
  140.   def update_buy_selection
  141.     if Input.trigger?(Input::B)
  142.       Sound.play_cancel
  143.       @command_window.active = true
  144.       @buy_window.active = false
  145.       @buy_window.visible = false
  146.       @help_window.set_item(nil)
  147.       return
  148.     end
  149.     if Input.trigger?(Input::C)
  150.       @item = @buy_window.item
  151.       number = $game_party.item_number(@item)
  152.       if @item == nil or @item.price > $game_party.gold or number == 99
  153.         Sound.play_buzzer
  154.       else
  155.         Sound.play_decision
  156.         max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  157.         max = [max, 99 - number].min
  158.         @buy_window.active = false
  159.         @buy_window.visible = false
  160.         @number_window.set(@item, max, @item.price)
  161.         @number_window.active = true
  162.         @number_window.visible = true
  163.       end
  164.     end
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 売却アイテム選択の更新
  168.   #--------------------------------------------------------------------------
  169.   def update_sell_selection
  170.     if Input.trigger?(Input::B)
  171.       Sound.play_cancel
  172.       @command_window.active = true
  173.       @sell_window.active = false
  174.       @sell_window.visible = false
  175.       @help_window.set_item(nil)
  176.     elsif Input.trigger?(Input::C)
  177.       @item = @sell_window.item
  178.       if @item == nil or @item.price == 0
  179.         Sound.play_buzzer
  180.       else
  181.         Sound.play_decision
  182.         max = $game_party.item_number(@item)
  183.         @sell_window.active = false
  184.         @sell_window.visible = false
  185.         @number_window.set(@item, max, @item.price / 2)
  186.         @number_window.active = true
  187.         @number_window.visible = true
  188.       end
  189.     end
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 個数入力の更新
  193.   #--------------------------------------------------------------------------
  194.   def update_number_input
  195.     if Input.trigger?(Input::B)
  196.       cancel_number_input
  197.     elsif Input.trigger?(Input::C)
  198.       decide_number_input
  199.     end
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ● 個数入力のキャンセル
  203.   #--------------------------------------------------------------------------
  204.   def cancel_number_input
  205.     Sound.play_cancel
  206.     @number_window.active = false
  207.     @number_window.visible = false
  208.     case @command_window.index
  209.     when 0  # 購入する
  210.       @buy_window.active = true
  211.       @buy_window.visible = true
  212.     when 1  # 売却する
  213.       @sell_window.active = true
  214.       @sell_window.visible = true
  215.     end
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ● 個数入力の決定
  219.   #--------------------------------------------------------------------------
  220.   def decide_number_input
  221.     Sound.play_shop
  222.     @number_window.active = false
  223.     @number_window.visible = false
  224.     case @command_window.index
  225.     when 0  # 購入する
  226.       $game_party.lose_gold(@number_window.number * @item.price)
  227.       $game_party.gain_item(@item, @number_window.number)
  228.       @gold_window.refresh
  229.       @buy_window.refresh
  230.       @buy_window.active = true
  231.       @buy_window.visible = true
  232.     when 1  # 売却する
  233.       $game_party.gain_gold(@number_window.number * (@item.price / 2))
  234.       $game_party.lose_item(@item, @number_window.number)
  235.       @gold_window.refresh
  236.       @sell_window.refresh
  237.       @sell_window.active = true
  238.       @sell_window.visible = true
  239.     end
  240.   end
  241. end
复制代码



错误是突破能力极限的脚本第587行“    @status_window.item = @buy_window.item”发生了错误,希望高手能帮忙解决一下啊,谢谢。

Lv1.梦旅人

梦石
0
星屑
55
在线时间
13 小时
注册时间
2009-3-11
帖子
25
2
 楼主| 发表于 2009-5-10 06:23:52 | 只看该作者
能力突破极限脚本我用的是这个
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 能力值突破 - KGC_LimitBreak ◆ VX ◆
  3. #_/    ◇ Last update : 2008/01/09 ◇
  4. #_/    ◇http://f44.aaa.livedoor.jp/~ytomy/index.html◇
  5. #_/    ◇ BY 66rpg.com 真の邵东 汉化 ◇
  6. #==============================================================================
  7. # ★ 修改项目  ★
  8. #==============================================================================
  9. module KGC
  10. module LimitBreak
  11.   # ◆ 能力値算出方式
  12.   #   0..按数据库方式计算。
  13.   #      (100级以后按PARAMETER_CALC_EXP计算)
  14.   #
  15.   #   1..使用数据库的2次函数。
  16.   #        a:等级1的值  b:等级2的值  c:等级3的值  x:现在等级
  17.   #   用ax^2+ bx + c算出能力值。
  18.   #<例>
  19.   #等级1的值 : 4
  20.   #等级1的值 : 30
  21.   #等级1的值 : 400
  22.   #等级为50的能力值
  23.   #(4 * 50 + 30) * 50 + 400 = 11900
  24.   #等级为100的能力值
  25.   # (4 * 100 + 30) * 100 + 400 = 43400
  26.   #(请注意使用此方式,数值因等级过高引起过高!)
  27.   #   2..使用数据库的2次函数。
  28.   #        b:等级2的值  c:等级3的值  x:现在等级
  29.   #   用bx + c算出能力值
  30.   # (为了使用等级2 和 3 的价值,轻松跟2次函数方式的分开使用)
  31.   # < 例 >
  32.   #等级2的值 : 120
  33.   #等级3的值 : 800
  34.   #等级为50的能力值
  35.   #120 * 50 + 800 = 6800
  36.   #等级为100的能力值、
  37.   #120 * 100 + 800 = 12800
  38.   PARAMETER_CALC_METHOD = 0  #设置能力值计算方式

  39.   # ◆ 等级100以后的能力值计算方式
  40.   #  PARAMETER_CALC_METHOD = 0 的使用
  41.   #  ↓计算方式如下↓
  42.   #  (99级的能力值 - 98级的能力值) x (当前等级 - 99)
  43.   PARAMETER_CALC_EXP = "(param[99] - param[98]) * (level - 99)"

  44.   # ◆ 角色等级上限
  45.   ACTOR_FINAL_LEVEL = []  # ←这段不能去掉
  46.   # 使用以下方式设置每个角色的最高等级
  47.   #   ACTOR_FINAL_LEVEL[角色ID] = 最高等级
  48.   # <例> ↓ 角色ID为1的最高等级
  49.   ACTOR_FINAL_LEVEL[1] = 999

  50.   # ◆ 角色等级上限 (默认)
  51.   #  没有设定上限的角色,使用这个值为上限值
  52.   ACTOR_FINAL_LEVEL_DEFAULT = 999
  53.   # ◆ 角色的经验值上限
  54.   ACTOR_EXP_LIMIT = 99999999

  55.   # ◆ 角色的MaxHP上限
  56.   ACTOR_MAXHP_LIMIT     = 99999
  57.   # ◆ 角色的MaxMP上限
  58.   ACTOR_MAXMP_LIMIT     = 99999
  59.   # ◆ 角色的攻撃力、防御力、精神力、敏捷性上限
  60.   ACTOR_PARAMETER_LIMIT = 9999

  61.   # ◆ 敌人MaxHP 上限
  62.   ENEMY_MAXHP_LIMIT     = 9999999
  63.   # ◆ 敌人MaxMP 上限
  64.   ENEMY_MAXMP_LIMIT     = 9999999
  65.   # ◆ 敌人攻撃力、防御力、精神力、敏捷性上限
  66.   ENEMY_PARAMETER_LIMIT = 9999

  67.   # ◆ 敌人能力值修正
  68.   #  把敌人的各种能力值做为数据库的0%
  69.   #  如果要数据库那样请设为100
  70.   ENEMY_MAXHP_RATE = 100  # MaxHP
  71.   ENEMY_MAXMP_RATE = 100  # MaxMP
  72.   ENEMY_ATK_RATE   = 100  # 攻撃力
  73.   ENEMY_DEF_RATE   = 100  # 防御力
  74.   ENEMY_SPI_RATE   = 100  # 精神力
  75.   ENEMY_AGI_RATE   = 100  # 敏捷性

  76.   # ◆ 所持金上限
  77.   GOLD_LIMIT = 99999999

  78.   # ◆ 物品所持数上限
  79.   #单独物品上限 请在数据库物品的备注写<物品数上限 n> n为数量
  80.   ITEM_NUMBER_LIMIT = 30

  81.   module_function
  82.   #--------------------------------------------------------------------------
  83.   # ○ 敵能力値直接指定
  84.   #     在这里,能直接指定敌人的 MaxHP等
  85.   #     如果没有指定,将按照数据库的值使用
  86.   #--------------------------------------------------------------------------
  87.   def set_enemy_parameters
  88.     #  <例> 如果把ID:10 的敌人的 MaxHP 设置为 2000000
  89.     # $data_enemies[10].maxhp = 2000000
  90.     #  <例> 如果把ID:16 的敌人的攻击力设置为 5000
  91.     # $data_enemies[16].atk = 5000
  92.     #  <例> 如果把ID:20 的敌人的防御力设置为2倍
  93.     # $data_enemies[20].def *= 2
  94.   end
  95. end
  96. end

  97. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  98. $imported = {} if $imported == nil
  99. $imported["LimitBreak"] = true

  100. module KGC::LimitBreak
  101.   # 正規表現を定義
  102.   module Regexp
  103.     # ベースアイテム
  104.     module BaseItem
  105.       # 所持数上限
  106.       NUMBER_LIMIT = /^<(?:NUMBER_LIMIT|物品数上限)[ ]*(\d+)>/i
  107.     end
  108.   end

  109.   module_function
  110.   #--------------------------------------------------------------------------
  111.   # ○ 敵の能力補正を適用
  112.   #--------------------------------------------------------------------------
  113.   def revise_enemy_parameters
  114.     (1...$data_enemies.size).each { |i|
  115.       enemy = $data_enemies[i]
  116.       enemy.maxhp = enemy.maxhp * ENEMY_MAXHP_RATE / 100
  117.       enemy.maxmp = enemy.maxmp * ENEMY_MAXMP_RATE / 100
  118.       enemy.atk = enemy.atk * ENEMY_ATK_RATE / 100
  119.       enemy.def = enemy.def * ENEMY_DEF_RATE / 100
  120.       enemy.spi = enemy.spi * ENEMY_SPI_RATE / 100
  121.       enemy.agi = enemy.agi * ENEMY_AGI_RATE / 100
  122.     }
  123.   end
  124. end

  125. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  126. #==============================================================================
  127. # ■ RPG::BaseItem
  128. #==============================================================================

  129. class RPG::BaseItem
  130.   #--------------------------------------------------------------------------
  131.   # ○ 限界突破のキャッシュ生成
  132.   #--------------------------------------------------------------------------
  133.   def create_limit_break_cache
  134.     @__number_limit = KGC::LimitBreak::ITEM_NUMBER_LIMIT

  135.     @note.split(/[\r\n]+/).each { |line|
  136.       if line =~ KGC::LimitBreak::Regexp::BaseItem::NUMBER_LIMIT
  137.         # 所持数上限
  138.         @__number_limit = $1.to_i
  139.       end
  140.     }
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ○ 所持数上限取得
  144.   #--------------------------------------------------------------------------
  145.   def number_limit
  146.     create_limit_break_cache if @__number_limit == nil
  147.     return @__number_limit
  148.   end
  149. end

  150. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  151. #==============================================================================
  152. # ■ Game_Battler
  153. #==============================================================================

  154. class Game_Battler
  155.   #--------------------------------------------------------------------------
  156.   # ● MaxHP の制限値取得
  157.   #--------------------------------------------------------------------------
  158.   def maxhp_limit
  159.     return KGC::LimitBreak::ENEMY_MAXHP_LIMIT
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ○ MaxMP の制限値取得
  163.   #--------------------------------------------------------------------------
  164.   def maxmp_limit
  165.     return KGC::LimitBreak::ENEMY_MAXMP_LIMIT
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● MaxMP の取得
  169.   #--------------------------------------------------------------------------
  170.   def maxmp
  171.     return [[base_maxmp + @maxmp_plus, 0].max, maxmp_limit].min
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ○ 各種パラメータの制限値取得
  175.   #--------------------------------------------------------------------------
  176.   def parameter_limit
  177.     return KGC::LimitBreak::ENEMY_PARAMETER_LIMIT
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● 攻撃力の取得
  181.   #--------------------------------------------------------------------------
  182.   def atk
  183.     n = [base_atk + @atk_plus, 1].max
  184.     states.each { |state| n *= state.atk_rate / 100.0 }
  185.     n = [[Integer(n), 1].max, parameter_limit].min
  186.     return n
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● 防御力の取得
  190.   #--------------------------------------------------------------------------
  191.   def def
  192.     n = [base_def + @def_plus, 1].max
  193.     states.each { |state| n *= state.def_rate / 100.0 }
  194.     n = [[Integer(n), 1].max, parameter_limit].min
  195.     return n
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 精神力の取得
  199.   #--------------------------------------------------------------------------
  200.   def spi
  201.     n = [base_spi + @spi_plus, 1].max
  202.     states.each { |state| n *= state.spi_rate / 100.0 }
  203.     n = [[Integer(n), 1].max, parameter_limit].min
  204.     return n
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 敏捷性の取得
  208.   #--------------------------------------------------------------------------
  209.   def agi
  210.     n = [base_agi + @agi_plus, 1].max
  211.     states.each { |state| n *= state.agi_rate / 100.0 }
  212.     n = [[Integer(n), 1].max, parameter_limit].min
  213.     return n
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● MaxHP の設定
  217.   #     new_maxhp : 新しい MaxHP
  218.   #--------------------------------------------------------------------------
  219.   def maxhp=(new_maxhp)
  220.     @maxhp_plus += new_maxhp - self.maxhp
  221.     @maxhp_plus = [[@maxhp_plus, -maxhp_limit].max, maxhp_limit].min
  222.     @hp = [@hp, self.maxhp].min
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● MaxMP の設定
  226.   #     new_maxmp : 新しい MaxMP
  227.   #--------------------------------------------------------------------------
  228.   def maxmp=(new_maxmp)
  229.     @maxmp_plus += new_maxmp - self.maxmp
  230.     @maxmp_plus = [[@maxmp_plus, -maxmp_limit].max, maxmp_limit].min
  231.     @mp = [@mp, self.maxmp].min
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ● 攻撃力の設定
  235.   #     new_atk : 新しい攻撃力
  236.   #--------------------------------------------------------------------------
  237.   def atk=(new_atk)
  238.     @atk_plus += new_atk - self.atk
  239.     @atk_plus = [[@atk_plus, -parameter_limit].max, parameter_limit].min
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● 防御力の設定
  243.   #     new_def : 新しい防御力
  244.   #--------------------------------------------------------------------------
  245.   def def=(new_def)
  246.     @def_plus += new_def - self.def
  247.     @def_plus = [[@def_plus, -parameter_limit].max, parameter_limit].min
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● 精神力の設定
  251.   #     new_spi : 新しい精神力
  252.   #--------------------------------------------------------------------------
  253.   def spi=(new_spi)
  254.     @spi_plus += new_spi - self.spi
  255.     @spi_plus = [[@spi_plus, -parameter_limit].max, parameter_limit].min
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 敏捷性の設定
  259.   #     agi : 新しい敏捷性
  260.   #--------------------------------------------------------------------------
  261.   def agi=(new_agi)
  262.     @agi_plus += new_agi - self.agi
  263.     @agi_plus = [[@agi_plus, -parameter_limit].max, parameter_limit].min
  264.   end
  265. end

  266. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  267. #==============================================================================
  268. # ■ Game_Actor
  269. #==============================================================================

  270. class Game_Actor < Game_Battler
  271.   #--------------------------------------------------------------------------
  272.   # ● 経験値計算
  273.   #--------------------------------------------------------------------------
  274.   def make_exp_list
  275.     @exp_list = Array.new(final_level + 2)
  276.     @exp_list[1] = @exp_list[final_level + 1] = 0
  277.     m = actor.exp_basis
  278.     n = 0.75 + actor.exp_inflation / 200.0
  279.     (2..final_level).each { |i|
  280.       @exp_list[i] = @exp_list[i-1] + Integer(m)
  281.       m *= 1 + n
  282.       n *= 0.9
  283.     }
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ○ 最終レベルの取得
  287.   #--------------------------------------------------------------------------
  288.   def final_level
  289.     n = KGC::LimitBreak::ACTOR_FINAL_LEVEL[self.id]
  290.     return (n != nil ? n : KGC::LimitBreak::ACTOR_FINAL_LEVEL_DEFAULT)
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● MaxHP の制限値取得
  294.   #--------------------------------------------------------------------------
  295.   def maxhp_limit
  296.     return KGC::LimitBreak::ACTOR_MAXHP_LIMIT
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ○ MaxMP の制限値取得
  300.   #--------------------------------------------------------------------------
  301.   def maxmp_limit
  302.     return KGC::LimitBreak::ACTOR_MAXMP_LIMIT
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ○ 各種パラメータの制限値取得
  306.   #--------------------------------------------------------------------------
  307.   def parameter_limit
  308.     return KGC::LimitBreak::ACTOR_PARAMETER_LIMIT
  309.   end
  310.   #--------------------------------------------------------------------------
  311.   # ○ 経験値の制限値取得
  312.   #--------------------------------------------------------------------------
  313.   def exp_limit
  314.     return KGC::LimitBreak::ACTOR_EXP_LIMIT
  315.   end
  316.   #--------------------------------------------------------------------------
  317.   # ● 経験値の変更
  318.   #     exp  : 新しい経験値
  319.   #     show : レベルアップ表示フラグ
  320.   #--------------------------------------------------------------------------
  321.   def change_exp(exp, show)
  322.     last_level = @level
  323.     last_skills = skills
  324.     @exp = [[exp, exp_limit].min, 0].max
  325.     while @exp >= @exp_list[@level+1] && @exp_list[@level+1] > 0
  326.       level_up
  327.     end
  328.     while @exp < @exp_list[@level]
  329.       level_down
  330.     end
  331.     @hp = [@hp, maxhp].min
  332.     @mp = [@mp, maxmp].min
  333.     if show && @level > last_level
  334.       display_level_up(skills - last_skills)
  335.     end
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● レベルの変更
  339.   #     level : 新しいレベル
  340.   #     show  : レベルアップ表示フラグ
  341.   #--------------------------------------------------------------------------
  342.   def change_level(level, show)
  343.     level = [[level, final_level].min, 1].max
  344.     change_exp(@exp_list[level], show)
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ○ 基本パラメータの取得
  348.   #--------------------------------------------------------------------------
  349.   def base_parameter(type)
  350.     case KGC::LimitBreak::PARAMETER_CALC_METHOD
  351.     when 0  # 数式定義
  352.       if @level >= 100
  353.         calc_text = KGC::LimitBreak::PARAMETER_CALC_EXP.dup
  354.         calc_text.gsub!(/level/i) { "@level" }
  355.         calc_text.gsub!(/param\[(\d+)\]/i) {
  356.           "actor.parameters[type, #{$1.to_i}]"
  357.         }
  358.         return actor.parameters[type, 99] + eval(calc_text)
  359.       end
  360.     when 1  # 二次関数
  361.       a = actor.parameters[type, 1]
  362.       b = actor.parameters[type, 2]
  363.       c = actor.parameters[type, 3]
  364.       return ((a * @level + b) * @level + c)
  365.     when 2  # 一次関数
  366.       b = actor.parameters[type, 2]
  367.       c = actor.parameters[type, 3]
  368.       return (b * @level + c)
  369.     end
  370.     return actor.parameters[type, @level]
  371.   end
  372.   #--------------------------------------------------------------------------
  373.   # ● 基本 MaxHP の取得
  374.   #--------------------------------------------------------------------------
  375.   def base_maxhp
  376.     return base_parameter(0)
  377.   end
  378.   #--------------------------------------------------------------------------
  379.   # ● 基本 MaxMP の取得
  380.   #--------------------------------------------------------------------------
  381.   def base_maxmp
  382.     return base_parameter(1)
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ● 基本攻撃力の取得
  386.   #--------------------------------------------------------------------------
  387.   def base_atk
  388.     n = base_parameter(2)
  389.     equips.compact.each { |item| n += item.atk }
  390.     return n
  391.   end
  392.   #--------------------------------------------------------------------------
  393.   # ● 基本防御力の取得
  394.   #--------------------------------------------------------------------------
  395.   def base_def
  396.     n = base_parameter(3)
  397.     equips.compact.each { |item| n += item.def }
  398.     return n
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 基本精神力の取得
  402.   #--------------------------------------------------------------------------
  403.   def base_spi
  404.     n = base_parameter(4)
  405.     equips.compact.each { |item| n += item.spi }
  406.     return n
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ● 基本敏捷性の取得
  410.   #--------------------------------------------------------------------------
  411.   def base_agi
  412.     n = base_parameter(5)
  413.     equips.compact.each { |item| n += item.agi }
  414.     return n
  415.   end
  416. end

  417. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  418. #==============================================================================
  419. # ■ Game_Party
  420. #==============================================================================

  421. class Game_Party < Game_Unit
  422.   #--------------------------------------------------------------------------
  423.   # ○ 所持金の制限値取得
  424.   #--------------------------------------------------------------------------
  425.   def gold_limit
  426.     return KGC::LimitBreak::GOLD_LIMIT
  427.   end
  428.   #--------------------------------------------------------------------------
  429.   # ● ゴールドの増加 (減少)
  430.   #     n : 金額
  431.   #--------------------------------------------------------------------------
  432.   def gain_gold(n)
  433.     @gold = [[@gold + n, 0].max, gold_limit].min
  434.   end
  435.   #--------------------------------------------------------------------------
  436.   # ● アイテムの増加 (減少)
  437.   #     item          : アイテム
  438.   #     n             : 個数
  439.   #     include_equip : 装備品も含める
  440.   #--------------------------------------------------------------------------
  441.   def gain_item(item, n, include_equip = false)
  442.     number = item_number(item)
  443.     case item
  444.     when RPG::Item
  445.       @items[item.id] = [[number + n, 0].max, item.number_limit].min
  446.     when RPG::Weapon
  447.       @weapons[item.id] = [[number + n, 0].max, item.number_limit].min
  448.     when RPG::Armor
  449.       @armors[item.id] = [[number + n, 0].max, item.number_limit].min
  450.     end
  451.     n += number
  452.     if include_equip && n < 0
  453.       members.each { |actor|
  454.         while n < 0 && actor.equips.include?(item)
  455.           actor.discard_equip(item)
  456.           n += 1
  457.         end
  458.       }
  459.     end
  460.   end
  461. end

  462. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  463. #==============================================================================
  464. # ■ Window_ShopBuy
  465. #==============================================================================

  466. class Window_ShopBuy < Window_Selectable
  467.   #--------------------------------------------------------------------------
  468.   # ● 項目の描画
  469.   #     index : 項目番号
  470.   #--------------------------------------------------------------------------
  471.   def draw_item(index)
  472.     item = @data[index]
  473.     number = $game_party.item_number(item)
  474.     enabled = (item.price <= $game_party.gold && number < item.number_limit)
  475.     rect = item_rect(index)
  476.     self.contents.clear_rect(rect)
  477.     draw_item_name(item, rect.x, rect.y, enabled)
  478.     rect.width -= 4
  479.     self.contents.draw_text(rect, item.price, 2)
  480.   end
  481. end

  482. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  483. #==============================================================================
  484. # ■ Scene_Title
  485. #==============================================================================

  486. class Scene_Title < Scene_Base
  487.   #--------------------------------------------------------------------------
  488.   # ● データベースのロード
  489.   #--------------------------------------------------------------------------
  490.   alias load_database_KGC_LimitBreak load_database
  491.   def load_database
  492.     load_database_KGC_LimitBreak

  493.     set_enemy_parameters
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ● 戦闘テスト用データベースのロード
  497.   #--------------------------------------------------------------------------
  498.   alias load_bt_database_KGC_LimitBreak load_bt_database
  499.   def load_bt_database
  500.     load_bt_database_KGC_LimitBreak

  501.     set_enemy_parameters
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ○ エネミーの能力値を設定
  505.   #--------------------------------------------------------------------------
  506.   def set_enemy_parameters
  507.     KGC::LimitBreak.revise_enemy_parameters
  508.     KGC::LimitBreak.set_enemy_parameters
  509.   end
  510. end

  511. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  512. #==============================================================================
  513. # ■ Scene_File
  514. #==============================================================================

  515. class Scene_File < Scene_Base
  516.   #--------------------------------------------------------------------------
  517.   # ● セーブデータの読み込み
  518.   #     file : 読み込み用ファイルオブジェクト (オープン済み)
  519.   #--------------------------------------------------------------------------
  520.   alias read_save_data_KGC_LimitBreak read_save_data
  521.   def read_save_data(file)
  522.     read_save_data_KGC_LimitBreak(file)

  523.     (1...$data_actors.size).each { |i|
  524.       actor = $game_actors[i]
  525.       actor.make_exp_list
  526.       # レベル上限チェック
  527.       if actor.level > actor.final_level
  528.         while actor.level > actor.final_level
  529.           actor.level_down
  530.         end
  531.         # 減少した HP などを反映させるためのおまじない
  532.         actor.change_level(actor.final_level, false)
  533.       end
  534.     }
  535.   end
  536. end

  537. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  538. #==============================================================================
  539. # ■ Scene_Shop
  540. #==============================================================================

  541. class Scene_Shop < Scene_Base
  542.   #--------------------------------------------------------------------------
  543.   # ● 購入アイテム選択の更新
  544.   #--------------------------------------------------------------------------
  545.   def update_buy_selection
  546.     @status_window.item = @buy_window.item
  547.     if Input.trigger?(Input::B)
  548.       Sound.play_cancel
  549.       @command_window.active = true
  550.       @dummy_window.visible = true
  551.       @buy_window.active = false
  552.       @buy_window.visible = false
  553.       @status_window.visible = false
  554.       @status_window.item = nil
  555.       @help_window.set_text("")
  556.       return
  557.     end
  558.     if Input.trigger?(Input::C)
  559.       @item = @buy_window.item
  560.       number = $game_party.item_number(@item)
  561.       if @item == nil || @item.price > $game_party.gold ||
  562.           number == @item.number_limit
  563.         Sound.play_buzzer
  564.       else
  565.         Sound.play_decision
  566.         max = (@item.price == 0 ?
  567.           @item.number_limit : $game_party.gold / @item.price)
  568.         max = [max, @item.number_limit - number].min
  569.         @buy_window.active = false
  570.         @buy_window.visible = false
  571.         @number_window.set(@item, max, @item.price)
  572.         @number_window.active = true
  573.         @number_window.visible = true
  574.       end
  575.     end
  576.   end
  577. end
复制代码

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
13 小时
注册时间
2009-3-11
帖子
25
3
 楼主| 发表于 2009-5-11 02:11:11 | 只看该作者
能给我说说这句话的意思也好啊, @status_window.item = @buy_window.item
拜托各位大大了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-27 03:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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