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

Project1

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

[已经过期] 求助 关于装备

[复制链接]

Lv2.观梦者

梦石
0
星屑
566
在线时间
146 小时
注册时间
2015-9-23
帖子
17
跳转到指定楼层
1
发表于 2018-8-20 10:31:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
求问有没有办法让某一个装备能够同时装备到多个不同种类的装备槽中?

Lv3.寻梦者

梦石
0
星屑
1696
在线时间
761 小时
注册时间
2013-9-23
帖子
211

开拓者

2
发表于 2018-8-20 11:36:38 | 只看该作者
  1. #==============================================================================
  2. # ■ リンクアイテム  ver1.2 by奈々
  3. # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  4. # ◇使用規約
  5. #  使用される場合はスクリプト作成者として「奈々」を明記して下さい。
  6. #  このスクリプトを改変したり、改変したものを配布するなどは自由ですが
  7. #  その場合も元のスクリプトの作成者として名前は載せて下さい。
  8. #  http://heptanas.mamagoto.com/
  9. # ---------------------------------------------------------------------------
  10. #  アイテム、武器、防具それぞれのメモ欄にタグを書きます。
  11. #  <リンクアイテム ID> <リンク武器 ID> <リンク防具 ID>
  12. #  タグを書いたアイテムは、増減するときに指定したアイテムも同時に増減させます。
  13. #  つまり相互にリンクさせることで、あたかも1つのアイテムとして扱えます。
  14. #
  15. #  この機能を活用することで、アイテムとして使える装備品や
  16. #  装備部位や性能が複数ある装備品などを作ることができます。
  17. #  また、それらのアイテムが全て表示されることを防ぐため
  18. #  メモ欄に<リスト非表示>と書くことでアイテムリストから除外できます。
  19. #  (装備画面や戦闘画面からは選べますのでご安心下さい)
  20. #   
  21. #  もう1つ、メモ欄に<専用スロット 0>などと書くことで
  22. #  その番号のスロットでしか装備できなくすることが出来ます。
  23. #  右手武器、左手武器の使い分けや装飾品の種類を増やす場合に使って下さい。
  24. #==============================================================================
  25. # ■ Game_Party
  26. # ----------------------------------------------------------------------------
  27. #   パーティを扱うクラスです。
  28. #   所持金やアイテムなどの情報が含まれます。
  29. #   このクラスのインスタンスは $game_party で参照されます。
  30. #==============================================================================
  31. class Game_Party < Game_Unit
  32.   #--------------------------------------------------------------------------
  33.   # ● アイテムの増加(減少)
  34.   #   include_equip : 装備品も含める
  35.   #--------------------------------------------------------------------------
  36.   alias nana_gain_item gain_item
  37.   def gain_item(item, amount, include_equip = false)
  38.     nana_gain_item(item, amount, include_equip)
  39.     item.note.scan(/<リンクアイテム\s*(\d+)>/){|s|
  40.     nana_gain_item($data_items[$1.to_i], amount, include_equip)
  41.     } if item
  42.     item.note.scan(/<リンク武器\s*(\d+)>/){|s|
  43.     nana_gain_item($data_weapons[$1.to_i], amount, include_equip)
  44.     } if item
  45.     item.note.scan(/<リンク防具\s*(\d+)>/){|s|
  46.     nana_gain_item($data_armors[$1.to_i], amount, include_equip)
  47.     } if item
  48.   end
  49. end
  50. #==============================================================================
  51. # ■ Window_ItemList
  52. # ----------------------------------------------------------------------------
  53. #   アイテム画面で、所持アイテムの一覧を表示するウィンドウです。
  54. #==============================================================================
  55. class Window_ItemList < Window_Selectable
  56.   #--------------------------------------------------------------------------
  57.   # ● アイテムをリストに含めるかどうか
  58.   #--------------------------------------------------------------------------
  59.   alias nana_include? include?
  60.   def include?(item)
  61.     nana_include?(item) && !item.note.include?("<リスト非表示>")
  62.   end
  63. end
  64. #==============================================================================
  65. # ■ Window_EquipItem
  66. # ----------------------------------------------------------------------------
  67. #   装備画面で、装備変更の候補となるアイテムの一覧を表示するウィンドウです。
  68. #==============================================================================
  69. class Window_EquipItem < Window_ItemList
  70.   #--------------------------------------------------------------------------
  71.   # ● アイテムをリストに含めるかどうか(alias再定義)
  72.   #--------------------------------------------------------------------------
  73.   alias x_include? include?
  74.   def include?(item)
  75.     return true if item == nil
  76.     return false if item.note.include?("<専用スロット") &&\
  77.     !item.note.include?("<専用スロット " + @slot_id.to_s + ">")
  78.     return x_include?(item)
  79.   end
  80. end
复制代码


在物品、武器、防具的备注栏里备注
<リンクアイテム ID> <リンク武器 ID> <リンク防具 ID>
来使被备注的物品相互关联
关联在一起的物品、武器、防具,得一俱得,失一俱失。

备注<リスト非表示>的物品、武器、防具不会显示在物品列表里
备注<専用スロット ID>的武器、防具将只能装备在ID指定的装备栏里。

!!实现你所需效果的方法!!
比如名字相同的4个防具,设定如下
防具a,id是1,种类头盔,备注<リンク防具 2><リンク防具 3><リンク防具 4>
防具b,id是2,种类护甲,备注<リンク防具 1><リンク防具 3><リンク防具 4>
防具c,id是3,种类盾牌,备注<リンク防具 1><リンク防具 2><リンク防具 4>
防具d,id是4,种类饰品,备注<リンク防具 1><リンク防具 2><リンク防具 3>
测试结果:
当获得1个abcd任一时,由于关联在一起了,也同时获得其余3个各一个。
当装备了这个abcd任一时,由于关联在一起了,同时失去其余3个各一个,当然你取下装备中的那个后失去的其余3个还会出现的物品栏里。

如果不想物品栏里这么多同名装备就在其中3个备注上<リスト非表示>
尤其适用于用了装备部位扩展的脚本或自改了默认脚本,使得比如饰品被扩展成了同名但不同插槽ID的n个装备栏却又被归为同一分类的情况。

另外,道具和装备也能关联,这就做出了像DQ系列中能在战斗中使用的装备那样的效果。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
566
在线时间
146 小时
注册时间
2015-9-23
帖子
17
3
 楼主| 发表于 2018-8-20 13:50:26 | 只看该作者
午睡的风铃 发表于 2018-8-20 11:36
在物品、武器、防具的备注栏里备注
  
来使被备注的物品相互关联

emmmmm,感觉不太对啊,就是类似轨迹的回路装备,有的孔可以放所有属性的回路,有的孔只能放特定属性的回路,这类效果能做到吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1696
在线时间
761 小时
注册时间
2013-9-23
帖子
211

开拓者

4
发表于 2018-8-21 01:21:32 | 只看该作者
本帖最后由 午睡的风铃 于 2018-8-21 01:38 编辑
tearhgo 发表于 2018-8-20 13:50
emmmmm,感觉不太对啊,就是类似轨迹的回路装备,有的孔可以放所有属性的回路,有的孔只能放特定属性的回 ...


轨迹系列我目前还一个没碰过.......但你的意思我想我懂了。
上面的脚本可以做到你要的效果,缺点是太耗数据库空间。

https://rpg.blue/forum.php?mod=v ... =%E7%A6%81%E7%94%A8
看3楼的回复,研究下这个范例。
这是个可以给一件装备设定能装备在哪个部位的脚本。设定是在脚本里完成的,不需要备注之类的操作。

用2楼的脚本你看这样做行不行:
假定装备栏A的属性是abcd即全属性,B的属性是b,C属性cd,D属性d,
回路1属性ab,做两个同名装备,分别能装备在A和B,关联起来。
回路2属性cd,做三个同名装备,分别能装备在A、C、D,关联起来。
类推....
缺点是如果这样的装备太多,那数据库的999空间很快就不见了.....
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
566
在线时间
146 小时
注册时间
2015-9-23
帖子
17
5
 楼主| 发表于 2018-8-21 09:13:21 | 只看该作者
午睡的风铃 发表于 2018-8-21 01:21
轨迹系列我目前还一个没碰过.......但你的意思我想我懂了。
上面的脚本可以做到你要的效果,缺点是太耗数 ...

嗯,我再研究一下,感谢
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6211
在线时间
604 小时
注册时间
2017-9-27
帖子
251
6
发表于 2018-8-28 14:26:48 | 只看该作者
本帖最后由 天浩 于 2018-8-28 14:29 编辑

  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取装备栏的数组
  4.   #--------------------------------------------------------------------------
  5.   def equip_slots
  6.     return [0,0,2,3,4,4,4] if dual_wield?       # 双持武器
  7.     return [0,1,2,3,4,4,4]                      # 普通
  8.   end
  9. end

  10. #==============================================================================
  11. # 此脚本来自 www.66rpg.com
  12. #------------------------------------------------------------------------------
  13. #  功能:[RMVA]增加装备栏数量
  14. #  作者:后知后觉([email protected]
  15. #  版本:v1.1 2012-02-20
  16. #  使用说明:
  17. #       1.在下面设置需要增加的数量以及增加部位的名字
  18. #       2.在数据库-护甲-备注 里写入 @etype[位置编号]
  19. #         默认系统一共有5个装备位置.占用了0~4号
  20. #         所以扩展出来的装备栏位置编号是从 5 开始.比如 @etype[5]  @etype[6]
  21. #       3.在扩展位置上给角色设置初始装备的方法
  22. #         在 数据库-角色-备注 里写入 @add_equips[装备1ID,装备2ID.....]
  23. #         每个ID中间由半角的 , 分开 比如 @add_equips[61] @add_equips[61,63]
  24. #       4.设置 固定装备 的初始值
  25. #         在 数据库-角色-备注 里写入 @fix_equips[装备位置编号,装备位置编号......]
  26. #         每个编号间由半角的 , 分开 比如 @fix_equips[5] @fix_equips[5,6]
  27. #       5.设置 禁用装备 的初始值
  28. #         在 数据库-角色-备注 里写入 @seal_equips[装备位置编号,装备位置编号......]
  29. #         每个编号间由半角的 , 分开 比如 @seal_equips[5] @seal_equips[5,6]
  30. #       6.游戏运行时可以使用:
  31. #           $game_actors[角色ID].fix_equips  来获取该角色被固定装备位置的数组
  32. #           $game_actors[角色ID].seal_equips 来获取该角色被禁用装备位置的数组
  33. #         然后可以使用数组类的 delete 和 push 方法来删除/增加 etype_id
  34. #         来达到解除与启用 固定、禁用的效果
  35. #         比如 $game_actors[1].fix_equips.delete(5) 解除1号角色5号位置的固定
  36. #              $game_actors[2].seal_equips.push(6) 2号角色禁用6号装备位置
  37. #  注意事项:
  38. #       1.上面说的设置初始装备、固定装备、禁用装备都是只针对新扩展部位的
  39. #         默认的前5个装备位置的固定、禁用、设置初始.还请使用RMVA默认方式设置
  40. #       2.状态画面的描绘装备部分.在默认分辨率下.只能描绘6个装备.
  41. #         我小改了一下.但还是觉得不怎么好看.建议你自己重新描绘那一块...
  42. #==============================================================================
  43. module HzhjEquip
  44.   # 设置要增加的装备部位数量
  45.   ETYPE_ADD_NUM = 0
  46.   # 设置要增加的装备部位的名字
  47.   ETYPE_ADD_NAME = ["饰品"]
  48. end
  49. def Vocab.etype(etype_id)
  50.   etypes = $data_system.terms.etypes + HzhjEquip::ETYPE_ADD_NAME
  51.   etypes[etype_id]
  52. end
  53. class RPG::Actor < RPG::BaseItem
  54.   def add_equips
  55.     if /@add_equips\[(.+?)\]/ =~ @note
  56.       result = $1.split(/,/).collect{|str|str.to_i}
  57.       result << 0 while result.size < HzhjEquip::ETYPE_ADD_NUM
  58.     else
  59.       result = Array.new(HzhjEquip::ETYPE_ADD_NUM){0}
  60.     end
  61.     result
  62.   end
  63.   def fix_equips
  64.     if /@fix_equips\[(.+?)\]/ =~ @note
  65.       result = $1.split(/,/).collect{|str|str.to_i}
  66.     else
  67.       result = []
  68.     end
  69.     result
  70.   end
  71.   def seal_equips
  72.     if /@seal_equips\[(.+?)\]/ =~ @note
  73.       result = $1.split(/,/).collect{|str|str.to_i}
  74.     else
  75.       result = []
  76.     end
  77.     result
  78.   end
  79. end
  80. class RPG::Armor < RPG::EquipItem
  81.   def etype_id
  82.     if /@etype\[(.+?)\]/ =~ @note
  83.       return $1.to_i
  84.     else
  85.       return @etype_id
  86.     end
  87.   end
  88. end
  89. class Game_Actor < Game_Battler
  90.   attr_accessor :fix_equips
  91.   attr_accessor :seal_equips
  92.   alias hzhj_old_init_equips_game_actor init_equips
  93.   def init_equips(equips)
  94.     @fix_equips = actor.fix_equips
  95.     @seal_equips = actor.seal_equips
  96.     hzhj_equips = equips.clone
  97.     add_equips = actor.add_equips
  98.     HzhjEquip::ETYPE_ADD_NUM.times{hzhj_equips << add_equips.shift}
  99.     hzhj_old_init_equips_game_actor(hzhj_equips)
  100.   end
  101.   alias hzhj_old_equip_slots_game_actor equip_slots
  102.   def equip_slots
  103.     result = hzhj_old_equip_slots_game_actor
  104.     HzhjEquip::ETYPE_ADD_NUM.times{result << result.size}
  105.     result
  106.   end
  107.   def equip_type_fixed?(etype_id)
  108.     if etype_id > 4
  109.       return @fix_equips.include?(etype_id)
  110.     else
  111.       return super
  112.     end
  113.   end
  114.   def equip_type_sealed?(etype_id)
  115.     if etype_id > 4
  116.       return @seal_equips.include?(etype_id)
  117.     else
  118.       return super
  119.     end
  120.   end
  121. end
  122. class Window_EquipSlot < Window_Selectable
  123.   def actor=(actor)
  124.     return if @actor == actor
  125.     @actor = actor
  126.     create_contents
  127.     refresh
  128.   end
  129. end
  130. class Window_Status < Window_Selectable
  131.   def draw_equipments(x, y)
  132.     x = 240 if @actor.equips.size > 6
  133.     @actor.equips.each_with_index do |item, i|
  134.       dx = x + 150 * (i / 6)
  135.       dy = y + line_height * (i % 6)
  136.       self.draw_item_name_(item, dx, dy, true, 120)
  137.     end
  138.   end
  139. end


复制代码





其实只要这样。~~~改下默认,然后加个装备扩展脚本。嘿嘿~~~


class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 获取装备栏的数组
  #--------------------------------------------------------------------------
  def equip_slots
    return [0,0,2,3,4] if dual_wield?       # 双持武器   
    return [0,1,2,3,4]                      # 普通
  end
end
# 这是VA默认的,数字是对应装备孔的,比如饰品要装3个位置,就像我发上来的脚本一样,后面加上两个4即可~~~然后加上扩展脚本的功能~~~,但是扩展脚本这里扩展位置设置为0即可。~~~~


回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 04:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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