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

Project1

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

[已经过期] 如何判断物品或技能是否对目标有用?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
跳转到指定楼层
1
发表于 2018-1-23 22:57:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 文雅夕露 于 2018-1-23 23:29 编辑

在写分歧时发现有这个问题...
如果这么写的话:

RUBY 代码复制
  1. if Input.trigger?(:C) && $game_party.usable?(item)
  2.       Audio.se_play("Audio/SE/Save",100,100)
  3.     end


RUBY 代码复制
  1. if Input.trigger?(:C) && @actor && @actor.usable?(item)
  2.       Audio.se_play("Audio/SE/Save",100,100)
  3.     end


会发现当物品或技能对目标有效时也会播放音效。
请问该怎么判断才会避免这个问题?
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2018-1-23 23:02:57 | 只看该作者
本帖最后由 chd114 于 2018-1-23 23:07 编辑

关于判断条件,参考GameBattlerBase中的
  1.   #--------------------------------------------------------------------------
  2.   # ● 判定技能/使用物品是否可用
  3.   #--------------------------------------------------------------------------
  4.   def usable?(item)
  5.     return skill_conditions_met?(item) if item.is_a?(RPG::Skill)
  6.     return item_conditions_met?(item)  if item.is_a?(RPG::Item)
  7.     return false
  8.   end
复制代码

这个和Game_Party中的usable?方法有一点区别,它可以针对一个具体的单位(角色/敌人)

你的条件分歧写的是按下按键&&使用者为角色&&可以使用时就播放音效

如果要改成不可使用才播放就需要在
  1. $game_party.usable?(item)
复制代码
前面加上否定!
变成
  1. !$game_party.usable?(item)
复制代码

角色的部分同理

在判断数值相等的时候也可以这样,比如

  1. a = 1
  2. b = 2
  3. p a!=b # => true
  4. p !(a==b) # => !(false) => true
复制代码

只不过有!=方法就不用那么干了

点评

方法名肯定是定义了才能用···  发表于 2018-1-23 23:41
还以为写成disable就行了。  发表于 2018-1-23 23:22
在条件前面加 ! 你也可以理解为反转233  发表于 2018-1-23 23:11
嗯...话说怎么加否定呢?  发表于 2018-1-23 23:07
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8498
在线时间
775 小时
注册时间
2017-11-10
帖子
1231
3
 楼主| 发表于 2018-1-23 23:27:00 | 只看该作者
chd114 发表于 2018-1-23 23:02
关于判断条件,参考GameBattlerBase中的

这个和Game_Party中的usable?方法有一点区别,它可以针对一个具体 ...

不过好像对使用界面时不起效果...
就是菜单中恢复HP/MP时的界面。
但HP满了再恢复HP时。并没有效果。
是哪里设置错了呢?
一个只会简单事件的Rm新人,脚本完全不懂。只求做个简单的游戏完成自己的游戏之梦而已。
第一个游戏已经完成,等待各素材的完成和测试。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2018-1-23 23:39:22 | 只看该作者
文雅夕露 发表于 2018-1-23 23:27
不过好像对使用界面时不起效果...
就是菜单中恢复HP/MP时的界面。
但HP满了再恢复HP时。并没有效果。

本来就不能对满状态的人用恢复物品/技能

点评

那我要进行处理该怎么改脚本呢?  发表于 2018-1-25 21:30
因为满状态直接返回不进方法处理  发表于 2018-1-25 12:50
不是这个意思,我是说满状态了再使用物品魔法不会播放音效这个问题...  发表于 2018-1-24 23:10
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2018-1-26 00:45:24 | 只看该作者
Game_Battler里有限制

  1.   #--------------------------------------------------------------------------
  2.   # ● 技能/物品的应用测试
  3.   #    如果使用目标的 HP 或者 MP 全满时,禁止使用恢复道具。
  4.   #--------------------------------------------------------------------------
  5.   def item_test(user, item)
  6.     return false if item.for_dead_friend? != dead?
  7.     return true if $game_party.in_battle
  8.     return true if item.for_opponent?
  9.     return true if item.damage.recover? && item.damage.to_hp? && hp < mhp
  10.     return true if item.damage.recover? && item.damage.to_mp? && mp < mmp
  11.     return true if item_has_any_valid_effects?(user, item)
  12.     return false
  13.   end
复制代码

恢复道具的情况,如果是回血的,并且血没满就能用,如果是回蓝的,并且蓝没满就能用

点评

需要同时满足的用&&或者and连起来  发表于 2018-1-27 18:21
我是说这段内容也结合主楼的效果该怎么判断...  发表于 2018-1-27 18:11
?  发表于 2018-1-27 13:49
知道了,不过要怎么跟上面的判断结合在一起?  发表于 2018-1-27 11:18
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 09:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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