查看: 3109|回复: 14

[已经过期] 如何用脚本写设置移动路线

[复制链接]
梦石
8
星屑
3963
在线时间
397 小时
注册时间
2017-10-11
回帖
114
发表于 2017-10-18 14:06:35 | 显示全部楼层 |阅读模式

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

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

×
在论坛搜索过之前有人问过,但部分链接失效,部分链接的脚本却无法用上。
所以重新求教一遍
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2017-10-18 14:59:40 | 显示全部楼层
#向下移动
move_down
#向左移动
move_left
#向右移动
move_right
#向上移动
move_up
#随机移动
move_random
#接近主角
move_toward_player
#远离主角
move_away_from_player
#前进一步
move_forward
#后退一步
move_backward
#跳跃
jump(X,Y)
#面向下
turn_down
#面向左
turn_left
#面向右
turn_right
#面向上
turn_up
在Game_Character 3脚本里可以找到
使用方法就是事件后面  . 一下 .turn_up
或者在Game_Character里面对当前对象使用
回复

使用道具 举报

梦石
8
星屑
3963
在线时间
397 小时
注册时间
2017-10-11
回帖
114
 楼主| 发表于 2017-10-18 15:10:46 | 显示全部楼层
yang1zhi 发表于 2017-10-18 14:59
#向下移动
move_down
#向左移动

QQ图片20171018150819.png
这个在事件脚本里写,会报错
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-10-18 15:13:01 来自手机 | 显示全部楼层
CCD0645 发表于 2017-10-18 15:10
这个在事件脚本里写,会报错

当然会报错,事件脚本里的self对象是interpreter的实例。你要在事件的自定义移动路线里的脚本才能直接使用。
回复

使用道具 举报

梦石
8
星屑
3963
在线时间
397 小时
注册时间
2017-10-11
回帖
114
 楼主| 发表于 2017-10-18 15:44:40 | 显示全部楼层
guoxiaomi 发表于 2017-10-18 15:13
当然会报错,事件脚本里的self对象是interpreter的实例。你要在事件的自定义移动路线里的脚本才能直接使 ...

那怎样才能直接在脚本页使用呢?
因为自定义移动路线里的脚本只能写一行,不能添加条件判断

点评

获取当前事件ID,然后在事件列表里找到当前事件。$game_map.events[@event_id].  发表于 2017-10-18 16:54
换行用;  发表于 2017-10-18 16:17
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-10-18 17:01:31 来自手机 | 显示全部楼层
本帖最后由 guoxiaomi 于 2017-10-18 23:53 编辑
CCD0645 发表于 2017-10-18 15:44
那怎样才能直接在脚本页使用呢?
因为自定义移动路线里的脚本只能写一行,不能添加条件判断 ...

也可以做class Game_Event里定义函数,这里直接调用就行
如果有足够的耐心……可以看我签名里写的联机脚本,data/region_net.rb里面就有关于创建事件,设置事件的移动等……

好像签名没了……https://rpg.blue/thread-402197-1-1.html


脚本里插入:
  1. class Game_Event < Game_Character
  2.   def move_self_defined(x)
  3.     if x == 0
  4.       move_left
  5.     else
  6.       move_right
  7.     end
  8.   end
  9. end
复制代码

然后在事件的移动路线里设置,脚本:"move_self_defined(0)",即可达到判断变量实现不同的移动路线

点评

移动路线对应的RUBY代码,可以去Game_Character的脚本里找。设置移动路线,还是直接用事件方便。  发表于 2017-11-9 12:45
移动路线里,穿透ON,OFF,总在最前面显示ONOFF等命令怎么写  发表于 2017-11-9 03:35
move_left等命令只是当前事件的移动路线,设置主角的移动路线怎么写?  发表于 2017-11-9 02:40
有没有具体点的定义方法,看了你的联机脚本,对我来说,难度太高了,rb文件也不知道怎么打开看  发表于 2017-10-18 21:32
回复

使用道具 举报

梦石
8
星屑
3963
在线时间
397 小时
注册时间
2017-10-11
回帖
114
 楼主| 发表于 2017-10-22 13:10:26 | 显示全部楼层
guoxiaomi 发表于 2017-10-18 17:01
也可以做class Game_Event里定义函数,这里直接调用就行
如果有足够的耐心……可以看我签名里写的联机脚本 ...

这个始终还是要用移动路线里面的脚本,我是想用外面的脚本,
好比,我需要让地图中所有符合条件的事件都向主角位置移动,这样直接用一个并行处理控制多个事件行动
该如何做

回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2017-10-22 14:42:54 | 显示全部楼层
本帖最后由 soulsaga 于 2017-10-22 14:54 编辑

[pre lang="ruby"]class Interpreter
def command_209
    # 获取角色
    character = get_character(@parameters[0])
    # 角色不存在的情况下
    if character == nil
      # 继续
      return true
    end
    # 强制移动路线
    if @parameters[0] == 1
      for i in 1..$game_map.events.size
        character = get_character(i)
    character.force_move_route(@parameters[1]) if $game_map.events.x <= 20
  end
else
  character.force_move_route(@parameters[1])
  end
    # 继续
    return true
  end
  end[/pre]
插入到MAIN上面..
if @parameters[0] == 1这行
1等於当进行1路线移动为1号事件时当前地图所有事件都会执行路线移动..
character.force_move_route(@parameters[1]) if $game_map.events.x <= 20这行就是任意事件的X坐标小於等於20时该事件才会执行强制移动..其他判断条件你问大神就好了..
回复

使用道具 举报

遠航の猫咪

梦石
3
星屑
26947
在线时间
2423 小时
注册时间
2005-10-15
回帖
987

开拓者

发表于 2017-11-8 23:58:00 | 显示全部楼层
CCD0645 发表于 2017-10-22 13:10
这个始终还是要用移动路线里面的脚本,我是想用外面的脚本,
好比,我需要让地图中所有符合条件的事件都 ...

脚本:
$game_map.events.each_value do |v|
  if ....你的条件....
    mr = RPG::MoveRoute.new
    mr.repeat = true
    mr.skippable = true
    mr.list = [10, 0].map do |x|
      RPG::MoveCommand.new(x)
    end
    v.force_move_route(mr)
  end
end
等待移动结束
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部