Project1
标题:
一种特殊类型的物品【已解决】
[打印本页]
作者:
RMVXA
时间:
2020-8-8 07:22
标题:
一种特殊类型的物品【已解决】
本帖最后由 RMVXA 于 2020-8-9 01:15 编辑
默认物品A,B都是[不可使用]。
特殊的地方例如:
当变量1大于某个数值时,A变成[菜单可用];
当变量2大于某个数值时,B变成[战斗可用]……
请问大佬这个可以实现的吗?
作者:
alexncf125
时间:
2020-8-8 07:44
本帖最后由 alexncf125 于 2020-8-8 07:48 编辑
未测试
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 判定技能/使用物品是否可用
#--------------------------------------------------------------------------
alias old_usable_old? usable?
def usable?(item)
if movable? && $game_party.has_item?(item)
if $game_party.in_battle
return true if $game_variables[b] > 某个数值 && item.id == 物品B的ID
else
return true if $game_variables[a] > 某个数值 && item.id == 物品A的ID
end
end
return false if [物品A的ID, 物品B的ID].include?(item.id)
old_usable_old?
end
复制代码
作者:
alexncf125
时间:
2020-8-8 17:56
本帖最后由 alexncf125 于 2020-8-9 08:38 编辑
物品的备注栏,备注
<菜单可用: 1, 50>
或
<战斗可用: 3, 25>
module RMVXA
module ITEM_USABLE
MENU_OK = /<菜单可用:[ ]*(\d+)[,]?[ ]*(\d+)/i
BATTLE_OK = /<战斗可用:[ ]*(\d+)[,]?[ ]*(\d+)/i
end
end
module DataManager
#--------------------------------------------------------------------------
# ● Loads the database
#--------------------------------------------------------------------------
class << self; alias_method(:old_load_database_old, :load_database); end
def self.load_database
old_load_database_old
load_rmvxa_item_usable_notetags
end
#--------------------------------------------------------------------------
# ● Loads the note tags
#--------------------------------------------------------------------------
def self.load_rmvxa_item_usable_notetags
for obj in $data_items
next if obj.nil?
obj.load_rmvxa_item_usable_notetags
end
end
end
class RPG::Item < RPG::UsableItem
#--------------------------------------------------------------------------
# ● Loads the note tags
#--------------------------------------------------------------------------
def load_rmvxa_item_usable_notetags
@note.split(/[\r\n]+/).each do |line|
case line
when RMVXA::ITEM_USABLE::MENU_OK
@item_usable_menu_ok = [$1.to_i, $2.to_i]
when RMVXA::ITEM_USABLE::BATTLE_OK
@item_usable_battle_ok = [$1.to_i, $2.to_i]
end
end
end
#--------------------------------------------------------------------------
# ● Returns item usable
#--------------------------------------------------------------------------
def item_usable
return @item_usable if @item_usable
item_usable_menu_ok = @item_usable_menu_ok || 0
item_usable_battle_ok = @item_usable_battle_ok || 0
@item_usable = {
:item_usable_menu_ok => item_usable_menu_ok,
:item_usable_battle_ok => item_usable_battle_ok,
}
@item_usable
end
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 判定技能/使用物品是否可用
#--------------------------------------------------------------------------
alias old_usable_old? usable?
def usable?(item)
if !item.nil? && item.is_a?(RPG::Item) && movable? && $game_party.has_item?(item)
if $game_party.in_battle
return true if $game_variables[item.item_usable[:item_usable_battle_ok][0]] > item.item_usable[:item_usable_battle_ok][1]
else
return true if $game_variables[item.item_usable[:item_usable_menu_ok][0]] > item.item_usable[:item_usable_menu_ok][1]
end
return false if item.item_usable[:item_usable_battle_ok][0] > 0 || item.item_usable[:item_usable_menu_ok][0] > 0
end
old_usable_old?(item)
end
end
复制代码
作者:
RMVXA
时间:
2020-8-8 18:40
本帖最后由 RMVXA 于 2020-8-8 18:49 编辑
谢谢大神写了这么多行代码。但是这个改动较大了,导致道具栏打开时报错,其他正常道具和技能的可用情况也受到了影响……
是这样的:只有几个这种道具而已,使用场合一开始设置为了【不能使用】。预想效果:当变量1大于100时,对应道具A的使用场合变成【仅菜单中】即可。对了,道具是贵重品里的。谢谢大佬!
作者:
RMVXA
时间:
2020-8-8 19:58
IMG_20200808_194231.jpg
(178.98 KB, 下载次数: 37)
下载附件
保存到相册
2020-8-8 19:58 上传
作者:
RMVXA
时间:
2020-8-8 20:01
选择【武器】或【防具】时也会报错!
特殊道具只是一些【贵重品】
作者:
alexncf125
时间:
2020-8-8 21:55
本帖最后由 alexncf125 于 2020-8-9 00:35 编辑
至于为什么物品的使用场合一开始要设置为【常时】,而不是设置为【不能使用】
我也不知道,得@些大神科普一下
致
@喵呜喵5
:
一个备注了<菜单可用: 75, 100>的物品的使用场合设置为【常时】
当75号变量<=100时,该物品不能被使用
当75号变量>100时,该物品能被使用
一个备注了<菜单可用: 50, 100>的物品的使用场合设置为【不能使用】
结果是
当50号变量<=100时,该物品不能被使用
当50号变量>100时,该物品仍然不能被使用
为什么呢?~为什么呢?~
好像是因为我的工程和新建工程有所不同而引致
本層作废
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1