Project1

标题: 如何用腳本把滑鼠點擊畫面時的X.Y座標存入變數2.3 ? [打印本页]

作者: play337    时间: 2021-10-8 12:51
标题: 如何用腳本把滑鼠點擊畫面時的X.Y座標存入變數2.3 ?
如何用腳本把滑鼠點擊畫面時的X.Y座標存入變數2.3 ?


>_<
作者: 任小雪    时间: 2021-10-8 12:51
本帖最后由 任小雪 于 2021-10-9 00:02 编辑

$gameVariables.setValue(2, $gamePlayer.x);
$gameVariables.setValue(3, $gamePlayer.y);
1-6句可能改为这两句吧,
变量不能用等于赋值,只能用$gameVariables.setValue(varid,x)这种格式
作者: xiamumomo    时间: 2021-10-8 18:22
我倒是看到一个玩家位置历史插件但是没有研究过https://forums.rpgmakerweb.com/i ... plugin-v1-04.56249/
作者: play337    时间: 2021-10-8 21:05
我研究了那個插件 然後寫了下面的腳本
  1. XVar = 0;
  2. YVar = 0;
  3. $gameVariables.setValue(XVar, $gamePlayer.x);
  4. $gameVariables.setValue(YVar, $gamePlayer.y);
  5. $gameVariables.setValue(2) = $gameVariables.setValue(XVar);
  6. $gameVariables.setValue(3) = $gameVariables.setValue(YVar);
复制代码


結果得到這個錯誤....
ReferenceError: Invalid left-hand side in assignment

實在看不出來是哪邊有問題.... >_<
作者: 任小雪    时间: 2021-10-9 02:36
个人建议你还是先把绝汪的那个脚本入门的TXT文件看了(当然,装备强化部分有错(思路多少是对的),对话部分有bug),先把把基础中的基础补一下,你的基础真的太差了。
我是今年四月还是五月六月才开始使用脚本(之前完全是纯事件,没有插件),小白机翻也是这几个月才开始学会用,data文件的用法也是这个月多一点才开始了解,基本全看俺寻思的,所以,你不会那么菜吧(个人对于代码的知识,除了数学书学到的,基本可以等于零)
作者: xiamumomo    时间: 2021-10-9 12:36
play337 发表于 2021-10-8 21:05
我研究了那個插件 然後寫了下面的腳本

刚刚突然想到为什么要那么麻烦 直接用事件    变量=数据玩家XY或者画面XY不久好了
作者: 任小雪    时间: 2021-10-9 13:28
进我群196966901,把那个文件“脚本学习核心”(大概是这个名字)下载了,自己慢慢研究吧
作者: 任小雪    时间: 2021-10-9 15:22
不过,我还是建议你先了解一下引擎原事件包含了什么功能,不是说不用脚本,而是说,引擎原事件有的功能,基本都可以打开小白机翻来抄
作者: 鼠曲草    时间: 2021-10-9 15:34
你这个脚本确实有点离谱。。
  1. $gameVariables.setValue(2) = $gameVariables.setValue(XVar);
复制代码

这句是在表达什么……函数不能放在等号左边啊。并且这个写法已经不是赘余的问题了,setValue的意思是给游戏变量(不是脚本中申请的变量)赋值,游戏变量是有编号的,所以要有两个参数,一个是变量编号(跟事件界面里的一样),一个是要赋予的值。
所以说,这里根本没必要初始化两个变量XVar、YVar,直接给2,3号变量赋值$gamePlayer.x和$gamePlayer.y就行了。
作者: 鼠曲草    时间: 2021-10-9 21:58
任小雪 发表于 2021-10-9 15:22
不过,我还是建议你先了解一下引擎原事件包含了什么功能,不是说不用脚本,而是说,引擎原事件有的功能,基 ...

回上面一个问题,【$】这个符号我没学过js,查了半天没整太明白。但是你不能用这个分析,因为$gameVariables.setValue(2)这句话最后面的setValue才表示这个东西的类型。
setValue在MV里这么定义的:
  1. Game_Variables.prototype.setValue = function(variableId, value) {
  2.     if (variableId > 0 && variableId < $dataSystem.variables.length) {
  3.         if (typeof value === 'number') {
  4.             value = Math.floor(value);
  5.         }
  6.         this._data[variableId] = value;
  7.         this.onChange();
  8.     }
  9. };
复制代码

实际上你看一下就明白,这是给Game_Variables这个类型定义的属性函数,函数的类型当然是函数了。而$gameVariables是在游戏中已有的Game_Variables类型。




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