查看: 2120|回复: 9

[已经解决] 求助 背包限制脚本和原装商店冲突

[复制链接]
梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
发表于 2015-2-11 12:21:17 | 显示全部楼层 |阅读模式

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

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

×
如题 若背包种类上限为5 获得ABCDE 五种物品后 将E卖光无法再获得E以外的东西 提示背包已满[pre lang="ruby"]#==============================================================================
# 背包可容纳最大的物品种类数。(包括物品,武器,防具)
ITEMS_MAX = 5
# 背包满后,如果再增加物品所提示的信息。
TOP_MESSAGE = "背包已满!"
#==============================================================================
class Game_Party
  #---------------------------------------------------------------------
  def items
    return @items
  end
  #---------------------------------------------------------------------
  def weapons
    return @weapons
  end
  #---------------------------------------------------------------------
  def armors
    return @armors
  end
end
#==============================================================================
class Interpreter
  #--------------------------------------------------------------------
  def full_judge?(id, n, type)
    mn = 0
    mn += $game_party.items.keys.size
    mn += $game_party.weapons.keys.size
    mn += $game_party.armors.keys.size
    return false if mn < ITEMS_MAX
    case type
    when 0
      if $game_party.items.keys.include?(id)
        return false if $game_party.item_number(id) + n <= 99
      end
    when 1
      if $game_party.weapons.keys.include?(id)
        return false if $game_party.weapon_number(id) + n <= 99
      end
    when 2
      if $game_party.armors.keys.include?(id)
        return false if $game_party.armor_number(id) + n <= 99
      end
    end
    return true
  end
  #---------------------------------------------------------------------
  def full_top
    $game_system.se_play($data_system.buzzer_se)
    top = Window_Base.new(200, 100, 240, 64)
    top.contents = Bitmap.new(top.width - 32, top.height - 32)
    top.contents.draw_text(0, 0, 200, 32, TOP_MESSAGE, 1)
    for i in 1..30
      Graphics.update
    end
    for i in 1..20
      top.opacity -= 13
      top.contents_opacity -= 13
      Graphics.update
    end
    top.dispose
  end
  #--------------------------------------------------------------------------
  # ● 增减物品
  #--------------------------------------------------------------------------
  def command_126
    # 获取要操作的值
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    if full_judge?(@parameters[0], value, 0)
      full_top
      command_115
      return
    end
    # 增减物品
    $game_party.gain_item(@parameters[0], value)
    # 继续
    return true
  end
  #--------------------------------------------------------------------------
  # ● 增减武器
  #--------------------------------------------------------------------------
  def command_127
    # 获取要操作的值
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    if full_judge?(@parameters[0], value, 1)
      full_top
      command_115
      return
    end
    # 增减武器
    $game_party.gain_weapon(@parameters[0], value)
    # 继续
    return true
  end
  #--------------------------------------------------------------------------
  # ● 增减防具
  #--------------------------------------------------------------------------
  def command_128
    # 获取要操作的值
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    if full_judge?(@parameters[0], value, 2)
      full_top
      command_115
      return
    end
    # 增减防具
    $game_party.gain_armor(@parameters[0], value)
    # 继续
    return true
  end
end
#==============================================================================[/pre]

点评

不完美的地方:有 回复剂90个 ,再增加 10个,会提示背包满,并不再增加回复剂数量。原则上 99个才满。  发表于 2015-2-11 12:39

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-2-11 12:34:55 | 显示全部楼层
将 26,27,28 行换成下面这段试试:
  1. $game_party.items.keys.each{|i| mn += 1 if $game_party.item_number(i) > 0}
  2. $game_party.weapons.keys.each{|i| mn += 1 if $game_party.weapon_number(i) > 0}
  3. $game_party.armors.keys.each{|i| mn += 1 if $game_party.armor_number(i) > 0}
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
 楼主| 发表于 2015-2-11 12:52:36 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-11 12:34
将 26,27,28 行换成下面这段试试:

原来的问题是好了 可是在购买物品时 可以买第六种物品且背包里会显示出第六种物品 能在帮我看看么 万分感激{:2_264:}
回复

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-2-11 13:24:19 | 显示全部楼层
本帖最后由 芯☆淡茹水 于 2015-2-11 13:26 编辑

还是把判定放到 Game_Party 里好些




[pre lang="ruby"]#==============================================================================
# 背包可容纳最大的物品种类数。(包括物品,武器,防具)
ITEMS_MAX = 5
# 背包满后,如果再增加物品所提示的信息。
TOP_MESSAGE = "背包已满!"
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------
  def full_judge?(id, n, type)
    mn = 0
    @items.keys.each{|i| mn += 1 if item_number(i) > 0}
    @weapons.keys.each{|i| mn += 1 if weapon_number(i) > 0}
    @armors.keys.each{|i| mn += 1 if armor_number(i) > 0}
    return false if mn < ITEMS_MAX
    case type
    when 0
      if @items.keys.include?(id)
        return false if item_number(id) + n <= 99
      end
    when 1
      if @weapons.keys.include?(id)
        return false if weapon_number(id) + n <= 99
      end
    when 2
      if @armors.keys.include?(id)
        return false if armor_number(id) + n <= 99
      end
    end
    return true
  end
  #---------------------------------------------------------------------
  def full_top
    $game_system.se_play($data_system.buzzer_se)
    top = Window_Base.new(200, 100, 240, 64)
    top.z = 999
    top.contents = Bitmap.new(top.width - 32, top.height - 32)
    top.contents.draw_text(0, 0, 200, 32, TOP_MESSAGE, 1)
    for i in 1..30
      Graphics.update
    end
    for i in 1..20
      top.opacity -= 13
      top.contents_opacity -= 13
      Graphics.update
    end
    top.dispose
  end
  #--------------------------------------------------------------------------
  def gain_item(item_id, n)
    # 更新 hash 的个数数据
    if item_id > 0
      if n > 0 and full_judge?(item_id, n, 0)
        full_top
        return
      end
      @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # ● 增加武器 (减少)
  #     weapon_id : 武器 ID
  #     n         : 个数
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    # 更新 hash 的个数数据
    if weapon_id > 0
      if n > 0 and full_judge?(weapon_id, n, 1)
        full_top
        return
      end
      @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # ● 增加防具 (减少)
  #     armor_id : 防具 ID
  #     n        : 个数
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    # 更新 hash 的个数数据
    if armor_id > 0
      if n > 0 and full_judge?(armor_id, n, 2)
        full_top
        return
      end
      @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
    end
  end
end
#==============================================================================[/pre]
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
 楼主| 发表于 2015-2-11 13:36:17 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-11 13:24
还是把判定放到 Game_Party 里好些


还是老样子 是我放脚本的方式不对么 是放在main前还是替换内置脚本

点评

main 前,把以前的删掉  发表于 2015-2-11 15:45
回复

使用道具 举报

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
 楼主| 发表于 2015-2-11 16:15:41 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-11 13:24
还是把判定放到 Game_Party 里好些

我就是这么做的啊
回复

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-2-11 17:26:34 | 显示全部楼层
新工程对的啊!

Project2.zip (202.63 KB, 下载次数: 44)
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
 楼主| 发表于 2015-2-11 17:43:49 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-11 17:26
新工程对的啊!

仔细测试了一下 发现了问题 若上限5一开始身上有ABCDE 不能购买F  但在卖出E之后获得F继续去商店能够购买E 不知这样表述能否表述清楚 能否帮忙再看看 万分感激 还有就是一点点的次要问题 不知能否顺带解决一下 就是在商店无法购得新物品时 任然会有金钱消费
回复

使用道具 举报

梦石
0
星屑
34462
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2015-2-11 19:18:16 | 显示全部楼层
唔~,好像是这样:

Project2.zip (203.21 KB, 下载次数: 44)

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
回帖
46
 楼主| 发表于 2015-2-11 20:00:57 | 显示全部楼层
芯☆淡茹水 发表于 2015-2-11 19:18
唔~,好像是这样:

十分感谢 到目前为止没发现问题
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部