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

Project1

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

[已经解决] 请问,怎么改成装备无限制?可以随意装备

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2014-1-13
帖子
40
跳转到指定楼层
1
发表于 2015-4-24 18:16:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x

比如说,这五个空位可以同时装备5个武器,5个防具,或者5个其他不同类型的装备

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2014-1-13
帖子
40
2
 楼主| 发表于 2015-4-24 18:16:36 | 只看该作者
以前玩过魔界战记,里面就可以装备好几个同样的装备
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2014-1-13
帖子
40
3
 楼主| 发表于 2015-4-24 18:16:37 | 只看该作者

这个能设置成全部么?

点评

看我的脚本···但是默认的初始装备你需要在游戏正式开始前用脚本重新设置  发表于 2015-4-24 21:25
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
发表于 2015-4-24 21:25:09 | 只看该作者
本帖最后由 chd114 于 2015-4-24 17:12 编辑

出错的地方楼主请自行去掉吧?
  1. =begin
  2. 给一个装备多种类型、位置分类,只有角色能使用一个装备下设定的所有类型的装备才能使用
  3. =end
  4. module Chd114 end
  5. module Chd114::Equip#(武器ID为-1~-999,防具ID为1~999)
  6.   #装备位置(0为武器,1开始都是防具)
  7.   Etype = {
  8.   61=>[1,2],
  9.   }
  10.   #装备类型(武器类型为-1~-999,防具类型为1~999)
  11.   Type = {
  12.   -1=>[-2],
  13.   61=>[-2]
  14.   }
  15. end
  16. (-999..999).each{|i|Chd114::Equip::Etype[i]||=[];Chd114::Equip::Type[i]||=[]}
  17. class RPG::EquipItem
  18.   def etypes
  19.     Chd114::Equip::Etype[self.id].push(self.etype_id).uniq
  20.   end
  21.   def types
  22.     i=self.is_a?(RPG::Weapon)? -self.wtype_id : self.atype_id
  23.     Chd114::Equip::Type[self.id].push(i).uniq
  24.   end
  25. end
复制代码
  1. class Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 判定武器类型是否屏蔽
  4.   #--------------------------------------------------------------------------
  5.   def weapon_type_cover?(stype_id)
  6.     cover_weapon.include?(stype_id)
  7.   end
  8.   #--------------------------------------------------------------------------
  9.   # ● 判定防具类型是否屏蔽
  10.   #--------------------------------------------------------------------------
  11.   def armor_type_cover?(stype_id)
  12.     cover_armor.include?(stype_id)
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 获取可用武器类型时除去屏蔽(删除)武器类型
  16.   #--------------------------------------------------------------------------
  17.   def add_weapon_types
  18.     features_set(FEATURE_EQUIP_WTYPE).delete_if &method(:weapon_type_cover?)
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 获取可用防具类型时除去屏蔽(删除)防具类型
  22.   #--------------------------------------------------------------------------
  23.   def add_armor_types
  24.     features_set(FEATURE_EQUIP_ATYPE).delete_if &method(:armor_type_cover?)
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 判定物品是否可以装备
  28.   #--------------------------------------------------------------------------
  29.   def equippable?(item)
  30.     return false if item.is_a?(RPG::Item)
  31.     return false unless item.is_a?(RPG::EquipItem)
  32.     return false if equip_type_sealed?(item.etype_id)
  33.     etid = item.is_a?(RPG::Weapon)? -item.wtype_id : item.atype_id
  34.     cetid = item.is_a?(RPG::Weapon)? -item.id : item.id
  35.     cet=Chd114::Equip::Type[cetid].push(etid).uniq
  36.     equipcan=0
  37.    
  38.     cen=[]
  39.     @equips.each_with_index do |item, i|
  40.       if item.object!=nil
  41.       cen.push(item.object.is_a?(RPG::Weapon)? -item.object.id : item.object.id)
  42.       end
  43.     end
  44.     return false if Chd114::Equip::Number[cetid]<=cen.select{|x|x==cetid}.size
  45.    
  46.     for i in cen
  47.       return false if Chd114::Equip::SameTime[cetid].include?(i)
  48.       return false if Chd114::Equip::SameTime[i].include?(cetid)
  49.     end
  50.    
  51.     for i in cet
  52.       if i<0
  53.       equipcan+=1 if equip_wtype_ok?(-i) && !weapon_type_cover?(-i)
  54.       else
  55.       equipcan+=1 if equip_atype_ok?(i) && !armor_type_cover?(i)
  56.       end
  57.     end
  58.     return true if equipcan==cet.size
  59.     return false
  60.   end
  61. end

  62. class Game_Actor
  63.   #--------------------------------------------------------------------------
  64.   # ● 实例变量
  65.   #--------------------------------------------------------------------------
  66.   attr_writer   :cover_weapon               # 屏蔽武器类型
  67.   attr_writer   :cover_armor                # 屏蔽防具类型
  68.   #--------------------------------------------------------------------------
  69.   # ○ 屏蔽装备类型取得
  70.   #--------------------------------------------------------------------------
  71.   def cover_weapon
  72.     @cover_weapon||=[]
  73.     return @cover_weapon
  74.   end
  75.   def cover_armor
  76.     @cover_armor||=[]
  77.     return @cover_armor
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 更换装备
  81.   #     slot_id : 装备栏 ID
  82.   #     item    : 武器/护甲(为 nil 时装备解除)
  83.   #--------------------------------------------------------------------------
  84.   def change_equip(slot_id, item)
  85.     return unless trade_item_with_party(item, equips[slot_id])
  86.     if item!=nil
  87.       cetid = item.is_a?(RPG::Weapon)? -item.id : item.id
  88.       cet=Chd114::Equip::Etype[cetid].push(item.etype_id).uniq
  89.       return if item && !cet.include?(slot_id)
  90.     end
  91.     @equips[slot_id].object = item
  92.     refresh
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 卸下无法装备的物品
  96.   #     item_gain : 卸下的装备是否保留
  97.   #--------------------------------------------------------------------------
  98.   def release_unequippable_items(item_gain = true)
  99.     loop do
  100.       last_equips = equips.dup
  101.       return if equips == last_equips
  102.     end
  103.       
  104.       @equips.each_with_index do |item, i|
  105.       if item.object!=nil
  106.         cetid = item.is_a?(RPG::Weapon)? -item.object.id : item.object.id
  107.         cet=Chd114::Equip::Etype[cetid].push(item.object.etype_id).uniq
  108.         if !equippable?(item.object) || !cet.include?(equip_slots[i])
  109.           trade_item_with_party(nil, item.object) if item_gain
  110.           item.object = nil
  111.         end
  112.       end
  113.     end
  114.   end
  115. end

  116. class Window_EquipItem < Window_ItemList
  117.   #--------------------------------------------------------------------------
  118.   # ● 查询使用列表中是否含有此物品
  119.   #--------------------------------------------------------------------------
  120.   def include?(item)
  121.     return true if item == nil
  122.     return false unless item.is_a?(RPG::EquipItem)
  123.     return false if @slot_id < 0
  124.     cetid = item.is_a?(RPG::Weapon)? -item.id : item.id
  125.     cet=Chd114::Equip::Etype[cetid].push(item.etype_id).uniq
  126.     return false if !cet.include?(@actor.equip_slots[@slot_id])
  127.     return @actor.equippable?(item)
  128.   end

  129. end
复制代码
除非你还要用到
  1. =begin
  2. 给一个装备数量上的限制、兼容性设置
  3. 使得一件装备无法重复装备或者无法与其他装备同时装备
  4. =end
  5. module Chd114 end
  6. module Chd114::Equip#(武器ID为-1~-999,防具ID为1~999)
  7.   #数量限制(武器ID为-1~-999,防具ID为1~999)
  8.   Number = {
  9.   61=>2,
  10.   }
  11.   #禁止同时装备(武器ID为-1~-999,防具ID为1~999)
  12.   SameTime = {
  13.   61=>[-1],#1号武器无需额外设置禁止使用61号防具
  14.   }
  15. end
  16. (-999..999).each{|i|Chd114::Equip::Number[i]||=999;Chd114::Equip::SameTime[i]||=[]}
复制代码

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2014-1-13
帖子
40
5
 楼主| 发表于 2015-4-24 21:44:51 | 只看该作者
chd114 发表于 2015-4-24 21:25
出错的地方楼主请自行去掉吧?除非你还要用到

谢谢,这个应该怎么用呀?把前两个脚本插入到脚本编辑器里面就可以了么?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
发表于 2015-4-24 21:49:50 | 只看该作者
迷糊咖啡厅 发表于 2015-4-24 04:44
谢谢,这个应该怎么用呀?把前两个脚本插入到脚本编辑器里面就可以了么? ...

对,直接插入,但是默认工程没有61号 防具你得自己添加,第二个脚本的处理部分有第三个脚本的处理所以你不用第三个就会出现弹错那你就把弹错的和第三个脚本相关的部分去掉
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2014-1-13
帖子
40
7
 楼主| 发表于 2015-4-24 22:28:14 | 只看该作者
chd114 发表于 2015-4-24 21:49
对,直接插入,但是默认工程没有61号 防具你得自己添加,第二个脚本的处理部分有第三个脚本的处理所以你 ...

我把三个脚本都插入进去了。第一个脚本8行我改成了  61=>[0,1],
实际测试的时候,61号装备和武器各刷了10个,但是装备不上,不显示
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
发表于 2015-4-24 23:03:16 | 只看该作者
迷糊咖啡厅 发表于 2015-4-24 05:28
我把三个脚本都插入进去了。第一个脚本8行我改成了  61=>[0,1],
实际测试的时候,61号装备和武器各刷了10 ...

你的角色能用61号防具吗?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2014-1-13
帖子
40
9
 楼主| 发表于 2015-4-24 23:09:20 | 只看该作者
chd114 发表于 2015-4-24 23:03
你的角色能用61号防具吗?

在数据库里面给角色添加装备的时候可以选择61号。但是在游戏里,就不行了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

10
发表于 2015-4-24 23:33:42 | 只看该作者
迷糊咖啡厅 发表于 2015-4-24 06:09
在数据库里面给角色添加装备的时候可以选择61号。但是在游戏里,就不行了 ...

角色可以使用的武器防具类型不满足吧···默认设置给61号防具添加了新的防具类型(atype)设置,如果一个防具的所有所属防具类型有不会的都不能装备
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 02:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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