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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
帖子
61
跳转到指定楼层
1
发表于 2015-2-11 12:21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
如题 若背包种类上限为5 获得ABCDE 五种物品后 将E卖光无法再获得E以外的东西 提示背包已满
RUBY 代码复制
  1. #==============================================================================
  2. # 背包可容纳最大的物品种类数。(包括物品,武器,防具)
  3. ITEMS_MAX = 5
  4. # 背包满后,如果再增加物品所提示的信息。
  5. TOP_MESSAGE = "背包已满!"
  6. #==============================================================================
  7. class Game_Party
  8.   #---------------------------------------------------------------------
  9.   def items
  10.     return @items
  11.   end
  12.   #---------------------------------------------------------------------
  13.   def weapons
  14.     return @weapons
  15.   end
  16.   #---------------------------------------------------------------------
  17.   def armors
  18.     return @armors
  19.   end
  20. end
  21. #==============================================================================
  22. class Interpreter
  23.   #--------------------------------------------------------------------
  24.   def full_judge?(id, n, type)
  25.     mn = 0
  26.     mn += $game_party.items.keys.size
  27.     mn += $game_party.weapons.keys.size
  28.     mn += $game_party.armors.keys.size
  29.     return false if mn < ITEMS_MAX
  30.     case type
  31.     when 0
  32.       if $game_party.items.keys.include?(id)
  33.         return false if $game_party.item_number(id) + n <= 99
  34.       end
  35.     when 1
  36.       if $game_party.weapons.keys.include?(id)
  37.         return false if $game_party.weapon_number(id) + n <= 99
  38.       end
  39.     when 2
  40.       if $game_party.armors.keys.include?(id)
  41.         return false if $game_party.armor_number(id) + n <= 99
  42.       end
  43.     end
  44.     return true
  45.   end
  46.   #---------------------------------------------------------------------
  47.   def full_top
  48.     $game_system.se_play($data_system.buzzer_se)
  49.     top = Window_Base.new(200, 100, 240, 64)
  50.     top.contents = Bitmap.new(top.width - 32, top.height - 32)
  51.     top.contents.draw_text(0, 0, 200, 32, TOP_MESSAGE, 1)
  52.     for i in 1..30
  53.       Graphics.update
  54.     end
  55.     for i in 1..20
  56.       top.opacity -= 13
  57.       top.contents_opacity -= 13
  58.       Graphics.update
  59.     end
  60.     top.dispose
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 增减物品
  64.   #--------------------------------------------------------------------------
  65.   def command_126
  66.     # 获取要操作的值
  67.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  68.     if full_judge?(@parameters[0], value, 0)
  69.       full_top
  70.       command_115
  71.       return
  72.     end
  73.     # 增减物品
  74.     $game_party.gain_item(@parameters[0], value)
  75.     # 继续
  76.     return true
  77.   end
  78.   #--------------------------------------------------------------------------
  79.   # ● 增减武器
  80.   #--------------------------------------------------------------------------
  81.   def command_127
  82.     # 获取要操作的值
  83.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  84.     if full_judge?(@parameters[0], value, 1)
  85.       full_top
  86.       command_115
  87.       return
  88.     end
  89.     # 增减武器
  90.     $game_party.gain_weapon(@parameters[0], value)
  91.     # 继续
  92.     return true
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 增减防具
  96.   #--------------------------------------------------------------------------
  97.   def command_128
  98.     # 获取要操作的值
  99.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  100.     if full_judge?(@parameters[0], value, 2)
  101.       full_top
  102.       command_115
  103.       return
  104.     end
  105.     # 增减防具
  106.     $game_party.gain_armor(@parameters[0], value)
  107.     # 继续
  108.     return true
  109.   end
  110. end
  111. #==============================================================================

点评

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

评分

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

查看全部评分

Lv5.捕梦者

梦石
0
星屑
31975
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

2
发表于 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 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
帖子
61
3
 楼主| 发表于 2015-2-11 12:52:36 | 只看该作者
芯☆淡茹水 发表于 2015-2-11 12:34
将 26,27,28 行换成下面这段试试:

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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31975
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

4
发表于 2015-2-11 13:24:19 | 只看该作者
本帖最后由 芯☆淡茹水 于 2015-2-11 13:26 编辑

还是把判定放到 Game_Party 里好些




RUBY 代码复制
  1. #==============================================================================
  2. # 背包可容纳最大的物品种类数。(包括物品,武器,防具)
  3. ITEMS_MAX = 5
  4. # 背包满后,如果再增加物品所提示的信息。
  5. TOP_MESSAGE = "背包已满!"
  6. #==============================================================================
  7. class Game_Party
  8.   #--------------------------------------------------------------------
  9.   def full_judge?(id, n, type)
  10.     mn = 0
  11.     @items.keys.each{|i| mn += 1 if item_number(i) > 0}
  12.     @weapons.keys.each{|i| mn += 1 if weapon_number(i) > 0}
  13.     @armors.keys.each{|i| mn += 1 if armor_number(i) > 0}
  14.     return false if mn < ITEMS_MAX
  15.     case type
  16.     when 0
  17.       if @items.keys.include?(id)
  18.         return false if item_number(id) + n <= 99
  19.       end
  20.     when 1
  21.       if @weapons.keys.include?(id)
  22.         return false if weapon_number(id) + n <= 99
  23.       end
  24.     when 2
  25.       if @armors.keys.include?(id)
  26.         return false if armor_number(id) + n <= 99
  27.       end
  28.     end
  29.     return true
  30.   end
  31.   #---------------------------------------------------------------------
  32.   def full_top
  33.     $game_system.se_play($data_system.buzzer_se)
  34.     top = Window_Base.new(200, 100, 240, 64)
  35.     top.z = 999
  36.     top.contents = Bitmap.new(top.width - 32, top.height - 32)
  37.     top.contents.draw_text(0, 0, 200, 32, TOP_MESSAGE, 1)
  38.     for i in 1..30
  39.       Graphics.update
  40.     end
  41.     for i in 1..20
  42.       top.opacity -= 13
  43.       top.contents_opacity -= 13
  44.       Graphics.update
  45.     end
  46.     top.dispose
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   def gain_item(item_id, n)
  50.     # 更新 hash 的个数数据
  51.     if item_id > 0
  52.       if n > 0 and full_judge?(item_id, n, 0)
  53.         full_top
  54.         return
  55.       end
  56.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  57.     end
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 增加武器 (减少)
  61.   #     weapon_id : 武器 ID
  62.   #     n         : 个数
  63.   #--------------------------------------------------------------------------
  64.   def gain_weapon(weapon_id, n)
  65.     # 更新 hash 的个数数据
  66.     if weapon_id > 0
  67.       if n > 0 and full_judge?(weapon_id, n, 1)
  68.         full_top
  69.         return
  70.       end
  71.       @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  72.     end
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 增加防具 (减少)
  76.   #     armor_id : 防具 ID
  77.   #     n        : 个数
  78.   #--------------------------------------------------------------------------
  79.   def gain_armor(armor_id, n)
  80.     # 更新 hash 的个数数据
  81.     if armor_id > 0
  82.       if n > 0 and full_judge?(armor_id, n, 2)
  83.         full_top
  84.         return
  85.       end
  86.       @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  87.     end
  88.   end
  89. end
  90. #==============================================================================
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
帖子
61
5
 楼主| 发表于 2015-2-11 13:36:17 | 只看该作者
芯☆淡茹水 发表于 2015-2-11 13:24
还是把判定放到 Game_Party 里好些


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

点评

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
帖子
61
6
 楼主| 发表于 2015-2-11 16:15:41 | 只看该作者
芯☆淡茹水 发表于 2015-2-11 13:24
还是把判定放到 Game_Party 里好些

我就是这么做的啊
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31975
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

7
发表于 2015-2-11 17:26:34 | 只看该作者
新工程对的啊!

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
帖子
61
8
 楼主| 发表于 2015-2-11 17:43:49 | 只看该作者
芯☆淡茹水 发表于 2015-2-11 17:26
新工程对的啊!

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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31975
在线时间
5081 小时
注册时间
2012-11-19
帖子
4877

开拓者

9
发表于 2015-2-11 19:18:16 | 只看该作者
唔~,好像是这样:

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

评分

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

查看全部评分

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
64
在线时间
124 小时
注册时间
2015-1-30
帖子
61
10
 楼主| 发表于 2015-2-11 20:00:57 | 只看该作者
芯☆淡茹水 发表于 2015-2-11 19:18
唔~,好像是这样:

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-1 20:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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