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

Project1

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

[已经解决] 在随机属性系统中,有没有更好的办法实现套装属性?

[复制链接]

Lv2.观梦者

梦石
0
星屑
582
在线时间
917 小时
注册时间
2013-3-13
帖子
557
跳转到指定楼层
1
发表于 2014-4-7 10:21:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
现在用这样的方法实现套装属性,但是感觉设置起来过于繁琐:
比如我现在有3件套,盾牌+头盔+衣服,能够实现生命恢复+100的效果,
class Game_Actor < Game_Battler
  def shengminghf
    n = 0
    for e in equips.compact do n += e.shengminghf if e.dur > 0 end
##套装属性设置#########################################
  $反叛者之盾  = [401] # 反叛者之盾
  $反叛者战盔  = [402] # 反叛者战盔
  $反叛者战甲  = [403] # 反叛者战甲   
###########反叛者套装###################################################   
    if self.armors[0] != nil and self.armors[1] != nil and self.armors[2] != nil and self.armors[3] != nil
      if self.armors[0] != nil and self.armors.any?{|i| $反叛者之盾.include?(i.base_id)}
        if self.armors[1] != nil and self.armors.any?{|i| $反叛者战盔.include?(i.base_id)}
          if self.armors[2] != nil and self.armors.any?{|i| $反叛者战甲.include?(i.base_id)}
            n += 100
          end
        end
      end  
    end
##########################################################################
end
end

有没有什么更方便的方法来实现套装效果?

Lv1.梦旅人

梦石
0
星屑
55
在线时间
108 小时
注册时间
2014-3-29
帖子
125
来自 5楼
发表于 2014-4-7 21:43:09 | 只看该作者
看看这样行不行,依旧是没有工程不能测试,只能目测。有问题的话请点评我的楼层,这样我才能收到提醒
RUBY 代码复制
  1. module TaoZhuang
  2.   TZ = {
  3.          [401,402,403] => 100, # 反叛者套装系列,生命恢复100
  4.          [404,405,406] => 150, # 正义者套装系列,生命恢复150
  5.          [407,408,409] => 200  # 中立者套装系列,生命恢复200
  6.        }
  7. end
  8.  
  9. class Game_Actor < Game_Battler
  10.   def shengminghf
  11.     n = 0
  12.     for e in equips.compact do n += e.shengminghf if e.dur > 0 end   
  13.     n += taozhuangpanding
  14.   end
  15.  
  16.   def taozhuangpanding
  17.     TaoZhuang::TZ.each{|j|
  18.       if self.armors[0] != nil and self.armors[1] != nil and self.armors[2] != nil and self.armors[3] != nil
  19.         if self.armors[0] != nil and j[0].include?(self.armors[0].base_id)
  20.           if self.armors[1] != nil and j[0].include?(self.armors[1].base_id)
  21.             if self.armors[2] != nil and j[0].include?(self.armors[2].base_id)
  22.               return j[1]
  23.             end
  24.           end
  25.         end
  26.       end
  27.     }
  28.     return 0
  29.   end  
  30. end

点评

@铃仙·优昙华院·因幡 采纳本楼意见,请版主操作~  发表于 2014-4-8 12:30
非常感谢,完全么问题了。采纳!  发表于 2014-4-8 10:49
我明天试验一下。谢谢:)  发表于 2014-4-7 23:02

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
108 小时
注册时间
2014-3-29
帖子
125
2
发表于 2014-4-7 16:55:32 | 只看该作者
没有提供工程,因此没有办法测试,把以下脚本代替你的脚本吧
RUBY 代码复制
  1. module TaoZhuang
  2.   TZ = {
  3.          [401,402,403] => 100, # 反叛者套装系列,生命恢复100
  4.          [404,405,406] => 150, # 正义者套装系列,生命恢复150
  5.          [407,408,409] => 200  # 中立者套装系列,生命恢复200
  6.        }
  7. end
  8.  
  9. class Game_Actor < Game_Battler
  10.   def shengminghf
  11.     n = 0
  12.     for e in equips.compact do n += e.shengminghf if e.dur > 0 end   
  13.     n += taozhuangpanding
  14.   end
  15.  
  16.   def taozhuangpanding
  17.     TaoZhuang::TZ.each{|j|
  18.       if self.armors[0] != nil and self.armors[1] != nil and self.armors[2] != nil and self.armors[3] != nil
  19.         if self.armors[0] != nil and self.armors.any?{|i| j[0].include?(i.base_id)}
  20.           if self.armors[1] != nil and self.armors.any?{|i| j[0].include?(i.base_id)}
  21.             if self.armors[2] != nil and self.armors.any?{|i| j[0].include?(i.base_id)}
  22.               return j[1]
  23.             end
  24.           end
  25.         end
  26.       end
  27.     }
  28.     return 0
  29.   end  
  30. end

点评

这是有BUG的。只要各装备部位不留空,任意装备1件就能获得全部套装属性。  发表于 2014-4-7 21:37
算了,算了,好男不跟女斗……@吴佳佳 你跟兔大站一边,我投降还不成吗?↓  发表于 2014-4-7 21:15
王硕,泥垢了……  发表于 2014-4-7 21:05
非常感谢。这样方便多了。  发表于 2014-4-7 17:18
回复 支持 反对

使用道具 举报

Lv2.观梦者

狂気の月兔

梦石
0
星屑
276
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

3
发表于 2014-4-7 20:06:38 | 只看该作者
我会告诉你可以用 数组交集 简化下面一堆的 if 么?

点评

兔大请点评王硕楼层让他收到提醒吧,话说论坛这个都和谐。***是【考不就代】反过来读  发表于 2014-4-7 21:13
王硕居然敢和兔大顶嘴,太不像话了!我就觉得兔大说得很有道理,兔大别理他!王硕你光看见3个if,难道后面any?的迭***虑了吗?真是的  发表于 2014-4-7 21:07
这里就不仅仅是一个 if 的问题了, 还有 any? 的迭代.  发表于 2014-4-7 21:03
第一个if是下面所有if的前提,所以不算if(@吴佳佳:王硕泥垢了……  发表于 2014-4-7 21:02
感谢兔大的指导,我懂了。3个if似乎还不算多,5个以上if的话我会按照兔大所说数组交集的去化简的。此外LZ的点评好像已经认可答案了呢。  发表于 2014-4-7 21:00
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
917 小时
注册时间
2013-3-13
帖子
557
4
 楼主| 发表于 2014-4-7 21:00:59 | 只看该作者
角色属性比较多,所以需要每个都写一种。
弄了半天。

点评

应该在这里回帖申请结帖:http://bbs.66rpg.com/thread-243912-1-1.html  发表于 2014-4-8 13:17
采纳的话请去置顶帖申请认可  发表于 2014-4-8 11:27
存在BUG。只要装备1件,其他都是杂牌,也可能会获得全部的套装属性,  发表于 2014-4-7 21:28
什么意思呢?还没弄好吗?  发表于 2014-4-7 21:22
回复 支持 反对

使用道具 举报

Lv2.观梦者

狂気の月兔

梦石
0
星屑
276
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

6
发表于 2014-4-7 22:36:18 | 只看该作者
王硕 发表于 2014-4-7 21:43
看看这样行不行,依旧是没有工程不能测试,只能目测。有问题的话请点评我的楼层,这样我才能收到提醒。
mod ...


RUBY 代码复制
  1. def armors_id
  2.     result = []
  3.     unless two_swords_style
  4.       result << @armor1_id
  5.     end
  6.     result << @armor2_id
  7.     result << @armor3_id
  8.     result << @armor4_id
  9.     return result.compact!
  10.   end
  11.  
  12.   def suit?
  13.     TaoZhuang::TZ.each_key do |array|
  14.       return true if array & armors_id == array
  15.     end
  16.     return false
  17.   end
这样其实感觉更好看= =

点评

只是提供个思路, 具体的问问LS吧。> <  发表于 2014-4-8 11:54
请问这段脚本应该怎么用呢?  发表于 2014-4-8 10:50
明天试试,非常感谢版主。  发表于 2014-4-7 23:37

评分

参与人数 1星屑 +175 收起 理由
怪蜀黍 + 175 吾似乎错过了一场辩论赛,好一个交集!.

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 15:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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