Project1

标题: 求救!随机选取目标的语法问题 [打印本页]

作者: 動感小野菊    时间: 2019-3-23 15:35
标题: 求救!随机选取目标的语法问题
本帖最后由 動感小野菊 于 2019-3-23 15:39 编辑

用了 yep的被动状态 做了个技能
使用后随机对一个目标造成伤害
并且再随机对第二个目标造成伤害

问题来了:
如何让此技能的
第二个随机目标 不会与 第一个随机目标重复到?

也就是有 a . b . c 三个敌人
我放了此技能
随机打到了 a
并再随机打到了 b

如何使其不会发生
随机打到了 a 又再随机打到了 a ?
只会发生
随机打到了 a 那就只能随机再去打 b 或 c 目标
也就是不会再去打到 a

语法上不知道如何修改

这是随机选取第一个目标的语法

var targets = user.opponentsUnit().aliveMembers()
var a = Math.floor(Math.random() * targets.length)

现在要随机选取第二个目标但不与第一个目标重复到
语法该如何修改?

var a = Math.floor(Math.random() * targets.length)




作者: soulsaga    时间: 2019-3-23 17:05
本帖最后由 soulsaga 于 2019-3-23 17:12 编辑

整个备注怎么写的?
作者: 動感小野菊    时间: 2019-3-23 18:35
本帖最后由 動感小野菊 于 2019-3-23 18:40 编辑
soulsaga 发表于 2019-3-23 17:05
整个备注怎么写的?


---回合結束時判斷---
<Custom Turn End Effect>

//作用對象為使用者的對手
var targets = user.opponentsUnit().aliveMembers()
//隨機選取敵人
var a = Math.floor(Math.random() * targets.length)
var b = Math.floor(Math.random() * targets.length)
//雷擊傷害1取決於使用者的內力值
var damage1 = Math.round(user.mat * 4)
//雷擊傷害2為雷擊傷害1的50%傷害
var damage2 = Math.round(damage1 * 0.5 )

//如果對手僅有1人
if (user.opponentsUnit().aliveMembers().length == 1 ) {
//隨機對一名敵人造成雷擊傷害1
targets[a].startAnimation(86)
targets[a].gainHp(Math.round(-damage1))
//目標的腐蝕傷害增加此數值
targets[a]._corrosionDamage += damage1
targets[a].startDamagePopup()
targets[a].clearResult()

//如果對手有2人以上時
} else if (user.opponentsUnit().aliveMembers().length >= 2 ) {
//隨機對一名敵人造成雷擊傷害1
targets[a].startAnimation(86)
targets[a].gainHp(Math.round(-damage1))
//目標的腐蝕傷害增加此數值
targets[a]._corrosionDamage += damage1
targets[a].startDamagePopup()
targets[a].clearResult()
//隨機對另一名敵人造成雷擊傷害2
targets[ b ].startAnimation(87)
targets[ b ].gainHp(Math.round(-damage2))
//目標的腐蝕傷害增加此數值
targets[ b ]._corrosionDamage += damage2
targets[ b ].startDamagePopup()
targets[ b ].clearResult()
}

//雷擊致死時播放陣亡效果
if (targets[ a ].isDead()) {
targets[ a ].performCollapse()
}
if (targets[ b ].isDead()) {
targets[ b ].performCollapse()
}

</Custom Turn End Effect>
作者: soulsaga    时间: 2019-3-23 18:51
JAVASCRIPT 代码复制
  1. //隨機選取敵人
  2. var a = Math.floor(Math.random() * targets.length)
  3. var b = Math.floor(Math.random() * targets.length)
  4. for(var i = 0; i < 10; i++){
  5. if (a == b) {b = Math.floor(Math.random() * targets.length)};
  6. }

作者: 動感小野菊    时间: 2019-3-23 19:10
soulsaga 发表于 2019-3-23 18:51
//隨機選取敵人
var a = Math.floor(Math.random() * targets.length)
var b = Math.floor(Math.random() * ...

成功了!!
太感谢了!!  
另外针对这个问题
再追问一题
如何在此状态解除时
调用某公共事件?
不知能否这样写

---状态解除时判断---
<Custom Remove Effect>
执行某公共事件的语法
</Custom Remove Effect>



作者: soulsaga    时间: 2019-3-23 19:18
動感小野菊 发表于 2019-3-23 19:10
成功了!!
太感谢了!!  
另外针对这个问题

那你得有状态解除时时机判断..
作者: 動感小野菊    时间: 2019-3-23 19:21
本帖最后由 動感小野菊 于 2019-3-23 19:25 编辑
soulsaga 发表于 2019-3-23 19:18
那你得有状态解除时时机判断..


有的
下面这个就是
它状态结束时自己就解除
只是不知道调用公共事件语法结构怎么写
这样会方便很多
否则在每个敌群页面都要添加这个判断 实在太不便了 @@


---状态解除时判断---
<Custom Remove Effect>
执行某公共事件
</Custom Remove Effect>



作者: soulsaga    时间: 2019-3-23 19:30
動感小野菊 发表于 2019-3-23 19:21
有的
下面这个就是
它状态结束时自己就解除

$gameTemp.reserveCommonEvent(公共事件ID)
作者: 動感小野菊    时间: 2019-3-23 19:42
soulsaga 发表于 2019-3-23 19:30
$gameTemp.reserveCommonEvent(公共事件ID)

咦 竟然成功了...
之前以为这样套用会出错便没使用
感谢大佬!! 获益良多!!


作者: 兔子o    时间: 2019-9-1 13:10
soulsaga 发表于 2019-3-23 18:51
//隨機選取敵人
var a = Math.floor(Math.random() * targets.length)
var b = Math.floor(Math.random() * ...

这句代码是放到哪里的?
作者: soulsaga    时间: 2019-9-1 13:54
兔子o 发表于 2019-9-1 13:10
这句代码是放到哪里的?

备注吧..要用YEP的插件来着..




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