Project1

标题: 装备附带技能 [打印本页]

作者: 失落的乐章    时间: 2013-4-30 23:20
标题: 装备附带技能
说明:
使装备附带技能,使用装备时习得技能,卸下装备后即遗忘该技能。
对于事件中的“变更装备”也一样有效。
  1. =begin

  2. 装备附带技能V1.0

  3. 作者:失落的乐章

  4. 说明:使装备附带技能,使用装备时习得技能,卸下装备后即遗忘该技能。
  5. 对于事件中的“变更装备”也一样有效。

  6. =end

  7. module SGS_ES
  8.   #以下是对装备及其附属技能的设定。格式为“武器ID => 技能ID”,如下。
  9.   #
  10.   WPSKILL =  { 4 => 60, #武器附带技能
  11.               3 => 59
  12.               }
  13.   A1SKILL = { }       #防具1(默认为盾)附带技能
  14.   A2SKILL = { }       #防具2(默认为头部防具)附带技能
  15.   A3SKILL = { }       #防具3(默认为身体防具)附带技能
  16.   A4SKILL = { 29 => 7 }       #防具4(默认为装饰品)附带技能

  17.   def self.forget_skill(actor)
  18.    
  19.     WPSKILL.each { |wq,sk| actor.forget_skill(sk) if actor.weapon_id == wq }
  20.     A1SKILL.each { |wq,sk| actor.forget_skill(sk) if actor.armor1_id == wq }
  21.     A2SKILL.each { |wq,sk| actor.forget_skill(sk) if actor.armor2_id == wq }
  22.     A3SKILL.each { |wq,sk| actor.forget_skill(sk) if actor.armor3_id == wq }
  23.     A4SKILL.each { |wq,sk| actor.forget_skill(sk) if actor.armor4_id == wq }

  24.   end
  25.   def self.learn_skill(actor)
  26.    
  27.     WPSKILL.each { |wq,sk| actor.learn_skill(sk) if actor.weapon_id == wq }
  28.     A1SKILL.each { |wq,sk| actor.learn_skill(sk) if actor.armor1_id == wq }
  29.     A2SKILL.each { |wq,sk| actor.learn_skill(sk) if actor.armor2_id == wq }
  30.     A3SKILL.each { |wq,sk| actor.learn_skill(sk) if actor.armor3_id == wq }
  31.     A4SKILL.each { |wq,sk| actor.learn_skill(sk) if actor.armor4_id == wq }

  32.   end
  33. end

  34. class Interpreter
  35.   #--------------------------------------------------------------------------
  36.   # ● 变更装备
  37.   #--------------------------------------------------------------------------
  38.   def command_319
  39.     # 获取角色
  40.     actor = $game_actors[@parameters[0]]
  41.     # 变更角色
  42.     if actor != nil
  43.       SGS_ES.forget_skill(actor)
  44.       
  45.       actor.equip(@parameters[1], @parameters[2])
  46.       
  47.       SGS_ES.learn_skill(actor)
  48.     end
  49.     # 继续
  50.     return true
  51.   end
  52. end

  53. class Scene_Equip
  54.   def update_item
  55.     if Input.trigger?(Input::B)
  56.       $game_system.se_play($data_system.cancel_se)
  57.       @right_window.active = true
  58.       @item_window.active = false
  59.       @item_window.index = -1
  60.       return
  61.     end
  62.     if Input.trigger?(Input::C)
  63.       $game_system.se_play($data_system.equip_se)
  64.       item = @item_window.item      
  65.       actemp = $game_actors[@actor_index+1]
  66.       SGS_ES.forget_skill(actemp)
  67.       @actor.equip(@right_window.index, item == nil ? 0 : item.id)
  68.       SGS_ES.learn_skill(actemp)
  69.       @right_window.active = true
  70.       @item_window.active = false
  71.       @item_window.index = -1
  72.       @right_window.refresh
  73.       @item_window.refresh
  74.       return
  75.     end
  76.   end
  77. end
复制代码
范例: 装备附带技能.rar (189.72 KB, 下载次数: 181)
作者: 水终结者    时间: 2013-5-2 18:47
希望第二版能支持装备武器能习得多个技能。
作者: chd114    时间: 2013-5-3 21:01
这个脚本为什么我会找到一个类似的···
  1. #------------------------------------------------------------
  2. # 脚本来自www.66rpg.com,作者柳柳,转载和使用请保留此信息
  3. #------------------------------------------------------------
  4. class Game_Actor < Game_Battler   
  5. C3_W_SKILL = []
  6. C3_A1_SKILL = []
  7. C3_A2_SKILL = []
  8. C3_A3_SKILL = []
  9. C3_A4_SKILL = []
  10. C3_A5_SKILL = []
  11. C3_A6_SKILL = []
  12. C3_A7_SKILL = []
  13. C3_A8_SKILL = []
  14. C3_A9_SKILL = []
  15. C3_A10_SKILL = []
  16. C3_A11_SKILL = []
  17. C3_A12_SKILL = []
  18. C3_A13_SKILL = []
  19.   
  20. C3_W_SKILL.push [2,38,""] #武器编号,武器附带技能编号,战斗图前缀
  21. #战斗图前缀后面会自动跟上角色的数据库编号。
  22. #比如你使用上面的设定,你的1、2、3、4号角色可以用1号武器(铜剑)
  23. #则你的battlers/下面应改有"剑_1.png","剑_2.png","剑_3.png","剑_4.png"
  24. #一个武器可以重复设置多种技能,防具也是。
  25.   
  26. C3_A1_SKILL.push [1,0]                    #盾编号,附带技能编号
  27. #--------------------------------------------------------------------------
  28. # ● 变更装备
  29. #     equip_type : 装备类型
  30. #     id    : 武器 or 防具 ID  (0 为解除装备)
  31. #--------------------------------------------------------------------------
  32. def equip(equip_type, id)
  33.    case equip_type
  34.    when 0  # 武器
  35.      if id == 0 or $game_party.weapon_number(id) > 0
  36.        old_weapon_id = @weapon_id
  37.        weapon_i = 0
  38.        for weapon_i in C3_W_SKILL           
  39.          if weapon_i[0] == old_weapon_id
  40.            if weapon_i[1] != 0
  41.              forget_skill(weapon_i[1])
  42.            end
  43.          end      
  44.        end
  45.        for weapon_i in C3_W_SKILL           
  46.          if weapon_i[0] == id
  47.            if weapon_i[1] != 0
  48.              learn_skill(weapon_i[1])
  49.            end
  50.            if weapon_i[2] != ""
  51.              @battler_name = weapon_i[2]+@actor_id.to_s
  52.            else
  53.              @battler_name = $data_actors[@actor_id].battler_name
  54.            end
  55.          end
  56.        end
  57.        $game_party.gain_weapon(@weapon_id, 1)
  58.        @weapon_id = id
  59.        $game_party.lose_weapon(id, 1)
  60.      end
  61.    when 1  # 盾
  62.      if id == 0 or $game_party.armor_number(id) > 0
  63.        old_am_id = @armor1_id
  64.        am_i = 0
  65.        for am_i in C3_A1_SKILL           
  66.          if am_i[0] == old_am_id
  67.            if am_i[1] != 0
  68.              forget_skill(am_i[1])
  69.            end
  70.          end      
  71.        end
  72.        for am_i in C3_A1_SKILL
  73.          if am_i[0] == id
  74.            if am_i[1] != 0
  75.              learn_skill(am_i[1])
  76.            end
  77.          end
  78.        end
  79.        update_auto_state($data_armors[@armor1_id], $data_armors[id])
  80.        $game_party.gain_armor(@armor1_id, 1)
  81.        @armor1_id = id
  82.        $game_party.lose_armor(id, 1)
  83.      end
  84.    when 2  # 头
  85.      if id == 0 or $game_party.armor_number(id) > 0
  86.        old_am_id = @armor2_id
  87.        am_i = 0
  88.        for am_i in C3_A2_SKILL           
  89.          if am_i[0] == old_am_id
  90.            if am_i[1] != 0
  91.              forget_skill(am_i[1])
  92.            end
  93.          end     
  94.        end
  95.        for am_i in C3_A2_SKILL   
  96.          if am_i[0] == id
  97.            if am_i[1] != 0
  98.              learn_skill(am_i[1])
  99.            end
  100.          end
  101.        end
  102.        update_auto_state($data_armors[@armor2_id], $data_armors[id])
  103.        $game_party.gain_armor(@armor2_id, 1)
  104.        @armor2_id = id
  105.        $game_party.lose_armor(id, 1)
  106.      end
  107.    when 3  # 身体
  108.      if id == 0 or $game_party.armor_number(id) > 0
  109.        old_am_id = @armor3_id
  110.        am_i = 0
  111.        for am_i in C3_A3_SKILL           
  112.          if am_i[0] == old_am_id
  113.            if am_i[1] != 0
  114.              forget_skill(am_i[1])
  115.            end
  116.          end      
  117.        end
  118.        for am_i in C3_A3_SKILL   
  119.          if am_i[0] == id
  120.            if am_i[1] != 0
  121.              learn_skill(am_i[1])
  122.            end
  123.          end
  124.        end
  125.        update_auto_state($data_armors[@armor3_id], $data_armors[id])
  126.        $game_party.gain_armor(@armor3_id, 1)
  127.        @armor3_id = id
  128.        $game_party.lose_armor(id, 1)
  129.      end
  130.    when 4  # 装饰品
  131.      if id == 0 or $game_party.armor_number(id) > 0
  132.        old_am_id = @armor4_id
  133.        am_i = 0
  134.        for am_i in C3_A4_SKILL           
  135.          if am_i[0] == old_am_id
  136.            if am_i[1] != 0
  137.              forget_skill(am_i[1])
  138.            end
  139.          end      
  140.        end
  141.        for am_i in C3_A4_SKILL   
  142.          if am_i[0] == id
  143.            if am_i[1] != 0
  144.              learn_skill(am_i[1])
  145.            end
  146.          end
  147.        end
  148.        update_auto_state($data_armors[@armor4_id], $data_armors[id])
  149.        $game_party.gain_armor(@armor4_id, 1)
  150.        @armor4_id = id
  151.        $game_party.lose_armor(id, 1)
  152.      end
  153.    when 5  # 盾
  154.      if id == 0 or $game_party.armor_number(id) > 0
  155.        old_am_id = @armor5_id
  156.        am_i = 0
  157.        for am_i in C3_A5_SKILL           
  158.          if am_i[0] == old_am_id
  159.            if am_i[1] != 0
  160.              forget_skill(am_i[1])
  161.            end
  162.          end      
  163.        end
  164.        for am_i in C3_A5_SKILL
  165.          if am_i[0] == id
  166.            if am_i[1] != 0
  167.              learn_skill(am_i[1])
  168.            end
  169.          end
  170.        end
  171.        update_auto_state($data_armors[@armor5_id], $data_armors[id])
  172.        $game_party.gain_armor(@armor5_id, 1)
  173.        @armor5_id = id
  174.        $game_party.lose_armor(id, 1)
  175.      end
  176.    when 6  # 头
  177.      if id == 0 or $game_party.armor_number(id) > 0
  178.        old_am_id = @armor6_id
  179.        am_i = 0
  180.        for am_i in C3_A6_SKILL           
  181.          if am_i[0] == old_am_id
  182.            if am_i[1] != 0
  183.              forget_skill(am_i[1])
  184.            end
  185.          end     
  186.        end
  187.        for am_i in C3_A6_SKILL   
  188.          if am_i[0] == id
  189.            if am_i[1] != 0
  190.              learn_skill(am_i[1])
  191.            end
  192.          end
  193.        end
  194.        update_auto_state($data_armors[@armor6_id], $data_armors[id])
  195.        $game_party.gain_armor(@armor6_id, 1)
  196.        @armor6_id = id
  197.        $game_party.lose_armor(id, 1)
  198.      end
  199.    when 7  # 身体
  200.      if id == 0 or $game_party.armor_number(id) > 0
  201.        old_am_id = @armor7_id
  202.        am_i = 0
  203.        for am_i in C3_A7_SKILL           
  204.          if am_i[0] == old_am_id
  205.            if am_i[1] != 0
  206.              forget_skill(am_i[1])
  207.            end
  208.          end      
  209.        end
  210.        for am_i in C3_A7_SKILL   
  211.          if am_i[0] == id
  212.            if am_i[1] != 0
  213.              learn_skill(am_i[1])
  214.            end
  215.          end
  216.        end
  217.        update_auto_state($data_armors[@armor7_id], $data_armors[id])
  218.        $game_party.gain_armor(@armor7_id, 1)
  219.        @armor7_id = id
  220.        $game_party.lose_armor(id, 1)
  221.      end
  222.    when 8  # 盾
  223.      if id == 0 or $game_party.armor_number(id) > 0
  224.        old_am_id = @armor8_id
  225.        am_i = 0
  226.        for am_i in C3_A8_SKILL           
  227.          if am_i[0] == old_am_id
  228.            if am_i[1] != 0
  229.              forget_skill(am_i[1])
  230.            end
  231.          end      
  232.        end
  233.        for am_i in C3_A8_SKILL
  234.          if am_i[0] == id
  235.            if am_i[1] != 0
  236.              learn_skill(am_i[1])
  237.            end
  238.          end
  239.        end
  240.        update_auto_state($data_armors[@armor8_id], $data_armors[id])
  241.        $game_party.gain_armor(@armor8_id, 1)
  242.        @armor8_id = id
  243.        $game_party.lose_armor(id, 1)
  244.      end
  245.    when 9  # 头
  246.      if id == 0 or $game_party.armor_number(id) > 0
  247.        old_am_id = @armor9_id
  248.        am_i = 0
  249.        for am_i in C3_A9_SKILL           
  250.          if am_i[0] == old_am_id
  251.            if am_i[1] != 0
  252.              forget_skill(am_i[1])
  253.            end
  254.          end     
  255.        end
  256.        for am_i in C3_A9_SKILL   
  257.          if am_i[0] == id
  258.            if am_i[1] != 0
  259.              learn_skill(am_i[1])
  260.            end
  261.          end
  262.        end
  263.        update_auto_state($data_armors[@armor9_id], $data_armors[id])
  264.        $game_party.gain_armor(@armor9_id, 1)
  265.        @armor9_id = id
  266.        $game_party.lose_armor(id, 1)
  267.      end
  268.    when 10  # 身体
  269.      if id == 0 or $game_party.armor_number(id) > 0
  270.        old_am_id = @armor10_id
  271.        am_i = 0
  272.        for am_i in C3_A10_SKILL           
  273.          if am_i[0] == old_am_id
  274.            if am_i[1] != 0
  275.              forget_skill(am_i[1])
  276.            end
  277.          end      
  278.        end
  279.        for am_i in C3_A10_SKILL   
  280.          if am_i[0] == id
  281.            if am_i[1] != 0
  282.              learn_skill(am_i[1])
  283.            end
  284.          end
  285.        end
  286.        update_auto_state($data_armors[@armor10_id], $data_armors[id])
  287.        $game_party.gain_armor(@armor10_id, 1)
  288.        @armor10_id = id
  289.        $game_party.lose_armor(id, 1)
  290.      end
  291.    when 11  # 盾
  292.      if id == 0 or $game_party.armor_number(id) > 0
  293.        old_am_id = @armor11_id
  294.        am_i = 0
  295.        for am_i in C3_A11_SKILL           
  296.          if am_i[0] == old_am_id
  297.            if am_i[1] != 0
  298.              forget_skill(am_i[1])
  299.            end
  300.          end      
  301.        end
  302.        for am_i in C3_A11_SKILL
  303.          if am_i[0] == id
  304.            if am_i[1] != 0
  305.              learn_skill(am_i[1])
  306.            end
  307.          end
  308.        end
  309.        update_auto_state($data_armors[@armor11_id], $data_armors[id])
  310.        $game_party.gain_armor(@armor11_id, 1)
  311.        @armor11_id = id
  312.        $game_party.lose_armor(id, 1)
  313.      end
  314.    when 12  # 头
  315.      if id == 0 or $game_party.armor_number(id) > 0
  316.        old_am_id = @armor12_id
  317.        am_i = 0
  318.        for am_i in C3_A12_SKILL           
  319.          if am_i[0] == old_am_id
  320.            if am_i[1] != 0
  321.              forget_skill(am_i[1])
  322.            end
  323.          end     
  324.        end
  325.        for am_i in C3_A12_SKILL   
  326.          if am_i[0] == id
  327.            if am_i[1] != 0
  328.              learn_skill(am_i[1])
  329.            end
  330.          end
  331.        end
  332.        update_auto_state($data_armors[@armor12_id], $data_armors[id])
  333.        $game_party.gain_armor(@armor12_id, 1)
  334.        @armor12_id = id
  335.        $game_party.lose_armor(id, 1)
  336.      end
  337.    when 13  # 身体
  338.      if id == 0 or $game_party.armor_number(id) > 0
  339.        old_am_id = @armor13_id
  340.        am_i = 0
  341.        for am_i in C3_A13_SKILL           
  342.          if am_i[0] == old_am_id
  343.            if am_i[1] != 0
  344.              forget_skill(am_i[1])
  345.            end
  346.          end      
  347.        end
  348.        for am_i in C3_A13_SKILL   
  349.          if am_i[0] == id
  350.            if am_i[1] != 0
  351.              learn_skill(am_i[1])
  352.            end
  353.          end
  354.        end
  355.        update_auto_state($data_armors[@armor13_id], $data_armors[id])
  356.        $game_party.gain_armor(@armor13_id, 1)
  357.        @armor13_id = id
  358.        $game_party.lose_armor(id, 1)
  359.      end
  360.    end
  361. end
  362. end
  363. #------------------------------------------------------------
  364. # 脚本来自www.66rpg.com,作者柳柳,转载和使用请保留此信息
  365. #------------------------------------------------------------

复制代码
这是我整合做的样板里面的东西···
作者: skfwp    时间: 2013-5-6 15:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: hijl1990    时间: 2013-6-26 14:42
一个技能只能让一把武器学会吗?
作者: 韺戀    时间: 2013-6-28 22:35
如果想要一个装备多个技能或是一个技能多个装备呢??

例如:1号装备有1号与2号技能
然後2号装备则有1号与3号技能

能限制职业吗??
作者: 英顺的马甲    时间: 2013-6-29 00:28
为啥我能找到一个超短的==
http://rpg.blue/thread-314767-1-2.html
作者: wutou    时间: 2013-8-2 17:14
好脚本收下了~




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