Project1
标题: 想修改命中公式(实际使用中插件无效),求指教原因 [打印本页]
作者: lirn 时间: 2015-11-8 21:03
标题: 想修改命中公式(实际使用中插件无效),求指教原因
本帖最后由 lirn 于 2015-11-14 12:51 编辑
虽然我自己本身没有什么语法知识,不过我也不想永远靠人,想以具体事例去学一些基本的知识。
在RMVA里,我是这样修改的
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
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
这个公式的命中是“角色命中+技能命中-60%-回避
如果我没猜错,在MV里应该是这几句了
//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);
}
};
//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);
}
};
在这里,我修改为
物理命中率为“技能成功率% + 角色命中-0.6 - 目标回避” 0.6的含义是60%的技能成功率相当于100的基础命中。
魔法命中率为”技能成功率% + 角色命中-0.6 - 目标魔法回避”
必中的就直接为技能成功率
必杀的几率改为“角色必杀-目标必杀回避”
同时我将物理挡格更改为药物知识,将魔法挡格改为地面伤害,因为这两个不太常用。将药物知识相关的系数改为*1,地面伤害的暂时没改。
另外,我好像没有发现必杀伤害倍率的位置?
=============================
论坛的代码的话,JS代码写的名字叫什么?还是随便写一个就好?
作者: trentswd 时间: 2015-11-8 23:18
this是Game_Action的对象,指的是当前进行的动作
.item是动作涉及的东西(可以是道具 可以是技能),subject是动作的执行者
有三种类型
1 必中 没有回避率 只看成功率
2 物理 用物理命中和物理回避计算
3 魔法 用魔法回避计算
作者: lirn 时间: 2015-11-9 01:20
trentswd 发表于 2015-11-8 23:18
this是Game_Action的对象,指的是当前进行的动作
.item是动作涉及的东西(可以是道具 可以是技能),subjec ...
这些的话,我都会去改。改动之后,这些语句直接放入笔记本之后,更改文件类型为JS就可以用了吗?
作者: lirn 时间: 2015-11-9 13:14
已经给出初步的脚本,请指教
作者: taroxd 时间: 2015-11-9 16:42
lirn 发表于 2015-11-9 13:14
已经给出初步的脚本,请指教
你都写完了,还指教什么?
作者: lirn 时间: 2015-11-9 20:59
本帖最后由 lirn 于 2015-11-10 01:32 编辑
taroxd 发表于 2015-11-9 16:42
你都写完了,还指教什么?
就是想问
1:有没有问题。
2:是不是用记事本保存成JS就可以了?
3:我似乎没找的必杀倍数的位置
=========================================
必杀倍数我找到了。
Game_Action.prototype.applyCritical = function(damage) {
return damage * 3;
};
Game_Action.prototype.applyCritical = function(damage) {
return damage * 3;
};
在VA中,必杀伤害是不能在这里直接跟角色能力挂钩的。而在这里的function也没有target。
如果我想改为跟角色的LUK挂钩,需不需在function()里加上target?
又或者我在必杀判断里增加一个变量?
比如说这样?
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;
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;
作者: taroxd 时间: 2015-11-10 07:35
本帖最后由 taroxd 于 2015-11-10 07:37 编辑
lirn 发表于 2015-11-9 20:59
就是想问
1:有没有问题。
1. 不知道。一切以测试为准
2. 是
默认是没有把 target 参数传入 applyCritical 的。你要传进去当然可以,这样的话需要在 Game_Action.prototype.makeDamageValue 里也稍作修改
要在函数里使用变量的话,请注意一下变量的作用域
作者: lirn 时间: 2015-11-13 23:16
//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);
}
};
//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);
}
};
我目前改的就是这样,但目前的测试,好像这个插件完全没用,姑且不说命中公式没改,必杀也还是3倍,是不是还有什么东西忘了改?
作者: lirn 时间: 2015-11-15 17:36
没人能指教一下吗?为什么放到插件里开启无效?难道我必须要直接修改rpg_objects.js?
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |