本帖最后由 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了~
①、②的说明同上。 |