查看: 13110|回复: 62

[RMVA发布] 【装备风格扩展】ver2.1

[复制链接]

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-9-14 11:09:42 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 VIPArcher 于 2015-9-15 16:21 编辑

之前帮《Dreamerland》这个坑写的脚本。
在上面的游戏里由于要添加一只装备风格,写的时候没去弄扩展性。然后昨天突然觉得这个可能还是蛮有用的,
于是就改了一下发布出来了,不知道能不能帮到大家呢。
VA自带的装备风格只有普通和双持武器。你可以用这个脚本进行扩充。使用方法看注释。

2014.10.10 简单更新了一下,改成@taroxd 教的用特性来读取,支持了装备可以影响装备风格。不过感觉上可能会照成其他的不兼容。如果会出问题请使用旧版本。
更新的目的是为了这个脚本好玩点。
2014.11.19 大更新了一下,因为收到消息说和后知后觉大触的装备栏扩展并不是那么地兼容,于是就重写了一下。现在该脚本也包括了追加装备类型的功能了,于是就多了很多可以备注的东西,具体的大家直接看脚本的注释吧,如有BUG可以直接回帖提出(因为懒,我也没认真测试过这个脚本)
2015.09.15 bug更新,初始装备无法添加额外的装备。https://rpg.blue/thread-383382-1-1.html    感谢@XVI 的汇报
[fold=新版本][pre lang="ruby" line="1"]#==============================================================================
# +++ 装备栏风格扩展 +++
#  by:VIPArcher [email: VIPArcher@sina.com]
#  -- 本脚本来自 https://rpg.blue 使用或转载请保留以上信息。
#==============================================================================
#  ■ 新增装备风格
# 使用说明:在角色备注栏/职业备注栏里备注 <slot_type:x> 则角色变为x号装备风格,
#   一个角色有多个风格同时存在时,最终返回风格编号x最大的那个风格。
#   在防具上备注<etype_id:x>则把该防具设置为第x种类型,默认占用了0-4,追加的由5开始
#   在任何有备注框的地方备注 <fix_equips:x> 固定该位置的装备,固定多个则换行再写
#   在任何有备注框的地方备注 <seal_equips:x> 禁用该位置的装备,禁用多个则换行再写
#   在角色备注栏备注<ini_equips:[a,b,c...n]> 初始化初始装备(此备注将使数据库的初
#   始装备设置失效,并且请把装备对应好位置和确认装备该位置可以装备该装备。)
#   在角色备注栏备注<add_equips:[h,i,j...n]> 追加初始装备(和上面是一样的意思,
#   但是这种不会让数据库的设置无效,只会在后面追加上初始装备。)具体请自己摸索吧
#==============================================================================
$VIPArcherScript ||= {};$VIPArcherScript[:slot_type] = __FILE__ #20150915
#==============================================================================
# ★ 设定部分 ★
#==============================================================================
module VIPArcher

  ETYPE_ADD_NAME = ["腰带", "鞋子"] #设置要增加的装备位置的名字

  SLOT_TYPE = {
  0 => [0,1,2,3,4],    # 普通  
  1 => [0,0,2,3,4],    # 双持武器 (这两个是默认的风格)
  # 从这里开始添加装备风格
  2 => [0,0,0,1,2,3,4], # 看我索爷三刀流
  3 => [4],             # 窝只是个需要保护的NPC装备只要首饰就够了吧。
  4 => [0,2,3,3],       # 233
  5 => [0,1,2,3,4,5,6], # 这里的5,6对应的类型就是上面追加的类型
  # 在这里继续添加类型。编号越大,优先级越高。

  } # <= 这个大括号不能删
  #--------------------------------------------------------------------------
  # ● 追加装备位置用语
  #--------------------------------------------------------------------------
  def Vocab.etype(etype_id)
    etype_name = $data_system.terms.etypes + ETYPE_ADD_NAME
    etype_name[etype_id]
  end
end
#==============================================================================
# ☆ 设定结束 ☆
#==============================================================================
class RPG::Actor < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● 初始装备数组
  #--------------------------------------------------------------------------
  alias vip_20141119_equips equips
  def equips
    add_equips = []
    if @note =~ /<(?:ini_equips|初始装备)[:]\[(.+?)\]>/i
      $1.split(",").each {|item|add_equips.push item.to_i}
      return add_equips
    elsif @note =~ /<(?:ini_equips|初始装备)[:]\[(.+?)\]>/i
      $1.split(",").each {|item|add_equips.push item.to_i}
    end
    vip_20141119_equips.clone + add_equips
  end
end
#-------------------------------------------------------------------------------
class RPG::Armor < RPG::EquipItem
  #--------------------------------------------------------------------------
  # ● 装备类型
  #--------------------------------------------------------------------------
  def etype_id
    @note =~ /<(?:etype_id|装备类型)[:]\s*(.*)>/i ? $1.to_i : @etype_id
  end
end
#-------------------------------------------------------------------------------
class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 获取装备风格
  #--------------------------------------------------------------------------
  def slot_type
    slot =[]
    feature_objects.each {|obj| slot.push $1.to_i if
    obj.note  =~ /<(?:slot_type|装备风格)[:]\s*(.*)>/i }
    return slot.max || 0
  end
  #--------------------------------------------------------------------------
  # ● 判定是否固定装备
  #--------------------------------------------------------------------------
  alias vip_20141119_equip_type_fixed? equip_type_fixed?
  def equip_type_fixed?(etype_id)
    fixed_type = []
    feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each {|line|
    fixed_type.push $1.to_i if line =~ /<(?:fix_equips|固定装备)[:]\s*(.*)>/i}}
    fixed_type.include?(etype_id) || vip_20141119_equip_type_fixed?(etype_id)
  end
  #--------------------------------------------------------------------------
  # ● 判定装备是否被禁用
  #--------------------------------------------------------------------------
  alias vip_20141119_equip_type_sealed? equip_type_sealed?
  def equip_type_sealed?(etype_id)
    sealed_type = []
    feature_objects.each {|obj| obj.note.split(/[\r\n]+/).each {|line|
    sealed_type.push $1.to_i if line =~ /<(?:seal_equips|禁用装备)[:]\s*(.*)>/i}}
    sealed_type.include?(etype_id) || vip_20141119_equip_type_sealed?(etype_id)
  end
end
#-------------------------------------------------------------------------------
class Game_Actor < Game_Battler
  include VIPArcher
  #--------------------------------------------------------------------------
  # ● 初始化装备
  #     # 方法覆盖,可能引起冲突
  #--------------------------------------------------------------------------
  def init_equips(equips)
    type_size = SLOT_TYPE.values.max_by{|type|type.size}.size
    @equips = Array.new(type_size) { Game_BaseItem.new }
    equips.each_with_index do |item_id, i|
      etype_id = equip_slots
      slot_id = empty_slot(etype_id)
      @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
    end
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 获取装备栏的数组
  #--------------------------------------------------------------------------
  alias vip_20140803_es equip_slots
  def equip_slots
    return SLOT_TYPE[slot_type] unless SLOT_TYPE[slot_type].nil?
    vip_20140803_es
  end
end
#-------------------------------------------------------------------------------
class Window_EquipSlot; def refresh; create_contents; super end end
[/pre][/fold]
[fold=旧版本][pre lang="ruby" line="1"]#==============================================================================
# 此脚本来自 rpg.blue
#------------------------------------------------------------------------------
#  ■ 新增装备风格
#  by:VIPArcher
#  使用说明:在角色备注栏/职业备注栏里备注 <slot_type:x> 则角色变为x号装备风格
#  优先读取职业栏的风格备注。
#------------------------------------------------------------------------------
#   ◆ 搭配后知后觉的装备栏扩充脚本风味更佳(需要把他的脚本放在脚本这个上面)
#==============================================================================
module VIPArcher
  SLOT_TYPE = {
  0 => [0,1,2,3,4],    # 普通  
  1 => [0,0,2,3,4],    # 双持武器 (这两个是默认的东西最好别改)
  # 从这里开始添加装备风格
  2 => [0,0,0,2,3,4],  # 看我索爷三刀流
  3 => [4],            # 窝只是个需要保护的NPC装备只要首饰就够了吧。
  4 => [2,3,3]        # 233
  # 在这里继续添加类型。
  } # <= 这个大括号不能删
end

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 获取装备风格
  #--------------------------------------------------------------------------
  def slot_type
    classes = $data_classes[@class_id]
    classes.note  =~ /<slot_type\s*:(.*)>/i
    return $1.to_i if $1!= nil
    actor.note  =~ /<slot_type\s*:(.*)>/i
    return $1.to_i if $1!= nil
    features_set(FEATURE_SLOT_TYPE).max || 0
  end
end
class Game_Actor < Game_Battler
  alias vip_20140803_es equip_slots
  #--------------------------------------------------------------------------
  # ● 获取装备栏的数组
  #--------------------------------------------------------------------------
  def equip_slots
    return VIPArcher::SLOT_TYPE[slot_type] if
    VIPArcher::SLOT_TYPE[slot_type] != nil
    vip_20140803_es
  end
end
class Window_EquipSlot < Window_Selectable
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    create_contents
    refresh
  end
end[/pre][/fold]  
梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2014-9-14 11:58:13 | 显示全部楼层
感觉版主的效率好高。。。每次打开提问区,想回答几个问题,捞点经验,就发现问题都被版主们回答了。。。

点评

话说来6R都两年半了(上一个号12年注册的,后来忘密码了),经验还只有这么点。。。。(→▁→潜水潜习惯了)  发表于 2014-9-14 12:10
(´゚Д゚`)可是不去回答提问者又会说:“我的问题都没人理”  发表于 2014-9-14 12:00
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-9-14 12:11:33 | 显示全部楼层
那个三刀流是把头部防具改成武器了?那六刀流···

点评

你这就不是这个脚本要做的事了。  发表于 2014-9-14 13:13
像类似修罗那种四只手拿刀剑枪杖的直接设置第几个装备槽只能用哪一种武器不行吗0.0  发表于 2014-9-14 13:10
可以,但这个只能扩展装备槽个数,扩充类型请使用后知后觉的装备扩充脚本。  发表于 2014-9-14 13:06
那这个可以用来当装备扩充用吗0.0来个4 => [0,0,0,0,2,3,3]也可以?  发表于 2014-9-14 12:14
这个是直接改了装备槽的。并不是把头部防具改成武器。  发表于 2014-9-14 12:13

评分

参与人数 1星屑 +1 收起 理由
永燃的狂炎 + 1 恶意卖萌

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-9-14 12:22:18 | 显示全部楼层
话说要是角色有个转职之类的情况风格要变怎么破···比如我这里有个角色叫yangxiaolong,残血了的时候是四刀流,满血是双刀流···

点评

已更新。优先读取职业备注。  发表于 2014-9-14 12:58
放职业备注吧?或者直接弄成角色能力···  发表于 2014-9-14 12:30
有道理。以后或许会添加。  发表于 2014-9-14 12:24
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

石油鸡

梦石
0
星屑
179
在线时间
287 小时
注册时间
2014-1-27
回帖
211
发表于 2014-9-14 16:18:27 | 显示全部楼层
看上去好腻害的样纸 可是我用的是XP
唉
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-9-14 16:31:27 | 显示全部楼层
本帖最后由 taroxd 于 2014-9-14 16:34 编辑

VIP你知道有个东西叫做 feature_objects 么…… 想要在备注栏设置「特性」的话就用它~

点评

为了兼容性~  发表于 2014-9-14 17:21
嗯。我发现你把那些基础设置独立出来了。(ΦωΦ)  发表于 2014-9-14 17:07
http://rm.66rpg.com/thread-365973-1-1.html 这个不用 feature_objects 的原因是要考虑优先级。不过意思差不多的  发表于 2014-9-14 16:46
手滑了一个分号= = 嘛不要在意  发表于 2014-9-14 16:44
feature_objects.each {|obj|; return 数据 if 读取到数据 }  发表于 2014-9-14 16:44
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-9-16 21:24:17 | 显示全部楼层
1041235896 发表于 2014-9-13 23:18
看上去好腻害的样纸 可是我用的是XP

XP里面本来就没2刀流···这个恐怕要重写才能用在XP上了吧- -|||
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-9-19 23:02:37 | 显示全部楼层
发现一个小问题···用了这个之后我没法修改默认武器···比如初始就是三刀流的第三把默认武器没有办法设置···用哪一个脚本···

点评

就是在第一个装备位置那按上,会跳到一个没有名字的装备位置,然后退出再进去,反复几次就弹错了···  发表于 2014-10-11 22:07
什么意思?我没试过,不知道呢。  发表于 2014-10-11 22:04
那个装备扩展刚才试了下,果然就算没有效果插得位置也很重要···你的要插到下面···否则直接在装备栏第一个位置按上会跳到莫名其妙的地方···  发表于 2014-10-11 20:59
···我指的是插了之后也没效果···扩充装备那个插上面还是下面  发表于 2014-9-20 09:31
嗯,其实我也没试过,不插那个脚本绝对用不了。  发表于 2014-9-19 23:48
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

 楼主| 发表于 2014-10-10 17:40:39 | 显示全部楼层
本帖最后由 VIPArcher 于 2014-10-10 18:18 编辑

稍微更新了一下,不过我不知道这样做会不会出问题。第47行
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-10-11 23:10:05 | 显示全部楼层
新版本怎么比旧版的还要多2倍···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部