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

Project1

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

[已经解决] 一种特殊类型的物品【已解决】

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
跳转到指定楼层
1
发表于 2020-8-8 07:22:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RMVXA 于 2020-8-9 01:15 编辑

默认物品A,B都是[不可使用]。
特殊的地方例如:
当变量1大于某个数值时,A变成[菜单可用];
当变量2大于某个数值时,B变成[战斗可用]……

请问大佬这个可以实现的吗?

Lv5.捕梦者

梦石
0
星屑
26264
在线时间
5355 小时
注册时间
2016-3-8
帖子
1655
来自 3楼
发表于 2020-8-8 17:56:29 | 只看该作者
本帖最后由 alexncf125 于 2020-8-9 08:38 编辑

物品的备注栏,备注
<菜单可用: 1, 50>

<战斗可用: 3, 25>
  1. module RMVXA
  2.   module ITEM_USABLE
  3.     MENU_OK = /<菜单可用:[ ]*(\d+)[,]?[ ]*(\d+)/i
  4.     BATTLE_OK = /<战斗可用:[ ]*(\d+)[,]?[ ]*(\d+)/i
  5.   end
  6. end

  7. module DataManager  
  8.   #--------------------------------------------------------------------------
  9.   # ● Loads the database
  10.   #--------------------------------------------------------------------------
  11.   class << self; alias_method(:old_load_database_old, :load_database); end
  12.   def self.load_database
  13.     old_load_database_old
  14.     load_rmvxa_item_usable_notetags
  15.   end  
  16.   #--------------------------------------------------------------------------
  17.   # ● Loads the note tags
  18.   #--------------------------------------------------------------------------
  19.   def self.load_rmvxa_item_usable_notetags
  20.     for obj in $data_items
  21.       next if obj.nil?
  22.       obj.load_rmvxa_item_usable_notetags
  23.     end
  24.   end
  25. end

  26. class RPG::Item < RPG::UsableItem
  27.   #--------------------------------------------------------------------------
  28.   # ● Loads the note tags
  29.   #--------------------------------------------------------------------------
  30.   def load_rmvxa_item_usable_notetags
  31.     @note.split(/[\r\n]+/).each do |line|
  32.       case line
  33.       when RMVXA::ITEM_USABLE::MENU_OK
  34.         @item_usable_menu_ok = [$1.to_i, $2.to_i]
  35.       when RMVXA::ITEM_USABLE::BATTLE_OK
  36.         @item_usable_battle_ok = [$1.to_i, $2.to_i]
  37.       end
  38.     end
  39.   end
  40.   
  41.   #--------------------------------------------------------------------------
  42.   # ● Returns item usable
  43.   #--------------------------------------------------------------------------
  44.   def item_usable
  45.     return @item_usable if @item_usable
  46.     item_usable_menu_ok = @item_usable_menu_ok || 0
  47.     item_usable_battle_ok = @item_usable_battle_ok || 0
  48.     @item_usable = {
  49.     :item_usable_menu_ok => item_usable_menu_ok,
  50.     :item_usable_battle_ok => item_usable_battle_ok,
  51.     }
  52.     @item_usable
  53.   end
  54. end

  55. class Game_BattlerBase
  56.   #--------------------------------------------------------------------------
  57.   # ● 判定技能/使用物品是否可用
  58.   #--------------------------------------------------------------------------
  59.   alias old_usable_old? usable?
  60.   def usable?(item)
  61.     if !item.nil? && item.is_a?(RPG::Item) && movable? && $game_party.has_item?(item)
  62.       if $game_party.in_battle
  63.         return true if $game_variables[item.item_usable[:item_usable_battle_ok][0]] > item.item_usable[:item_usable_battle_ok][1]
  64.       else
  65.         return true if $game_variables[item.item_usable[:item_usable_menu_ok][0]] > item.item_usable[:item_usable_menu_ok][1]
  66.       end
  67.       return false if item.item_usable[:item_usable_battle_ok][0] > 0 || item.item_usable[:item_usable_menu_ok][0] > 0
  68.     end
  69.     old_usable_old?(item)
  70.   end
  71. end
复制代码

点评

更正:物品的备注栏,备注<菜单可用: 50, 100>  发表于 2020-8-8 18:21
物品栏备注<菜单可用: 50, 100>  发表于 2020-8-8 18:20
大神这个脚本怎么写注释呀:比如变量50大于100时菜单可用!  发表于 2020-8-8 18:18

评分

参与人数 2星屑 +50 +1 收起 理由
VIPArcher + 50 认可答案
RMVXA + 1 感谢大神

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26264
在线时间
5355 小时
注册时间
2016-3-8
帖子
1655
2
发表于 2020-8-8 07:44:30 | 只看该作者
本帖最后由 alexncf125 于 2020-8-8 07:48 编辑

未测试
  1. class Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 判定技能/使用物品是否可用
  4.   #--------------------------------------------------------------------------
  5.   alias old_usable_old? usable?
  6.   def usable?(item)
  7.     if movable? && $game_party.has_item?(item)
  8.       if $game_party.in_battle
  9.         return true if $game_variables[b] > 某个数值 && item.id == 物品B的ID
  10.       else
  11.         return true if $game_variables[a] > 某个数值 && item.id == 物品A的ID
  12.       end
  13.     end
  14.     return false if [物品A的ID, 物品B的ID].include?(item.id)
  15.     old_usable_old?
  16.   end
复制代码

点评

之前这个脚本并没有添加注释,只是实验了是否不可用变可用而已– –  发表于 2020-8-8 18:21
更正:啊???成功了什么???注释掉14,15行后,能做到你要的效果???=>"能否在数据库里给物品添加注释,比如<变量1>50时菜单可用>之类的"  发表于 2020-8-8 18:17
不好意思,我只看了能否可用,但是出现了其他问题:普通攻击和防御竟然都不能用了,而且影响其他正常道具……我再试下您的新脚本!  发表于 2020-8-8 18:17
啊???成功了什么???注释掉14,15行与你要的效果"能否在数据库里给物品添加注释,比如<变量1>50时菜单可用>之类的"是没有关係的吧  发表于 2020-8-8 18:06
我注释掉了14,15行居然成功了。谢谢大神!  发表于 2020-8-8 17:55

评分

参与人数 1+1 收起 理由
RMVXA + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
4
 楼主| 发表于 2020-8-8 18:40:49 | 只看该作者
本帖最后由 RMVXA 于 2020-8-8 18:49 编辑

谢谢大神写了这么多行代码。但是这个改动较大了,导致道具栏打开时报错,其他正常道具和技能的可用情况也受到了影响……
是这样的:只有几个这种道具而已,使用场合一开始设置为了【不能使用】。预想效果:当变量1大于100时,对应道具A的使用场合变成【仅菜单中】即可。对了,道具是贵重品里的。谢谢大佬!

点评

什么叫"道具一直是可用装备"??道具不是武器/防具啊,怎装备??  发表于 2020-8-8 20:21
脚本已更新,进入战斗后第72行应该不会报错了。物品的使用场合一开始设置为【常时】,不是设置为【不能使用】!!  发表于 2020-8-8 20:20
而且道具一直是可用装备  发表于 2020-8-8 19:54
大神,进入战斗后第72行报错。【战斗中使用】的相关功能去掉也可以,只要条件【不能使用】变成【仅菜单中】,不影响其他道具属性即可!谢谢啦!  发表于 2020-8-8 19:49
脚本和使用说明都更新了一下,应该不会报错了  发表于 2020-8-8 19:10
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
5
 楼主| 发表于 2020-8-8 19:58:20 | 只看该作者
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
6
 楼主| 发表于 2020-8-8 20:01:42 | 只看该作者
选择【武器】或【防具】时也会报错!
特殊道具只是一些【贵重品】

点评

p1一直打不开,刚看到大佬的回复。我去试试,谢谢拉!  发表于 2020-8-8 23:12
在有需要那效果的物品的备注栏备注就是了,物品是否贵重品有分別么?  发表于 2020-8-8 20:24
脚本已更新,选择【武器】或【防具】时应该不会报错了。  发表于 2020-8-8 20:19
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26264
在线时间
5355 小时
注册时间
2016-3-8
帖子
1655
7
发表于 2020-8-8 21:55:08 | 只看该作者
本帖最后由 alexncf125 于 2020-8-9 00:35 编辑

至于为什么物品的使用场合一开始要设置为【常时】,而不是设置为【不能使用】
我也不知道,得@些大神科普一下

@喵呜喵5  :

一个备注了<菜单可用: 75, 100>的物品的使用场合设置为【常时】
当75号变量<=100时,该物品不能被使用
当75号变量>100时,该物品能被使用

一个备注了<菜单可用: 50, 100>的物品的使用场合设置为【不能使用】
结果是
当50号变量<=100时,该物品不能被使用
当50号变量>100时,该物品仍然不能被使用

为什么呢?~为什么呢?~

好像是因为我的工程和新建工程有所不同而引致
本層作废

点评

明白! 谢谢大神XD  发表于 2020-8-9 07:15
唔..不会报错,但填<菜单可用: 1, 50-1>的效果会是"大于50",而不是"大于等于50"。填<菜单可用: 1, 49>才是"大于等于50"  发表于 2020-8-9 01:37
大于等于50,別填<菜单可用: 1, 50-1>喔,会报错的说,填<菜单可用: 1, 49>  发表于 2020-8-9 01:19
哈哈,暂时数值就填N–1吧!XD  发表于 2020-8-9 01:14
...???黑人问号  发表于 2020-8-9 00:39

评分

参与人数 1+1 收起 理由
RMVXA + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 06:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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