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

Project1

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

[已经解决] 请教判断同时装备1号,2号,3号装备时则免疫第10号状态的写法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
跳转到指定楼层
1
发表于 2021-1-2 07:25:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 taeckle 于 2021-1-2 07:29 编辑

我想在Game_Actor类下的 def state_guard?(state_id) 里面增加个同时装备1号,2号,3号装备时则免疫第10号状态的判断(if),

还请大神多多指教,先谢过了!





附上RPG相关初始代码:

  # ● 判定防御属性
  #     state_id : 属性 ID
  #--------------------------------------------------------------------------
  def state_guard?(state_id)
    for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
      armor = $data_armors
      if armor != nil
        if armor.guard_state_set.include?(state_id)
          return true
        end
      end
    end
    return false
  end

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
2
发表于 2021-1-2 13:07:37 | 只看该作者
你都能说出来效果,翻译过来不就好了?
判断或如果就是if语句 则就是执行语句
同时装备 肯定不是一个类型的装备
所以直接if armor X 三个嵌套 加执行语句
不是所有脚本问题都要提问的 一个游戏要是所有问题都提问 游戏是做不出来的

评分

参与人数 1+1 收起 理由
taeckle + 1 多谢大神指点!

查看全部评分

《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
3
 楼主| 发表于 2021-1-2 14:02:47 | 只看该作者
紫英晓狼1130 发表于 2021-1-2 13:07
你都能说出来效果,翻译过来不就好了?
判断或如果就是if语句 则就是执行语句
同时装备 肯定不是一个类型的 ...

好的,请教下那个for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
是神马意思呢?相当于for i in @armor1_id && for i in @armor2_id && for i in @armor3_id && for i in @armor3_id 吗?

点评

if armor1_id == X if armor2_id == X 这样嵌套if语句应该可以吧?别写在一个判断语句里  发表于 2021-1-3 13:33
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36427
在线时间
10796 小时
注册时间
2009-3-15
帖子
4814
4
发表于 2021-1-2 14:59:20 | 只看该作者
本帖最后由 soulsaga 于 2021-1-2 15:03 编辑
taeckle 发表于 2021-1-2 14:02
好的,请教下那个for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
是神马意思呢?相当于for  ...


相当于for i in @armor1_id && for i in @armor2_id && for i in @armor3_id && for i in @armor3_id

好像没有这种写法..

还有..LZ没有说清楚这点
"里面增加个同时装备1号,2号,3号装备时则免疫第10号状态的判断"
是指不同人装备了123装备时生效还是一个人装备了123装备时生效

萌新不是神仙..並不能算到大佬心中所想的..所以请说清楚要达到的效果绝不能省略..

点评

for i in array就是遍历array中每一个元素的意思,这不是一个特殊语法,in后面中括号的内容是一个数组  发表于 2021-1-4 13:07

评分

参与人数 1+1 收起 理由
taeckle + 1 大神您的问题很犀利!

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33457
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

5
发表于 2021-1-2 16:28:55 | 只看该作者
是这样 ?
  1. arr = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  2. return true if state_id == 10 && [1,2,3].all?{|id| arr.include?(id) }
复制代码

点评

你的 def state_guard? 写在 Game_Actor 里,当然是指仅当前这个 actor  发表于 2021-1-3 09:33
请问下这是指不同人装备了123装备时生效还是一个人装备了123装备时生效呢?  发表于 2021-1-2 19:22

评分

参与人数 2星屑 +50 +2 收起 理由
RyanBern + 50 + 1 认可答案
taeckle + 1 大神暴击,风起云涌!

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
6
发表于 2021-1-2 16:51:28 | 只看该作者
本帖最后由 灯笼菜刀王 于 2021-1-2 17:46 编辑

return true if state_id == 10 and ([@armor1_id, @armor2_id, @armor3_id, @armor4_id] & [1,2,3]).size == 3

评分

参与人数 3星屑 +50 +3 收起 理由
RyanBern + 50 + 1 认可答案
芯☆淡茹水 + 1 我很赞同
taeckle + 1 大神代码,睥睨天下!

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26303
在线时间
5357 小时
注册时间
2016-3-8
帖子
1655
7
发表于 2021-1-2 16:51:42 | 只看该作者
本帖最后由 alexncf125 于 2021-1-2 17:03 编辑

RUBY 代码复制
  1. def state_guard?(state_id)
  2.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  3.       armor = $data_armors[i]
  4.       if armor != nil
  5.         if armor.guard_state_set.include?(state_id)
  6.           return true
  7.         end
  8.       end
  9.     end
  10.     return false
  11.   end
那个for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
当然不是相当于for i in @armor1_id && for i in @armor2_id && for i in @armor3_id && for i in @armor3_id了
而是相当于
RUBY 代码复制
  1. def state_guard?(state_id)
  2.     armor = $data_armors[@armor1_id]
  3.     if armor != nil
  4.       if armor.guard_state_set.include?(state_id)
  5.         return true
  6.       end
  7.     end
  8.     armor = $data_armors[@armor2_id]
  9.     if armor != nil
  10.       if armor.guard_state_set.include?(state_id)
  11.         return true
  12.       end
  13.     end
  14.     armor = $data_armors[@armor3_id]
  15.     if armor != nil
  16.       if armor.guard_state_set.include?(state_id)
  17.         return true
  18.       end
  19.     end
  20.     armor = $data_armors[@armor4_id]
  21.     if armor != nil
  22.       if armor.guard_state_set.include?(state_id)
  23.         return true
  24.       end
  25.     end
  26.     return false
  27.   end
简单来说就是把"重复的, 只有一个元素不同的"脚本简化

评分

参与人数 2星屑 +20 +1 收起 理由
RyanBern + 20 我很赞同
taeckle + 1 我看懂了!我看懂了!大神威武!.

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36427
在线时间
10796 小时
注册时间
2009-3-15
帖子
4814
8
发表于 2021-1-2 19:45:02 | 只看该作者
话说def state_guard?(state_id)
做什么用的?感觉跟LZ需要的不太占边?

点评

说成 状态免疫 比较好懂吧  发表于 2021-1-3 10:55
哦..这样吲..我记错武器了..  发表于 2021-1-2 20:07
这是rpg maker xp的默认脚本设置之一,用于设置穿上装备后免疫的状态,数据库防具一栏里的状态防御  发表于 2021-1-2 19:58
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23186
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

9
发表于 2021-1-2 20:28:02 | 只看该作者
这个功能并不需要脚本
1号装备带自动状态#1
2号装备带自动状态#2
3号装备带自动状态#3
然后将状态#1 #2 #3的状态防御那一栏里面,对状态#10打上[-]

点评

楼主标题里面写着同时装备1,2,3的时候才会免疫状态10  发表于 2021-5-9 21:41
所以都说了LZ没有说清楚要达到的效果..他说的话可以理解成多种不同意思..  发表于 2021-1-3 16:03
唔,这不是任意穿一件装备就可以 -10 么?  发表于 2021-1-3 09:35

评分

参与人数 1+1 收起 理由
taeckle + 1 好,新年一切顺利!

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 04:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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