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

Project1

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

[有事请教] 大佬们帮忙看看这个"事件复制生成脚本"有没有bug?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2856
在线时间
446 小时
注册时间
2016-9-26
帖子
1222
跳转到指定楼层
1
发表于 2022-6-4 04:58:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
500星屑
本帖最后由 任小雪 于 2022-6-5 02:24 编辑

//前程提要,$dataItems[1].meta.是我自定义变量(你可以理解为自设的公共变量)的数据的前缀,理论上都是存档时会被存档的数据,且也能被读取的。
//【已知bug,以下脚本也不是我的最终版本,但改的是一些同等水平可见的细节小bug,和最大的两个bug99%无关】第一,存档关游戏后再打开,游戏没法玩(即,其实毫无意义);第二,仅一开始的图能弄。
//【总结】于是,我还是把事情想简单了,现在也只能意识到困难没我想的简单,但怎么入手还是没有任何头绪,大概还是又又又再次放弃了这次新新新的尝试……当然如果有带佬三言两语能搞定,那倒是真的好

JAVASCRIPT 代码复制
  1. //【已知bug】貌似没法存档读取
  2. //调用法子XinEventShengcheng(DituID,ShijianID,ShijianNumber,XYPiancha);
  3.  
  4. var XinEventShengcheng= function(DituID,ShijianID,ShijianNumber,XYPiancha) {//无限生成新事件【同事件复制】
  5. //DituID要复制事件的地图id,ShijianID要复制事件的事件id,ShijianNumber要复制事件的具体要复制数,XYPiancha所生成的新事件与被复制事件的坐标偏差
  6.  
  7. var EventNumber=$dataMap.events.length+ShijianNumber;
  8.  
  9. Game_Event.prototype.event = function() {
  10.  
  11. if(DituID&&ShijianID&&ShijianNumber&&XYPiancha){
  12. if(this._mapId==DituID&&$dataMap.events.length<EventNumber){
  13. var shijian=JsonEx.makeDeepCopy($dataMap.events[ShijianID]);
  14. shijian.id=$dataMap.events.length;
  15. var XYPianchaNumber=2+XYPiancha;
  16. shijian.x=$dataMap.events[ShijianID].x+XYPiancha-Math.randomInt(XYPianchaNumber);
  17. shijian.y=$dataMap.events[ShijianID].y+XYPiancha-Math.randomInt(XYPianchaNumber);
  18. $dataMap.events.push(shijian);
  19. $dataItems[1].meta.MapEvents[DituID]=$dataMap.events;
  20.  
  21. var shijian=JsonEx.makeDeepCopy($gameMap._events[ShijianID]);
  22. shijian._eventId=$gameMap._events.length;
  23. shijian._realX=shijian.x=shijian._x=$dataItems[1].meta.MapEvents[DituID][shijian._eventId].x;
  24. shijian._realY=shijian.y=shijian._y=$dataItems[1].meta.MapEvents[DituID][shijian._eventId].y;
  25. $gameMap._events.push(shijian);
  26. $dataItems[1].meta.GameMapEvents[DituID]=$gameMap._events;
  27.  
  28. }else if(this._mapId==DituID&&$dataMap.events.length==EventNumber){
  29. DituID=null;ShijianID=null;ShijianNumber=null;XYPiancha=null;
  30. SceneManager.goto(Scene_Map);
  31.  
  32. };
  33. };
  34.  
  35. if($dataItems[1].meta.MapEvents[this._mapId]){
  36. $dataMap.events=$dataItems[1].meta.MapEvents[this._mapId];
  37. $gameMap._events=$dataItems[1].meta.GameMapEvents[this._mapId];
  38. };
  39.     return $dataMap.events[this._eventId];
  40.  
  41. };
  42.  
  43. }




最佳答案

查看完整内容

var eventCopy = JsonEx.makeDeepCopy($dataMap.events[1]); eventCopy.id = 2; eventCopy.name = 'EV002'; eventCopy.x +=1; $dataMap.events.push(eventCopy); $gameMap.setupEvents(); var sp = SceneManager._scene._spriteset; sp.createCharacters(); ps: SceneManager._scene → Scene_Map _spriteset → Spriteset_Map

Lv3.寻梦者

梦石
0
星屑
3053
在线时间
318 小时
注册时间
2015-4-30
帖子
92
2
发表于 2022-6-4 04:58:54 | 只看该作者


var eventCopy = JsonEx.makeDeepCopy($dataMap.events[1]);
eventCopy.id = 2;
eventCopy.name = 'EV002';
eventCopy.x +=1;
$dataMap.events.push(eventCopy);
$gameMap.setupEvents();
var sp = SceneManager._scene._spriteset;
sp.createCharacters();

ps:
SceneManager._scene → Scene_Map
_spriteset → Spriteset_Map

点评

不过大佬的代码确实让我发现了其中一个bug的实际问题是我自己弄的脚本(不止一处)细节处理不当的问题(虽然暂时没想怎么改)  发表于 2022-6-10 00:59
实测发现不对……抛开我插件问题,我自己的法子【不指上面的代码,而指我后面又改过的脚本】,貌似仅第一幅地图有效,总之,以后有时间再研...  发表于 2022-6-10 00:56
要是能搞懂最后两行,估计我的姿势得多了不少,现在还差那么亿点吧,唉  发表于 2022-6-10 00:31
额,貌似还真跟我自己弄的插件有关,可能是一些细节需要处理,唉。  发表于 2022-6-10 00:26
唔,应该不会是因为我利用独立事件的meta和借鉴地图名window搞的“事件名字显示和小地图显示”插件有关吧  发表于 2022-6-10 00:22

评分

参与人数 1+1 收起 理由
任小雪 + 1 不确定答案对不对,嗯,主要是我对rmmv的机.

查看全部评分

回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6970
在线时间
712 小时
注册时间
2021-3-5
帖子
814
3
发表于 2022-6-4 07:18:26 | 只看该作者
不知道楼主想要做什么
不过楼主的命名规范我建议改一下,不要拼音和英文混用
看的我头晕眼花,这样的代码真的是看个两三行就跪了

点评

还是把问题想简单了,唉,可能只有游戏里直接读写地图的data文件那条路  发表于 2022-6-5 02:25
我自己看到没啥障碍……  发表于 2022-6-4 15:53
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-10 05:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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