Project1
标题: 关于默认脚本修改物品限制问题 [打印本页]
作者: zxc3838507 时间: 2012-8-28 18:27
标题: 关于默认脚本修改物品限制问题
搜索了一下帖子,发现貌似能在Game_Party里面修改物品的最大持有数
大概是在180行?
然后想修改成 “某某物品的ID=XX 最大持有数=20”
这样的设置,该如果修改呢
因为是脚本小白,所以资讯一下各位前辈 dsu_plus_rewardpost_czw
作者: satgo1546 时间: 2012-8-28 19:11
本帖最后由 satgo1546 于 2012-8-28 19:18 编辑
就是这里啦。
#--------------------------------------------------------------------------
# ● 增加物品 (减少)
# 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
#--------------------------------------------------------------------------
# ● 增加物品 (减少)
# 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
的确是在第180行的。
其中……max, 99].min的99就是最大物品持有数。
但是各种地方都用到了99。(幸亏物品最大值这个值不多)
直接改写成:
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
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
就行了。
①=某物品ID(比如1号回复剂)
②=某物品ID的最大持有数(比如20)
但是这样在商店中还有问题的!
所以商店还是要改~
在Scene_Shop中的,这里出现了99!
# 如果已经拥有了 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
# 如果已经拥有了 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
然后直接改成:
# 计算最大值
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
# 计算最大值
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
即可。
①、②的说明同上。
需要武器、防具的最大持有数与之相似。
未经测试,应该可以用的。
啊哦!忘记了Window_ShopBuy里面还有
# 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
# 除此之外的情况设置为无效文字色
if item.price <= $game_party.gold and number < 99
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
# 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
# 除此之外的情况设置为无效文字色
if item.price <= $game_party.gold and number < 99
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
直接改成
# 价格在所持金以下、并且所持数不是 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
# 价格在所持金以下、并且所持数不是 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
然后就一切OK了~
①、②的说明同上。
作者: zxc3838507 时间: 2012-8-28 20:15
本帖最后由 zxc3838507 于 2012-8-28 20:16 编辑
satgo1546 发表于 2012-8-28 19:11
就是这里啦。
#--------------------------------------------------------------------------
# ● 增 ...
噢噢!好详细,先感谢这位前辈
然后再问一下如果我想要多种物品都受到不同的限制该怎么做到呢
是不是多复制几行item_max = (item_id == ① ? ② : 99)
如果有99种物品不就要复制99行了麽……
还是说能在①那里写成[1, 2, 3]这样的形式呢?
作者: chd114 时间: 2012-8-28 20:45
本帖最后由 chd114 于 2012-8-28 20:47 编辑
zxc3838507 发表于 2012-8-28 20:15
噢噢!好详细,先感谢这位前辈
然后再问一下如果我想要多种物品都受到不同的限制该怎么做到呢
是不是多复 ...
其实你多写几个条件分歧也可以的- if item_id == 20
- @items[item_id] = [[item_number(item_id) + n, 0].max, 50].min
- end
复制代码 20号物品最大50个- if item_id == 38
- @items[item_id] = [[item_number(item_id) + n, 0].max, 3].min
- end
复制代码 38号物品最大3个
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |