Project1

标题: MP回复限制一问 [打印本页]

作者: cheukhei96302    时间: 2012-2-3 07:01
标题: MP回复限制一问
我想把队中其中一个角色的MP不可以由物品和队友技能回复,
只可以用该角色自己的技能回复,可以的吗?dsu_plus_rewardpost_czw
作者: linyifei    时间: 2012-2-3 12:51
给队友技能弄上某个属性,比如起名“回复”
然后此人物对该属性的有效度为E,就不会有效果了。
  1. #==============================================================================
  2. # 物品的职业归属 by 沉影不器
  3. # -----------------------------------------------------------------------------
  4. # 功能描述:
  5. #       让物品也跟武器防具那样,属于指定职业
  6. #       当物品为全体有效时,也只对归属的职业同伴有效
  7. # 使用方法:
  8. #       ① 在数据库-物品-备注]中填写 职业 = 第一种职业ID,第二种职业ID...
  9. #          (详见范例)
  10. #       ② 未填写备注的情况下,视同属于所有职业
  11. #==============================================================================
  12. # ■ Array
  13. #==============================================================================
  14. class Array
  15.   # 整个数组所有元素一起化成数值型
  16.   def to_i
  17.     array_to_i=[]
  18.     self.each{|i| array_to_i.push i.to_i}
  19.     return array_to_i
  20.   end
  21.   # 整个数组所有元素一起化成文本型
  22.   def to_s
  23.     array_to_s=[]
  24.     self.each{|s| array_to_s.push s.to_s}
  25.     return array_to_s
  26.   end
  27. end

  28. #==============================================================================
  29. # ■ RPG
  30. #==============================================================================
  31. module RPG
  32.   class Item < UsableItem
  33.     def class_set
  34.       self.read_note('职业').split(/,/).to_i
  35.     end
  36.   end
  37. end

  38. #==============================================================================
  39. # ■ Game_Actor
  40. #==============================================================================
  41. class Game_Actor < Game_Battler
  42.   #--------------------------------------------------------------------------
  43.   # ○ 判断是否可以应用物品
  44.   #     user : 物品使用者
  45.   #     item : 物品
  46.   #--------------------------------------------------------------------------
  47.   def item_effective?(user, item)
  48.     if item.for_dead_friend? != dead?
  49.       return false
  50.     end
  51.     # 判断职业归属
  52.     if user.is_a?(Game_Actor) and !item.class_set.empty?
  53.       unless item.class_set.include?(user.class_id)
  54.         return false
  55.       end
  56.     end
  57.     if not $game_temp.in_battle and item.for_friend?
  58.       return item_test(user, item)
  59.     end
  60.     return true
  61.   end
  62. end

  63. #==============================================================================
  64. # 读取rmvx备注栏指定字段 by 沉影不器
  65. # -----------------------------------------------------------------------------
  66. # 使用方法:
  67. #           在vx数据库比如1号物品的备注栏里书写: 耐久度 = 10
  68. #           读取时使用: p $data_items[1].read_note('耐久度')
  69. # 几点注意:
  70. #           ① 忽略空格
  71. #           ② 返回值为文本格式
  72. #==============================================================================
  73. module RPG
  74.   #=============================================================================
  75.   # ■ BaseItem
  76.   #=============================================================================
  77.   class BaseItem
  78.     #-------------------------------------------------------------------------
  79.     # ○ 读取rmvx备注栏指定字段
  80.     #     section : 字段名
  81.     #     ignore_caps : 忽略大小写(仅字段名)
  82.     #-------------------------------------------------------------------------
  83.     def read_note(section, ignore_caps = false)
  84.       result = ''
  85.       # 忽略大小写时,全部转大写
  86.       section.upcase! if ignore_caps
  87.       # 转symbol方便比较
  88.       s = section.to_sym
  89.       self.note.each_line{|line|
  90.         temp = line.split(/=/)
  91.         # 去掉干扰字符
  92.         temp.each {|i| i.strip!}
  93.         temp[0].upcase! if ignore_caps
  94.         if temp[0].to_sym == s
  95.           unless temp[1] == nil
  96.             result = temp[1]
  97.           end
  98.           # 如果希望同名字段值覆盖前面的字段,去掉下一行
  99.           break
  100.         end
  101.       }
  102.       return result
  103.     end
  104.   end
  105.   #=============================================================================
  106.   # ■ Enemy
  107.   #=============================================================================
  108.   class Enemy
  109.     #-------------------------------------------------------------------------
  110.     # ○ 读取rmvx备注栏指定字段
  111.     #     section : 字段名
  112.     #     ignore_caps : 忽略大小写(仅字段名)
  113.     #-------------------------------------------------------------------------
  114.     def read_note(section, ignore_caps = false)
  115.       result = ''
  116.       # 忽略大小写时,全部转大写
  117.       section.upcase! if ignore_caps
  118.       # 转symbol方便比较
  119.       s = section.to_sym
  120.       self.note.each_line{|line|
  121.         temp = line.split(/=/)
  122.         # 去掉干扰字符
  123.         temp.each {|i| i.strip!}
  124.         temp[0].upcase! if ignore_caps
  125.         if temp[0].to_sym == s
  126.           unless temp[1] == nil
  127.             result = temp[1]
  128.           end
  129.           # 如果希望同名字段值覆盖前面的字段,去掉下一行
  130.           break
  131.         end
  132.       }
  133.       return result
  134.     end
  135.   end
  136.   #=============================================================================
  137.   # ■ State
  138.   #=============================================================================
  139.   class State
  140.     #-------------------------------------------------------------------------
  141.     # ○ 读取rmvx备注栏指定字段
  142.     #     section : 字段名
  143.     #     ignore_caps : 忽略大小写(仅字段名)
  144.     #-------------------------------------------------------------------------
  145.     def read_note(section, ignore_caps = false)
  146.       result = ''
  147.       # 忽略大小写时,全部转大写
  148.       section.upcase! if ignore_caps
  149.       # 转symbol方便比较
  150.       s = section.to_sym
  151.       self.note.each_line{|line|
  152.         temp = line.split(/=/)
  153.         # 去掉干扰字符
  154.         temp.each {|i| i.strip!}
  155.         temp[0].upcase! if ignore_caps
  156.         if temp[0].to_sym == s
  157.           unless temp[1] == nil
  158.             result = temp[1]
  159.           end
  160.           # 如果希望同名字段值覆盖前面的字段,去掉下一行
  161.           break
  162.         end
  163.       }
  164.       return result
  165.     end
  166.   end
  167. end
复制代码
物品无效,可能比较麻烦。在物品栏的备注里填写职业=, , , ,这样子只对这些职业有效,不填写就是对所有职业都有效




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