RMMZ事件页20破限_哔哩哔哩
bilibili.com/video/BV1i4JTz2EX8/?vd_source=fd84198c79e8abb85db5da3c83dba99e#reply263542401776
这里的评论区有下面这个脚本,好像是可以检测到玩家进入新地图。
![[星星月亮]](/static/emoticons/u661fu661fu6708u4eae.png)
const originalsetup = Game_Map.rototype.setup;Game_Map.prototype.setup = function(mapId) {originalsetup.call(this, mapId);if ($dataMap) {observer.eventEmitter.emit('mapcreate', $gameMap.mapId());}
//然后订阅mapcreate事件触发你写的回调逻辑
![[星星月亮]](/static/emoticons/u661fu661fu6708u4eae.png)
或许可以参考上面这个脚本来检测是不是触发了增减金币的代码,
增加100金钱 $gameParty.gainGold(100);
减少100金钱 $gameParty.loseGold(100);
就是originalsetup.call这个呼叫,好像是可以被检测到的。
是不是更换了所在的地图,是不是增减了生命值,是不是赋予消除了什么状态,是不是增减了金币,说不定是可以检测到的。
如果能检测到的话,那家商店或许会固定在某个编号的地图那里,或许会固定在某个区域编号那里,加一个区域判断或许就可以了。
![[星星月亮]](/static/emoticons/u661fu661fu6708u4eae.png)
$gameMap._mapId === 1
//这个区域编号是不是等于1,可以直接放到分支条件那里。
$gameMap.regionId($gameMap.event(this.eventId()).x, $gameMap.event(this.eventId()).y) === 2
//这个本事件所在位置的区域编号是不是等于2,也可以直接放到分支条件那里。
![[星星月亮]](/static/emoticons/u661fu661fu6708u4eae.png)
至于能不能实现和怎么实现,我不知道。