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

Project1

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

[已经解决] 如何用一行脚本实现让事件回到它的初始位置?

[复制链接]

Lv5.捕梦者

梦石
24
星屑
7027
在线时间
247 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

跳转到指定楼层
1
发表于 2021-7-22 20:23:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 纯属小虫 于 2021-7-22 21:51 编辑

想要用一行脚本实现:让事件回到它的初始位置
请问如何获取事件初始坐标的变量,事件的x,y坐标数据是储存在哪里?



感谢 RPGzh500223  问题已经解决

高手的脚本就是简洁而美丽...感动
在 Game_Map 新增定义
RUBY 代码复制
  1. class Game_Map
  2.   #让事件回到自己的最初位置
  3.   def ini_event_xy
  4.     @events.each{|k, v|v.moveto(@map.events[k].x, @map.events[k].y)}
  5.   end
  6. end

事件脚本或设置移动路线脚本中使用
RUBY 代码复制
  1. $game_map.ini_event_xy

Lv3.寻梦者

梦石
0
星屑
2851
在线时间
446 小时
注册时间
2016-9-26
帖子
1222
2
发表于 2021-7-22 20:38:34 | 只看该作者
事件都可以实现,存在变量里,多个的话可以用脚本。
另外,出图再进图好像各事件坐标是会重置的(实测)
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7027
在线时间
247 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

3
 楼主| 发表于 2021-7-22 20:51:21 | 只看该作者
本帖最后由 纯属小虫 于 2021-7-22 21:28 编辑
任小雪 发表于 2021-7-22 20:38
事件都可以实现,存在变量里,多个的话可以用脚本。
另外,出图再进图好像各事件坐标是会重置的(实测) ...


主要是为了图方便,想要一句脚本就能解决回到原点,并且是可以进行事件批量复制后还不用更改的
想获取载入地图时,事件的XY坐标
这样就可以在事件移动了之后,还能快捷地让它回到它最开始的位置(制作飞镖陷阱之类的)
之前试过用 moveto ($game_map.events[self.id].x,$game_map.events[self.id].y)  但这个是获取事件当前的位置,没法让它回到原点

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
4
发表于 2021-7-22 21:25:24 | 只看该作者
本帖最后由 RPGzh500223 于 2021-7-22 21:56 编辑

一行……
  1. class Game_Map; def ini_event_xy; @events.each{|k, v|v.moveto(@map.events[k].x, @map.events[k].y)}; end; end   
复制代码

数据存在地图里 比如1号地图数据就在“Data/Map001.rxdata”

既然有赞就完善一下方法(支持单个事件位置的初始化)
RUBY 代码复制
  1. class Game_Map
  2.   def ini_event_xy(id = -1, *ids)
  3.     if id == -1
  4.       @events.each{|k, v|v.moveto(@map.events[k].x, @map.events[k].y)}
  5.       return
  6.     end
  7.     (ids << id).each do |i|
  8.       next if (_event = @events[i]) == nil
  9.       _event.moveto(@map.events[i].x, @map.events[i].y)
  10.     end
  11.   end
  12. end

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 认可答案
纯属小虫 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
24
星屑
7027
在线时间
247 小时
注册时间
2020-12-4
帖子
306

极短24获奖极短23获奖极短22获奖

5
 楼主| 发表于 2021-7-22 21:30:23 | 只看该作者
本帖最后由 纯属小虫 于 2021-7-22 21:33 编辑
RPGzh500223 发表于 2021-7-22 21:25
一行……

数据存在地图里 比如1号地图数据就在“Data/Map001.rxdata”



哈哈,感谢灵感给予,还是应该从地图数据入手

我试了一个粗暴的方法,虽然要不断重新读取地图数据,不过至少能够成功了
RUBY 代码复制
  1. map_id = 311; map = load_data(sprintf("Data/Map%03d.rxdata", map_id)); moveto(map.events[self.id].x, map.events[self.id].y)

不过还有个问题就是,map_id = 311 这个还是手动输入的,因为这行脚本要写在设置移动路线里头,有没有办法在“设置移动路径”中获取当前地图的ID?

点评

当前地图ID:$game_map.map_id  发表于 2021-7-22 21:37
事件脚本里输入 $game_map.ini_event_xy就可以了  发表于 2021-7-22 21:36
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-1 23:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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