Project1

标题: 我是脚本盲在学,有没有办法让技能需要什么武器才能用 [打印本页]

作者: ggfdhdbhgf    时间: 2017-3-4 13:21
标题: 我是脚本盲在学,有没有办法让技能需要什么武器才能用
我是脚本盲在学,想问下有没有办法让技能需要什么武器才能用的办法呢?
作者: RyanBern    时间: 2017-3-4 13:30
https://rpg.blue/thread-314767-1-1.html?_dsign=33ab0579
作者: ggfdhdbhgf    时间: 2017-3-4 13:39
十分感谢~
作者: ggfdhdbhgf    时间: 2017-3-4 13:40
不过好像这个是删除技能的,有没有那种不删除的呢
作者: guoxiaomi    时间: 2017-3-4 14:08
把你刚才发的VX脚本copy了一下:
[pre lang="ruby"]#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
#  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================
  SW_SET = [17,18,19,20,21,22,23,24]    # 此处设定武器和技能关联的属性id
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 判断是否可以使用技能
  #     skill : 技能
  #     self.weapons : 武器id的数组
  #--------------------------------------------------------------------------
  alias _SkillWeapon_skill_can_use? skill_can_use?
  def skill_can_use?(skill_id)
    if self.is_a?(Game_Actor)
      $data_weapons[0] = RPG::Weapon.new
      $data_weapons[0].element_set =[]
      sw_boolean = false # 判断武器和技能关联
      s = SW_SET & $data_skills[skill_id].element_set
      if s.empty?
        sw_boolean = true
      else
        s2 = s & $data_weapons[self.weapon_id].element_set
        if !s2.empty?
          sw_boolean = true
        end
      end
      $data_weapons[0] = nil
      return false if sw_boolean == false
    end
    return _SkillWeapon_skill_can_use?(skill_id)
  end
end
[/pre]

作者: RyanBern    时间: 2017-3-4 14:30
随手写了一个。
功能:特定的技能需要相同属性的武器才可以释放,否则不能使用。
用法:新建一个属性,命名为【需要武器】,属性的ID需要跟脚本里的ID设置绑定(见脚本)。设置需要武器才能使用的技能的时候,首先将此技能附加【需要武器】的属性,然后再勾选实际的技能属性(例如【斧头】),所需要的武器必须有同样的属性才可以使用。
[pre lang="Ruby"]STATE_NEED_WEAPON = 20 # 【需要武器】状态绑定的 ID
class Game_Actor < Game_Battler
  def skill_can_use?(skill_id)
    skill = $data_skills[skill_id]
    weapon = $data_weapons[weapon_id]
    if skill.element_set.include?(STATE_NEED_WEAPON)
      return false if weapon.nil? || (skill.element_set & weapon.element_set).empty?
    end
    super
  end
end
[/pre]
作者: ggfdhdbhgf    时间: 2017-3-4 14:42
好的谢谢2位,我去试试~
作者: ggfdhdbhgf    时间: 2017-3-4 14:45
版主大大~你设定的那个是直接用在我发的这脚本基础上么~还是怎么?貌似是只能绑定一个ID?
作者: ggfdhdbhgf    时间: 2017-3-4 14:56
我想用的是在XP上的
作者: axicc    时间: 2017-3-4 15:05
其实完全能用事件实现的...
我可以告诉你原理...
作者: RyanBern    时间: 2017-3-4 15:26
ggfdhdbhgf 发表于 2017-3-4 14:45
版主大大~你设定的那个是直接用在我发的这脚本基础上么~还是怎么?貌似是只能绑定一个ID? ...

不是。是我自己写的一个,和你提供的那个具有相同的功能。

使用方法也写了,请仔细看我的回复。例子:假设1号技能需要装备带【长剑】属性的武器才可使用。那么请新建一个辅助属性【需要武器】,然后将这个技能关联到【长剑】【需要武器】这两个属性上。这样的话,该角色必须装备具有【长剑】属性的武器才能使用这个技能。


作者: bmcon    时间: 2017-5-6 09:06
事件变量操作?加上条件分歧应该可以实现




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