设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 8021|回复: 5
打印 上一主题 下一主题

[有事请教] 刷新事件怎么写

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2374
在线时间
523 小时
注册时间
2019-6-30
帖子
237
跳转到指定楼层
1
发表于 2021-7-8 13:17:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
50星屑
一个事件,设置了开关但是打开事件图形没变化;可以能是插件影响的关系,


比如,设定事件页2开关a打开,但是开关a开了到事件页2了,图像却没刷新;

需要切换地图才能刷新。

问一下,这种要怎么解决?

最佳答案

查看完整内容

是之前的设置独立开关吗? 独立开关设置后应该是会自动刷新的,不太确定什么情况。 如果要刷新比较简单的方法是用 $gameMap.requestRefresh(); 他会刷新地图上所有事件。 也有针对单个事件的刷新方法,$gameMap.event(事件id).refresh(); 如果没效果的话,可以截图下具体的事件和代码。

Lv2.观梦者

梦石
0
星屑
387
在线时间
59 小时
注册时间
2021-6-30
帖子
20
2
发表于 2021-7-8 13:17:40 | 只看该作者
本帖最后由 QChan 于 2021-7-8 22:25 编辑

是之前的设置独立开关吗?
独立开关设置后应该是会自动刷新的,不太确定什么情况。

如果要刷新比较简单的方法是用 $gameMap.requestRefresh(); 他会刷新地图上所有事件。
也有针对单个事件的刷新方法,$gameMap.event(事件id).refresh();

如果没效果的话,可以截图下具体的事件和代码。
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2374
在线时间
523 小时
注册时间
2019-6-30
帖子
237
3
 楼主| 发表于 2021-7-8 20:06:18 | 只看该作者
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2374
在线时间
523 小时
注册时间
2019-6-30
帖子
237
4
 楼主| 发表于 2021-7-9 17:26:52 | 只看该作者
QChan 发表于 2021-7-8 13:17
是之前的设置独立开关吗?
独立开关设置后应该是会自动刷新的,不太确定什么情况。

非常感谢,刷新事件有效果,不过我那不起作用

好像是....算了我不知道怎么形容,

反正就是我在事件页改动那加了个刷新就可以了,顺便问下这种写在原

代码(rpb_objects)下的是不是不能用重写啊?




回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
387
在线时间
59 小时
注册时间
2021-6-30
帖子
20
5
发表于 2021-7-9 18:23:29 | 只看该作者
本帖最后由 QChan 于 2021-7-9 18:30 编辑
入坑小萌新 发表于 2021-7-9 17:26
非常感谢,刷新事件有效果,不过我那不起作用

好像是....算了我不知道怎么形容,


重写可以参考下一些别人做的插件,基本所有的都能重写。

重写最好不要直接修改游戏原本的文件,或者覆盖到别人的重写。
一般是先建一个变量,保存重写前的方法。
然后重写调用下变量保存的方法, 这样可以执行到重写前的代码, 不会和其他人的重写起冲突。
一般其他插件也是这种写法,所以你的重写也不会被覆盖。


JAVASCRIPT 代码复制
  1. var _Game_Event_prototype_refresh = Game_Event.prototype.refresh;
  2. Game_Event.prototype.refresh = function() {
  3.   _Game_Event_prototype_refresh.call(this);
  4.   // 你的代码
  5. };
  6.  
  7. // 一些有参数的 call 的时候也要带参数
  8. var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  9. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  10.   _Game_Interpreter_pluginCommand.call(this, command, args);
  11. }
  12.  
  13. // 原本有返回值的,你也要给一个返回值。
  14. // 记录重写前的方法
  15. var _DataManager_makeSaveContents = DataManager.makeSaveContents;
  16. DataManager.makeSaveContents = function() {
  17.   // 调用重写前的方法并且获取他的返回值
  18.   var contents = _DataManager_makeSaveContents.call(this);
  19.   // 你的代码
  20.  
  21.   // 返回
  22.   return contents;
  23. };



我记得这边是有个坑的, 可能莫名其妙会报错,一般插件的写法是会把代码都丢到一个大方法里的,防止和其他插件冲突。
你可以看一些大佬的插件代码结构
JAVASCRIPT 代码复制
  1. (function() {
  2.   var _Game_Event_prototype_refresh = Game_Event.prototype.refresh;
  3.   Game_Event.prototype.refresh = function() {
  4.     _Game_Event_prototype_refresh.call(this);
  5.     // 你的代码
  6.   };
  7. })();




下面是重写执行效果
JAVASCRIPT 代码复制
  1. (function() {
  2.   var _Game_Event_prototype_refresh = Game_Event.prototype.refresh;
  3.   Game_Event.prototype.refresh = function() {
  4.     _Game_Event_prototype_refresh.call(this);
  5.     // 你的代码
  6.     console.log('刷新了');
  7.   };
  8. })();





你截图的代码,如果要丢到那个地方执行的话,也可以考虑直接重写 setupPage
JAVASCRIPT 代码复制
  1. var _Game_Event_prototype_setupPage = Game_Event.prototype.refresh;
  2. Game_Event.prototype.setupPage = function() {
  3.   _Game_Event_prototype_setupPage.call(this);
  4.   if(Tilv.SHJ.isMonster(this._eventId)) {
  5.     Tilv.SHJ.update();
  6.     console.log('sx');
  7.   }
  8. };


点评

谢谢,明白了,写的也太详细了,可以当教程了  发表于 2021-7-9 21:50

评分

参与人数 1+1 收起 理由
入坑小萌新 + 1 精品文章

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-25 06:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表