查看: 5058|回复: 8

[已经过期] 想修改命中公式(实际使用中插件无效),求指教原因

[复制链接]
梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
发表于 2015-11-8 21:03:15 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 lirn 于 2015-11-14 12:51 编辑

虽然我自己本身没有什么语法知识,不过我也不想永远靠人,想以具体事例去学一些基本的知识。


在RMVA里,我是这样修改的
[pre lang="ruby"]  def item_hit(user, item)
    rate = 1#item.success_rate * 0.01         # 取得成功率
    rate *= (user.hit+ item.success_rate * 0.01 - 0.6 -eva) if item.physical?      # 物理攻击:计算命中率的乘积
    rate *= (user.hit+ item.success_rate * 0.01 - 0.6 -mev) if item.magical?  #魔法攻击:计算命中率的乘积
    return rate                             # 返回计算后的命中率
  end[/pre]

这个公式的命中是“角色命中+技能命中-60%-回避

如果我没猜错,在MV里应该是这几句了


[pre lang="JAVASCRIPT"]//1622
    Game_Action.prototype.itemHit = function(target) {
        if (this.isPhysical()) {
            return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.eva;
        } else if (this.isMagical()) {
            return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.mev;
        }else {
            return this.item().successRate * 0.01;
        }
    };
     
    Game_Action.prototype.itemEva = function(target) {
        if (this.isPhysical()) {
            return target.pha;
        } else if (this.isMagical()) {
            return target.fdr;
        } else {
            return 0;
        }

Game_Action.prototype.itemCri = function(target) {

    return this.item().damage.critical ? this.subject().cri  - target.cev : 0;

};


//1825
Game_Action.prototype.itemEffectRecoverHp = function(target, effect) {

   var value = (target.mhp * effect.value1 + effect.value2) * target.rec;

    if (this.isItem()) {

        value *= 1;

    }
    value = Math.floor(value);

    if (value !== 0) {

        target.gainHp(value);

        this.makeSuccess(target);

    }

};



Game_Action.prototype.itemEffectRecoverMp = function(target, effect) {

    var value = (target.mmp * effect.value1 + effect.value2) * target.rec;

    if (this.isItem()) {

        value *= 1;

    }

    value = Math.floor(value);

    if (value !== 0) {

        target.gainMp(value);

        this.makeSuccess(target);

    }

};
[/pre]

在这里,我修改为
物理命中率为“技能成功率% + 角色命中-0.6 - 目标回避” 0.6的含义是60%的技能成功率相当于100的基础命中。
魔法命中率为”技能成功率% + 角色命中-0.6 - 目标魔法回避”
必中的就直接为技能成功率

必杀的几率改为“角色必杀-目标必杀回避”

同时我将物理挡格更改为药物知识,将魔法挡格改为地面伤害,因为这两个不太常用。将药物知识相关的系数改为*1,地面伤害的暂时没改。

另外,我好像没有发现必杀伤害倍率的位置?
=============================
论坛的代码的话,JS代码写的名字叫什么?还是随便写一个就好?

点评

不是填写JS代码,而是填写JAVASCRIPT代码  发表于 2015-11-9 13:23

评分

参与人数 1星屑 +66 收起 理由
余烬之中 + 66 塞糖

查看全部评分

梦石
0
星屑
80
在线时间
386 小时
注册时间
2007-7-27
回帖
4075

开拓者

发表于 2015-11-8 23:18:03 | 显示全部楼层
this是Game_Action的对象,指的是当前进行的动作
.item是动作涉及的东西(可以是道具 可以是技能),subject是动作的执行者
有三种类型
1 必中 没有回避率 只看成功率
2 物理 用物理命中和物理回避计算
3 魔法 用魔法回避计算
吸吸
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2015-11-9 01:20:02 | 显示全部楼层
trentswd 发表于 2015-11-8 23:18
this是Game_Action的对象,指的是当前进行的动作
.item是动作涉及的东西(可以是道具 可以是技能),subjec ...

这些的话,我都会去改。改动之后,这些语句直接放入笔记本之后,更改文件类型为JS就可以用了吗?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2015-11-9 13:14:29 | 显示全部楼层
已经给出初步的脚本,请指教
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-11-9 16:42:33 | 显示全部楼层
lirn 发表于 2015-11-9 13:14
已经给出初步的脚本,请指教

你都写完了,还指教什么?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2015-11-9 20:59:17 | 显示全部楼层
本帖最后由 lirn 于 2015-11-10 01:32 编辑
taroxd 发表于 2015-11-9 16:42
你都写完了,还指教什么?


就是想问

1:有没有问题。

2:是不是用记事本保存成JS就可以了?

3:我似乎没找的必杀倍数的位置

=========================================

必杀倍数我找到了。

[pre lang="JAVASCRIPT"]Game_Action.prototype.applyCritical = function(damage) {
    return damage * 3;
};[/pre]

在VA中,必杀伤害是不能在这里直接跟角色能力挂钩的。而在这里的function也没有target。

如果我想改为跟角色的LUK挂钩,需不需在function()里加上target?

又或者我在必杀判断里增加一个变量?

比如说这样?

[pre lang="JAVASCRIPT"]Game_Action.prototype.itemCri = function(target) {

    var bisha = this.subject().luk
    return this.item().damage.critical ? this.subject().cri  - target.cev : 0;

};

Game_Action.prototype.applyCritical = function(damage) {
    return damage * bisha;
[/pre]
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-11-10 07:35:32 | 显示全部楼层
本帖最后由 taroxd 于 2015-11-10 07:37 编辑
lirn 发表于 2015-11-9 20:59
就是想问

1:有没有问题。


1. 不知道。一切以测试为准
2. 是

默认是没有把 target 参数传入 applyCritical 的。你要传进去当然可以,这样的话需要在 Game_Action.prototype.makeDamageValue 里也稍作修改
要在函数里使用变量的话,请注意一下变量的作用域
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2015-11-13 23:16:03 | 显示全部楼层
[pre lang="JAVASCRIPT"]//1622
    Game_Action.prototype.itemHit = function(target) {
        if (this.isPhysical()) {
            return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.eva;
        } else if (this.isMagical()) {
            return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.mev;
        }else {
            return this.item().successRate * 0.01;
        }
    };
     
    Game_Action.prototype.itemEva = function(target) {
        if (this.isPhysical()) {
            return target.pha;
        } else if (this.isMagical()) {
            return target.fdr;
        } else {
            return 0;
        }

Game_Action.prototype.itemCri = function(target) {

    return this.item().damage.critical ? this.subject().cri  - target.cev : 0;

};

//1719
Game_Action.prototype.applyCritical = function(damage) {
    return damage * 2;
};


//1825
Game_Action.prototype.itemEffectRecoverHp = function(target, effect) {

   var value = (target.mhp * effect.value1 + effect.value2) * target.rec;

    if (this.isItem()) {

        value *= 1;

    }
    value = Math.floor(value);

    if (value !== 0) {

        target.gainHp(value);

        this.makeSuccess(target);

    }

};



Game_Action.prototype.itemEffectRecoverMp = function(target, effect) {

    var value = (target.mmp * effect.value1 + effect.value2) * target.rec;

    if (this.isItem()) {

        value *= 1;

    }

    value = Math.floor(value);

    if (value !== 0) {

        target.gainMp(value);

        this.makeSuccess(target);

    }

};
[/pre]


我目前改的就是这样,但目前的测试,好像这个插件完全没用,姑且不说命中公式没改,必杀也还是3倍,是不是还有什么东西忘了改?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2015-11-15 17:36:05 | 显示全部楼层
没人能指教一下吗?为什么放到插件里开启无效?难道我必须要直接修改rpg_objects.js?

点评

如果现在还没搞懂 可以再去开一贴 把问题说的简洁明了一点(不要一次问很多问题 很乱) 说实话这个帖子看的费劲  发表于 2015-11-24 13:10
帖子15天没有答案 给结了  发表于 2015-11-24 13:09
无效就是脚本有问题 理论上直接放到插件里开启就行了  发表于 2015-11-24 13:08
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部