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

Project1

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

[有事请教] 求助如何让事件的位置永久的改变

[复制链接]

Lv2.观梦者

梦石
0
星屑
690
在线时间
129 小时
注册时间
2020-7-18
帖子
75
跳转到指定楼层
1
发表于 2021-8-19 17:22:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
想做个可以自定义放置物体的房间,采取的方法是把事件隐藏起来,使用道具放置的时候把对应事件移动到角色的面前
防止事件重叠和防止放到墙上的问题都用脚本给解决了,但是每次改变事件的位置,刷新一下地图事件就又跑回去了
虽然可以用变量强行记住位置,但是不知道各位大佬有没有更好的方法?我自己是翻遍了脚本库都没找着能永久改变事件位置的脚本...
好人一生平安~

最佳答案

查看完整内容

两段代码,保存,和刷新位置 1.需要在两段代码注释下设置一个变量ID,和设置需要保存的事件ID (注:限一个地图,如果需要多地图保存再说吧) 2.为方便执行代码,可以写在公共事件,一个保存,一个刷新 3.创建一个事件,触发条件:并行处理,调用刷新事件位置代码,然后在底下暂时删除事件,这样地图切换回来就读取位置 保存事件位置: 刷新事件位置: ...

Lv4.逐梦者

梦石
0
星屑
5621
在线时间
177 小时
注册时间
2011-6-3
帖子
32
2
发表于 2021-8-19 17:22:07 | 只看该作者
本帖最后由 lqi991 于 2021-10-1 03:36 编辑

两段代码,保存,和刷新位置
1.需要在两段代码注释下设置一个变量ID,和设置需要保存的事件ID
  (注:限一个地图,如果需要多地图保存再说吧)
2.为方便执行代码,可以写在公共事件,一个保存,一个刷新
3.创建一个事件,触发条件:并行处理,调用刷新事件位置代码,然后在底下暂时删除事件,这样地图切换回来就读取位置
保存事件位置:
  1. // 需要一个变量保存,输入ID
  2. let id = 1;
  3. // 需要保存的事件如 1,3,4
  4. // 输入: [1,3,4]
  5. // (注意 , 号,是英文符号)
  6. let sz = [];
  7. (function () {if (!$gameVariables.value(id)) $gameVariables._data[id] = [];let d = $gameVariables._data[id];const sx = ['x', 'y', '_direction', '_directionFix', '_moveSpeed', '_moveFrequency', '_characterName', '_characterIndex', '_pattern', '_walkAnime', '_stepAnime', '_through'];for (let a = 0; a < sz.length; a++) {let sj = $gameMap.event(sz[a]);if (sj) {d[sz[a]] = {};for (let b = 0; b < sx.length; b++) {d[sz[a]][sx[b]] = sj[sx[b]];};};};})();
复制代码


刷新事件位置:
  1. // 输入读取的变量ID
  2. let id = 1;
  3. ;(function () {if (!$gameVariables.value(id)) $gameVariables._data[id] = [];let d = $gameVariables._data[id];for (let n in d) {if (d[n]) {let sj = $gameMap.event(n);if(sj){for(let b in d[n]){sj[b] = d[n][b]};sj.setPosition(d[n].x,d[n].y)}};};})();
复制代码
# 基于RMMV/MZ基础编写插件,持续更新,请多多支持.
# 需求人多的优先编写!最新消息请关注下面通道.

[插件交流群][个人插件网]
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
16059
在线时间
3993 小时
注册时间
2015-9-14
帖子
1337

开拓者

3
发表于 2021-8-19 23:38:34 | 只看该作者
visu系列,有事件記錄插件.

自定義放置物品用Triacontane模板事件插件TemplateEvent.js
加事件動態生成插件EventReSpawn.js
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3360
在线时间
277 小时
注册时间
2019-4-23
帖子
202
4
发表于 2021-8-20 13:08:53 | 只看该作者
用两个事件就完事了~
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
690
在线时间
129 小时
注册时间
2020-7-18
帖子
75
5
 楼主| 发表于 2021-8-29 11:56:17 | 只看该作者
q3226257 发表于 2021-8-20 13:08
用两个事件就完事了~

那如何维持事件的朝向,我试过几次,结果是虽然位置改变了,即使用了脚本,但是事件的朝向仍然是向下的
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
690
在线时间
129 小时
注册时间
2020-7-18
帖子
75
6
 楼主| 发表于 2021-12-10 02:23:00 | 只看该作者
lqi991 发表于 2021-10-1 03:29
两段代码,保存,和刷新位置
1.需要在两段代码注释下设置一个变量ID,和设置需要保存的事件ID
  (注:限一个地 ...

出现了明明事件是第二页事件页但图像是第一页事件的情况,就你收起来,切地图再切回来,那个事件看上去还在原点,但实际上触发的事件已经变成第二页的事件了。相反,你收起来再放下,切地图之后事件的图像变成第二页的图像了,但触发的是第一页的事件,不知道怎么解决
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5621
在线时间
177 小时
注册时间
2011-6-3
帖子
32
7
发表于 2021-12-11 04:12:09 | 只看该作者
本帖最后由 lqi991 于 2021-12-11 04:22 编辑
UTO 发表于 2021-12-10 02:23
出现了明明事件是第二页事件页但图像是第一页事件的情况,就你收起来,切地图再切回来,那个事件看上去还 ...


前面的代码会储存事件以下内容:
  坐标,朝向,移动速度,移动频率,行走图,模式,行走动画,踏步动画,穿透


以下脚本只储存坐标,没有多余的储存了

  1. // 需要一个变量保存,输入ID
  2. let id = 1;
  3. // 需要保存的事件如 1,3,4
  4. // 输入: [1,3,4]
  5. // (注意 , 号,是英文符号)
  6. let sz = [];
  7. (function () {if (!$gameVariables.value(id)) $gameVariables._data[id] = [];let d = $gameVariables._data[id];const sx = ['x', 'y'];for (let a = 0; a < sz.length; a++) {let sj = $gameMap.event(sz[a]);if (sj) {d[sz[a]] = {};for (let b = 0; b < sx.length; b++) {d[sz[a]][sx[b]] = sj[sx[b]];};};};})();
复制代码
# 基于RMMV/MZ基础编写插件,持续更新,请多多支持.
# 需求人多的优先编写!最新消息请关注下面通道.

[插件交流群][个人插件网]
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
690
在线时间
129 小时
注册时间
2020-7-18
帖子
75
8
 楼主| 发表于 2021-12-11 13:11:34 | 只看该作者
lqi991 发表于 2021-12-11 04:12
前面的代码会储存事件以下内容:
  坐标,朝向,移动速度,移动频率,行走图,模式,行走动画,踏步动画,穿透

谢谢!解决了!
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 17:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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