Project1

标题: 求武器、護甲等全通用脚本 [打印本页]

作者: mononobe123    时间: 2019-3-13 22:07
标题: 求武器、護甲等全通用脚本
請問如何製作一個脚本,全部準裝備都是通用的。
原本:武器、盾牌、頭盔、鎧甲、飾品。
我想換成:裝備、裝備、裝備、裝備。(全部都通用的,武器=武器、盾牌、頭盔、鎧甲、飾品。)
作者: 世界第一中二    时间: 2019-3-13 23:28
  1. #==============================================================================
  2. # +++ 装备栏风格扩展 +++
  3. #  by:VIPArcher [email: [email protected]]
  4. #  -- 本脚本来自 https://rpg.blue 使用或转载请保留以上信息。
  5. #==============================================================================
  6. #  ■ 新增装备风格
  7. # 使用说明:在角色备注栏/职业备注栏里备注 <slot_type:x> 则角色变为x号装备风格,
  8. #   一个角色有多个风格同时存在时,最终返回风格编号x最大的那个风格。
  9. #   在防具上备注<etype_id:x>则把该防具设置为第x种类型,默认占用了0-4,追加的由5开始
  10. #   在任何有备注框的地方备注 <fix_equips:x> 固定该位置的装备,固定多个则换行再写
  11. #   在任何有备注框的地方备注 <seal_equips:x> 禁用该位置的装备,禁用多个则换行再写
  12. #   在角色备注栏备注<ini_equips:[a,b,c...n]> 初始化初始装备(此备注将使数据库的初
  13. #   始装备设置失效,并且请把装备对应好位置和确认装备该位置可以装备该装备。)
  14. #   在角色备注栏备注<add_equips:[h,i,j...n]> 追加初始装备(和上面是一样的意思,
  15. #   但是这种不会让数据库的设置无效,只会在后面追加上初始装备。)具体请自己摸索吧
  16. #==============================================================================
  17. $VIPArcherScript ||= {};$VIPArcherScript[:slot_type] = __FILE__ #20140803
  18. #==============================================================================
  19. # ★ 设定部分 ★
  20. #==============================================================================
  21. module VIPArcher

  22.   ETYPE_ADD_NAME = [] #设置要增加的装备位置的名字

  23.   SLOT_TYPE = {
  24.   0 => [0,0,0,0],    # 普通  
  25.   1 => [0,0,0,0],    # 双持武器 (这两个是默认的风格)
  26.   # 从这里开始添加装备风格

  27.   } # <= 这个大括号不能删
  28.   #--------------------------------------------------------------------------
  29.   # ● 追加装备位置用语
  30.   #--------------------------------------------------------------------------
  31.   def Vocab.etype(etype_id)
  32.     etype_name = $data_system.terms.etypes + ETYPE_ADD_NAME
  33.     etype_name[etype_id]
  34.   end
  35. end
  36. #==============================================================================
  37. # ☆ 设定结束 ☆
  38. #==============================================================================
  39. class RPG::Actor < RPG::BaseItem
  40.   #--------------------------------------------------------------------------
  41.   # ● 初始装备数组
  42.   #--------------------------------------------------------------------------
  43.   alias vip_20141119_equips equips
  44.   def equips
  45.     add_equips = []
  46.     $1.split(",").each {|item|add_equips.push item.to_i} if
  47.     @note =~ /<(?:ini_equips|初始装备)[:]\[(.+?)\]>/i
  48.     return add_equips if add_equips != []
  49.     $1.split(",").each {|item|add_equips.push item.to_i} if
  50.     @note =~ /<(?:add_equips|追加初始装备)[:]\[(.+?)\]>/i
  51.     vip_20141119_equips.clone + add_equips
  52.   end
  53. end
  54. #-------------------------------------------------------------------------------
  55. class RPG::Armor < RPG::EquipItem
  56.   #--------------------------------------------------------------------------
  57.   # ● 装备类型
  58.   #--------------------------------------------------------------------------
  59.   def etype_id
  60.     return @note =~ /<(?:etype_id|装备类型)[:]\s*(.*)>/i ? $1.to_i : @etype_id
  61.   end
  62. end
  63. #-------------------------------------------------------------------------------
  64. class Game_BattlerBase
  65.   #--------------------------------------------------------------------------
  66.   # ● 获取装备风格
  67.   #--------------------------------------------------------------------------
  68.   def slot_type
  69.     slot =[]
  70.     feature_objects.each {|obj| slot.push $1.to_i if
  71.     obj.note  =~ /<(?:slot_type|装备风格)[:]\s*(.*)>/i }
  72.     return slot.max || 0
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 判定是否固定装备
  76.   #--------------------------------------------------------------------------
  77.   alias vip_20141119_equip_type_fixed? equip_type_fixed?
  78.   def equip_type_fixed?(etype_id)
  79.     fixed_type = []
  80.     feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each {|line|
  81.     fixed_type.push $1.to_i if line =~ /<(?:fix_equips|固定装备)[:]\s*(.*)>/i}}
  82.     fixed_type.include?(etype_id) || vip_20141119_equip_type_fixed?(etype_id)
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 判定装备是否被禁用
  86.   #--------------------------------------------------------------------------
  87.   alias vip_20141119_equip_type_sealed? equip_type_sealed?
  88.   def equip_type_sealed?(etype_id)
  89.     sealed_type = []
  90.     feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each {|line|
  91.     sealed_type.push $1.to_i if line =~ /<(?:seal_equips|禁用装备)[:]\s*(.*)>/i}}
  92.     sealed_type.include?(etype_id) || vip_20141119_equip_type_sealed?(etype_id)
  93.   end
  94. end
  95. #-------------------------------------------------------------------------------
  96. class Game_Actor < Game_Battler
  97.   #--------------------------------------------------------------------------
  98.   # ● 初始化装备
  99.   #     # 方法覆盖,可能引起冲突
  100.   #--------------------------------------------------------------------------
  101.   def init_equips(equips)
  102.     type_size = VIPArcher::SLOT_TYPE.values.max_by{|type|type.size}.size
  103.     @equips = Array.new(type_size) { Game_BaseItem.new }
  104.     equips.each_with_index do |item_id, i|
  105.       etype_id = index_to_etype_id(i)
  106.       slot_id = empty_slot(etype_id)
  107.       @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
  108.     end
  109.     refresh
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 获取装备栏的数组
  113.   #--------------------------------------------------------------------------
  114.   alias vip_20140803_es equip_slots
  115.   def equip_slots
  116.     return VIPArcher::SLOT_TYPE[slot_type] if
  117.     VIPArcher::SLOT_TYPE[slot_type] != nil
  118.     vip_20140803_es
  119.   end
  120. end
  121. #-------------------------------------------------------------------------------
  122. class Scene_Equip < Scene_MenuBase
  123.   #--------------------------------------------------------------------------
  124.   # ● 生成装备栏窗口
  125.   #--------------------------------------------------------------------------
  126.   alias slot_vip_create_slot_window create_slot_window
  127.   def create_slot_window
  128.     slot_vip_create_slot_window
  129.     @slot_window.create_contents
  130.     @slot_window.refresh
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 物品“确定”
  134.   #--------------------------------------------------------------------------
  135.   alias slot_vip_on_item_ok on_item_ok
  136.   def on_item_ok
  137.     slot_vip_on_item_ok
  138.     @slot_window.create_contents
  139.     @slot_window.refresh
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 指令“全部卸下”
  143.   #--------------------------------------------------------------------------
  144.   alias slot_vip_command_clear command_clear
  145.   def command_clear
  146.     slot_vip_command_clear
  147.     @slot_window.create_contents
  148.     @slot_window.refresh
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 指令“最强装备”
  152.   #--------------------------------------------------------------------------
  153.   alias slot_vip_command_optimize command_optimize
  154.   def command_optimize
  155.     slot_vip_command_optimize
  156.     @slot_window.create_contents
  157.     @slot_window.refresh
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 切换角色
  161.   #--------------------------------------------------------------------------
  162.   alias slot_vip_on_actor_change on_actor_change
  163.   def on_actor_change
  164.     slot_vip_on_actor_change
  165.     @slot_window.create_contents
  166.     @slot_window.refresh
  167.   end
  168. end
复制代码

把这个脚本copy到你的工程里,然后在用语中把武器改名作装备就可以了




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