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

Project1

 找回密码
 注册会员
搜索
查看: 2123|回复: 16

[已经解决] 请教战斗中判断数据库里是否设定了NPC能使用第10号技能方法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
发表于 2020-2-20 13:28:36 | 显示全部楼层 |阅读模式

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

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

x
我是这么想的,在类skill_effect中判断我方队员是否学会了第10号技能可以这么写:
   if user.is_a?(Game_Actor) && user.skill_learn?(10)
     XXXX #这里是条件成立后的结果
  end

那要是在skill_effect中判断当前敌人NPC是否在数据库里设定了能使用第10号技能该咋弄啊?
if user.is_a?(Game_Enemy)  && ??? # 就这里不会写。。
XXXX
end

还请大神指点一二,多谢了!

Lv5.捕梦者

梦石
0
星屑
31689
在线时间
5077 小时
注册时间
2012-11-19
帖子
4877

开拓者

发表于 2020-2-20 14:08:21 | 显示全部楼层
给敌人写一个 skill_learn?  抽取所有技能行动中的技能ID,判断是否包含欲判断的技能就行了。
没做 当前环境能否使用 的判断,要判断自己加就行了。
  1. class Game_Enemy
  2.   def skill_learn?(skill_id)
  3.     arr = self.actions.find_all{|a| a.kind == 1 && a.skill_id > 0 }
  4.     return arr.map{|a| a.skill_id }.include?(skill_id)
  5.   end
  6. end
复制代码

点评

惯性思维了,想着把技能ID都剔出来!  发表于 2020-2-20 15:36
用self.actions.any?多好,一句的事……以及我下面把判断傻乎乎的加进去了……  发表于 2020-2-20 15:15

评分

参与人数 2星屑 +50 +2 收起 理由
RyanBern + 50 + 1 认可答案
taeckle + 1 多谢大神指点!

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22393
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

发表于 2020-2-20 14:25:20 | 显示全部楼层
本帖最后由 SailCat 于 2020-2-20 14:57 编辑

RUBY 代码复制
  1. class Game_Enemy
  2. def skill_learn?(skill_id)
  3.     self.actions.any? {|a| a.skill_id == skill_id and ((a.condition_turn_b == 0 and a.condition_turn_a == $game_temp.battle_turn) or (a.condition_turn_b > 0 and ($game_temp.battle_turn - a.condition_turn_a) % a.condition_turn_b == 0)) and (self.hp * 100 / self.maxhp < a.condition_hp) and ($game_party.max_level >= a.condition_level) and (a.condition_switch_id > 0 and $game_switches[a.condition_switch_id])}
  4. end

然后你可以把user.is_a?的判断删了

评分

参与人数 2星屑 +80 +2 收起 理由
RyanBern + 80 + 1 认可答案
taeckle + 1 多谢大神指点!

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-2-21 13:31:31 | 显示全部楼层
本帖最后由 taeckle 于 2020-2-21 13:52 编辑
SailCat 发表于 2020-2-20 14:25
class Game_Enemy
def skill_learn?(skill_id)
    self.actions.any? {|a| a.skill_id == skill_id and (( ...


请问大神这里哪句是“判断数据库里是否设定了NPC能使用第X号技能方法”啊?

还有这个def放到那个class skill_effect 里怎么用啊?

大神可以举个例子让咱学习下吗。。

点评

去掉技能ID以外的判断咯..  发表于 2020-2-21 19:21
猫大的脚本只能判断那些设置了开关条件的技能,如果一个技能在数据库里没有开关条件的设置判断就出问题了啊。。  发表于 2020-2-21 18:19
user.skill_learn?(10)  发表于 2020-2-21 16:45
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-2-21 14:22:49 | 显示全部楼层
本帖最后由 taeckle 于 2020-2-21 18:17 编辑
SailCat 发表于 2020-2-20 14:25
class Game_Enemy
def skill_learn?(skill_id)
    self.actions.any? {|a| a.skill_id == skill_id and (( ...


还有大神你这个脚本仅限对有开关限制使用条件的技能有效,
如果一个技能敌人使用这个技能的数据库条件设置里没设置开关这个选项就无效了...


点评

多谢大神指点  发表于 2020-2-23 01:49
我知道问题在哪了:(a.condition_switch_id > 0 and $game_switches[a.condition_switch_id]) 要改成 (a.condition_switch_id == 0 or $game_switches[a.condition_switch_id])  发表于 2020-2-21 23:55
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-2-23 01:50:44 | 显示全部楼层

请教战斗中判断数据库里是否设定了NPC能使用第10号技能方法

本帖最后由 taeckle 于 2020-2-23 01:55 编辑

  • class Game_Enemy
  • def skill_usable?(skill_id)
  •     self.actions.any? {|a| a.skill_id == skill_id and ((a.condition_turn_b == 0 and a.condition_turn_a == $game_temp.battle_turn) or (a.condition_turn_b > 0 and ($game_temp.battle_turn - a.condition_turn_a) % a.condition_turn_b == 0)) and (self.hp * 100 / self.maxhp < a.condition_hp) and ($game_party.max_level >= a.condition_level) and (a.condition_switch_id == 0 or $game_switches[a.condition_switch_id])}
  • end
  • end

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2020-2-23 02:15:00 | 显示全部楼层
本帖最后由 taeckle 于 2020-2-23 02:17 编辑
SailCat 发表于 2020-2-20 14:25
class Game_Enemy
def skill_learn?(skill_id)
    self.actions.any? {|a| a.skill_id == skill_id and (( ...


大神这个脚本还有两个问题:
1. 如果在数据库里对技能不设置HP大于多少才能使用则脚本无效
1. 如果在数据库里对技能不设置等级大于多少才能使用则脚本无效

点评

好的,多谢大神指点!  发表于 2020-2-23 17:13
从各种and里面找到相关的条件自己尝试改看看吧  发表于 2020-2-23 06:39
等级判断是大于等于,若不设置默认是1,永远成立。HP判断是HP多少%以下,不是以上,所以如果不设置的话默认是100,也应成立,若不成立将<改成<=   发表于 2020-2-23 04:23
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 20:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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