查看: 3964|回复: 3

[已经解决] 如何在一定条件下禁用某种物品

[复制链接]
梦石
0
星屑
1618
在线时间
267 小时
注册时间
2019-1-18
回帖
129
发表于 2019-2-14 11:50:15 | 显示全部楼层 |阅读模式

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

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

×
就是当某个物品使用X次时就不能再使用了,这需要脚本吗?求大佬指点

老鹰

梦石
40
星屑
37878
在线时间
7106 小时
注册时间
2012-5-26
回帖
3300

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2019-2-14 13:22:17 | 显示全部楼层
如果这个物品全局只能获得一个的话,可以通过调用公共事件来变更一个特定的变量,然后当变量加到指定值时,失去该物品,也可以重新获得一个不可使用的物品
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2019-2-14 13:40:41 | 显示全部楼层
[pre lang="ruby"]#==============================================================================
# ■ 自定义物品/技能使用条件 by Calendar99
#------------------------------------------------------------------------------
#  使用方法
#  物品/技能备注中写<condition>xxx</condition> xxx为条件,支持多行
#  condition也可以换成使用条件或者条件
#  用user代表使用者,s[n]和v[n]分别代表n号开关和变量
#
#  例 <condition>user.level > 9</condition>   # 使用者等级大于9才能用
#     <使用条件>s[1] && v[1] > 5</使用条件>    # 1号开关开启且1号变量大于5才能用
#     <条件>s[1] && v[1] > 5</条件>    # 1号开关开启且1号变量大于5才能用
#     其他用法参考伤害公式
#==============================================================================
class RPG::UsableItem
  TAG = "(?:condition|(?:使用)?条件)"
  #--------------------------------------------------------------------------
  # ● [追加]自定义条件是否满足
  #--------------------------------------------------------------------------
  def condition_ok?(user)
    s = $game_switches
    v = $game_variables
    self.note =~ /<#{TAG}>((?:.\s?)+)<\/#{TAG}>/mi ? eval($1) : true
  end
end

class Game_Actor
  #--------------------------------------------------------------------------
  # ● [别名修改]技能/物品的应用测试
  #--------------------------------------------------------------------------
  alias item_test_for_eval_condition item_test
  def item_test(user, item)
    return false unless item.condition_ok?(self) # self为使用者
    item_test_for_eval_condition(user, item)
  end
  #--------------------------------------------------------------------------
  # ● [别名修改]判定技能/使用物品是否可用
  #--------------------------------------------------------------------------
  alias usable_for_eval_condition usable?
  def usable?(item)
    return false unless extra_condition_met?(item)
    usable_for_eval_condition(item)
  end
  #--------------------------------------------------------------------------
  # ● [追加]判定技能/使用物品是否可用的额外条件
  #--------------------------------------------------------------------------
  def extra_condition_met?(item)
    item.is_a?(RPG::UsableItem) && item.condition_ok?(self) # self为使用者
  end
end

class Window_BattleItem < Window_ItemList
  #--------------------------------------------------------------------------
  # ● [别名修改]查询使用列表中是否含有此物品
  #--------------------------------------------------------------------------
  alias include_for_eval_condition include?
  def include?(item)
    original_usable = BattleManager.actor.usable_for_eval_condition(item)
    include_for_eval_condition(item) || original_usable
  end
  #--------------------------------------------------------------------------
  # ● [子类覆盖]查询此物品是否可用
  #--------------------------------------------------------------------------
  def enable?(item)
    BattleManager.actor.usable?(item)
  end
end
[/pre]

物品特殊效果启动公共事件,在里面将变量1的值+1

物品备注写
[pre lang="ruby"]<condition>
v[1] < 1 # 1号变量小于1才能用
</condition>[/pre]

评分

参与人数 1星屑 +100 收起 理由
VIPArcher + 100 认可答案

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
1618
在线时间
267 小时
注册时间
2019-1-18
回帖
129
 楼主| 发表于 2019-2-14 15:37:41 | 显示全部楼层
KB.Driver 发表于 2019-2-14 13:40
#==============================================================================
# ■ 自定义物品/技能 ...

感谢大佬!
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部