设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 8424|回复: 47
打印 上一主题 下一主题

冰冰套装系统V1.00修正&V1.04

 关闭 [复制链接]

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
跳转到指定楼层
1
发表于 2008-2-18 10:29:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我看到主站上的套装系统有些问题,就写了这个脚本,虽然我自己的也不是很完善,但是会不断更新的(unless这张帖子被54,{/dk}那我自己留着好了)
貌似我的脚本都太过花哨(包括此脚本),不实用,所以管理员一直没把我的脚本顶到主站,虽然很伤心{/ll},但是我还是冒着被54的风险含泪写了这个脚本。
具体用法我在脚本里说的很清楚了,就不废话了。
至于冲突,主要是装备扩展,假如你重定义了Game_Actor里的相关项,也有可能产生冲突。以上两种情况整合起来并不麻烦,对高手就不用说了,新手的话自己整合一下也有助于技术提高,如果有问题可以去提问区提问,我长期在那儿蹲点(因为是提问区的斑竹{/gg})。其他冲突,不明。

  1. #-------------------------------------------------------------------------------
  2. #冰冰套装系统 version 1.00(修正) By 凌冰
  3. #(附带加MAXHP、加MAXSP装备、加回避的武器和加攻击的防具功能)
  4. #(修正信息:支持多防具套装)
  5. #================================套装的设置================================
  6. #如范例数据库
  7. #凌冰套装包含:凌冰之铜剑、凌冰之铜盾、凌冰之铜盔、凌冰之铜铠
  8. #或:          凌冰之铜枪、凌冰之铜盾、凌冰之铜盔、凌冰之铜铠
  9. #只要全部在武器、防具前面加上套装名"凌冰"和"之"
  10. #接着设置套装附加属性
  11. #在防具里新建防具,无所谓是盾还是头盔什么的,只要名字是套装名"凌冰"
  12. #设置附加属性
  13. #直接在物防、魔防、回避、力量、敏捷、速度、魔力里设置相应的附加值
  14. #至于攻击、MAXHP、MAXSP的附加值,则需要用到附加功能
  15. #在说明里添加精+数值、灵+数值、攻+数值(要有+号)设置相应附加值
  16. #具体设置参考范例
  17. #当然设置的这个防具在游戏中也是可用的,但是不算在套装里
  18. #然后说明一下☆附加功能☆
  19. #同上文关于套装附加属性的设置
  20. #武器在说明里添加精+数值、灵+数值、避+数值(要有+号)设置相应值
  21. #防具在说明里添加精+数值、灵+数值、攻+数值(要有+号)设置相应值
  22. #================================脚本的缺陷================================
  23. #我不说你们早晚也会发现的,所以还不如事先承认了
  24. #第一、不能设置套装不全的部分附加,暗黑破坏神里,如果套装不全,而装备的套装数量
  25. #      大于一,就会实现套装属性的部分附加。但是本脚本暂时不具备此功能,也就是说
  26. #      想附加套装属性缺一不可
  27. #第二、其他属性附加,例如:套装特技、自动状态、属性、属性防御、状态变化、状态防
  28. #      御……暂时还不能实现
  29. #其他缺陷和BUG望大家及时反馈给我,发站内短信给我就行
  30. #-------------------------------------------------------------------------------
  31. module RPG
  32.   class Weapon
  33.     def tao
  34.       return nil if @name.split(/之/)[1] == nil
  35.       return @name.split(/之/)[0]
  36.     end
  37.     def maxhp_plus
  38.      return 0 if @description.split(/精+/)[1] == nil
  39.      return @description.split(/精+/)[1].to_i
  40.    end
  41.    def maxsp_plus
  42.      return 0 if @description.split(/灵+/)[1] == nil
  43.      return @description.split(/灵+/)[1].to_i
  44.    end
  45.    def eva_plus
  46.      return 0 if @description.split(/避+/)[1] == nil
  47.      return @description.split(/避+/)[1].to_i
  48.    end
  49. end
  50.   class Armor
  51.     def tao
  52.       return nil if @name.split(/之/)[1] == nil
  53.       return @name.split(/之/)[0]
  54.     end
  55.     def maxhp_plus
  56.      return 0 if @description.split(/精+/)[1] == nil
  57.      return @description.split(/精+/)[1].to_i
  58.    end
  59.    def maxsp_plus
  60.      return 0 if @description.split(/灵+/)[1] == nil
  61.      return @description.split(/灵+/)[1].to_i
  62.    end
  63.    def atk_plus
  64.      return 0 if @description.split(/攻+/)[1] == nil
  65.      return @description.split(/攻+/)[1].to_i
  66.    end
  67.   end
  68. end
  69. class Game_Actor < Game_Battler
  70.   def get_tao_num(tao)
  71.     tao_num = 0
  72.     @tao = tao
  73.     armors = []
  74.     for i in 0...4
  75.       armors[i] = []
  76.     end
  77.     for i in 1...$data_armors.size
  78.       case $data_armors[i].kind
  79.       when 0
  80.         armors[0].push(i)
  81.       when 1
  82.         armors[1].push(i)
  83.       when 2
  84.         armors[2].push(i)
  85.       when 3
  86.         armors[3].push(i)
  87.       end
  88.     end
  89.     for i in 0...4
  90.       for id in armors[i]
  91.         armor = $data_armors[id]
  92.         if @tao == armor.tao
  93.           tao_num += 1
  94.           break
  95.         end
  96.       end
  97.     end
  98.     for i in 1...$data_weapons.size
  99.       weapon = $data_weapons[i]
  100.       if weapon.tao == @tao
  101.         tao_num += 1
  102.         break
  103.       end
  104.     end
  105.     return tao_num
  106.   end
  107.   def get_plus(parameter)
  108.     @now_tao_num = 0
  109.     weapon = $data_weapons[@weapon_id]
  110.     if weapon != nil and weapon.tao != nil
  111.       tao = weapon.tao
  112.       @tao_num = get_tao_num(tao)
  113.     else
  114.       for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  115.         armor = $data_armors[i]
  116.         if armor != nil and armor.tao != nil
  117.           tao = armor.tao
  118.           @tao_num = get_tao_num(tao)
  119.           break
  120.         end
  121.       end
  122.     end
  123.     if weapon != nil and weapon.tao != nil and weapon.tao == tao
  124.       @now_tao_num += 1
  125.     end
  126.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  127.       armor = $data_armors[i]
  128.       unless armor == nil
  129.       if armor != nil and armor.tao != nil and armor.tao == tao
  130.         @now_tao_num += 1
  131.       end
  132.       end
  133.     end
  134.     if @now_tao_num == @tao_num
  135.       return get_tao_plus(tao,parameter)
  136.     end
  137.     return 0
  138.   end
  139.   def get_tao_plus(tao,parameter)
  140.     for i in 1...$data_armors.size
  141.       armor = $data_armors[i]
  142.       if armor.name == tao
  143.         case parameter
  144.         when 0
  145.           return armor.maxhp_plus
  146.         when 1
  147.           return armor.maxsp_plus
  148.         when 2
  149.           return armor.str_plus
  150.         when 3
  151.           return armor.dex_plus
  152.         when 4
  153.           return armor.agi_plus
  154.         when 5
  155.           return armor.int_plus
  156.         when 6
  157.           return armor.atk_plus
  158.         when 7
  159.           return armor.pdef
  160.         when 8
  161.           return armor.mdef
  162.         when 9
  163.           return armor.eva
  164.         else
  165.           return 0
  166.         end
  167.       end
  168.     end
  169.     return 0
  170.   end
  171.   def base_maxhp
  172.     n = $data_actors[@actor_id].parameters[0, @level]
  173.     weapon = $data_weapons[@weapon_id]
  174.     armor1 = $data_armors[@armor1_id]
  175.     armor2 = $data_armors[@armor2_id]
  176.     armor3 = $data_armors[@armor3_id]
  177.     armor4 = $data_armors[@armor4_id]
  178.     n += weapon != nil ? weapon.maxhp_plus : 0
  179.     n += armor1 != nil ? armor1.maxhp_plus : 0
  180.     n += armor2 != nil ? armor2.maxhp_plus : 0
  181.     n += armor3 != nil ? armor3.maxhp_plus : 0
  182.     n += armor4 != nil ? armor4.maxhp_plus : 0
  183.     n += get_plus(0)
  184.     return n
  185.   end
  186.   def base_maxsp
  187.     n = $data_actors[@actor_id].parameters[1, @level]
  188.     weapon = $data_weapons[@weapon_id]
  189.     armor1 = $data_armors[@armor1_id]
  190.     armor2 = $data_armors[@armor2_id]
  191.     armor3 = $data_armors[@armor3_id]
  192.     armor4 = $data_armors[@armor4_id]
  193.     n += weapon != nil ? weapon.maxsp_plus : 0
  194.     n += armor1 != nil ? armor1.maxsp_plus : 0
  195.     n += armor2 != nil ? armor2.maxsp_plus : 0
  196.     n += armor3 != nil ? armor3.maxsp_plus : 0
  197.     n += armor4 != nil ? armor4.maxsp_plus : 0
  198.     n += get_plus(1)
  199.     return n
  200.   end
  201.   def base_str
  202.     n = $data_actors[@actor_id].parameters[2, @level]
  203.     weapon = $data_weapons[@weapon_id]
  204.     armor1 = $data_armors[@armor1_id]
  205.     armor2 = $data_armors[@armor2_id]
  206.     armor3 = $data_armors[@armor3_id]
  207.     armor4 = $data_armors[@armor4_id]
  208.     n += weapon != nil ? weapon.str_plus : 0
  209.     n += armor1 != nil ? armor1.str_plus : 0
  210.     n += armor2 != nil ? armor2.str_plus : 0
  211.     n += armor3 != nil ? armor3.str_plus : 0
  212.     n += armor4 != nil ? armor4.str_plus : 0
  213.     n += get_plus(2)
  214.     return [[n, 1].max, 999].min
  215.   end
  216.   def base_dex
  217.     n = $data_actors[@actor_id].parameters[3, @level]
  218.     weapon = $data_weapons[@weapon_id]
  219.     armor1 = $data_armors[@armor1_id]
  220.     armor2 = $data_armors[@armor2_id]
  221.     armor3 = $data_armors[@armor3_id]
  222.     armor4 = $data_armors[@armor4_id]
  223.     n += weapon != nil ? weapon.dex_plus : 0
  224.     n += armor1 != nil ? armor1.dex_plus : 0
  225.     n += armor2 != nil ? armor2.dex_plus : 0
  226.     n += armor3 != nil ? armor3.dex_plus : 0
  227.     n += armor4 != nil ? armor4.dex_plus : 0
  228.     n += get_plus(3)
  229.     return [[n, 1].max, 999].min
  230.   end
  231.   def base_agi
  232.     n = $data_actors[@actor_id].parameters[4, @level]
  233.     weapon = $data_weapons[@weapon_id]
  234.     armor1 = $data_armors[@armor1_id]
  235.     armor2 = $data_armors[@armor2_id]
  236.     armor3 = $data_armors[@armor3_id]
  237.     armor4 = $data_armors[@armor4_id]
  238.     n += weapon != nil ? weapon.agi_plus : 0
  239.     n += armor1 != nil ? armor1.agi_plus : 0
  240.     n += armor2 != nil ? armor2.agi_plus : 0
  241.     n += armor3 != nil ? armor3.agi_plus : 0
  242.     n += armor4 != nil ? armor4.agi_plus : 0
  243.     n += get_plus(4)
  244.     return [[n, 1].max, 999].min
  245.   end
  246.   def base_int
  247.     n = $data_actors[@actor_id].parameters[5, @level]
  248.     weapon = $data_weapons[@weapon_id]
  249.     armor1 = $data_armors[@armor1_id]
  250.     armor2 = $data_armors[@armor2_id]
  251.     armor3 = $data_armors[@armor3_id]
  252.     armor4 = $data_armors[@armor4_id]
  253.     n += weapon != nil ? weapon.int_plus : 0
  254.     n += armor1 != nil ? armor1.int_plus : 0
  255.     n += armor2 != nil ? armor2.int_plus : 0
  256.     n += armor3 != nil ? armor3.int_plus : 0
  257.     n += armor4 != nil ? armor4.int_plus : 0
  258.     n += get_plus(5)
  259.     return [[n, 1].max, 999].min
  260.   end
  261.   def base_atk
  262.     weapon = $data_weapons[@weapon_id]
  263.     armor1 = $data_armors[@armor1_id]
  264.     armor2 = $data_armors[@armor2_id]
  265.     armor3 = $data_armors[@armor3_id]
  266.     armor4 = $data_armors[@armor4_id]
  267.     n = 0
  268.     n += weapon != nil ? weapon.atk : 0
  269.     n += armor1 != nil ? armor1.atk_plus : 0
  270.     n += armor2 != nil ? armor2.atk_plus : 0
  271.     n += armor3 != nil ? armor3.atk_plus : 0
  272.     n += armor4 != nil ? armor4.atk_plus : 0
  273.     n += get_plus(6)
  274.   end
  275.   def base_pdef
  276.     weapon = $data_weapons[@weapon_id]
  277.     armor1 = $data_armors[@armor1_id]
  278.     armor2 = $data_armors[@armor2_id]
  279.     armor3 = $data_armors[@armor3_id]
  280.     armor4 = $data_armors[@armor4_id]
  281.     pdef1 = weapon != nil ? weapon.pdef : 0
  282.     pdef2 = armor1 != nil ? armor1.pdef : 0
  283.     pdef3 = armor2 != nil ? armor2.pdef : 0
  284.     pdef4 = armor3 != nil ? armor3.pdef : 0
  285.     pdef5 = armor4 != nil ? armor4.pdef : 0
  286.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 + get_plus(7)
  287.   end
  288.   def base_mdef
  289.     weapon = $data_weapons[@weapon_id]
  290.     armor1 = $data_armors[@armor1_id]
  291.     armor2 = $data_armors[@armor2_id]
  292.     armor3 = $data_armors[@armor3_id]
  293.     armor4 = $data_armors[@armor4_id]
  294.     mdef1 = weapon != nil ? weapon.mdef : 0
  295.     mdef2 = armor1 != nil ? armor1.mdef : 0
  296.     mdef3 = armor2 != nil ? armor2.mdef : 0
  297.     mdef4 = armor3 != nil ? armor3.mdef : 0
  298.     mdef5 = armor4 != nil ? armor4.mdef : 0
  299.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5 + get_plus(8)
  300.   end
  301.   def base_eva
  302.     weapon = $data_weapons[@weapon_id]
  303.     armor1 = $data_armors[@armor1_id]
  304.     armor2 = $data_armors[@armor2_id]
  305.     armor3 = $data_armors[@armor3_id]
  306.     armor4 = $data_armors[@armor4_id]
  307.     eva0 = weapon != nil ? weapon.eva_plus : 0
  308.     eva1 = armor1 != nil ? armor1.eva : 0
  309.     eva2 = armor2 != nil ? armor2.eva : 0
  310.     eva3 = armor3 != nil ? armor3.eva : 0
  311.     eva4 = armor4 != nil ? armor4.eva : 0
  312.     return eva1 + eva2 + eva3 + eva4 + eva0 + get_plus(9)
  313.   end
  314. end
复制代码

http://rpg.blue/upload_program/f ... 修正_83829712.rar
截图:
套装的设置,如图只要设置装备名称就行了,人性化吧{/cy}

附加值的设置,这是关键,参考下图与脚本注释中的那些“废话”




---------------------------version1.04----------------------------------------





之所以保留v1.00,是因为随着脚本功能的增加,貌似冲突也越来越多,整合也变得越来越难,建议新手还是使用v1.00,稍后我会发布v1.00的修正版本。
更新信息
1.增加套装特技
2.支持每套套装中可以有N多武器N多同类防具
3.完善套装附加属性

  1. #-------------------------------------------------------------------------------
  2. #冰冰套装系统 version 1.04 By 凌冰
  3. #(附带加MAXHP、加MAXSP装备、加回避的武器和加攻击的防具功能)
  4. #(更新信息v1.01:1、增加套装特技。2、增加双防具套装。3、增加套装属性设置)
  5. #(更新信息v1.02:1、支持双套装)
  6. #(更新信息v1.03:1、增加隐藏套装功能)
  7. #(更新信息v1.04:1、增加套装多种附加属性功能)
  8. #================================套装的设置================================
  9. #如范例数据库
  10. #只要全部在武器、防具前面加上套装名"凌冰"和"之"
  11. #设置☆套装特技☆
  12. #在特技名称前加套装名"凌冰"和"之",支持多个技能
  13. #接着设置套装附加属性
  14. #在防具里新建防具,无所谓是盾还是头盔什么的,只要名字是套装名"凌冰"
  15. #设置附加属性
  16. #直接在物防、魔防、回避、力量、敏捷、速度、魔力、自动状态、状态防御、属性防御里
  17. #设置相应的附加值。至于攻击、MAXHP、MAXSP的附加值,则需要用到附加功能
  18. #在说明里添加精+数值、灵+数值、攻+数值(要有+号)设置相应附加值
  19. #在武器里新建武器,名字是套装名"凌冰"
  20. #这个只用于描述物理攻击属性、物理攻击附加状态、物理攻击清楚状态(感觉有些浪费)
  21. #,只要设置相应值就行了
  22. #(如果不需要可以不新建这个武器,orz不需要的话不新建那个防具都可以)
  23. #具体设置参考范例
  24. #当然设置的这个防具在游戏中也是可用的,但是不算在套装里
  25. #然后说明一下☆附加功能☆
  26. #同上文关于套装附加属性的设置
  27. #武器在说明里添加精+数值、灵+数值、避+数值(要有+号)设置相应值
  28. #防具在说明里添加精+数值、灵+数值、攻+数值(要有+号)设置相应值
  29. #☆双武器双防具套装功能说明☆
  30. #凌冰套装包含:凌冰之铜剑、凌冰之铜盾、凌冰之铜盔、凌冰之铜铠
  31. #或:          凌冰之铜枪、凌冰之铜盾、凌冰之铜盔、凌冰之铜铠
  32. #上面是version 1.00的范例的设置,你现在可以打开范例工程看,除了密斯利尔和塞因特
  33. #(对比用)全被我改成了凌冰套装,也就是说实现了vesion 1.00不能实现的双防具套装
  34. #功能,其实是N防具N武器套装,只要穿上凌冰套装中任意5件(你也只能穿5件),就能附
  35. #加套装属性。这样,同时也暴露了本脚本的另一个缺陷,见下文第二。当然并没有限制套
  36. #装一定包含5类装备。例如:某套装:武器、头盔1、头盔2、身体、盾。只要装备其中四
  37. #项就行
  38. #☆双套装功能☆说明
  39. #如工程中的范例,除凌冰套装外,还有夏桀凌和魔敬轩套装,夏桀凌套装只包括头和身体
  40. #两类,而魔敬轩套装只包括盾和装饰两类。夏桀凌套装的套装属性是精+100,魔敬轩套装
  41. #套装属性是灵+100,同时装备着两个套装后,可以同时附加maxhp+100和maxsp+100。如果
  42. #可以整合装备扩展的话,可以实现三套装、四套装甚至更多(orz)(其实,现在就可以
  43. #实现五套装,但显然没什么太大意义)
  44. #隐藏套装☆New!
  45. #按照禾西的建议我做了隐藏套装功能,在数据库系统里新加一个属性,名称为隐藏套装,
  46. #所需要隐藏的套装的每一个武器、防具、技能都要勾上这个属性。
  47. #套装多种附加属性功能☆New!
  48. #根据套装成分不同变化附加属性。例如上文的凌冰套装,同时装备其他装备,再装备凌冰
  49. #之铜剑和凌冰之铜枪效果是不一样的(在有的游戏中这种情况效果是不一样的)。设置方
  50. #法:在武器、防具的说明里添加“类型:***”***为类型名,再在数据库里设置描述防具
  51. #和描述武器,名称为***,设置方法与套装的描述防具和描述武器设置方法相同。而所要
  52. #增加的技能名称为套装的名称+“之”+???,另外要在技能说明里增加“类型:***”
  53. #如范例,凌冰之铜剑的剑类型附加属性为物防+100,也就是说在原来的套装属性上再叠加
  54. #物防100,如果装备了凌冰之铁枪,则在叠加魔防100,并且学会凌冰之淫荡,换成其他装
  55. #备凌冰之淫荡则被遗忘。
  56. #如果想更灵活的改变套装属性,那就多设置几个类型就OK了,这也就是为什么我没有用防
  57. #具在数据库里设置的类别进行类别判定的原因。
  58. #================================脚本的缺陷================================
  59. #我不说你们早晚也会发现的,所以还不如事先承认了
  60. #第一、不能设置套装不全的部分附加,暗黑破坏神里,如果套装不全,而装备的套装数量
  61. #      大于一,就会实现套装属性的部分附加。但是本脚本暂时不具备此功能,也就是说
  62. #      想附加套装属性缺一不可。
  63. #解释:不是我做不到,只是实现这个功能会增加使用这个脚本的人的工作量,而且增加的
  64. #      不是一般的多。
  65. #其他缺陷和BUG望大家及时反馈给我,发站内短信给我就行
  66. #-------------------------------------------------------------------------------
  67. module RPG
  68.   class Weapon
  69.     def tao
  70.       return nil if @name.split(/之/)[1] == nil
  71.       return @name.split(/之/)[0]
  72.     end
  73.     def maxhp_plus
  74.       return 0 if @description.split(/精+/)[1] == nil
  75.       return @description.split(/精+/)[1].to_i
  76.     end
  77.     def maxsp_plus
  78.       return 0 if @description.split(/灵+/)[1] == nil
  79.       return @description.split(/灵+/)[1].to_i
  80.     end
  81.     def eva_plus
  82.       return 0 if @description.split(/避+/)[1] == nil
  83.       return @description.split(/避+/)[1].to_i
  84.     end
  85.     def name
  86.       a = @name
  87.       if tao != nil and tao_hide?
  88.         return a.split(/之/)[1]
  89.       end
  90.       return a
  91.     end
  92.     def get_hide_id
  93.       if @hide_id == nil
  94.         result = nil
  95.         for i in 1 ... $data_system.elements.size
  96.           if $data_system.elements[i] == "隐藏套装"
  97.             result = i
  98.             break
  99.           end
  100.         end
  101.         @hide_id = result == nil ? 0 : result
  102.       end
  103.       return @hide_id
  104.     end
  105.     def tao_hide?
  106.       id = get_hide_id
  107.       if element_set.include?(id)
  108.         return true
  109.       end
  110.       return false
  111.     end
  112.     def plus_kind
  113.       return nil if @description.split(/类型:/)[1] == nil
  114.       return @description.split(/类型:/)[1].to_s
  115.     end
  116.   end
  117.   class Armor
  118.     def tao
  119.       return nil if @name.split(/之/)[1] == nil
  120.       return @name.split(/之/)[0]
  121.     end
  122.     def maxhp_plus
  123.       return 0 if @description.split(/精+/)[1] == nil
  124.       return @description.split(/精+/)[1].to_i
  125.     end
  126.     def maxsp_plus
  127.       return 0 if @description.split(/灵+/)[1] == nil
  128.       return @description.split(/灵+/)[1].to_i
  129.     end
  130.     def atk_plus
  131.       return 0 if @description.split(/攻+/)[1] == nil
  132.       return @description.split(/攻+/)[1].to_i
  133.     end
  134.     def name
  135.       a = @name
  136.       if tao != nil and tao_hide?
  137.         return a.split(/之/)[1]
  138.       end
  139.       return a
  140.     end
  141.     def get_hide_id
  142.       if @hide_id == nil
  143.         result = nil
  144.         for i in 1 ... $data_system.elements.size
  145.           if $data_system.elements[i] == "隐藏套装"
  146.             result = i
  147.             break
  148.           end
  149.         end
  150.         @hide_id = result == nil ? 0 : result
  151.       end
  152.       return @hide_id
  153.     end
  154.     def tao_hide?
  155.       id = get_hide_id
  156.       if guard_element_set.include?(id)
  157.         return true
  158.       end
  159.       return false
  160.     end
  161.     def plus_kind
  162.       return nil if @description.split(/类型:/)[1] == nil
  163.       return @description.split(/类型:/)[1].to_s
  164.     end
  165.   end
  166.   class Skill
  167.     def tao
  168.       return nil if @name.split(/之/)[1] == nil
  169.       return @name.split(/之/)[0]
  170.     end
  171.     def name
  172.       a = @name
  173.       if tao != nil and tao_hide?
  174.         return a.split(/之/)[1]
  175.       end
  176.       return a
  177.     end
  178.     def get_hide_id
  179.       if @hide_id == nil
  180.         result = nil
  181.         for i in 1 ... $data_system.elements.size
  182.           if $data_system.elements[i] == "隐藏套装"
  183.             result = i
  184.             break
  185.           end
  186.         end
  187.         @hide_id = result == nil ? 0 : result
  188.       end
  189.       return @hide_id
  190.     end
  191.     def tao_hide?
  192.       id = get_hide_id
  193.       if element_set.include?(id)
  194.         return true
  195.       end
  196.       return false
  197.     end
  198.     def plus_kind
  199.       return nil if @description.split(/类型:/)[1] == nil
  200.       return @description.split(/类型:/)[1].to_s
  201.     end
  202.   end
  203. end
  204. class Game_Actor < Game_Battler
  205.   def get_tao_num(tao)
  206.     tao_num = 0
  207.     @tao = tao
  208.     armors = []
  209.     for i in 0...4
  210.       armors[i] = []
  211.     end
  212.     for i in 1...$data_armors.size
  213.       case $data_armors[i].kind
  214.       when 0
  215.         armors[0].push(i)
  216.       when 1
  217.         armors[1].push(i)
  218.       when 2
  219.         armors[2].push(i)
  220.       when 3
  221.         armors[3].push(i)
  222.       end
  223.     end
  224.     for i in 0...4
  225.       for id in armors[i]
  226.         armor = $data_armors[id]
  227.         if @tao == armor.tao
  228.           tao_num += 1
  229.           break
  230.         end
  231.       end
  232.     end
  233.     for i in 1...$data_weapons.size
  234.       weapon = $data_weapons[i]
  235.       if weapon.tao == @tao
  236.         tao_num += 1
  237.         break
  238.       end
  239.     end
  240.     return tao_num
  241.   end
  242.   def get_tao
  243.     tao = []
  244.     weapon = $data_weapons[@weapon_id]
  245.     tao.push(weapon.tao) if weapon != nil and weapon.tao != nil
  246.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  247.       armor = $data_armors[i]
  248.       unless armor == nil or tao.include?(armor.tao)
  249.         tao.push(armor.tao) if armor.tao != nil
  250.       end
  251.     end
  252.     return tao
  253.   end
  254.   def tao_whole?(tao)
  255.     @now_tao_num = 0
  256.     @tao_num = get_tao_num(tao)
  257.     weapon = $data_weapons[@weapon_id]
  258.     if weapon != nil and weapon.tao != nil and weapon.tao == tao
  259.       @now_tao_num += 1
  260.     end
  261.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  262.       armor = $data_armors[i]
  263.       unless armor == nil
  264.       if armor != nil and armor.tao != nil and armor.tao == tao
  265.         @now_tao_num += 1
  266.       end
  267.       end
  268.     end
  269.     if @now_tao_num == @tao_num
  270.       return true
  271.     end
  272.     return false
  273.   end
  274.   def get_tao_plus(tao,parameter)
  275.     for i in 1...$data_armors.size
  276.       armor = $data_armors[i]
  277.       if armor.name == tao
  278.         case parameter
  279.         when 0
  280.           return armor.maxhp_plus
  281.         when 1
  282.           return armor.maxsp_plus
  283.         when 2
  284.           return armor.str_plus
  285.         when 3
  286.           return armor.dex_plus
  287.         when 4
  288.           return armor.agi_plus
  289.         when 5
  290.           return armor.int_plus
  291.         when 6
  292.           return armor.atk_plus
  293.         when 7
  294.           return armor.pdef
  295.         when 8
  296.           return armor.mdef
  297.         when 9
  298.           return armor.eva
  299.         when 10
  300.           return [armor.auto_state_id]
  301.         when 11
  302.           return armor.guard_element_set
  303.         when 12
  304.           return armor.guard_state_set
  305.         end
  306.       end
  307.     end
  308.     for i in 1...$data_weapons.size
  309.       weapon = $data_weapons[i]
  310.       if weapon.name == tao
  311.         case parameter
  312.         when 13
  313.           return weapon.element_set
  314.         when 14
  315.           return weapon.plus_state_set
  316.         when 15
  317.           return weapon.minus_state_set
  318.         end
  319.       end
  320.     end
  321.     if parameter < 10
  322.       return 0
  323.     else
  324.       return []
  325.     end
  326.   end
  327.   def get_tao_skill(tao)
  328.     tao_skill_list = []
  329.     for i in 1...$data_skills.size
  330.       skill = $data_skills[i]
  331.       if skill.tao == tao
  332.         tao_skill_list.push(i)
  333.       end
  334.     end
  335.     return tao_skill_list
  336.   end
  337.   def base_maxhp
  338.     n = $data_actors[@actor_id].parameters[0, @level]
  339.     weapon = $data_weapons[@weapon_id]
  340.     armor1 = $data_armors[@armor1_id]
  341.     armor2 = $data_armors[@armor2_id]
  342.     armor3 = $data_armors[@armor3_id]
  343.     armor4 = $data_armors[@armor4_id]
  344.     n += weapon != nil ? weapon.maxhp_plus : 0
  345.     n += armor1 != nil ? armor1.maxhp_plus : 0
  346.     n += armor2 != nil ? armor2.maxhp_plus : 0
  347.     n += armor3 != nil ? armor3.maxhp_plus : 0
  348.     n += armor4 != nil ? armor4.maxhp_plus : 0
  349.     tao_list = get_tao
  350.     for tao in tao_list
  351.       if tao_whole?(tao)
  352.         n += tao_kind_plus(tao,0)
  353.         #n += get_tao_plus(tao,0)
  354.       end
  355.     end
  356.     return n
  357.   end
  358.   def base_maxsp
  359.     n = $data_actors[@actor_id].parameters[1, @level]
  360.     weapon = $data_weapons[@weapon_id]
  361.     armor1 = $data_armors[@armor1_id]
  362.     armor2 = $data_armors[@armor2_id]
  363.     armor3 = $data_armors[@armor3_id]
  364.     armor4 = $data_armors[@armor4_id]
  365.     n += weapon != nil ? weapon.maxsp_plus : 0
  366.     n += armor1 != nil ? armor1.maxsp_plus : 0
  367.     n += armor2 != nil ? armor2.maxsp_plus : 0
  368.     n += armor3 != nil ? armor3.maxsp_plus : 0
  369.     n += armor4 != nil ? armor4.maxsp_plus : 0
  370.     tao_list = get_tao
  371.     for tao in tao_list
  372.       if tao_whole?(tao)
  373.         n += tao_kind_plus(tao,1)
  374.         #n += get_tao_plus(tao,1)
  375.       end
  376.     end
  377.     return n
  378.   end
  379.   def base_str
  380.     n = $data_actors[@actor_id].parameters[2, @level]
  381.     weapon = $data_weapons[@weapon_id]
  382.     armor1 = $data_armors[@armor1_id]
  383.     armor2 = $data_armors[@armor2_id]
  384.     armor3 = $data_armors[@armor3_id]
  385.     armor4 = $data_armors[@armor4_id]
  386.     n += weapon != nil ? weapon.str_plus : 0
  387.     n += armor1 != nil ? armor1.str_plus : 0
  388.     n += armor2 != nil ? armor2.str_plus : 0
  389.     n += armor3 != nil ? armor3.str_plus : 0
  390.     n += armor4 != nil ? armor4.str_plus : 0
  391.     tao_list = get_tao
  392.     for tao in tao_list
  393.       if tao_whole?(tao)
  394.         n += tao_kind_plus(tao,2)
  395.         #n += get_tao_plus(tao,2)
  396.       end
  397.     end
  398.     return [[n, 1].max, 999].min
  399.   end
  400.   def base_dex
  401.     n = $data_actors[@actor_id].parameters[3, @level]
  402.     weapon = $data_weapons[@weapon_id]
  403.     armor1 = $data_armors[@armor1_id]
  404.     armor2 = $data_armors[@armor2_id]
  405.     armor3 = $data_armors[@armor3_id]
  406.     armor4 = $data_armors[@armor4_id]
  407.     n += weapon != nil ? weapon.dex_plus : 0
  408.     n += armor1 != nil ? armor1.dex_plus : 0
  409.     n += armor2 != nil ? armor2.dex_plus : 0
  410.     n += armor3 != nil ? armor3.dex_plus : 0
  411.     n += armor4 != nil ? armor4.dex_plus : 0
  412.     tao_list = get_tao
  413.     for tao in tao_list
  414.       if tao_whole?(tao)
  415.         n += tao_kind_plus(tao,3)
  416.         #n += get_tao_plus(tao,3)
  417.       end
  418.     end
  419.     return [[n, 1].max, 999].min
  420.   end
  421.   def base_agi
  422.     n = $data_actors[@actor_id].parameters[4, @level]
  423.     weapon = $data_weapons[@weapon_id]
  424.     armor1 = $data_armors[@armor1_id]
  425.     armor2 = $data_armors[@armor2_id]
  426.     armor3 = $data_armors[@armor3_id]
  427.     armor4 = $data_armors[@armor4_id]
  428.     n += weapon != nil ? weapon.agi_plus : 0
  429.     n += armor1 != nil ? armor1.agi_plus : 0
  430.     n += armor2 != nil ? armor2.agi_plus : 0
  431.     n += armor3 != nil ? armor3.agi_plus : 0
  432.     n += armor4 != nil ? armor4.agi_plus : 0
  433.     tao_list = get_tao
  434.     for tao in tao_list
  435.       if tao_whole?(tao)
  436.         n += tao_kind_plus(tao,4)
  437.         #n += get_tao_plus(tao,4)
  438.       end
  439.     end
  440.     return [[n, 1].max, 999].min
  441.   end
  442.   def base_int
  443.     n = $data_actors[@actor_id].parameters[5, @level]
  444.     weapon = $data_weapons[@weapon_id]
  445.     armor1 = $data_armors[@armor1_id]
  446.     armor2 = $data_armors[@armor2_id]
  447.     armor3 = $data_armors[@armor3_id]
  448.     armor4 = $data_armors[@armor4_id]
  449.     n += weapon != nil ? weapon.int_plus : 0
  450.     n += armor1 != nil ? armor1.int_plus : 0
  451.     n += armor2 != nil ? armor2.int_plus : 0
  452.     n += armor3 != nil ? armor3.int_plus : 0
  453.     n += armor4 != nil ? armor4.int_plus : 0
  454.     tao_list = get_tao
  455.     for tao in tao_list
  456.       if tao_whole?(tao)
  457.         n += tao_kind_plus(tao,5)
  458.         #n += get_tao_plus(tao,5)
  459.       end
  460.     end
  461.     return [[n, 1].max, 999].min
  462.   end
  463.   def base_atk
  464.     weapon = $data_weapons[@weapon_id]
  465.     armor1 = $data_armors[@armor1_id]
  466.     armor2 = $data_armors[@armor2_id]
  467.     armor3 = $data_armors[@armor3_id]
  468.     armor4 = $data_armors[@armor4_id]
  469.     n = 0
  470.     n += weapon != nil ? weapon.atk : 0
  471.     n += armor1 != nil ? armor1.atk_plus : 0
  472.     n += armor2 != nil ? armor2.atk_plus : 0
  473.     n += armor3 != nil ? armor3.atk_plus : 0
  474.     n += armor4 != nil ? armor4.atk_plus : 0
  475.     tao_list = get_tao
  476.     for tao in tao_list
  477.       if tao_whole?(tao)
  478.         n += tao_kind_plus(tao,6)
  479.         #n += get_tao_plus(tao,6)
  480.       end
  481.     end
  482.     return n
  483.   end
  484.   def base_pdef
  485.     weapon = $data_weapons[@weapon_id]
  486.     armor1 = $data_armors[@armor1_id]
  487.     armor2 = $data_armors[@armor2_id]
  488.     armor3 = $data_armors[@armor3_id]
  489.     armor4 = $data_armors[@armor4_id]
  490.     pdef1 = weapon != nil ? weapon.pdef : 0
  491.     pdef2 = armor1 != nil ? armor1.pdef : 0
  492.     pdef3 = armor2 != nil ? armor2.pdef : 0
  493.     pdef4 = armor3 != nil ? armor3.pdef : 0
  494.     pdef5 = armor4 != nil ? armor4.pdef : 0
  495.     n = pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  496.     tao_list = get_tao
  497.     for tao in tao_list
  498.       n += tao_whole?(tao) ? tao_kind_plus(tao,7): 0
  499.       #n += tao_whole?(tao) ? get_tao_plus(tao,7): 0
  500.     end
  501.     return n
  502.   end
  503.   def base_mdef
  504.     weapon = $data_weapons[@weapon_id]
  505.     armor1 = $data_armors[@armor1_id]
  506.     armor2 = $data_armors[@armor2_id]
  507.     armor3 = $data_armors[@armor3_id]
  508.     armor4 = $data_armors[@armor4_id]
  509.     mdef1 = weapon != nil ? weapon.mdef : 0
  510.     mdef2 = armor1 != nil ? armor1.mdef : 0
  511.     mdef3 = armor2 != nil ? armor2.mdef : 0
  512.     mdef4 = armor3 != nil ? armor3.mdef : 0
  513.     mdef5 = armor4 != nil ? armor4.mdef : 0
  514.     n = mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  515.     tao_list = get_tao
  516.     for tao in tao_list
  517.       n += tao_whole?(tao) ? tao_kind_plus(tao,8): 0
  518.       #n += tao_whole?(tao) ? get_tao_plus(tao,8): 0
  519.     end
  520.     return  n
  521.   end
  522.   def base_eva
  523.     weapon = $data_weapons[@weapon_id]
  524.     armor1 = $data_armors[@armor1_id]
  525.     armor2 = $data_armors[@armor2_id]
  526.     armor3 = $data_armors[@armor3_id]
  527.     armor4 = $data_armors[@armor4_id]
  528.     eva0 = weapon != nil ? weapon.eva_plus : 0
  529.     eva1 = armor1 != nil ? armor1.eva : 0
  530.     eva2 = armor2 != nil ? armor2.eva : 0
  531.     eva3 = armor3 != nil ? armor3.eva : 0
  532.     eva4 = armor4 != nil ? armor4.eva : 0
  533.     n = eva1 + eva2 + eva3 + eva4 + eva0
  534.     tao_list = get_tao
  535.     for tao in tao_list
  536.       n += tao_whole?(tao) ? tao_kind_plus(tao,9): 0
  537.       #n += tao_whole?(tao) ? get_tao_plus(tao,9): 0
  538.     end
  539.     return  n
  540.   end
  541.   alias tao_element_rate element_rate
  542.   def element_rate(element_id)
  543.     result = tao_element_rate(element_id)
  544.     tao_list = get_tao
  545.     for tao in tao_list
  546.       if tao_whole?(tao)
  547.         tao_element_guard = tao_kind_plus(tao,11)
  548.         result/= 2 if tao_element_guard.include?(element_id)
  549.       end
  550.     end
  551.     return result
  552.   end
  553.   alias tao_state_guard? state_guard?
  554.   def state_guard?(state_id)
  555.     tao_list = get_tao
  556.     result = tao_state_guard?(state_id)
  557.     for tao in tao_list
  558.       if !result and tao_whole?(tao)
  559.         tao_state_guard = tao_kind_plus(tao,12)
  560.         result = true if tao_state_guard.include?(state_id)
  561.       end
  562.     end
  563.     return result
  564.   end
  565.   alias tao_element_set element_set
  566.   def element_set
  567.     tao_list = get_tao
  568.     result = tao_element_set
  569.     for tao in tao_list
  570.       if tao_whole?(tao)
  571.         tao_element = tao_kind_plus(tao,13)
  572.         for i in tao_element
  573.           result.push(i) if !result.include?(i)
  574.         end
  575.       end
  576.     end
  577.     return result
  578.   end
  579.   alias tao_plus_state_set plus_state_set
  580.   def plus_state_set
  581.     tao_list = get_tao
  582.     result = tao_plus_state_set
  583.     for tao in tao_list
  584.       if tao_whole?(tao)
  585.         tao_plus_state = tao_kind_plus(tao,14)
  586.         for i in tao_plus_state
  587.           result.push(i) if !result.include?(i)
  588.         end
  589.       end
  590.     end
  591.     return result
  592.   end
  593.   alias tao_minus_state_set minus_state_set
  594.   def minus_state_set
  595.     tao_list = get_tao
  596.     result = tao_minus_state_set
  597.     for tao in tao_list
  598.       if tao_whole?(tao)
  599.         tao_minus_state = tao_kind_plus(tao,15)
  600.         for i in tao_minus_state
  601.           result.push(i) if !result.include?(i)
  602.         end
  603.       end
  604.     end
  605.     return result
  606.   end
  607.   def tao_kind_plus(tao,parameter)
  608.     weapon = $data_weapons[@weapon_id]
  609.     armor1 = $data_armors[@armor1_id]
  610.     armor2 = $data_armors[@armor2_id]
  611.     armor3 = $data_armors[@armor3_id]
  612.     armor4 = $data_armors[@armor4_id]
  613.     n = get_tao_plus(tao,parameter)
  614.     if weapon != nil and tao == weapon.tao
  615.       n += get_tao_plus(weapon.plus_kind,parameter)
  616.     end
  617.     if armor1 != nil and tao == armor1.tao
  618.       n += get_tao_plus(armor1.plus_kind,parameter)
  619.     end
  620.     if armor2 != nil and tao == armor2.tao
  621.       n += get_tao_plus(armor2.plus_kind,parameter)
  622.     end
  623.     if armor3 != nil and tao == armor3.tao
  624.       n += get_tao_plus(armor3.plus_kind,parameter)
  625.     end
  626.     if armor4 != nil and tao == armor4.tao
  627.       n += get_tao_plus(armor4.plus_kind,parameter)
  628.     end
  629.     return n
  630.   end
  631.   alias tao_equip equip
  632.   def equip(equip_type, id)
  633.     tao_equip(equip_type, id)
  634.     tao_list = get_tao
  635.     for tao in tao_list
  636.       tao_skill_list = get_tao_skill(tao)
  637.       for i in tao_skill_list
  638.         learn_skill(i) if tao_whole?(tao)
  639.         forget_skill(i) if skill_learn?(i) and !tao_whole?(tao)
  640.         if $data_weapons[@weapon_id] != nil and
  641.           $data_weapons[@armor1_id] != nil and
  642.           $data_weapons[@armor2_id] != nil and
  643.           $data_weapons[@armor3_id] != nil and
  644.           $data_weapons[@armor4_id] != nil
  645.           if $data_skills[i].plus_kind != $data_weapons[@weapon_id].plus_kind and
  646.             $data_skills[i].plus_kind != $data_weapons[@armor1_id].plus_kind and
  647.             $data_skills[i].plus_kind != $data_weapons[@armor2_id].plus_kind and
  648.             $data_skills[i].plus_kind != $data_weapons[@armor3_id].plus_kind and
  649.             $data_skills[i].plus_kind != $data_weapons[@armor4_id].plus_kind and
  650.             $data_skills[i].plus_kind != nil
  651.             forget_skill(i)
  652.           end
  653.         end
  654.       end
  655.       state_id = get_tao_plus(tao,10)
  656.       for id in state_id
  657.         add_state(id, true) if tao_whole?(tao)
  658.         remove_state(id, true) if state?(id) and !tao_whole?(tao)
  659.       end
  660.     end
  661.   end
  662.   alias tao_setup setup
  663.   def setup(actor_id)
  664.     tao_setup(actor_id)
  665.     tao_list = get_tao
  666.     for tao in tao_list
  667.       tao_skill_list = get_tao_skill(tao)
  668.       for i in tao_skill_list
  669.         if tao_whole?(tao) and
  670.           ($data_skills[i].plus_kind == $data_weapons[@weapon_id].plus_kind or
  671.           $data_skills[i].plus_kind == $data_weapons[@armor1_id].plus_kind or
  672.           $data_skills[i].plus_kind == $data_weapons[@armor2_id].plus_kind or
  673.           $data_skills[i].plus_kind == $data_weapons[@armor3_id].plus_kind or
  674.           $data_skills[i].plus_kind == $data_weapons[@armor4_id].plus_kind)
  675.           learn_skill(i)
  676.         end
  677.       end
  678.       state_id = get_tao_plus(tao,10)
  679.       for id in state_id
  680.         add_state(id, true) if tao_whole?(tao)
  681.       end
  682.     end
  683.   end
  684. end
复制代码

范例工程:
http://rpg.blue/upload_program/f ... �v1.04_85864596.rar
套装成分的设置
武器设置:一个套装可以有N多武器

防具设置:一个套装可以有N多防具

套装附加属性的设置
描述用防具:可以全填满

描述用武器:只填这两项(其实是三项)和名称(还是为套装名)

套装特技的设置
还是只要设置名称就行,人性化吧{/cy}
不常在线,有事PM
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-14
帖子
15
2
发表于 2008-2-18 17:26:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
3
 楼主| 发表于 2008-2-18 19:30:19 | 只看该作者
貌似真的再次被54{/dk}
不常在线,有事PM
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

4
发表于 2008-2-18 19:41:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
5
 楼主| 发表于 2008-2-18 21:43:44 | 只看该作者
其实新版本已经做出来了,我明天再发,如果明天回帖数还没超过一页,干脆不发了{/fn}
orz
不常在线,有事PM
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

6
发表于 2008-2-19 00:34:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
7
 楼主| 发表于 2008-2-19 03:04:34 | 只看该作者
之所以保留v1.00,是因为随着脚本功能的增加,貌似冲突也越来越多,整合也变得越来越难,建议新手还是使用v1.00,稍后我会发布v1.00的修正版本。
更新信息
1.增加套装特技
2.支持每套套装中可以有N多武器N多同类防具
3.完善套装附加属性

  1. #-------------------------------------------------------------------------------
  2. #冰冰套装系统 version 1.02 By 凌冰
  3. #(附带加MAXHP、加MAXSP装备、加回避的武器和加攻击的防具功能)
  4. #(更新信息v1.01:1、增加套装特技。2、增加双防具套装。3、增加套装属性设置)
  5. #(更新信息v1.02:1、支持双套装)
  6. #================================套装的设置================================
  7. #如范例数据库
  8. #只要全部在武器、防具前面加上套装名"凌冰"和"之"
  9. #设置☆套装特技☆
  10. #在特技名称前加套装名"凌冰"和"之",支持多个技能
  11. #接着设置套装附加属性
  12. #在防具里新建防具,无所谓是盾还是头盔什么的,只要名字是套装名"凌冰"
  13. #设置附加属性
  14. #直接在物防、魔防、回避、力量、敏捷、速度、魔力、自动状态、状态防御、属性防御里
  15. #设置相应的附加值。至于攻击、MAXHP、MAXSP的附加值,则需要用到附加功能
  16. #在说明里添加精+数值、灵+数值、攻+数值(要有+号)设置相应附加值
  17. #在武器里新建武器,名字是套装名"凌冰"
  18. #这个只用于描述物理攻击属性、物理攻击附加状态、物理攻击清楚状态(感觉有些浪费)
  19. #,只要设置相应值就行了
  20. #(如果不需要可以不新建这个武器,orz不需要的话不新建那个防具都可以)
  21. #具体设置参考范例
  22. #当然设置的这个防具在游戏中也是可用的,但是不算在套装里
  23. #然后说明一下☆附加功能☆
  24. #同上文关于套装附加属性的设置
  25. #武器在说明里添加精+数值、灵+数值、避+数值(要有+号)设置相应值
  26. #防具在说明里添加精+数值、灵+数值、攻+数值(要有+号)设置相应值
  27. #☆双武器双防具套装功能说明☆
  28. #凌冰套装包含:凌冰之铜剑、凌冰之铜盾、凌冰之铜盔、凌冰之铜铠
  29. #或:          凌冰之铜枪、凌冰之铜盾、凌冰之铜盔、凌冰之铜铠
  30. #上面是version 1.00的范例的设置,你现在可以打开范例工程看,除了密斯利尔和塞因特
  31. #(对比用)全被我改成了凌冰套装,也就是说实现了vesion 1.00不能实现的双防具套装
  32. #功能,其实是N防具N武器套装,只要穿上凌冰套装中任意5件(你也只能穿5件),就能附
  33. #加套装属性。这样,同时也暴露了本脚本的另一个缺陷,见下文第二。当然并没有限制套
  34. #装一定包含5类装备。例如:某套装:武器、头盔1、头盔2、身体、盾。只要装备其中四
  35. #项就行
  36. #☆双套装功能说明☆New!
  37. #如工程中的范例,除凌冰套装外,还有夏桀凌和魔敬轩套装,夏桀凌套装只包括头和身体
  38. #两类,而魔敬轩套装只包括盾和装饰两类。夏桀凌套装的套装属性是精+100,魔敬轩套装
  39. #套装属性是灵+100,同时装备着两个套装后,可以同时附加maxhp+100和maxsp+100。如果
  40. #可以整合装备扩展的话,可以实现三套装、四套装甚至更多(orz)(其实,现在就可以
  41. #实现五套装,但显然没什么太大意义)
  42. #================================脚本的缺陷================================
  43. #我不说你们早晚也会发现的,所以还不如事先承认了
  44. #第一、不能设置套装不全的部分附加,暗黑破坏神里,如果套装不全,而装备的套装数量
  45. #      大于一,就会实现套装属性的部分附加。但是本脚本暂时不具备此功能,也就是说
  46. #      想附加套装属性缺一不可。
  47. #解释:不是我做不到,只是实现这个功能会增加使用这个脚本的人的工作量,而且增加的
  48. #      不是一般的多。
  49. #第二、不能根据套装成分不同变化附加属性。例如上文的凌冰套装,同时装备其他装备,
  50. #      再装备凌冰之铜剑和凌冰之铜枪效果是一样的(在有的游戏中这种情况效果是不一
  51. #      样的)。
  52. #解释:同第一,如果和第一个功能都实现,那……
  53. #其他缺陷和BUG望大家及时反馈给我,发站内短信给我就行
  54. #-------------------------------------------------------------------------------
  55. module RPG
  56.   class Weapon
  57.     def tao
  58.       return nil if @name.split(/之/)[1] == nil
  59.       return @name.split(/之/)[0]
  60.     end
  61.     def maxhp_plus
  62.       return 0 if @description.split(/精+/)[1] == nil
  63.       return @description.split(/精+/)[1].to_i
  64.     end
  65.     def maxsp_plus
  66.       return 0 if @description.split(/灵+/)[1] == nil
  67.       return @description.split(/灵+/)[1].to_i
  68.     end
  69.     def eva_plus
  70.       return 0 if @description.split(/避+/)[1] == nil
  71.       return @description.split(/避+/)[1].to_i
  72.     end
  73.   end
  74.   class Armor
  75.     def tao
  76.       return nil if @name.split(/之/)[1] == nil
  77.       return @name.split(/之/)[0]
  78.     end
  79.     def maxhp_plus
  80.       return 0 if @description.split(/精+/)[1] == nil
  81.       return @description.split(/精+/)[1].to_i
  82.     end
  83.     def maxsp_plus
  84.       return 0 if @description.split(/灵+/)[1] == nil
  85.       return @description.split(/灵+/)[1].to_i
  86.     end
  87.     def atk_plus
  88.       return 0 if @description.split(/攻+/)[1] == nil
  89.       return @description.split(/攻+/)[1].to_i
  90.     end
  91.   end
  92.   class Skill
  93.     def tao
  94.       return nil if @name.split(/之/)[1] == nil
  95.       return @name.split(/之/)[0]
  96.     end
  97.   end
  98. end
  99. class Game_Actor < Game_Battler
  100.   def get_tao_num(tao)
  101.     tao_num = 0
  102.     @tao = tao
  103.     armors = []
  104.     for i in 0...4
  105.       armors[i] = []
  106.     end
  107.     for i in 1...$data_armors.size
  108.       case $data_armors[i].kind
  109.       when 0
  110.         armors[0].push(i)
  111.       when 1
  112.         armors[1].push(i)
  113.       when 2
  114.         armors[2].push(i)
  115.       when 3
  116.         armors[3].push(i)
  117.       end
  118.     end
  119.     for i in 0...4
  120.       for id in armors[i]
  121.         armor = $data_armors[id]
  122.         if @tao == armor.tao
  123.           tao_num += 1
  124.           break
  125.         end
  126.       end
  127.     end
  128.     for i in 1...$data_weapons.size
  129.       weapon = $data_weapons[i]
  130.       if weapon.tao == @tao
  131.         tao_num += 1
  132.         break
  133.       end
  134.     end
  135.     return tao_num
  136.   end
  137.   def get_tao
  138.     tao = []
  139.     weapon = $data_weapons[@weapon_id]
  140.     tao.push(weapon.tao) if weapon != nil and weapon.tao != nil
  141.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  142.       armor = $data_armors[i]
  143.       unless armor == nil or tao.include?(armor.tao)
  144.         tao.push(armor.tao) if armor.tao != nil
  145.       end
  146.     end
  147.     return tao
  148.   end
  149.   def tao_whole?(tao)
  150.     @now_tao_num = 0
  151.     @tao_num = get_tao_num(tao)
  152.     weapon = $data_weapons[@weapon_id]
  153.     if weapon != nil and weapon.tao != nil and weapon.tao == tao
  154.       @now_tao_num += 1
  155.     end
  156.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  157.       armor = $data_armors[i]
  158.       unless armor == nil
  159.       if armor != nil and armor.tao != nil and armor.tao == tao
  160.         @now_tao_num += 1
  161.       end
  162.       end
  163.     end
  164.     if @now_tao_num == @tao_num
  165.       return true
  166.     end
  167.     return false
  168.   end
  169.   def get_tao_plus(tao,parameter)
  170.     for i in 1...$data_armors.size
  171.       armor = $data_armors[i]
  172.       if armor.name == tao
  173.         case parameter
  174.         when 0
  175.           return armor.maxhp_plus
  176.         when 1
  177.           return armor.maxsp_plus
  178.         when 2
  179.           return armor.str_plus
  180.         when 3
  181.           return armor.dex_plus
  182.         when 4
  183.           return armor.agi_plus
  184.         when 5
  185.           return armor.int_plus
  186.         when 6
  187.           return armor.atk_plus
  188.         when 7
  189.           return armor.pdef
  190.         when 8
  191.           return armor.mdef
  192.         when 9
  193.           return armor.eva
  194.         when 10
  195.           return armor.auto_state_id
  196.         when 11
  197.           return armor.guard_element_set
  198.         when 12
  199.           return armor.guard_state_set
  200.         end
  201.       end
  202.     end
  203.     for i in 1...$data_weapons.size
  204.       weapon = $data_weapons[i]
  205.       if weapon.name == tao
  206.         case parameter
  207.         when 13
  208.           return weapon.element_set
  209.         when 14
  210.           return weapon.plus_state_set
  211.         when 15
  212.           return weapon.minus_state_set
  213.         end
  214.       end
  215.     end
  216.     if parameter <= 0
  217.       return 0
  218.     else
  219.       return []
  220.     end
  221.   end
  222.   def get_tao_skill(tao)
  223.     tao_skill_list = []
  224.     for i in 1...$data_skills.size
  225.       skill = $data_skills[i]
  226.       if skill.tao == tao
  227.         tao_skill_list.push(i)
  228.       end
  229.     end
  230.     return tao_skill_list
  231.   end
  232.   def base_maxhp
  233.     n = $data_actors[@actor_id].parameters[0, @level]
  234.     weapon = $data_weapons[@weapon_id]
  235.     armor1 = $data_armors[@armor1_id]
  236.     armor2 = $data_armors[@armor2_id]
  237.     armor3 = $data_armors[@armor3_id]
  238.     armor4 = $data_armors[@armor4_id]
  239.     n += weapon != nil ? weapon.maxhp_plus : 0
  240.     n += armor1 != nil ? armor1.maxhp_plus : 0
  241.     n += armor2 != nil ? armor2.maxhp_plus : 0
  242.     n += armor3 != nil ? armor3.maxhp_plus : 0
  243.     n += armor4 != nil ? armor4.maxhp_plus : 0
  244.     tao_list = get_tao
  245.     for tao in tao_list
  246.       if tao_whole?(tao)
  247.         n += get_tao_plus(tao,0)
  248.       end
  249.     end
  250.     return n
  251.   end
  252.   def base_maxsp
  253.     n = $data_actors[@actor_id].parameters[1, @level]
  254.     weapon = $data_weapons[@weapon_id]
  255.     armor1 = $data_armors[@armor1_id]
  256.     armor2 = $data_armors[@armor2_id]
  257.     armor3 = $data_armors[@armor3_id]
  258.     armor4 = $data_armors[@armor4_id]
  259.     n += weapon != nil ? weapon.maxsp_plus : 0
  260.     n += armor1 != nil ? armor1.maxsp_plus : 0
  261.     n += armor2 != nil ? armor2.maxsp_plus : 0
  262.     n += armor3 != nil ? armor3.maxsp_plus : 0
  263.     n += armor4 != nil ? armor4.maxsp_plus : 0
  264.     tao_list = get_tao
  265.     for tao in tao_list
  266.       if tao_whole?(tao)
  267.         n += get_tao_plus(tao,1)
  268.       end
  269.     end
  270.     return n
  271.   end
  272.   def base_str
  273.     n = $data_actors[@actor_id].parameters[2, @level]
  274.     weapon = $data_weapons[@weapon_id]
  275.     armor1 = $data_armors[@armor1_id]
  276.     armor2 = $data_armors[@armor2_id]
  277.     armor3 = $data_armors[@armor3_id]
  278.     armor4 = $data_armors[@armor4_id]
  279.     n += weapon != nil ? weapon.str_plus : 0
  280.     n += armor1 != nil ? armor1.str_plus : 0
  281.     n += armor2 != nil ? armor2.str_plus : 0
  282.     n += armor3 != nil ? armor3.str_plus : 0
  283.     n += armor4 != nil ? armor4.str_plus : 0
  284.     tao_list = get_tao
  285.     for tao in tao_list
  286.       if tao_whole?(tao)
  287.         n += get_tao_plus(tao,2)
  288.       end
  289.     end
  290.     return [[n, 1].max, 999].min
  291.   end
  292.   def base_dex
  293.     n = $data_actors[@actor_id].parameters[3, @level]
  294.     weapon = $data_weapons[@weapon_id]
  295.     armor1 = $data_armors[@armor1_id]
  296.     armor2 = $data_armors[@armor2_id]
  297.     armor3 = $data_armors[@armor3_id]
  298.     armor4 = $data_armors[@armor4_id]
  299.     n += weapon != nil ? weapon.dex_plus : 0
  300.     n += armor1 != nil ? armor1.dex_plus : 0
  301.     n += armor2 != nil ? armor2.dex_plus : 0
  302.     n += armor3 != nil ? armor3.dex_plus : 0
  303.     n += armor4 != nil ? armor4.dex_plus : 0
  304.     tao_list = get_tao
  305.     for tao in tao_list
  306.       if tao_whole?(tao)
  307.         n += get_tao_plus(tao,3)
  308.       end
  309.     end
  310.     return [[n, 1].max, 999].min
  311.   end
  312.   def base_agi
  313.     n = $data_actors[@actor_id].parameters[4, @level]
  314.     weapon = $data_weapons[@weapon_id]
  315.     armor1 = $data_armors[@armor1_id]
  316.     armor2 = $data_armors[@armor2_id]
  317.     armor3 = $data_armors[@armor3_id]
  318.     armor4 = $data_armors[@armor4_id]
  319.     n += weapon != nil ? weapon.agi_plus : 0
  320.     n += armor1 != nil ? armor1.agi_plus : 0
  321.     n += armor2 != nil ? armor2.agi_plus : 0
  322.     n += armor3 != nil ? armor3.agi_plus : 0
  323.     n += armor4 != nil ? armor4.agi_plus : 0
  324.     tao_list = get_tao
  325.     for tao in tao_list
  326.       if tao_whole?(tao)
  327.         n += get_tao_plus(tao,4)
  328.       end
  329.     end
  330.     return [[n, 1].max, 999].min
  331.   end
  332.   def base_int
  333.     n = $data_actors[@actor_id].parameters[5, @level]
  334.     weapon = $data_weapons[@weapon_id]
  335.     armor1 = $data_armors[@armor1_id]
  336.     armor2 = $data_armors[@armor2_id]
  337.     armor3 = $data_armors[@armor3_id]
  338.     armor4 = $data_armors[@armor4_id]
  339.     n += weapon != nil ? weapon.int_plus : 0
  340.     n += armor1 != nil ? armor1.int_plus : 0
  341.     n += armor2 != nil ? armor2.int_plus : 0
  342.     n += armor3 != nil ? armor3.int_plus : 0
  343.     n += armor4 != nil ? armor4.int_plus : 0
  344.     tao_list = get_tao
  345.     for tao in tao_list
  346.       if tao_whole?(tao)
  347.         n += get_tao_plus(tao,5)
  348.       end
  349.     end
  350.     return [[n, 1].max, 999].min
  351.   end
  352.   def base_atk
  353.     weapon = $data_weapons[@weapon_id]
  354.     armor1 = $data_armors[@armor1_id]
  355.     armor2 = $data_armors[@armor2_id]
  356.     armor3 = $data_armors[@armor3_id]
  357.     armor4 = $data_armors[@armor4_id]
  358.     n = 0
  359.     n += weapon != nil ? weapon.atk : 0
  360.     n += armor1 != nil ? armor1.atk_plus : 0
  361.     n += armor2 != nil ? armor2.atk_plus : 0
  362.     n += armor3 != nil ? armor3.atk_plus : 0
  363.     n += armor4 != nil ? armor4.atk_plus : 0
  364.     tao_list = get_tao
  365.     for tao in tao_list
  366.       if tao_whole?(tao)
  367.         n += get_tao_plus(tao,6)
  368.       end
  369.     end
  370.     return n
  371.   end
  372.   def base_pdef
  373.     weapon = $data_weapons[@weapon_id]
  374.     armor1 = $data_armors[@armor1_id]
  375.     armor2 = $data_armors[@armor2_id]
  376.     armor3 = $data_armors[@armor3_id]
  377.     armor4 = $data_armors[@armor4_id]
  378.     pdef1 = weapon != nil ? weapon.pdef : 0
  379.     pdef2 = armor1 != nil ? armor1.pdef : 0
  380.     pdef3 = armor2 != nil ? armor2.pdef : 0
  381.     pdef4 = armor3 != nil ? armor3.pdef : 0
  382.     pdef5 = armor4 != nil ? armor4.pdef : 0
  383.     n = pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  384.     tao_list = get_tao
  385.     for tao in tao_list
  386.       n += tao_whole?(tao) ? get_tao_plus(tao,7): 0
  387.     end
  388.     return n
  389.   end
  390.   def base_mdef
  391.     weapon = $data_weapons[@weapon_id]
  392.     armor1 = $data_armors[@armor1_id]
  393.     armor2 = $data_armors[@armor2_id]
  394.     armor3 = $data_armors[@armor3_id]
  395.     armor4 = $data_armors[@armor4_id]
  396.     mdef1 = weapon != nil ? weapon.mdef : 0
  397.     mdef2 = armor1 != nil ? armor1.mdef : 0
  398.     mdef3 = armor2 != nil ? armor2.mdef : 0
  399.     mdef4 = armor3 != nil ? armor3.mdef : 0
  400.     mdef5 = armor4 != nil ? armor4.mdef : 0
  401.     n = mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  402.     tao_list = get_tao
  403.     for tao in tao_list
  404.       n += tao_whole?(tao) ? get_tao_plus(tao,8): 0
  405.     end
  406.     return  n
  407.   end
  408.   def base_eva
  409.     weapon = $data_weapons[@weapon_id]
  410.     armor1 = $data_armors[@armor1_id]
  411.     armor2 = $data_armors[@armor2_id]
  412.     armor3 = $data_armors[@armor3_id]
  413.     armor4 = $data_armors[@armor4_id]
  414.     eva0 = weapon != nil ? weapon.eva_plus : 0
  415.     eva1 = armor1 != nil ? armor1.eva : 0
  416.     eva2 = armor2 != nil ? armor2.eva : 0
  417.     eva3 = armor3 != nil ? armor3.eva : 0
  418.     eva4 = armor4 != nil ? armor4.eva : 0
  419.     n = eva1 + eva2 + eva3 + eva4 + eva0
  420.     tao_list = get_tao
  421.     for tao in tao_list
  422.       eva_t = tao_whole?(tao) ? get_tao_plus(tao,9): 0
  423.     end
  424.     return  n
  425.   end
  426.   alias tao_equip equip
  427.   def equip(equip_type, id)
  428.     tao_equip(equip_type, id)
  429.     tao_list = get_tao
  430.     for tao in tao_list
  431.       tao_skill_list = get_tao_skill(tao)
  432.       for i in tao_skill_list
  433.         learn_skill(i) if tao_whole?(tao)
  434.         forget_skill(i) if skill_learn?(i) and !tao_whole?(tao)
  435.       end
  436.       state_id = get_tao_plus(tao,10)
  437.       add_state(state_id, true) if tao_whole?(tao)
  438.       remove_state(state_id, true) if state?(state_id) and !tao_whole?(tao)
  439.     end
  440.   end
  441.   alias tao_setup setup
  442.   def setup(actor_id)
  443.     tao_setup(actor_id)
  444.     tao_list = get_tao
  445.     for tao in tao_list
  446.       tao_skill_list = get_tao_skill(tao)
  447.       for i in tao_skill_list
  448.         learn_skill(i) if tao_whole?(tao)
  449.       end
  450.       state_id = get_tao_plus(tao,10)
  451.       add_state(state_id, true) if tao_whole?(tao)
  452.     end
  453.   end
  454.   alias tao_element_rate element_rate
  455.   def element_rate(element_id)
  456.     result = tao_element_rate(element_id)
  457.     tao_list = get_tao
  458.     for tao in tao_list
  459.       if tao_whole?(tao)
  460.         tao_element_guard = get_tao_plus(tao,11)
  461.         result/= 2 if tao_element_guard.include?(element_id)
  462.       end
  463.     end
  464.     return result
  465.   end
  466.   alias tao_state_guard? state_guard?
  467.   def state_guard?(state_id)
  468.     tao_list = get_tao
  469.     result = tao_state_guard?(state_id)
  470.     for tao in tao_list
  471.       if !result and tao_whole?(tao)
  472.         tao_state_guard = get_tao_plus(tao,12)
  473.         result = true if tao_state_guard.include?(state_id)
  474.       end
  475.     end
  476.     return result
  477.   end
  478.   alias tao_element_set element_set
  479.   def element_set
  480.     tao_list = get_tao
  481.     result = tao_element_set
  482.     for tao in tao_list
  483.       if tao_whole?(tao)
  484.         tao_element = get_tao_plus(tao,13)
  485.         for i in tao_element
  486.           result.push(i) if !result.include?(i)
  487.         end
  488.       end
  489.     end
  490.     return result
  491.   end
  492.   alias tao_plus_state_set plus_state_set
  493.   def plus_state_set
  494.     tao_list = get_tao
  495.     result = tao_plus_state_set
  496.     for tao in tao_list
  497.       if tao_whole?(tao)
  498.         tao_plus_state = get_tao_plus(tao,14)
  499.         for i in tao_plus_state
  500.           result.push(i) if !result.include?(i)
  501.         end
  502.       end
  503.     end
  504.     return result
  505.   end
  506.   alias tao_minus_state_set minus_state_set
  507.   def minus_state_set
  508.     tao_list = get_tao
  509.     result = tao_minus_state_set
  510.     for tao in tao_list
  511.       if tao_whole?(tao)
  512.         tao_minus_state = get_tao_plus(tao,15)
  513.         for i in tao_minus_state
  514.           result.push(i) if !result.include?(i)
  515.         end
  516.       end
  517.     end
  518.     return result
  519.   end
  520. end
复制代码

范例工程:
http://rpg.blue/upload_program/f ... �v1.02_83829929.rar
套装成分的设置
武器设置:一个套装可以有N多武器

防具设置:一个套装可以有N多防具

套装附加属性的设置
描述用防具:可以全填满

描述用武器:只填这两项(其实是三项)和名称(还是为套装名)

套装特技的设置
还是只要设置名称就行,人性化吧{/cy}
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

8
发表于 2008-2-19 03:49:12 | 只看该作者
个人觉得这个名字定义的东西不是很个性化.....还是改成用其他东西设置吧-v-,比如说名字后面跟数字之类~
除此之外都不错啊...不发布可能是因为还要等一下或者与已有的脚本重复了= =
我发布的第一个脚本MS等了一个多月orz...
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
9
 楼主| 发表于 2008-2-19 03:53:13 | 只看该作者
以下引用水迭澜于2008-2-18 19:49:12的发言:

个人觉得这个名字定义的东西不是很个性化.....还是改成用其他东西设置吧-v-
除此之外都不错啊...不发布可能是因为还要等一下或者与已有的脚本重复了= =
我发布的第一个脚本MS等了一个多月orz...

个性化?
实在想不到怎么才能个性化,MS套装设置起来这是比较简单的一种方式,我是从这方面考虑的。另外如果用属性判定,MS更不个性化了
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

10
发表于 2008-2-19 04:35:43 | 只看该作者
其实还是用属性判定之类的比较好
我的意思是,有的人不喜欢用XX之XX之类的名字...这样不大方便他们使用=v=
加油~
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 15:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表