查看: 1673|回复: 3

[已经解决] 关于默认脚本修改物品限制问题

[复制链接]
梦石
0
星屑
50
在线时间
117 小时
注册时间
2010-11-11
回帖
48
发表于 2012-8-28 18:27:04 | 显示全部楼层 |阅读模式

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

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

×
搜索了一下帖子,发现貌似能在Game_Party里面修改物品的最大持有数
大概是在180行?
然后想修改成 “某某物品的ID=XX    最大持有数=20”
这样的设置,该如果修改呢
因为是脚本小白,所以资讯一下各位前辈
梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2012-8-28 19:11:47 | 显示全部楼层
本帖最后由 satgo1546 于 2012-8-28 19:18 编辑

就是这里啦。
[pre lang="ruby" line="172"]  #--------------------------------------------------------------------------
  # ● 增加物品 (减少)
  #     item_id : 物品 ID
  #     n       : 个数
  #--------------------------------------------------------------------------
  def gain_item(item_id, n)
    # 更新 hash 的个数数据
    if item_id > 0
      @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
    end
  end[/pre]
的确是在第180行的。
其中……max, 99].min的99就是最大物品持有数。
但是各种地方都用到了99。(幸亏物品最大值这个值不多)
直接改写成:
[pre lang="ruby" line="177"]  def gain_item(item_id, n)
    # 更新 hash 的个数数据
    if item_id > 0
      item_max = (item_id == ① ? ② : 99)
      @items[item_id] = [[item_number(item_id) + n, 0].max, item_max].min
    end
  end[/pre]
就行了。
①=某物品ID(比如1号回复剂)
②=某物品ID的最大持有数(比如20)
但是这样在商店中还有问题的!
所以商店还是要改~
在Scene_Shop中的,这里出现了99!
[pre lang="ruby" line="184"]      # 如果已经拥有了 99 个情况下
      if number == 99
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 计算可以最多购买的数量
      max = @item.price == 0 ? 99 : $game_party.gold / @item.price
      max = [max, 99 - number].min[/pre]
然后直接改成:
[pre lang="ruby" line="184"]      # 计算最大值
      if @item.is_a?(RPG::Item) and @item.id == ①
        item_max = ②
      else
        item_max = 99
      end
      # 如果已经买了 99 个(就是 item_max 个)
      if number == item_max
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 计算可以最多购买的数量
      max = @item.price == 0 ? item_max : $game_party.gold / @item.price
      max = [max, item_max - number].min[/pre]
即可。
①、②的说明同上。

需要武器、防具的最大持有数与之相似。
未经测试,应该可以用的。

啊哦!忘记了Window_ShopBuy里面还有
[pre lang="ruby" line="70"]    # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
    # 除此之外的情况设置为无效文字色
    if item.price <= $game_party.gold and number < 99
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end[/pre]
直接改成
[pre lang="ruby" line="70"]    # 价格在所持金以下、并且所持数不是 item_max 的情况下为普通文字颜色
    # 除此之外的情况设置为无效文字色
    # 顺便计算 item_max
    if @item.is_a?(RPG::Item) and @item.id == ①
      item_max = ②
    else
      item_max = 99
    end
    if item.price <= $game_party.gold and number < item_max
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end[/pre]然后就一切OK了~
①、②的说明同上。

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
117 小时
注册时间
2010-11-11
回帖
48
 楼主| 发表于 2012-8-28 20:15:23 | 显示全部楼层
本帖最后由 zxc3838507 于 2012-8-28 20:16 编辑
satgo1546 发表于 2012-8-28 19:11
就是这里啦。
  #--------------------------------------------------------------------------
  # ● 增 ...


噢噢!好详细,先感谢这位前辈
然后再问一下如果我想要多种物品都受到不同的限制该怎么做到呢
是不是多复制几行item_max = (item_id == ① ? ② : 99)
如果有99种物品不就要复制99行了麽……
还是说能在①那里写成[1, 2, 3]这样的形式呢?

点评

并且,第二行和后面的行(2~行)中冒号后面的99要改成item_max这样才能保证效果,否则会只认最后一个的  发表于 2012-8-29 16:09
如果是这样的话……那么要多改改了  发表于 2012-8-29 16:08
如果99中物品有的物品上限一样的就把我给的脚本的【if item_id==20】改成【if item_id==20 or item_id==34 or item_id==48】  发表于 2012-8-28 22:35
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2012-8-28 20:45:58 | 显示全部楼层
本帖最后由 chd114 于 2012-8-28 20:47 编辑
zxc3838507 发表于 2012-8-28 20:15
噢噢!好详细,先感谢这位前辈
然后再问一下如果我想要多种物品都受到不同的限制该怎么做到呢
是不是多复 ...


其实你多写几个条件分歧也可以的
  1.     if item_id == 20      
  2. @items[item_id] = [[item_number(item_id) + n, 0].max, 50].min   
  3. end
复制代码
20号物品最大50个
  1.     if item_id == 38     
  2. @items[item_id] = [[item_number(item_id) + n, 0].max, 3].min   
  3. end
复制代码
38号物品最大3个

点评

嗯嗯,也感谢这位前辈  发表于 2012-8-28 21:49

评分

参与人数 1星屑 +40 收起 理由
hcm + 40 感谢回答

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部