查看: 1701|回复: 5

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

[复制链接]
梦石
0
星屑
632
在线时间
921 小时
注册时间
2013-3-13
回帖
503
发表于 2014-4-7 10:21:19 | 显示全部楼层 |阅读模式

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

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

×
现在用这样的方法实现套装属性,但是感觉设置起来过于繁琐:
比如我现在有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

有没有什么更方便的方法来实现套装效果?
梦石
0
星屑
55
在线时间
108 小时
注册时间
2014-3-29
回帖
122
发表于 2014-4-7 21:43:09 | 显示全部楼层
看看这样行不行,依旧是没有工程不能测试,只能目测。有问题的话请点评我的楼层,这样我才能收到提醒。
[pre lang="ruby" line="1"]module TaoZhuang
  TZ = {
         [401,402,403] => 100, # 反叛者套装系列,生命恢复100
         [404,405,406] => 150, # 正义者套装系列,生命恢复150
         [407,408,409] => 200  # 中立者套装系列,生命恢复200
       }
end

class Game_Actor < Game_Battler
  def shengminghf
    n = 0
    for e in equips.compact do n += e.shengminghf if e.dur > 0 end   
    n += taozhuangpanding
  end

  def taozhuangpanding
    TaoZhuang::TZ.each{|j|
      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 j[0].include?(self.armors[0].base_id)
          if self.armors[1] != nil and j[0].include?(self.armors[1].base_id)
            if self.armors[2] != nil and j[0].include?(self.armors[2].base_id)
              return j[1]
            end
          end
        end
      end
    }
    return 0
  end  
end[/pre]

点评

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

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
55
在线时间
108 小时
注册时间
2014-3-29
回帖
122
发表于 2014-4-7 16:55:32 | 显示全部楼层
没有提供工程,因此没有办法测试,把以下脚本代替你的脚本吧
[pre lang="ruby" line="1"]module TaoZhuang
  TZ = {
         [401,402,403] => 100, # 反叛者套装系列,生命恢复100
         [404,405,406] => 150, # 正义者套装系列,生命恢复150
         [407,408,409] => 200  # 中立者套装系列,生命恢复200
       }
end
     
class Game_Actor < Game_Battler
  def shengminghf
    n = 0
    for e in equips.compact do n += e.shengminghf if e.dur > 0 end   
    n += taozhuangpanding
  end
  
  def taozhuangpanding
    TaoZhuang::TZ.each{|j|
      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| j[0].include?(i.base_id)}
          if self.armors[1] != nil and self.armors.any?{|i| j[0].include?(i.base_id)}
            if self.armors[2] != nil and self.armors.any?{|i| j[0].include?(i.base_id)}
              return j[1]
            end
          end
        end
      end
    }
    return 0
  end  
end[/pre]

点评

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

使用道具 举报

狂気の月兔

梦石
0
星屑
421
在线时间
1245 小时
注册时间
2009-4-7
回帖
866

贵宾

发表于 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
回复

使用道具 举报

梦石
0
星屑
632
在线时间
921 小时
注册时间
2013-3-13
回帖
503
 楼主| 发表于 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
回复

使用道具 举报

狂気の月兔

梦石
0
星屑
421
在线时间
1245 小时
注册时间
2009-4-7
回帖
866

贵宾

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


[pre lang="ruby" line="1"]def armors_id
    result = []
    unless two_swords_style
      result << @armor1_id
    end
    result << @armor2_id
    result << @armor3_id
    result << @armor4_id
    return result.compact!
  end
  
  def suit?
    TaoZhuang::TZ.each_key do |array|
      return true if array & armors_id == array
    end
    return false
  end[/pre]这样其实感觉更好看= =

点评

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

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部