Project1

标题: 求助!写脚本遇到cannot read property 'X' of undefined的报错 [打印本页]

作者: 钇圣道    时间: 2021-12-31 02:47
标题: 求助!写脚本遇到cannot read property 'X' of undefined的报错
前两天询问了站里大佬们,开始尝试用脚本来编写明雷遇敌。我自己的想法是用脚本读取了player 和event的坐标值再用if判断他们相减的绝对值从而达到玩家与敌群在不同的范围内做出不同的反应(从随机移动改为靠近玩家之类的)但写来写去总是报错cannot read property 'X' of undefined;明白大概是系统没有定义到我的X值(改成Y值在前也是这样的报错),然后就不是很清楚该怎么改了。。。劳烦各位大佬解答一下,谢谢!


作者: 任小雪    时间: 2021-12-31 03:20
把var都去掉试试?因为var是临时声明
作者: Fan723    时间: 2021-12-31 09:57
报错是“.x”之前的对象未定义,你这脚本有“.x”的地方就两处,一处是$gamePlayer,这个你只要是运行游戏有角色就不会报这个错,另一处是$gameMap.events()[6],问题应该是出在这里,确认一下这个6号事件是否存在吧。
作者: qq983378065    时间: 2021-12-31 10:39
var是临时定义,只会在定义的函数里面使用,你通过脚本定义变量之后在使用别的方法调用的话要使用全局变量,改成这样window.PlayerX = $gamePlayer.X
作者: 钇圣道    时间: 2022-1-1 14:37
qq983378065 发表于 2021-12-31 10:39
var是临时定义,只会在定义的函数里面使用,你通过脚本定义变量之后在使用别的方法调用的话要使用全局变量 ...

好像还是不成功诶orz。。。
还是没定义到
作者: 开关关    时间: 2022-1-1 15:40
我赞成3楼的回答。估计你要用6号事件,但$gameMap.events()返回的数组是从0号开始计数的,所以应该取$gameMap.events()[5]的x、y。
如果我猜对了的话,你的地图中应该只有6个事件,因此$gameMap.events()只有6个元素,不存在$gameMap.events()[6],所以会报无法读取undefined的属性的错误。

另外顺带提有几处可能的问题:
1. 分支条件里的eventY写成evenrY了;
2. 包含战斗处理的那个分支,条件语句的意思是当怪位于玩家上下两格的同一行,或左右两格的同一列这个井字形区域时进入战斗。你可能是故意这样设计的,不过如果是我,应该会设计成当怪在上下左右一格时才进入战斗,因为这样更符合“遇敌”的直觉。
3. 正如2、4楼所说,想要在分支条件里用playerX之类的新定义的变量,就要把它定义成全局变量。这个问题直接去掉所有的var就能解决。
作者: 钇圣道    时间: 2022-1-2 03:05
感谢楼上各位大佬的解答!现在代码的编译修正后是没问题了!的确是要把var去掉以及一些小错误改完后就游戏可以运行了!谢谢!!




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