这几天又在想这个事情,好像是搞清楚了。
在把rpgmaker-script-wiki.xyz/getposiinfo_mz.php这里的下面这些资料。
//获取地形标记
$gameMap.terrainTag(x坐标,y坐标)
//获取事件ID
$gameMap.eventIdXY(x坐标,y坐标)
//获取区块ID
$gameMap.tileId(x坐标,y坐标,图层)
//获取区域标识
$gameMap.regionId(x坐标,y坐标)
//设置为变量
$gameVariables.setValue(变量ID,上述信息类型)
——————————————————————————————————————
也可以根据图层获取 Maker MV 实现的瓦片 ID。
瓦片 ID 的层数对应如下。
第 1:1 层
第 2 层:2
第 3 层:3
第 4 层:4
示例代码(变量 1 是地形标签,变量 2 是事件 ID,变量 3 是瓦片 ID,变量 4 是区域 ID)
——————————————————————————————————————
//(8,3)位置的地形标签的取得v1这个名的变量代入
const v1 = $gameMap.terrainTag(8, 3)
//获取位于(9,3)位置的事件的ID,代入名为v2的变量
const v2 = $gameMap.eventIdXy(9, 3)
——————————————————————————————————————
//获取层2的区块ID,代入名为v3的变量
const v3 = $gameMap.tileId(4, 3, 2)
//获取区域ID,代入名为v4的变量
const v4 = $gameMap.regionId(8, 3)
——————————————————————————————————————
//将获取的地形标记代入变量1
$gameVariables.setValue(1, v1)
//将获取的事件ID代入变量2
$gameVariables.setValue(2, v2)
——————————————————————————————————————
//将获取的区块ID代入变量3
$gameVariables.setValue(3, v3)
//将获取的区域ID代入变量4
$gameVariables.setValue(4, v4)
——————————————————————————————————————
如果要将地图坐标设为变量,请在 x 和 y 坐标参数中输入 “$gameVariables.value (variable ID)”。
此外,如果要分配事件的位置,可以使用
this.character(事件ID).x this.character(事件ID).y
设置为 x 和 y 坐标。
rmmz_objects.js的下面这段代码。
case 5: // Character
character = this.character(param1);
if (character) {
switch (param2) {
case 0: // Map X
return character.x;
case 1: // Map Y
return character.y;
case 2: // Direction
return character.direction();
case 3: // Screen X
return character.screenX();
case 4: // Screen Y
return character.screenY();
}
}
break;
以及rpg.blue/thread-478377-1-1.html的下面这些资料喂给文心一言,并且跟它聊天和反馈测试结果之后,才在它的提醒下,才明白是代码的索引是从0开始算起的,而事件指令那里为了人们的使用习惯,已经改成了从1开始算起(知道角色脸图是从0开始的,但是这个事件页一直以来已经习惯了从1开始了)。。。我说怎么照抄都抄不好呢,意想不到的东西就是能卡住人啊。
$gameVariables.setValue(6, $gamePlayer.x)
$gameVariables.setValue(7, $gamePlayer.y)
$gameVariables.setValue(8, $gameMap.events()[n].x)
$gameVariables.setValue(9, $gameMap.events()[n].y)
——————————————————————————————————————
// 设置变量6,7号为玩家坐标的x、y
$gameVariables.setValue(6, $gamePlayer.x)
$gameVariables.setValue(7, $gamePlayer.y)
——————————————————————————————————————
// 设置变量8,9号为第n号事件的坐标x、y
$gameVariables.setValue(8, $gameMap.events()[n].x)
$gameVariables.setValue(9, $gameMap.events()[n].y)
——————————————————————————————————————
//这两个是玩家的坐标
$gamePlayer.x
$gamePlayer.y
——————————————————————————————————————
//第n号地图事件的坐标
$gameMap.events()[n].x
$gameMap.events()[n].x
比如,下面这个脚本是获得2还是4号事件的坐标x、y,[]里面的n,应该是n-1还是n+1
// 设置变量8,9号变量为第n号事件的坐标x、y
$gameVariables.setValue(8, $gameMap.events()[3].x)
$gameVariables.setValue(9, $gameMap.events()[3].y)
至于下面这个事件指令的脚本框使用脚本,是55号变量和56号变量分别获得6号事件的坐标x、y。
◆变量操作:#0055 = $gameMap.events()[5]._x
◆变量操作:#0056 = $gameMap.events()[5]._y
至于获得区域的脚本,下面这个脚本是32号变量获得2号事件所在的区域。
x = $gameMap.events()[1].x
y = $gameMap.events()[1].y
$gameVariables.setValue(32, $gameMap.regionId(x , y));
至于获得地形的脚本,下面的脚本是33号事件获得7号事件的地形编号
x = $gameMap.events()[6].x
y = $gameMap.events()[6].y
$gameVariables.setValue(33, $gameMap.terrainTag(x , y));
//获取66号事件的区域标识
i = 66
x = $gameMap.event(i).x
y = $gameMap.event(i).y
$gameVariables.setValue(34,$gameMap.regionId(x,y))
既然上面这样的脚本可以,经过测试,改成下面这样也可。。把$gameVariables.setValue(35,66)拿到这个脚本前面的其他地方也可以,这样就可以很灵活的使用了,比如在共通事件那里对不特定的事件使用。
//获取66号事件的区域标识
$gameVariables.setValue(35,66)
i = $gameVariables.value(35)
x = $gameMap.event(i).x
y = $gameMap.event(i).y
$gameVariables.setValue(34,$gameMap.regionId(x,y))
当然了,以上的脚本都在事件指令这里本来就有,大部分情况都用不着,但是总结出来说不定什么时候就能用得到。