注册会员 登录
Project1 返回首页

喵呜喵5的树洞 https://rpg.blue/?291206 [收藏] [复制] [分享] [RSS]

日志

【脚本】移动路径指令加强

热度 19已有 2584 次阅读2013-9-16 16:37 |个人分类:脚本

=begin
===============================================================================
  移动路径指令加强 By喵呜喵5
===============================================================================

【说明】

  修改了默认事件移动路径指令中的一些指令增加了一些新的功能

  1.随机移动增强
    移动路径设置为随机移动的角色将会执行下面几个操作中的一个:
      随机移动一步、随机停止移动一段时间、随机转换方向
    角色的随机移动看起来将变得更加随机

  2.随机等待时间
    在移动路线中输入脚本:
      m5_route.wait(等待的最长时间,等待的最短时间)
    可以让事件移动过程中随机等待指定的帧数

  ※ 以下功能请通过事件指令的设置移动路径指令设置,
     不要设置到角色的移动路径 - 自定义中:

  3.滚个球
    在移动路线中输入脚本:
      m5_route.rolling_up
      m5_route.rolling_left
      m5_route.rolling_right
      m5_route.rolling_down
    事件将会分别向对应的方向(上、左、右、下)移动999步,
    移动过程中碰到障碍物会停止移动
    用这个功能可以实现类似踢足球的效果

  4.淡入淡出
    在移动路线中输入脚本:
      m5_route.fade_out(淡出时间)
      m5_route.fade_in(淡入时间)
    角色将会依照指定的时间执行淡入、淡出的效果

=end
#==============================================================================
#  脚本部分
#==============================================================================
$m5script ||= {}; $m5script[:M5MC20160114] = 20160114
module M5MC20160114; class Control
  attr_accessor :move_route
  attr_accessor :move_route_index
  def initialize(character)
    @character = character
    @current_command = nil
    @move_route = nil
    @move_route_index = 0
  end

  def wait(time = 250,min = 0)
    time = [rand(time), min].max
    command = RPG::MoveCommand.new(Game_Character::ROUTE_WAIT, [time + 1])
    @character.process_move_command(command)
  end

  def rolling_up;    rolling(Game_Character::ROUTE_MOVE_UP); end
  def rolling_left;  rolling(Game_Character::ROUTE_MOVE_LEFT); end
  def rolling_right; rolling(Game_Character::ROUTE_MOVE_RIGHT); end
  def rolling_down;  rolling(Game_Character::ROUTE_MOVE_DOWN); end
  def rolling(command_code)
    list = Array.new(999) {|i| RPG::MoveCommand.new(command_code)}
    set_move_command(:rolling, list)
  end

  def fade_in(time)
    opacity = @character.opacity
    code = Game_Character::ROUTE_CHANGE_OPACITY
    amount = (255.0 - opacity) / time
    list = Array.new(time - 1) do |i|
      value = opacity + amount * (i + 1)
      RPG::MoveCommand.new(code, [value.to_i])
    end
    list.push RPG::MoveCommand.new(code, 255)
    set_move_command(:fade_in, list)
  end
  def fade_out(time)
    opacity = @character.opacity
    code = Game_Character::ROUTE_CHANGE_OPACITY
    amount = (opacity) / time
    list = Array.new(time - 1) do |i|
      value = opacity - amount * (i + 1)
      RPG::MoveCommand.new(code, [value.to_i])
    end
    list.push RPG::MoveCommand.new(code, 0)
    set_move_command(:fade_out, list)
  end

  def set_move_command(name, list)
    @move_route || @character.m5_20160114_memorize_move_route
    @current_command = name
    route = RPG::MoveRoute.new
    route.repeat = false
    route.list = list
    route.list.push RPG::MoveCommand.new(Game_Character::ROUTE_END)
    @character.m5_20160114_set_move_route(route)
  end
  def process_route_end
    @move_route || return
    @character.m5_20160114_restore_move_route
    @current_command = nil
  end
  def move_route_fail(index)
    case @current_command
    when :rolling then process_route_end
    end
  end
end; end
class Game_Character
  alias m5_20160114_init_private_members init_private_members
  def init_private_members
    m5_20160114_init_private_members
    @m5_20160114_control = M5MC20160114::Control.new(self)
  end
  def m5_20160114_memorize_move_route
    @m5_20160114_control.move_route = @move_route
    @m5_20160114_control.move_route_index = @move_route_index
  end
  def m5_20160114_restore_move_route
    @move_route = @m5_20160114_control.move_route
    @move_route_index = @m5_20160114_control.move_route_index
    @move_route_index += 1
    @m5_20160114_control.move_route = nil
  end
  def m5_20160114_set_move_route(route)
    @move_route = route
    @move_route_index = 0
  end

  alias m5_20140607_process_route_end process_route_end
  def process_route_end
    @m5_20160114_control.process_route_end
    m5_20140607_process_route_end
  end
  alias m5_20140610_force_move_route force_move_route
  def force_move_route(move_route)
    @m5_20160114_control.process_route_end
    m5_20140610_force_move_route(move_route)
  end
  alias m5_20140607_advance_move_route_index advance_move_route_index
  def advance_move_route_index
    @move_succeed || @m5_20160114_control.move_route_fail(@move_route_index)
    m5_20140607_advance_move_route_index
  end

  alias m5_20140611_move_random move_random
  def move_random
    command = rand(3)
    case command
    when 0 then turn_random
    when 1 then m5_20140611_move_random
    when 2 then @m5_20160114_control.wait(120,30)
    end
  end

  def m5_route; @m5_20160114_control; end

end
3

鸡蛋
1

鲜花

刚表态过的朋友 (4 人)

发表评论 评论 (10 个评论)

回复 melove603 2015-3-14 23:27
配合扔球的脚本又可以多一种游戏方式了……赞~\(≧▽≦)/~
回复 黑舞嗜 2015-9-4 19:46
恕在下愚笨,随机等待那个命令怎么用都是脚本弹错,难道是我的使用方法错误,我是在自定义的脚本里打上wait_random(333,98)这样不对吗?求解
回复 喵呜喵5 2015-9-4 19:55
黑舞嗜: 恕在下愚笨,随机等待那个命令怎么用都是脚本弹错,难道是我的使用方法错误,我是在自定义的脚本里打上wait_random(333,98)这样不对吗?求解 ...
是我脚本注释的疏忽

指令中间逗号要用英文的逗号
回复 黑舞嗜 2015-9-4 20:35
喵呜喵5: 是我脚本注释的疏忽

指令中间逗号要用英文的逗号
额....这个我有想到过,然而中文英文的逗号结果都一样啊...都是Game_Character180行出错
回复 喵呜喵5 2015-9-4 21:18
黑舞嗜: 额....这个我有想到过,然而中文英文的逗号结果都一样啊...都是Game_Character180行出错
全新的工程也是这样吗?报错内容是什么?
回复 黑舞嗜 2015-9-4 21:38
喵呜喵5: 全新的工程也是这样吗?报错内容是什么?
是用全新工程试验的,两种逗号报错信息不一样,英文逗号的报错内容是undefined method `wait_random'for #<Game_Event:0x7f065e8>
回复 喵呜喵5 2015-9-4 21:56
黑舞嗜: 是用全新工程试验的,两种逗号报错信息不一样,英文逗号的报错内容是undefined method `wait_random'for #<Game_Event:0x7f065e8> ...
在移动路线中输入脚本
回复 黑舞嗜 2015-9-4 22:13
喵呜喵5: 在移动路线中输入脚本
是移动路线啊,不管是事件自定义的移动路线还是事件指令里的移动路线都试过了
回复 喵呜喵5 2015-9-4 22:24
黑舞嗜: 是移动路线啊,不管是事件自定义的移动路线还是事件指令里的移动路线都试过了
我这边测试的时候没有任何问题,请下载这个范例工程检查一下和你的设置有哪些不同
http://rm.66rpg.com/thread-383162-1-1.html
回复 黑舞嗜 2015-9-4 22:54
喵呜喵5: 我这边测试的时候没有任何问题,请下载这个范例工程检查一下和你的设置有哪些不同
http://rm.66rpg.com/thread-383162-1-1.html ...
额...似乎是脚本里不小心改掉了.....重新粘贴一次脚本就好了..感谢耐心解答

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

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

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

GMT+8, 2024-5-6 15:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部