Project1

标题: 如何用脚本写设置移动路线 [打印本页]

作者: CCD0645    时间: 2017-10-18 14:06
标题: 如何用脚本写设置移动路线
在论坛搜索过之前有人问过,但部分链接失效,部分链接的脚本却无法用上。
所以重新求教一遍
作者: yang1zhi    时间: 2017-10-18 14:59
#向下移动
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里面对当前对象使用
作者: CCD0645    时间: 2017-10-18 15:10
yang1zhi 发表于 2017-10-18 14:59
#向下移动
move_down
#向左移动


这个在事件脚本里写,会报错

作者: guoxiaomi    时间: 2017-10-18 15:13
CCD0645 发表于 2017-10-18 15:10
这个在事件脚本里写,会报错

当然会报错,事件脚本里的self对象是interpreter的实例。你要在事件的自定义移动路线里的脚本才能直接使用。
作者: CCD0645    时间: 2017-10-18 15:44
guoxiaomi 发表于 2017-10-18 15:13
当然会报错,事件脚本里的self对象是interpreter的实例。你要在事件的自定义移动路线里的脚本才能直接使 ...

那怎样才能直接在脚本页使用呢?
因为自定义移动路线里的脚本只能写一行,不能添加条件判断
作者: guoxiaomi    时间: 2017-10-18 17:01
本帖最后由 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)",即可达到判断变量实现不同的移动路线


作者: CCD0645    时间: 2017-10-22 13:10
guoxiaomi 发表于 2017-10-18 17:01
也可以做class Game_Event里定义函数,这里直接调用就行
如果有足够的耐心……可以看我签名里写的联机脚本 ...

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


作者: soulsaga    时间: 2017-10-22 14:42
本帖最后由 soulsaga 于 2017-10-22 14:54 编辑

RUBY 代码复制
  1. class Interpreter
  2. def command_209
  3.     # 获取角色
  4.     character = get_character(@parameters[0])
  5.     # 角色不存在的情况下
  6.     if character == nil
  7.       # 继续
  8.       return true
  9.     end
  10.     # 强制移动路线
  11.     if @parameters[0] == 1
  12.       for i in 1..$game_map.events.size
  13.         character = get_character(i)
  14.     character.force_move_route(@parameters[1]) if $game_map.events[i].x <= 20
  15.   end
  16. else
  17.   character.force_move_route(@parameters[1])
  18.   end
  19.     # 继续
  20.     return true
  21.   end
  22.   end

插入到MAIN上面..
if @parameters[0] == 1这行
1等於当进行1路线移动为1号事件时当前地图所有事件都会执行路线移动..
character.force_move_route(@parameters[1]) if $game_map.events.x <= 20这行就是任意事件的X坐标小於等於20时该事件才会执行强制移动..其他判断条件你问大神就好了..

作者: SailCat    时间: 2017-11-8 23:58
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
等待移动结束





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1