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

Project1

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

[已经解决] 关于脚本,问题有点多

[复制链接]

Lv2.观梦者

梦石
0
星屑
805
在线时间
72 小时
注册时间
2018-11-16
帖子
49
跳转到指定楼层
1
发表于 2020-7-6 18:39:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
1.如何用脚本获取某个坐标的区域ID?就相当于事件中的获取指定坐标的信息
2.如何在脚本里写等待?要处理时能接受玩家操作

Lv6.析梦学徒

老鹰

梦石
40
星屑
34720
在线时间
6739 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2020-7-6 19:38:17 | 只看该作者
1. 获取当前地图(x,y)处的区域id
      value = $game_map.region_id(x, y)

2. 如果是在事件脚本里执行的,可以直接用 wait(d) 来等待 d 帧,或者可以用 Fiber.yield 来等待一帧
如果在纯粹脚本环境中执行的,可以参考默认的实现方法,即 Game_Player 类中的玩家控制移动方法
  1. class Game_Player < Game_Character
  2.   #--------------------------------------------------------------------------
  3.   # ● 由方向键移动
  4.   #--------------------------------------------------------------------------
  5.   def move_by_input
  6.     return if !movable? || $game_map.interpreter.running?
  7.     move_straight(Input.dir4) if Input.dir4 > 0
  8.   end
  9. end
复制代码

其中可以看到当 无法进行移动 或 地图中存在事件执行时(并行事件除外),就阻止了玩家的按键移动(Input.dir4),你可以对其进行 alias,加入自己的阻止玩家移动的方法

3. 如果你实在不懂脚本,又想要阻止玩家移动,就利用 https://github.com/Archeia/YEARe ... top_All_Movement.rb 这个,打开开关,就阻止玩家/事件的移动

点评

可以,谢谢大大  发表于 2020-7-6 19:41

评分

参与人数 1星屑 +100 收起 理由
VIPArcher + 100 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
805
在线时间
72 小时
注册时间
2018-11-16
帖子
49
3
 楼主| 发表于 2020-7-7 11:04:18 | 只看该作者
百里_飞柳 发表于 2020-7-6 19:38
1. 获取当前地图(x,y)处的区域id
      value = $game_map.region_id(x, y)

不好意思,还想再问一个问题,
设置移动路线相应的脚本代码是什么?

点评

是在事件脚本里运行  发表于 2020-7-7 12:02
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

老鹰

梦石
40
星屑
34720
在线时间
6739 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

4
发表于 2020-7-7 15:33:47 | 只看该作者
本帖最后由 百里_飞柳 于 2020-7-7 15:42 编辑
囧先生438 发表于 2020-7-7 11:04
不好意思,还想再问一个问题,
设置移动路线相应的脚本代码是什么?


参考 F1 帮助手册中,对va数据结构的介绍

其中 RPG::MoveRoute 为角色的移动路线,即 Game_Event 中 @page.move_route 的类

因此可以通过角色的 强制移动指令 force_move_route(move_route) 进行移动的设置
而它的 list 变量是一个 RPG::MoveCommand 的数组,其中的code值可以通过查阅 Game_Character 类获得
记得一开始要赋值or只使用unshift将指令放到数组头(因为默认数组中只有一个 ROUTE_END ),同时记得要保证以 ROUTE_END 作为结尾

以下就是玩家向下一步的脚本
  1. r = RPG::MoveRoute.new
  2. r.repeat = false
  3. r.skippable = true
  4. r.wait = true
  5. r.list = [RPG::MoveCommand.new(1),
  6. RPG::MoveCommand.new(0)]
  7. ch = $game_player
  8. ch.force_move_route(r)
  9. if r.wait
  10.   Fiber.yield while ch.move_route_forcing
  11. end
复制代码

点评

谢谢  发表于 2020-7-7 15:46
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 06:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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