Project1

标题: 请教条件当第1,2,3号敌人同时在战斗队伍里且都HP>0的写法 [打印本页]

作者: taeckle    时间: 2019-11-8 01:53
标题: 请教条件当第1,2,3号敌人同时在战斗队伍里且都HP>0的写法
咱想在Skill_effect里做个套路:

“当第1,2,3号敌人都在队伍时则这3个人使用任何技能时技能的威力提升30%”

实在不想用for来写.......

还请大神指点一二,先谢过了!


作者: soulsaga    时间: 2019-11-8 15:09
本帖最后由 soulsaga 于 2019-11-8 16:04 编辑

你需要的很多大神都给过你了..还不能活学活用? [

RUBY 代码复制
  1. if user.is_a?(Game_Enemy) and ([1,2,3] & $game_troop.enemies.id).size==3 and $game_troop.enemies.all? {|e| e.hp > 0}

作者: taeckle    时间: 2019-11-8 20:15
本帖最后由 taeckle 于 2019-11-8 20:27 编辑
soulsaga 发表于 2019-11-8 15:09
你需要的很多大神都给过你了..还不能活学活用? [


大神这句那要是用all又该怎么写啊?
作者: miantouchi    时间: 2019-11-8 20:58
本帖最后由 miantouchi 于 2019-11-8 22:22 编辑

建议你看下论坛的【新手向】RMVA - RGSS3脚本入门教程(施工中)https://rpg.blue/thread-398047-1-1.html
遇到不明白的先查下,这次记住了理解了,下一次你就可以模仿着各位大大给的答案,样子,照猫画虎了,
这样写着写着,就成你自己的了。
不能光着急做游戏,学习基础也很重要的,KB哥就让我看基础,我说看不进去,但是发现不看真的不行,
有许多问题,就比如上面你问的,人家即使给你答案了,你自己也不明白。


位和(&),就是将两边的数组里面共同拥有的元素留下(重复的会去除),其他的全部去除。

arr = [1,2,3,4,5,6,7,10]
p arr &= [0,1,5,4,7,8,9]#输出:[1,5,4,7]

所以([1,2,3] & $game_troop.enemies.id).size==3
这句意思就是数组[1,2,3] 和敌人id做 位和,如果1,2,3同时存在就是数组大小等于3

再来说$game_troop.enemies.all? {|e| e.hp > 0}这一句
用F1可以查到
all? {|item| ... }
当所有元素都为真时,返回 true。若某元素为假时,立即返回 false。
若带块调用时,会依次为各个元素来执行块的内容,若所有的结果都为真,则返回 true。一旦块返回假时, 立即返回 false。
p [1,2,3].all? {|v| v > 0}   # => true
p [1,2,3].all? {|v| v > 1}   # => false
所以,$game_troop.enemies 每个hp大于0的情况下才返回true。
哪块有问题望指正。



作者: taeckle    时间: 2019-11-9 00:43
soulsaga 发表于 2019-11-8 15:09
你需要的很多大神都给过你了..还不能活学活用? [

大神请问下你这句([1,2,3] & $game_troop.enemies.id).size==3
里的“& $game_troop.enemies.id” 咱还有点不懂...这“$game_troop.enemies.id”这里不是一个数字吗?
我看数组的位和运算都是数组和数组之间来做的,比如[5,6,7,8] &=[7,8,9,10] 的结果就是[7,8]
那这数组[1,2,3]又该怎么跟一个数字$game_troop.enemies.id做运算呢?
作者: taeckle    时间: 2019-11-9 01:20
miantouchi 发表于 2019-11-8 20:58
建议你看下论坛的【新手向】RMVA - RGSS3脚本入门教程(施工中)https://rpg.blue/thread-398047-1-1.html
...


大神你举的例子的确是数组跟数组做“位和”
但这里的“$game_troop.enemies.id”不是一个数字嘛?
一个数组又该怎么跟一个数字做“位和”呢?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1