查看: 2301|回复: 4

[已经解决] 怎么样实现某些技能需要特定武器才能使用

[复制链接]
梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-5-4
回帖
290
发表于 2012-6-3 20:22:14 | 显示全部楼层 |阅读模式

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

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

×
是这样
比如火球术学会了
不装备火焰之杖也不能使用
梦石
0
星屑
49
在线时间
107 小时
注册时间
2012-5-1
回帖
32
发表于 2012-6-3 20:39:19 | 显示全部楼层
[pre lang="ruby" line="1"]#格式 【武器编号,技能编号1,技能编号2】
class Game_Actor < Game_Battler  
  C3_W_SKILL = []
  C3_A1_SKILL = []
  C3_A2_SKILL = []
  C3_A3_SKILL = []
  C3_A4_SKILL = []
  
  C3_W_SKILL.push [1,0] #武器编号,武器附带技能编号,战斗图前缀
  
  #------武器附加技能.------------------------------------------
  C3_W_SKILL.push [86,258] #(86号武器,258号技能)(复制这条)
  
  #战斗图前缀后面会自动跟上角色的数据库编号。
  #比如你使用上面的设定,你的1、2、3、4号角色可以用1号武器(铜剑)
  #则你的battlers/下面应改有"剑_1.png","剑_2.png","剑_3.png","剑_4.png"

  #一个武器可以重复设置多种技能,防具也是。
  #前卫编号,附带技能编号------------------------------------------------------
  C3_A1_SKILL.push [153,288] # (复制这条)

  #中军编号,附带技能编号------------------------------------------------------
  C3_A2_SKILL.push [150,297] # (复制这条)           

  #后军编号,附带技能编号------------------------------------------------------
  C3_A3_SKILL.push [151,7]   #  (复制这条)            

  #策应编号,附带技能编号------------------------------------------------------
  C3_A4_SKILL.push [152,295] # (复制这条)
0
  #----------------------------------------------------------------------------
  # ● 变更装备
  #     equip_type : 装备类型
  #     id    : 武器 or 防具 ID  (0 为解除装备)
  #----------------------------------------------------------------------------
  def equip(equip_type, id)
    case equip_type
    when 0  # 武器
      if id == 0 or $game_party.weapon_number(id) > 0
        old_weapon_id = @weapon_id
        weapon_i = 0
        for weapon_i in C3_W_SKILL         
          if weapon_i[0] == old_weapon_id
            if weapon_i[1] != 0
              forget_skill(weapon_i[1])
            end
          end     
        end
        for weapon_i in C3_W_SKILL         
          if weapon_i[0] == id
            if weapon_i[1] != 0
              learn_skill(weapon_i[1])
            end
          end
        end
        $game_party.gain_weapon(@weapon_id, 1)
        @weapon_id = id
        $game_party.lose_weapon(id, 1)
      end
    when 1  # 盾
      if id == 0 or $game_party.armor_number(id) > 0
        old_am_id = @armor1_id
        am_i = 0
        for am_i in C3_A1_SKILL         
          if am_i[0] == old_am_id
            if am_i[1] != 0
              forget_skill(am_i[1])
            end
          end     
        end
        for am_i in C3_A1_SKILL
          if am_i[0] == id
            if am_i[1] != 0
              learn_skill(am_i[1])
            end
          end
        end
        update_auto_state($data_armors[@armor1_id], $data_armors[id])
        $game_party.gain_armor(@armor1_id, 1)
        @armor1_id = id
        $game_party.lose_armor(id, 1)
      end
    when 2  # 头
      if id == 0 or $game_party.armor_number(id) > 0
        old_am_id = @armor2_id
        am_i = 0
        for am_i in C3_A2_SKILL         
          if am_i[0] == old_am_id
            if am_i[1] != 0
              forget_skill(am_i[1])
            end
          end   
        end
        for am_i in C3_A2_SKILL  
          if am_i[0] == id
            if am_i[1] != 0
              learn_skill(am_i[1])
            end
          end
        end
        update_auto_state($data_armors[@armor2_id], $data_armors[id])
        $game_party.gain_armor(@armor2_id, 1)
        @armor2_id = id
        $game_party.lose_armor(id, 1)
      end
    when 3  # 身体
      if id == 0 or $game_party.armor_number(id) > 0
        old_am_id = @armor3_id
        am_i = 0
        for am_i in C3_A3_SKILL         
          if am_i[0] == old_am_id
            if am_i[1] != 0
              forget_skill(am_i[1])
            end
          end     
        end
        for am_i in C3_A3_SKILL  
          if am_i[0] == id
            if am_i[1] != 0
              learn_skill(am_i[1])
            end
          end
        end
        update_auto_state($data_armors[@armor3_id], $data_armors[id])
        $game_party.gain_armor(@armor3_id, 1)
        @armor3_id = id
        $game_party.lose_armor(id, 1)
      end
    when 4  # 装饰品
      if id == 0 or $game_party.armor_number(id) > 0
        old_am_id = @armor4_id
        am_i = 0
        for am_i in C3_A4_SKILL         
          if am_i[0] == old_am_id
            if am_i[1] != 0
              forget_skill(am_i[1])
            end
          end     
        end
        for am_i in C3_A4_SKILL  
          if am_i[0] == id
            if am_i[1] != 0
              learn_skill(am_i[1])
            end
          end
        end
        update_auto_state($data_armors[@armor4_id], $data_armors[id])
        $game_party.gain_armor(@armor4_id, 1)
        @armor4_id = id
        $game_party.lose_armor(id, 1)
      end
    end
  end
end
#------------------------------------------------------------[/pre]
要改的已经注释过了
回复

使用道具 举报

梦石
0
星屑
50
在线时间
22 小时
注册时间
2012-6-3
回帖
31
发表于 2012-6-5 13:31:49 | 显示全部楼层
LZ说的是装备附加的技能···
回复

使用道具 举报

梦石
8
星屑
4051
在线时间
1684 小时
注册时间
2010-10-22
回帖
1041

极短26参与极短25获奖

发表于 2012-6-5 21:49:51 | 显示全部楼层
本帖最后由 kangxi0109 于 2012-6-5 21:54 编辑

在Game_Battler 3里面对应位置添加如下部分:

  1. #在最顶上添加法术对应的武器数组,这里只做两个例子,设火球术是100号技能,冷冻术是200号,需要的话可继续添加↓
  2. $火球术=[1,2,3]#1、2、3号武器
  3. $冷冻术=[3]#3号武器
  4. #==============================================================================
  5. # ■ Game_Battler (分割定义 3)
  6. #------------------------------------------------------------------------------
  7. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  8. # 超级类来使用。
  9. #==============================================================================

  10. class Game_Battler
  11.   #--------------------------------------------------------------------------
  12.   # ● 可以使用特技的判定
  13.   #     skill_id : 特技 ID
  14.   #--------------------------------------------------------------------------
  15.   def skill_can_use?(skill_id)
  16. #----------------------------添加↓
  17.       if self.is_a?(Game_Actor) #角色的场合,敌人没武器嘛
  18.      if skill_id == 100 && $火球术.include?(self.weapon_id) #技能是火球术并且施法者武器符合火球术的武器数组
  19.      else
  20.           return false
  21.          end
  22.          if skill_id == 200 && $冷冻术.include?(self.weapon_id) #技能是冷冻术并且施法者武器符合冷冻术的武器数组
  23.      else
  24.           return false
  25.          end
  26.      end
  27. #----------------------------
  28.     # SP 不足的情况下不能使用
复制代码

点评

还算不错吧  发表于 2012-6-6 18:24

【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
【大坑】异元-暗黑天际
【短25·不可阻挡】异元-地劫黎明
【短26·禁止】异元-禁忌之轮
回复

使用道具 举报

梦石
0
星屑
50
在线时间
79 小时
注册时间
2012-5-19
回帖
23
发表于 2012-6-6 11:00:25 | 显示全部楼层
事件党路过,偶有想法。

1、设置1号技能火球术(使用场合:不能使用),再设置2号技能火球术(和1号一样,但使用场合为战斗中)

2、设置公共事件:目标:并行处理,条件:开关1.
事件内容:条件分歧,装备火焰之杖时,学的2号,遗忘1号:否则学会一号,遗忘2号。

3、唯一麻烦的东西,在每个会战斗的地图做一个事件,执行条件:并行处理,内容:开关1,on
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部