RPGMZ游戏引擎事件技巧大全

个人记录保存

Project1论坛 小圈子 人才 不得学习技术

搜集了一些常用功能 以后不用翻源代码

Game_Event 逻辑功能在这里

Sprite_Character 图形显示在这里

判断是什么角色

javascript 复制代码
if (this._character instanceof Game_Event) {
    // 地图事件
} else if (this._character instanceof Game_Player) {
    // 玩家
} else if (this._character instanceof Game_Follower) {
    // 随从
}

地图角色事件获取

javascript 复制代码
$gameMap.event(5) //获取事件
$gamePlayer  //获取玩家
$gamePlayer.followers().follower(0) //获取随从
this.character() //当前事件 事件页内
$gameMap.character(id) // 通用(0=玩家,1~=事件)

遍历地图上所有的事件拿到事件本身 做自己想做的事情

javascript 复制代码
$gameMap.events().forEach(event => {
    // event = 当前循环到的 每一个事件
});

让地图上所有事件暂停不动弹 可以执行自己的代码功能然后在恢复所有事件运行

javascript 复制代码
//强制静止
$gameMap.events().forEach(ev => (ev._oldMoveType = ev._moveType, ev._moveType = 0));
javascript 复制代码
//恢复正常
$gameMap.events().forEach(ev => ev._oldMoveType && (ev._moveType = ev._oldMoveType, delete ev._oldMoveType));

让某个id的事件静止不动

javascript 复制代码
//事件会转向角色
$gameMap.event(5).lock();
//解除
$gameMap.event(5).unlock();


// 暂停 不转向
const ev = $gameMap.event(5);
ev._oldMoveType = ev._moveType;
ev._moveType = 0;

// 恢复
const ev = $gameMap.event(5);
if (ev._oldMoveType !== undefined) {
  ev._moveType = ev._oldMoveType;
  delete ev._oldMoveType;
}

判断地图某个事件是否存在

javascript 复制代码
//遍历所有事件
const hasEnemy = $gameMap.events().some(e=>e.event().name === "牛头军" && !e._erased);
if(hasEnemy ){

//存在
}else{
//不存在
}


//具体某个id的事件 没消失还存在
$gameMap.event(5) && !$gameMap.event(5)._erased

让某个事件彻底消失

javascript 复制代码
$gameMap.event(5).erase();

//恢复方法
$gameMap.event(5)._erased = false;
$gameMap.event(5).refresh();

移动某个事件 到指定位置

javascript 复制代码
$gameMap.event(4).locate(6, 2);

事件存在并且没有运行的事件页

javascript 复制代码
$gameMap.event(5) && $gameMap.event(5)._pageIndex < 0

让具体的某个事件播放动画

javascript 复制代码
$gameTemp.requestAnimation([$gameMap.event(5)], 1);

为事件添加自定义属性变量 逻辑数据

javascript 复制代码
const _Game_Event_initialize = Game_Event.prototype.initialize;
Game_Event.prototype.initialize = function(mapId, eventId) {
    _Game_Event_initialize.call(this, mapId, eventId);
    this._new_index = 0; //自定义的变量 后续可以获取到 自行操作
};

事件的图像

javascript 复制代码
    const _Sprite_Character_prototype_initialize = Sprite_Character.prototype.initialize;
    Sprite_Character.prototype.initialize = function(character) {
        _Sprite_Character_prototype_initialize.call(this, character);
        //character就是逻辑对象 Game_Event.prototype.initialize 定义的变量可以直接获取
        character._new_index = 1; 改编自定义值
    };

持续更新中。。。。。。

相关推荐
avi911119 小时前
[AI教做人]AI平台做2项目;一个3D模型展示,另一个框架多人
javascript·人工智能·ai·3d模型·3d引擎·顶点和法线
kyriewen19 小时前
我用Claude Code两天干完了团队两周的排期——周报发出去那一刻我就后悔了
前端·javascript·ai编程
用户9385156350720 小时前
手写一个 LLM Harness 框架:用工程化手段把大模型幻觉踩在脚下
javascript·人工智能·后端
油丶酸萝卜别吃21 小时前
jquery-ajax.js 说明文档
前端·javascript·jquery
windliang21 小时前
Claude Code 源码分析(九):子 Agent 如何分叉、继续与回到父会话
前端·javascript·面试
柒和远方21 小时前
V063: TS 面试必考:interface 与 type 的四大差异,与 LLM Harness 的自动化择优
前端·javascript
汉堡大王95271 天前
Vue 3 + TS + Element Plus 实战:如何从零搭建企业级违章记录管理 SaaS 前端
前端·javascript·vue.js
海天鹰1 天前
屏幕颜色检测
javascript·html5
用户7917286761971 天前
opencode-plugin-peers完全指南:OpenCode如何实现 Claude Code式跨会话消息
javascript
ue星空1 天前
【Godot】更换编辑器外观主题
编辑器·游戏引擎·godot