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

Project1

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

[有事请教] 请问在YEP动作序列中如何用脚本判定命中敌人与否?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3023
在线时间
140 小时
注册时间
2018-1-22
帖子
137
跳转到指定楼层
1
发表于 2018-11-7 18:08:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各位好!


我的想法是利用if语句在YEP的action sequense中加入对技能命中的判定,如果为true,则执行×××action,反之则执行×××action,但是不知道具体的语法是什么,还请各位指点!谢谢!


当然,通过判定伤害似乎也能达到相同的效果,例如damage > 0 可以看成是技能命中了,如果各位能指教一下能达成这种判定的任意方法,感激不尽!




自分自身の神様になること

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

2
发表于 2018-11-7 19:38:48 | 只看该作者
YEP我不知道。
我提供你默认是怎么算的。
//true为MISS
    result.missed = (result.used && Math.random() >= this.itemHit(target));
//true为闪避
    result.evaded = (!result.missed && Math.random() < this.itemEva(target));

点评

你的运用必须是写在这个计算下面的。要是命中率都还没计算,你就开始引用了,那肯定是没有的  发表于 2018-11-8 13:01
感谢提供!我也在objects.js里找到了,不过请问具体应该怎么应用呢? (我记得好像点评过了= =怎么被删了...)  发表于 2018-11-8 10:21
感谢提供,这个我在objects.js中找到了,不过不是很清楚怎么运用  发表于 2018-11-7 22:16
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1573
在线时间
374 小时
注册时间
2017-12-26
帖子
306
3
发表于 2018-11-7 20:09:11 | 只看该作者
if !target.result().missed&&!target.result().evaded
这句后面可以写命中之后的动作

点评

你的运用必须是在计算过missed和evaded之后才行,这两个都还没计算出来,你就运用肯定是没有的  发表于 2018-11-8 09:21
不会吧 miss的话 后面的动作应该不执行才对啊  发表于 2018-11-8 00:54
谢谢你!不过在后续附加状态的话,似乎敌人闪避了攻击还是会受到状态影响  发表于 2018-11-7 22:20
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

4
发表于 2018-11-8 13:03:44 | 只看该作者
本帖最后由 yang1zhi 于 2018-11-8 13:05 编辑

if (result.evaded) {
执行
}
//当这次攻击是闪避的时候,就执行下面内容

if (result.missed) {
执行
}

//当这次攻击是未命中就执行下面内容


闪避的计算公式里写着,必须命中才会计算闪避公式

点评

那你就看看target.result()  发表于 2018-11-8 14:59
插件里没有result.missed,我只看到了target.result()  发表于 2018-11-8 14:52
你按CTRL+F输入result.missed =进行查找  发表于 2018-11-8 14:23
result没定义,那你要先在脚本里找到result这个地方才行啊,不是随便找个地方就开写了啊  发表于 2018-11-8 14:23
是的,result is not defined ,我不清楚插件自己判定命中的方法是什么  发表于 2018-11-8 14:20
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

5
发表于 2018-11-8 15:00:45 | 只看该作者
Game_Action.prototype.apply = function(target) {
    var result = target.result();
    this.subject().clearResult();
    result.clear();
    result.used = this.testApply(target);
    result.missed = (result.used && Math.random() >= this.itemHit(target));
    result.evaded = (!result.missed && Math.random() < this.itemEva(target));
    result.physical = this.isPhysical();
    result.drain = this.isDrain();
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3023
在线时间
140 小时
注册时间
2018-1-22
帖子
137
6
 楼主| 发表于 2018-11-8 15:21:51 | 只看该作者
yang1zhi 发表于 2018-11-8 15:00
Game_Action.prototype.apply = function(target) {
    var result = target.result();
    this.subject( ...

谢谢帮忙!请问插件里的这个代码 是调用了原来objects.js里的函数吗?
Yanfly.BEC.Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
    target._result = null;
    target._result = new Game_ActionResult();
    this.subject()._result = null;
    this.subject()._result = new Game_ActionResult();
自分自身の神様になること
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

7
发表于 2018-11-8 15:30:32 | 只看该作者
我不知道有没有覆盖原文,你可以在原文中添加console.log(1)没执行到就是被覆盖了。

写了Yanfly.BEC.Game_Action_apply = Game_Action.prototype.apply;
再函数里写上Yanfly.BEC.Game_Action_apply,应该就是继承原函数了。
写在Yanfly.BEC.Game_Action_apply上面的是在原函数之前执行
写在Yanfly.BEC.Game_Action_apply下面的是在原函数之后执行

点评

虽然还是不明白如何解决这个问题,但谢谢你了  发表于 2018-11-8 17:49
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33228
在线时间
10499 小时
注册时间
2009-3-15
帖子
4757
8
发表于 2018-11-8 15:43:20 | 只看该作者
全てのポップアップ(ダメージ表示)が再生し終わるまで待機        wait for popups
不知MISS会如何..

点评

改成了显示文本的公共事件来检查变量,数值一直为0无论是否命中 if !target.result().missed && !target.result().evaded change variable 20 = Math.random()*10 end common event:17   发表于 2018-11-8 21:00
配合wait for popups再试试看?  发表于 2018-11-8 17:32
是的 我在动作序列中是这么写的 但是很可惜没有效果  发表于 2018-11-8 17:02
if !target.result().missed  发表于 2018-11-8 16:17
谢谢,这个指令好像不能判定是否命中,因为miss的话也会有弹窗  发表于 2018-11-8 15:53
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3023
在线时间
140 小时
注册时间
2018-1-22
帖子
137
9
 楼主| 发表于 2018-11-8 17:43:59 | 只看该作者
soulsaga 发表于 2018-11-8 15:43
全てのポップアップ(ダメージ表示)が再生し終わるまで待機        wait for popups
不知MISS会如何.. ...

真的谢谢!但是这个判定就是不起作用,头疼。。。
············
wait for popups
  if !target.result().missed && !target.result().evaded
    change variable 20 = Math.random()*10
    if $gameVariables.value(20) >= 0 && $gameVariables.value(20) < 3
        add state 1: target
    if $gameVariables.value(20) >= 3 && $gameVariables.value(20) < 6
        add state 2: target
    if $gameVariables.value(20) >= 6 && $gameVariables.value(20) < 10
        add state 3: target
end

点评

你可以把随机判断去掉看看通不通过..  发表于 2018-11-8 20:45
自分自身の神様になること
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1573
在线时间
374 小时
注册时间
2017-12-26
帖子
306
10
发表于 2018-11-8 19:47:16 | 只看该作者
526396987 发表于 2018-11-8 17:43
真的谢谢!但是这个判定就是不起作用,头疼。。。
············
wait for popups

你具体想怎么写?攻击之后如果命中就有几率附加某一个状态?说详细点
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 05:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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