Project1

标题: 为什么套用YEP的参数插件就会出现转移错误? [打印本页]

作者: 3000Roger    时间: 2024-4-29 23:52
标题: 为什么套用YEP的参数插件就会出现转移错误?
本帖最后由 3000Roger 于 2024-4-30 00:00 编辑

这问题真的是难以理解,我只安装Core Engine

然后之前装了Extra Parameter Formula 额外参数公式
想研究看看,但太过复杂所以放弃,但研究过程中发现只要转移玩家位置就会出现错误

现在装了Hit Accuracy 命中率来试试看,结果出现一样的问题,只要转移玩家位置就会出现错误

我把除了Core Engine以外的插件全部关闭了,状况也一样,我开一个新的专案只装了Core Engine跟Hit Accuracy,没问题了,但把data内档案复制到新专案,问题又出现了, 这我真的百思不得其解

我也认真看过我游戏内的脚本,没有开始就自动运行的...

到底什么原因会导致"玩家转移位置"就会出现错误....?
作者: 505681468    时间: 2024-4-30 00:31
不太清楚欸

不过。方便的话,可以 1、贴报错 2、附工程
作者: 3000Roger    时间: 2024-5-1 13:59
505681468 发表于 2024-4-30 00:31
不太清楚欸

不过。方便的话,可以 1、贴报错 2、附工程



阿不好意思,我真的搞不太懂还要怎么查问题了
这两天我一直在不断测试,本来以为是转移的问题
但发现用其他指令转移又没问题了,原本是用图片指令
$gameScreen._pictures[1]._name === "XXXX"
但是我全部拿去新开专案测试,又没问题了......

就好像把YEP_HitAccuracy.js装上去所有的脚本就坏了...
但拿去新专案测试又没问题.......
作者: 505681468    时间: 2024-5-1 16:09
本帖最后由 505681468 于 2024-5-1 16:10 编辑
3000Roger 发表于 2024-5-1 13:59
阿不好意思,我真的搞不太懂还要怎么查问题了
这两天我一直在不断测试,本来以为是转移的问题
但发现用 ...


手上的代码是这样的
JAVASCRIPT 代码复制
  1. Yanfly.Util.displayError = function(e, code, message) {
  2.   console.log(message);
  3.   console.log(code || 'NON-EXISTENT');
  4.   console.error(e);
  5.   if (Utils.isNwjs() && Utils.isOptionValid('test')) {
  6.     if (!require('nw.gui').Window.get().isDevToolsOpen()) {
  7.       require('nw.gui').Window.get().showDevTools();
  8.     }
  9.   }
  10. };


但是好像并没有 isDevToolsOpen 方法,所以删掉吧
JAVASCRIPT 代码复制
  1. Yanfly.Util.displayError = function(e, code, message) {
  2.   console.log(message);
  3.   console.log(code || 'NON-EXISTENT');
  4.   console.error(e);
  5.   if (Utils.isNwjs() && Utils.isOptionValid('test')) {
  6.     require('nw.gui').Window.get().showDevTools();
  7.   }
  8. };


他应该是有第一个 error 的,然后 yanfly 自己拦截处理了
但是这个拦截它自己 error 了,应该会有两个 error
作者: 3000Roger    时间: 2024-5-1 19:46
505681468 发表于 2024-5-1 16:09
手上的代码是这样的
Yanfly.Util.displayError = function(e, code, message) {
  console.log(message); ...

错误修好了,但一直跳出这个视窗
这是什么! ?


感谢帮忙! !


作者: 505681468    时间: 2024-5-1 20:38
本帖最后由 505681468 于 2024-5-1 20:39 编辑
3000Roger 发表于 2024-5-1 19:46
错误修好了,但一直跳出这个视窗
这是什么! ?


因为他原本的作用就是打开这个视窗
  1. Yanfly.Util.displayError = function(e, code, message) {
  2.   // 打印错误
  3.   console.log(message);
  4.   console.log(code || 'NON-EXISTENT');
  5.   // 打印错误
  6.   console.error(e);
  7.   // 判断是否是 nwjs 环境
  8.   if (Utils.isNwjs() && Utils.isOptionValid('test')) {
  9.     // 判断是否已经打开控制台
  10.     if (!require('nw.gui').Window.get().isDevToolsOpen()) {
  11.       // 没有的话,打开控制台
  12.       require('nw.gui').Window.get().showDevTools();
  13.     }
  14.   }
  15. };
复制代码


console 的打印在 console 栏目里面

作者: 3000Roger    时间: 2024-5-1 21:44
505681468 发表于 2024-5-1 20:38
因为他原本的作用就是打开这个视窗

我在里面看到错误了,我在1号剧情内设置很多都放在一起
若:脚本: $gameScreen._pictures[1]._name === "XXXX"
转移玩家

若:脚本: $gameScreen._pictures[2]._name === "XXXX"
转移玩家

若:脚本: $gameScreen._pictures[3]._name === "XXXX"
转移玩家

我放了大概1~8个一样的指令,不一样的图片槽跟图片,本来只是对应不同按钮的设定
但不知道为什么装了YEP_HitAccuracy.js才告诉我有错误,之前弄很久还以为这样设置没问题
作者: 3000Roger    时间: 2024-5-1 21:56
这样不会跳出错误也不会跳出视窗...可是这样问题算解决吗...
错误是不是一直在阿...?

  1.     Yanfly.Util.displayError = function(e, code, message) {
  2.       console.log(message);
  3.       console.log(code || 'NON-EXISTENT');
  4.       console.error(e);
  5.       if (Utils.isNwjs() && Utils.isOptionValid('test')) {
  6.         //if (!require('nw.gui').Window.get().isDevToolsOpen()) {
  7.           require('nw.gui').Window.get().showDevTools();
  8.         }
  9.       }
  10.     };
复制代码

作者: 505681468    时间: 2024-5-1 22:08
本帖最后由 505681468 于 2024-5-1 22:12 编辑
3000Roger 发表于 2024-5-1 21:56
这样不会跳出错误也不会跳出视窗...可是这样问题算解决吗...
错误是不是一直在阿...?


错误是会一直都在,正常来说,有报错是会停止游戏的,因为他会弹出一个窗口
对于发行的游戏版本,为了让玩家的游戏体验不中断,是会取消弹窗的
        玩家的客户端会发送报告,开发者只需要在后台查看报错汇报就行了
而在开发者模式的时候,就不需要取消弹窗了,因为要处理错误
        所以他有一个 Utils.isNwjs() && Utils.isOptionValid('test') 来判断是否开发环境
作者: 3000Roger    时间: 2024-5-2 01:04
505681468 发表于 2024-5-1 22:08
错误是会一直都在,正常来说,有报错是会停止游戏的,因为他会弹出一个窗口
对于发行的游戏版本,为了让 ...

那可以请教一下为什么这个代码也会出现错误吗
只是想设置跳过选单直接开启装备栏位而已,还是有其他设置的方法?

SceneManager.push(Scene_Equip);
SceneManager.prepareNextScene(1, 0);

SCRIPT CALL ERROR
YEP_HitAccuracy.js:227 SceneManager.push(Scene_Equip);
SceneManager.prepareNextScene(1, 0);

YEP_HitAccuracy.js:228 TypeError: Cannot read property 'apply' of undefined
    at Function.SceneManager.prepareNextScene (rpg_managers.js:2105)
    at eval (eval at Game_Interpreter.command355 (YEP_CoreEngine.js:1857), <anonymous>:2:14)
    at Game_Interpreter.command355 (YEP_CoreEngine.js:1857)
    at Game_Interpreter.executeCommand (rpg_objects.js:8930)
    at Game_Interpreter.update (rpg_objects.js:8838)
    at Game_Map.updateInterpreter (rpg_objects.js:6115)
    at Game_Map.updateInterpreter (PictureCallCommon.js:434)
    at Game_Map.update (rpg_objects.js:6022)
    at Scene_Map.updateMain (rpg_scenes.js:608)
    at Scene_Map.updateMainMultiply (rpg_scenes.js:600)

作者: 505681468    时间: 2024-5-2 01:26
本帖最后由 505681468 于 2024-5-2 01:29 编辑

因为只有可以 scene.prepare 的场景才可以  SceneManager.prepareNextScene
场景的 prepare 准备工作不统一,Scene_Equip 的话,原生界面应该只考虑了从 scene 里面选角色进去,所以就已经在 prepare 了

设置 2 号位角色的话,相当于
  1. $gameParty.setMenuActor($gameActors.actor(2));
  2. SceneManager.push(Scene_Equip);
复制代码

其实意思就是 $gameParty._menuActorId = 2 角色 id

应该没问题
作者: 3000Roger    时间: 2024-5-2 19:38
505681468 发表于 2024-5-2 01:26
因为只有可以 scene.prepare 的场景才可以  SceneManager.prepareNextScene
场景的 prepare 准备工作不统一 ...

感谢你的帮忙!!




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