Project1

标题: 判断技能是否学会的问题 [打印本页]

作者: chd114    时间: 2014-12-6 22:00
标题: 判断技能是否学会的问题
本帖最后由 chd114 于 2014-12-6 05:11 编辑

12号角色学习138号技能之后
  1. p $game_actors[12].skills.include?($data_skills[138])
复制代码
的结果为true
  1. p $data_skills[138].is_a?(RPG::Skill)
复制代码
的结果也是true

但是
  1. p $game_actors[12].skill_learn?($data_skills[138])
复制代码
的结果为false
  1. def skill_learn?(skill)
  2.     skill.is_a?(RPG::Skill) && @skills.include?(skill.id)
  3.   end
复制代码
没有修改,那么问题可以出在哪里呢···


@VIPArcher @taroxd  
@寒冷魔王  
作者: 三途亚梦    时间: 2014-12-6 22:23
因为你没有进行过“学习”这个过程。
作者: chd114    时间: 2014-12-6 22:24
三途亚梦 发表于 2014-12-6 05:23
因为你没有进行过“学习”这个过程。

skill_learn判定要true必须是用事件指令的学习?还是说游戏一开始角色和职业自带的不算?
作者: VIPArcher    时间: 2014-12-6 22:26
因为你的这个技能不是通过“领悟技能”学来的。所以@skills数组内并没有这个技能的id
检查Game_Actor#skills方法就会知道角色的技能实例的数组包括学会的技能@skills和添加的技能Game_BattlerBaser#added_skills两种
  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取技能实例的数组
  4.   #--------------------------------------------------------------------------
  5.   def skills
  6.     (@skills | added_skills).sort.collect {|id| $data_skills[id] }
  7.   end
  8. end
复制代码

作者: chd114    时间: 2014-12-6 22:29
VIPArcher 发表于 2014-12-6 05:26
因为你的这个技能不是通过“领悟技能”学来的。所以@skills数组内并没有这个技能的id
检查Game_Actor#skill ...

这个领悟技能是事件指令的领悟技能才行?可是技能升级里面有的技能有前置技能···首先要判定前置技能当前是否掌握才会继续判定前置技能的等级···
  1. $game_actors[12].skills.include?($data_skills[138])
复制代码
就可以了?
  1. $data_skills[138].is_a?(RPG::Skill)
复制代码
又是什么意思···
作者: taroxd    时间: 2014-12-7 07:59
参考 http://taroxd.github.io/rgss/Tar ... AE%BE%E7%BD%AE.html 脚本中 skill? 方法
作者: chd114    时间: 2014-12-7 11:36
taroxd 发表于 2014-12-6 14:59
参考 http://taroxd.github.io/rgss/Taroxd%E5%9F%BA%E7%A1%80%E8%AE%BE%E7%BD%AE.html 脚本中 skill? 方法 ...
  1. basic_skills.include?(skill.id) || added_skills.include?(skill.id)
复制代码
里的basic和added分别是这个角色的职业里设置的技能和非职业里设置的技能?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1