Project1

标题: 请教关于技能判定的问题 [打印本页]

作者: 负零    时间: 2015-2-6 17:27
标题: 请教关于技能判定的问题
when1 case的是技能ID,当使用攻击(ID:1)时,调试台出现ddd,说明已经判断,但是“第二部判断”却始终没有显示,说明根本就没有进到这个判断,弄了半个小时,没有报错,单没有效果,特此求教。
def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
  #-------------------------   a     b      v
  # ● 公式
  #-------------------------               
                if item.is_a?(RPG::Skill)
                        case item.id
                        when 5
                                value = (user.atk+user.def)*2 +user.add_state(5).to_i

                       
                        when 1
                                p"ddd"
                                if user.skill_learn?($data_skills[10])
                                        p"第二部判断"
                                value = 1<30 ? user.atk+100 : user.atk
                                end
                               
                        end
               
                       
                       
                 
                end
               
         #-------------------------
  # ● end
  #-------------------------       
    value *= item_element_rate(user, item)
    value *= pdr if item.physical?
    value *= mdr if item.magical?
    value *= rec if item.damage.recover?
    value = apply_critical(value) if @result.critical
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    @result.make_damage(value.to_i, item)
  end
作者: taroxd    时间: 2015-2-6 19:20
说明使用者没有习得10号技能呀= =
作者: chd114    时间: 2015-2-6 19:48
if user.skill_learn?($data_skills[10])#使用者是否学习了10号技能


这说明使用者没有学习10号技能,所以没判断(这里的学习不代表可以使用)
作者: 负零    时间: 2015-2-6 23:54
chd114 发表于 2015-2-6 19:48
if user.skill_learn?($data_skills[10])#使用者是否学习了10号技能

确实如楼上所言,再请教下,判断只要列表里含有这个技能的语句该如何写?还有为何每次战斗第一次都不进行这些判断?第二次才进行。
作者: 三途亚梦    时间: 2015-2-7 02:20
本帖最后由 三途亚梦 于 2015-2-7 13:20 编辑

user.skills.include?(skill.id)

=============================================

我错了,我还是应该写具体一点的。
if user.skills.include?($data_skills[80])
作者: tan12345    时间: 2015-2-7 11:37
三途亚梦 发表于 2015-2-7 02:20
user.skills.include?(skill.id)

user.skills.include?($data_skills[80]) if user.is_a?(Game_Actor)
敌人类没有这个方法,所以要加个if
作者: 三途亚梦    时间: 2015-2-7 13:20
本帖最后由 三途亚梦 于 2015-2-7 14:25 编辑
tan12345 发表于 2015-2-7 11:37
user.skills.include?($data_skills[80]) if user.is_a?(Game_Actor)
敌人类没有这个方法,所以要加个if ...


简单举例:
value = 100 if user.skills.include?($data_skills[80])

这样就可以了呀,敌人没有技能反正会返回false的,判断行动主体是不是玩家并不是必须的吧。

================================================

那我换这个姿势好了
value = 100 if (user.skills.include?($data_skills[51]) if user.is_a?(Game_Actor))




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