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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
117 小时
注册时间
2010-11-11
帖子
85
跳转到指定楼层
1
发表于 2012-8-28 18:27:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
搜索了一下帖子,发现貌似能在Game_Party里面修改物品的最大持有数
大概是在180行?
然后想修改成 “某某物品的ID=XX    最大持有数=20”
这样的设置,该如果修改呢
因为是脚本小白,所以资讯一下各位前辈

Lv2.观梦者

梦石
0
星屑
565
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
2
发表于 2012-8-28 19:11:47 | 只看该作者
本帖最后由 satgo1546 于 2012-8-28 19:18 编辑

就是这里啦。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 增加物品 (减少)
  3.   #     item_id : 物品 ID
  4.   #     n       : 个数
  5.   #--------------------------------------------------------------------------
  6.   def gain_item(item_id, n)
  7.     # 更新 hash 的个数数据
  8.     if item_id > 0
  9.       @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  10.     end
  11.   end

的确是在第180行的。
其中……max, 99].min的99就是最大物品持有数。
但是各种地方都用到了99。(幸亏物品最大值这个值不多)
直接改写成:
RUBY 代码复制
  1. def gain_item(item_id, n)
  2.     # 更新 hash 的个数数据
  3.     if item_id > 0
  4.       item_max = (item_id == ① ? ② : 99)
  5.       @items[item_id] = [[item_number(item_id) + n, 0].max, item_max].min
  6.     end
  7.   end

就行了。
①=某物品ID(比如1号回复剂)
②=某物品ID的最大持有数(比如20)
但是这样在商店中还有问题的!
所以商店还是要改~
在Scene_Shop中的,这里出现了99!
RUBY 代码复制
  1. # 如果已经拥有了 99 个情况下
  2.       if number == 99
  3.         # 演奏冻结 SE
  4.         $game_system.se_play($data_system.buzzer_se)
  5.         return
  6.       end
  7.       # 演奏确定 SE
  8.       $game_system.se_play($data_system.decision_se)
  9.       # 计算可以最多购买的数量
  10.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  11.       max = [max, 99 - number].min

然后直接改成:
RUBY 代码复制
  1. # 计算最大值
  2.       if @item.is_a?(RPG::Item) and @item.id == ①
  3.         item_max = ②
  4.       else
  5.         item_max = 99
  6.       end
  7.       # 如果已经买了 99 个(就是 item_max 个)
  8.       if number == item_max
  9.         # 演奏冻结 SE
  10.         $game_system.se_play($data_system.buzzer_se)
  11.         return
  12.       end
  13.       # 演奏确定 SE
  14.       $game_system.se_play($data_system.decision_se)
  15.       # 计算可以最多购买的数量
  16.       max = @item.price == 0 ? item_max : $game_party.gold / @item.price
  17.       max = [max, item_max - number].min

即可。
①、②的说明同上。

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

啊哦!忘记了Window_ShopBuy里面还有
RUBY 代码复制
  1. # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
  2.     # 除此之外的情况设置为无效文字色
  3.     if item.price <= $game_party.gold and number < 99
  4.       self.contents.font.color = normal_color
  5.     else
  6.       self.contents.font.color = disabled_color
  7.     end

直接改成
RUBY 代码复制
  1. # 价格在所持金以下、并且所持数不是 item_max 的情况下为普通文字颜色
  2.     # 除此之外的情况设置为无效文字色
  3.     # 顺便计算 item_max
  4.     if @item.is_a?(RPG::Item) and @item.id == ①
  5.       item_max = ②
  6.     else
  7.       item_max = 99
  8.     end
  9.     if item.price <= $game_party.gold and number < item_max
  10.       self.contents.font.color = normal_color
  11.     else
  12.       self.contents.font.color = disabled_color
  13.     end
然后就一切OK了~
①、②的说明同上。

评分

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

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
117 小时
注册时间
2010-11-11
帖子
85
3
 楼主| 发表于 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
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 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
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 06:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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