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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
跳转到指定楼层
1
发表于 2015-11-8 21:03:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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


在RMVA里,我是这样修改的
RUBY 代码复制
  1. def item_hit(user, item)
  2.     rate = 1#item.success_rate * 0.01         # 取得成功率
  3.     rate *= (user.hit+ item.success_rate * 0.01 - 0.6 -eva) if item.physical?      # 物理攻击:计算命中率的乘积
  4.     rate *= (user.hit+ item.success_rate * 0.01 - 0.6 -mev) if item.magical?  #魔法攻击:计算命中率的乘积
  5.     return rate                             # 返回计算后的命中率
  6.   end


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

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


JAVASCRIPT 代码复制
  1. //1622
  2.     Game_Action.prototype.itemHit = function(target) {
  3.         if (this.isPhysical()) {
  4.             return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.eva;
  5.         } else if (this.isMagical()) {
  6.             return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.mev;
  7.         }else {
  8.             return this.item().successRate * 0.01;
  9.         }
  10.     };
  11.  
  12.     Game_Action.prototype.itemEva = function(target) {
  13.         if (this.isPhysical()) {
  14.             return target.pha;
  15.         } else if (this.isMagical()) {
  16.             return target.fdr;
  17.         } else {
  18.             return 0;
  19.         }
  20.  
  21. Game_Action.prototype.itemCri = function(target) {
  22.  
  23.     return this.item().damage.critical ? this.subject().cri  - target.cev : 0;
  24.  
  25. };
  26.  
  27.  
  28. //1825
  29. Game_Action.prototype.itemEffectRecoverHp = function(target, effect) {
  30.  
  31.    var value = (target.mhp * effect.value1 + effect.value2) * target.rec;
  32.  
  33.     if (this.isItem()) {
  34.  
  35.         value *= 1;
  36.  
  37.     }
  38.     value = Math.floor(value);
  39.  
  40.     if (value !== 0) {
  41.  
  42.         target.gainHp(value);
  43.  
  44.         this.makeSuccess(target);
  45.  
  46.     }
  47.  
  48. };
  49.  
  50.  
  51.  
  52. Game_Action.prototype.itemEffectRecoverMp = function(target, effect) {
  53.  
  54.     var value = (target.mmp * effect.value1 + effect.value2) * target.rec;
  55.  
  56.     if (this.isItem()) {
  57.  
  58.         value *= 1;
  59.  
  60.     }
  61.  
  62.     value = Math.floor(value);
  63.  
  64.     if (value !== 0) {
  65.  
  66.         target.gainMp(value);
  67.  
  68.         this.makeSuccess(target);
  69.  
  70.     }
  71.  
  72. };


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

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

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

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

点评

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

评分

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

查看全部评分

Lv1.梦旅人

梦石
0
星屑
65
在线时间
385 小时
注册时间
2007-7-27
帖子
4106

开拓者

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

使用道具 举报

Lv1.梦旅人

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

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
4
 楼主| 发表于 2015-11-9 13:14:29 | 只看该作者
已经给出初步的脚本,请指教
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2015-11-9 16:42:33 | 只看该作者
lirn 发表于 2015-11-9 13:14
已经给出初步的脚本,请指教

你都写完了,还指教什么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
6
 楼主| 发表于 2015-11-9 20:59:17 | 只看该作者
本帖最后由 lirn 于 2015-11-10 01:32 编辑
taroxd 发表于 2015-11-9 16:42
你都写完了,还指教什么?


就是想问

1:有没有问题。

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

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

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

必杀倍数我找到了。

JAVASCRIPT 代码复制
  1. Game_Action.prototype.applyCritical = function(damage) {
  2.     return damage * 3;
  3. };


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

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

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

比如说这样?

JAVASCRIPT 代码复制
  1. Game_Action.prototype.itemCri = function(target) {
  2.  
  3.     var bisha = this.subject().luk
  4.     return this.item().damage.critical ? this.subject().cri  - target.cev : 0;
  5.  
  6. };
  7.  
  8. Game_Action.prototype.applyCritical = function(damage) {
  9.     return damage * bisha;

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

7
发表于 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 里也稍作修改
要在函数里使用变量的话,请注意一下变量的作用域
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
8
 楼主| 发表于 2015-11-13 23:16:03 | 只看该作者
JAVASCRIPT 代码复制
  1. //1622
  2.     Game_Action.prototype.itemHit = function(target) {
  3.         if (this.isPhysical()) {
  4.             return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.eva;
  5.         } else if (this.isMagical()) {
  6.             return this.item().successRate * 0.01 + this.subject().hit - 0.6 - target.mev;
  7.         }else {
  8.             return this.item().successRate * 0.01;
  9.         }
  10.     };
  11.  
  12.     Game_Action.prototype.itemEva = function(target) {
  13.         if (this.isPhysical()) {
  14.             return target.pha;
  15.         } else if (this.isMagical()) {
  16.             return target.fdr;
  17.         } else {
  18.             return 0;
  19.         }
  20.  
  21. Game_Action.prototype.itemCri = function(target) {
  22.  
  23.     return this.item().damage.critical ? this.subject().cri  - target.cev : 0;
  24.  
  25. };
  26.  
  27. //1719
  28. Game_Action.prototype.applyCritical = function(damage) {
  29.     return damage * 2;
  30. };
  31.  
  32.  
  33. //1825
  34. Game_Action.prototype.itemEffectRecoverHp = function(target, effect) {
  35.  
  36.    var value = (target.mhp * effect.value1 + effect.value2) * target.rec;
  37.  
  38.     if (this.isItem()) {
  39.  
  40.         value *= 1;
  41.  
  42.     }
  43.     value = Math.floor(value);
  44.  
  45.     if (value !== 0) {
  46.  
  47.         target.gainHp(value);
  48.  
  49.         this.makeSuccess(target);
  50.  
  51.     }
  52.  
  53. };
  54.  
  55.  
  56.  
  57. Game_Action.prototype.itemEffectRecoverMp = function(target, effect) {
  58.  
  59.     var value = (target.mmp * effect.value1 + effect.value2) * target.rec;
  60.  
  61.     if (this.isItem()) {
  62.  
  63.         value *= 1;
  64.  
  65.     }
  66.  
  67.     value = Math.floor(value);
  68.  
  69.     if (value !== 0) {
  70.  
  71.         target.gainMp(value);
  72.  
  73.         this.makeSuccess(target);
  74.  
  75.     }
  76.  
  77. };



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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
帖子
799
9
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 15:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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