Project1

标题: 修改后的按键加速脚本问题!请教冲突到底在哪里? [打印本页]

作者: 幻耶    时间: 2009-10-27 19:30
标题: 修改后的按键加速脚本问题!请教冲突到底在哪里?
本帖最后由 幻耶 于 2009-10-27 19:32 编辑

以下脚本是实现按SHIFT键让角色前冲一段距离,而我又在Game_Player的update下添加了这一句:@move_speed = $game_party.actors[0].agi/200 + 2.5 用来把角色行走速度与角色的AGI关联起来,但是一运行进游戏就如下图出错,去掉前冲脚本就正常,请教如何让它们并存呢???


前冲脚本
  1. class Game_Player
  2.   #--------------------------------------------------------------------------
  3.   # ● フレーム更新
  4.   #--------------------------------------------------------------------------
  5.   alias old_update update
  6.   def update
  7.     unless $game_system.map_interpreter.running? or
  8.       @move_route_forcing or $game_temp.message_window_showing
  9.       if Input.press?(Input::SHIFT)
  10.         if @move_speed != 6
  11.           @move_speed = 6
  12.           move_route = RPG::MoveRoute.new
  13.           move_route.repeat = false
  14.           move_route.list.clear
  15.           move_command = RPG::MoveCommand.new
  16.           move_command.code = @direction / 2
  17.           5.times{move_route.list.push(move_command.clone)}
  18.           move_command.code = 0
  19.           move_route.list.push(move_command)
  20.           force_move_route(move_route)
  21.           @character_name_run = @character_name
  22.           @character_name = @character_name + "rush"
  23.           Audio.se_play("Audio/SE/"+"013-Move01",80,100)
  24.           $game_temp.common_event_id = 51
  25.         end
  26.       else
  27.         if @move_speed != 4
  28.           @move_speed = 4
  29.           @character_name = @character_name_run
  30.         end
  31.       end  
  32.     end
  33.     old_update
  34.     if @move_route_forcing
  35.       if not @move_route.skippable and not moving? and not jumping?
  36.         @move_route_index = @move_route.list.size - 1
  37.         return
  38.       end
  39.     end
  40.   end
  41. end
复制代码

11.JPG (8.39 KB, 下载次数: 0)

11.JPG

作者: secondsen    时间: 2009-10-27 20:19
在精灵类里报错的。。。nil加到字符串了。。。检查下你变为跑动图的那个字符串吧
作者: 幻耶    时间: 2009-10-27 20:29
本帖最后由 幻耶 于 2009-10-27 20:50 编辑

这个怎么检查啊。。。脚本盲:'(
而且跑动图变化和@move_speed 有什么关系?
作者: secondsen    时间: 2009-10-27 23:41
本帖最后由 secondsen 于 2009-10-27 23:43 编辑

你要把这两个关联起来,就不用改game_player直接在你的这个脚本上改就可以。。。。

  1. class Game_Player
  2.   #--------------------------------------------------------------------------
  3.   # ● フレーム更新
  4.   #--------------------------------------------------------------------------
  5.   alias old_update update
  6.   def update
  7.     unless $game_system.map_interpreter.running? or
  8.       @move_route_forcing or $game_temp.message_window_showing
  9.       if Input.press?(Input::SHIFT)
  10.         if @move_speed != 6
  11.           @move_speed = 6
  12.           move_route = RPG::MoveRoute.new
  13.           move_route.repeat = false
  14.           move_route.list.clear
  15.           move_command = RPG::MoveCommand.new
  16.           move_command.code = @direction / 2
  17.           5.times{move_route.list.push(move_command.clone)}
  18.           move_command.code = 0
  19.           move_route.list.push(move_command)
  20.           force_move_route(move_route)
  21.           #@character_name_run = @character_name
  22.           #@character_name = @character_name + "rush"
  23.           Audio.se_play("Audio/SE/"+"013-Move01",80,100)
  24.           #$game_temp.common_event_id = 51
  25.         end
  26.       else
  27.         if @move_speed != $game_party.actors[0].agi/200.0 + 2.5
  28.           @move_speed = $game_party.actors[0].agi/200.0 + 2.5
  29.           #@character_name = @character_name_run
  30.         end
  31.       end  
  32.     end
  33.     old_update
  34.     if @move_route_forcing
  35.       if not @move_route.skippable and not moving? and not jumping?
  36.         @move_route_index = @move_route.list.size - 1
  37.         return
  38.       end
  39.     end
  40.   end
  41. end
复制代码
自己看看有什么不同把。。。那样改的话反而会影响这个脚本。。。。另外,我没有碰到你说的问题啊。。。。

另外,我个人估计,你有可能是哪里把@character_name改成nil了。。。具体你这个脚本怎么弄得,我就不得而知了
作者: 幻耶    时间: 2009-10-28 09:12
把@character_name改成nil?好像没有吧,

我开了一个全新的工程测试,在Game_Player的update下添加:@move_speed = $game_party.actors[0].agi/200 + 2.5 ,然后再插进第一楼的脚本,运行进游戏还是会出错
作者: 幻耶    时间: 2009-10-28 09:31
就是这个工程,缺省脚本都没动,只加了一个前冲脚本,一进游戏就出错,如果改成4楼那样行走图就换不了了

Project8测试加速前冲.rar

188.82 KB, 下载次数: 48


作者: secondsen    时间: 2009-10-28 12:12
本帖最后由 secondsen 于 2009-10-28 12:16 编辑

我没有你那些个图片阿。。。所以把图片的都注释掉了。。OTZ

这样改
那段脚本复制成这样。。
  1. class Game_Player
  2.   attr_accessor :move_speed
  3.   #--------------------------------------------------------------------------
  4.   # ● フレーム更新
  5.   #--------------------------------------------------------------------------
  6.   alias old_update update
  7.   def update
  8.     unless $game_system.map_interpreter.running? or
  9.       @move_route_forcing or $game_temp.message_window_showing
  10.       if Input.press?(Input::SHIFT)
  11.         if @move_speed != 6
  12.           @move_speed = 6
  13.           move_route = RPG::MoveRoute.new
  14.           move_route.repeat = false
  15.           move_route.list.clear
  16.           move_command = RPG::MoveCommand.new
  17.           move_command.code = @direction / 2
  18.           5.times{move_route.list.push(move_command.clone)}
  19.           move_command.code = 0
  20.           move_route.list.push(move_command)
  21.           force_move_route(move_route)
  22.           @character_name_run = @character_name
  23.           @character_name = @character_name + "rush"
  24.           Audio.se_play("Audio/SE/"+"013-Move01",80,100)
  25.           $game_temp.common_event_id = 51
  26.         end
  27.       else
  28.         if @move_speed != $game_party.actors[0].agi/200.0 + 2.5
  29.           @move_speed = $game_party.actors[0].agi/200.0 + 2.5
  30.           @character_name = @character_name_run
  31.         end
  32.       end  
  33.     end
  34.     old_update
  35.     if @move_route_forcing
  36.       if not @move_route.skippable and not moving? and not jumping?
  37.         @move_route_index = @move_route.list.size - 1
  38.         return
  39.       end
  40.     end
  41.   end
  42. end
复制代码
另外再改一个地方

Scene_Title

在131行处  也就是  
    # 设置初期同伴位置
    $game_party.setup_starting_members
之后插入这一句就可以了
  1. $game_player.move_speed = $game_party.actors[0].agi/200.0 + 2.5
复制代码
这句就是你的速度的计算公式

另外,还有个大问题,你摁住shift试一试,我估计你不是想要一直前冲的脚本把。。。前冲还能转向。。。
作者: 幻耶    时间: 2009-10-28 12:59
本帖最后由 幻耶 于 2009-10-28 13:25 编辑

非常感谢!!!麻烦了

001-Fighter01rush.png (25.89 KB, 下载次数: 0)

001-Fighter01rush.png





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