Project1

标题: 怎么让不带武器时无法使用物理技能?请高手们帮帮忙! [打印本页]

作者: 459974518    时间: 2011-8-20 01:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: orzfly    时间: 2011-8-20 04:24
  1. class Game_Actor < Game_Battler
  2.   #没有武器时不能使用的技能 ID。如果等号右边整个换成 nil 不留中括号,则所有技能都需要武器。
  3.   skills_cannot_use_without_weapon = [1, 2, 3, 4, 5]
  4.   
  5.   def skill_can_use?(skill_id)
  6.     if not skill_learn?(skill_id)
  7.       return false
  8.     end
  9.     if weapon_id == 0
  10.       if (skills_cannot_use_without_weapon.nil?)
  11.         return false
  12.       else
  13.         return false if skills_cannot_use_without_weapon.include?(skill_id)
  14.       end
  15.     end
  16.     return super
  17.   end
  18. end
复制代码

作者: 癫狂侠客    时间: 2011-8-20 09:36
没试过,不过首先LZ自己要先定义那些是物理技能,那些是魔法技能,
然后在脚本里分歧就好了.
感觉没有必要这么做,LZ自行斟酌吧!
作者: 凌空飘雪    时间: 2011-8-20 10:47
可以在 Game_Battle3 的 开头部分更改 def skill_can_use?(skill_id) 的内容
增加一个使用的是否是物理技能与角色是否装备了武器的判断
再决定满足这个条件时是不能使用技能或是可以使用,就行了
如下:

#==============================================================================
# ■ Game_Battler (分割定义 3)
#------------------------------------------------------------------------------
#  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 可以使用特技的判定
  #     skill_id : 特技 ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    # SP 不足的情况下不能使用
    if $data_skills[skill_id].sp_cost > self.sp
      return false
    end
    # 战斗不能的情况下不能使用
    if dead?
      return false
    end
    #**********************************************
    #如果技能的攻击力(与技能威力是两回事,是关于角色物理攻击力对该技能伤害的影响
  # 有多大,一般用来判断是否为物理技能) > 0  且 角色没有装备武器
   #返回值 = 不能使用
    if $data_skills[skill_id].atk_f > 0 and $data_weapons[self.weapon_id] == nil
      return false #不能使用 *如果是可以使用的话,你可以删掉这句
    end
     #**********************************************
    # 沉默状态的情况下、物理特技以外的特技不能使用
    if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
      return false
    end
    # 获取可以使用的时机
    occasion = $data_skills[skill_id].occasion
    # 战斗中的情况下
    if $game_temp.in_battle
      # [平时] 或者是 [战斗中] 可以使用
      return (occasion == 0 or occasion == 1)
    # 不是战斗中的情况下
    else
      # [平时] 或者是 [菜单中] 可以使用
      return (occasion == 0 or occasion == 2)
    end
  end
end




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