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

Project1

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

悬赏2vip 整合脚本角色跟随与传送脚本

 关闭 [复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

跳转到指定楼层
1
发表于 2007-7-16 20:43:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
传送脚本是:
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. # 自定义内容解释:
  5. # TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x,
  6. #              传送去的地图y],角色朝向]
  7. #
  8. # 编号请按照0、1、2、3……顺序往下排布
  9. # 当编号的开关打开的时候,才可以选择这个传送地点
  10. # 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系
  11. # 如果是其他方向请自己改。
  12. #
  13. # 需要制作脚本,请点击66rpg.com最底部的QQ交谈
  14. #
  15. # 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件:
  16. #           呼叫脚本:$scene = Scene_Teleport.new
  17. #
  18. # 制作者:柳柳
  19. #==============================================================================
  20. TOWNS=[]
  21. TOWNS[0]=["古德城堡东门",1,[1,2,3],2]
  22. TOWNS[1]=["古德城堡西门",2,[1,2,5],4]
  23. #==============================================================================
  24. # ■ Window_Teleport
  25. #------------------------------------------------------------------------------
  26. #  处理传送的窗口
  27. #==============================================================================
  28. class Window_Teleport < Window_Selectable
  29.   #--------------------------------------------------------------------------
  30.   # ● 初始化对像
  31.   #--------------------------------------------------------------------------
  32.   def initialize
  33.     super(640,640,64,64)
  34.     self.contents = Bitmap.new(width, height)
  35.     self.opacity = 180
  36.     get_towns
  37.     draw_towns
  38.     @column_max = 1
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 获取可到达的城镇和窗口大小
  42.   #--------------------------------------------------------------------------
  43.   def get_towns
  44.     @carol3_towns = []
  45.     @width_temp = 0
  46.     @cont_use = false
  47.     for town in TOWNS
  48.       if $game_switches[town[1]]==true
  49.         @carol3_towns.push(town)
  50.         if contents.text_size(town[0]).width >= @width_temp
  51.           @width_temp = contents.text_size(town[0]).width
  52.         end
  53.       end
  54.     end
  55.     @item_max = @carol3_towns.size
  56.     if @item_max == 0
  57.       @carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
  58.       @width_temp = contents.text_size(@carol3_towns[0][0]).width
  59.       @item_max = 1
  60.       @cont_use = true
  61.     end
  62.     self.width = [@width_temp+32,480].min
  63.     self.height = [(@item_max+1)*32,360].min
  64.     self.x = (640-self.width)/2
  65.     self.y = (480-self.height)/2
  66.     self.contents = Bitmap.new(width-32,row_max*32)
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 描绘城镇名称
  70.   #--------------------------------------------------------------------------
  71.   def draw_towns
  72.     for i in 0...@carol3_towns.size
  73.       self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1)
  74.     end
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 返回的内容
  78.   #========================================================================
  79.   # ● 地图编号
  80.   #--------------------------------------------------------------------------
  81.   def map_id
  82.     return @carol3_towns[self.index][2][0]
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 地图x坐标
  86.   #--------------------------------------------------------------------------
  87.   def map_x
  88.     return @carol3_towns[self.index][2][1]
  89.   end      
  90.   #--------------------------------------------------------------------------
  91.   # ● 地图y坐标
  92.   #--------------------------------------------------------------------------
  93.   def map_y
  94.     return @carol3_towns[self.index][2][2]
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 角色朝向
  98.   #--------------------------------------------------------------------------
  99.   def map_direction
  100.     return @carol3_towns[self.index][2][3]
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 判断是否一个城市都没有
  104.   #--------------------------------------------------------------------------
  105.   def cant_use?
  106.     return @cont_use
  107.   end
  108. end
  109. #==============================================================================
  110. # ■ Scene_Teleport
  111. #------------------------------------------------------------------------------
  112. #  处理传送执行的类
  113. #==============================================================================
  114. class Scene_Teleport
  115.   #--------------------------------------------------------------------------
  116.   # ● 主处理
  117.   #--------------------------------------------------------------------------
  118.   def main
  119.     $game_system.se_play($data_system.decision_se)
  120.     @carol3_trans_white = false
  121.     @carol3_map_sprite = Spriteset_Map.new
  122.     @carol3_teleport_window = Window_Teleport.new
  123.     if @carol3_teleport_window.cant_use?
  124.       @carol3_teleport_window.index = -1
  125.     else
  126.       @carol3_teleport_window.index = 0
  127.     end
  128.     @carol3_teleport_window.active = true
  129.     Graphics.transition
  130.     loop do
  131.       Graphics.update
  132.       Input.update
  133.       carol3_update
  134.       if $scene != self
  135.         break
  136.       end
  137.     end   
  138.     if @carol3_trans_white==true
  139.       @carol3_white_sprite = Sprite.new
  140.       @carol3_white_sprite.bitmap = Bitmap.new(640,480)
  141.       @carol3_white_sprite.opacity = 0
  142.       @carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))
  143.       for i in 0..20
  144.         @carol3_white_sprite.opacity += 15
  145.         @carol3_teleport_window.opacity -= 12
  146.         @carol3_teleport_window.contents_opacity -= 12
  147.         Graphics.update
  148.       end
  149.       Graphics.freeze
  150.       Graphics.transition(0)
  151.       Graphics.update
  152.       @carol3_map_sprite.dispose
  153.       $game_map.setup($game_temp.player_new_map_id)
  154.       $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  155.       $game_player.turn_down
  156.       $game_player.straighten
  157.       $game_map.autoplay      
  158.       Graphics.frame_reset
  159.       for i in 0..20
  160.         @carol3_white_sprite.opacity -= 15
  161.         Graphics.update
  162.       end
  163.       @carol3_white_sprite.dispose
  164.       @carol3_teleport_window.dispose
  165.       Graphics.freeze
  166.     else
  167.       Graphics.freeze
  168.       @carol3_teleport_window.dispose
  169.       @carol3_map_sprite.dispose
  170.     end   
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 刷新画面
  174.   #--------------------------------------------------------------------------
  175.   def carol3_update
  176.     @carol3_teleport_window.update
  177.     if Input.trigger?(Input::B)
  178.       $game_system.se_play($data_system.cancel_se)
  179.       $scene = Scene_Map.new
  180.       return
  181.     end
  182.     if Input.trigger?(Input::C)
  183.       if @carol3_teleport_window.index == -1
  184.         $game_system.se_play($data_system.cancel_se)
  185.         $scene = Scene_Map.new
  186.         return
  187.       else        
  188.         $game_temp.player_new_map_id = @carol3_teleport_window.map_id
  189.         $game_temp.player_new_x = @carol3_teleport_window.map_x
  190.         $game_temp.player_new_y = @carol3_teleport_window.map_y
  191.         $game_temp.player_new_direction = @carol3_teleport_window.map_direction
  192.         $game_temp.player_transferring = true
  193.         $game_temp.transition_processing = true
  194.         $game_temp.transition_name = ""
  195.         $scene = Scene_Map.new
  196.         @carol3_trans_white = true
  197.         Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
  198.         return
  199.       end
  200.     end   
  201.   end
  202. end

  203. #==============================================================================
  204. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  205. #==============================================================================
复制代码

跟随脚本是或主站上其他的跟随脚本:
  1. class Game_Character
  2. attr_accessor :move_speed
  3. end

  4. class Game_Map
  5. attr_accessor :oldroute
  6. attr_accessor :oldeventsnums
  7. attr_reader   :map
  8. alias initialize_old initialize
  9. def initialize
  10.    initialize_old
  11.    @oldroute = []
  12.    @oldeventsnums = 0
  13. end
  14. end

  15. class Game_Player < Game_Character
  16. alias update_old update
  17. def update
  18.    last_moving = moving?
  19.    unless moving? or $game_system.map_interpreter.running? or
  20.           @move_route_forcing or $game_temp.message_window_showing
  21.      case Input.dir4
  22.      when 2
  23.        if passable?(@x, @y, 2)
  24.          $game_map.oldroute.push([@x,@y,2])
  25.          if $game_map.oldroute.size == $game_party.actors.size
  26.            $game_map.oldroute.shift
  27.          end
  28.        end
  29.        move_down
  30.      when 4
  31.        if passable?(@x, @y, 4)
  32.          $game_map.oldroute.push([@x,@y,4])
  33.          if $game_map.oldroute.size == $game_party.actors.size
  34.            $game_map.oldroute.shift
  35.          end
  36.        end
  37.        move_left
  38.      when 6
  39.        if passable?(@x, @y, 6)
  40.          $game_map.oldroute.push([@x,@y,6])
  41.          if $game_map.oldroute.size == $game_party.actors.size
  42.            $game_map.oldroute.shift
  43.          end
  44.        end
  45.        move_right
  46.      when 8
  47.        if passable?(@x, @y, 8)
  48.          $game_map.oldroute.push([@x,@y,8])
  49.          if $game_map.oldroute.size == $game_party.actors.size
  50.            $game_map.oldroute.shift
  51.          end
  52.        end
  53.        move_up
  54.      end
  55.    end
  56.    update_old
  57. end
  58. end

  59. class Interpreter
  60. def command_129
  61.    actor = $game_actors[@parameters[0]]
  62.    if actor != nil
  63.      if @parameters[1] == 0
  64.        if @parameters[2] == 1
  65.          $game_actors[@parameters[0]].setup(@parameters[0])
  66.        end
  67.        $game_party.add_actor(@parameters[0])
  68.        $scene.del_follow
  69.        $scene.follow_system
  70.      else
  71.        $game_party.remove_actor(@parameters[0])
  72.        $scene.del_follow
  73.        $scene.follow_system
  74.      end
  75.    end
  76.    return true
  77. end
  78. end

  79. class Scene_Map
  80. alias main_old main
  81. def main
  82.    @spriteset = Spriteset_Map.new
  83.    if $game_variables[1000] == 0
  84.      follow_system
  85.      $game_variables[1000] = 1
  86.    end
  87.    main_old
  88. end

  89. alias update_old update
  90. def update
  91.    follow_system_update
  92.    update_old
  93. end

  94. alias transfer_player_old transfer_player
  95. def transfer_player
  96.    $game_temp.player_transferring = false
  97.    if $game_map.map_id != $game_temp.player_new_map_id
  98.      del_follow
  99.      $game_map.setup($game_temp.player_new_map_id)
  100.    end
  101.    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  102.    follow_system
  103.    transfer_player_old
  104. end

  105. def follow_system
  106.    $game_map.oldeventsnums = $game_map.events.size
  107.    if $game_party.actors.size>=2
  108.      for i in 2..$game_party.actors.size
  109.        # 为事件加上名字考虑做srpg用
  110.        name = "我军,"+i.to_s
  111.        character_name = $game_party.actors[i-1].character_name
  112.        party_event($game_player.x,$game_player.y,name,character_name)
  113.        $game_map.oldroute.push([$game_player.x,$game_player.y,$game_player.direction])
  114.      end
  115.    end
  116. end

  117. def del_follow
  118.    $game_map.oldroute.clear
  119.    for i in 1..($game_map.events.size-$game_map.oldeventsnums)
  120.      $game_map.events.delete($game_map.oldeventsnums+i)
  121.    end
  122. end

  123. def party_event(x,y,name,character_name)
  124.    $game_map.events[$game_map.events.size+1] = Game_Event.new($game_map.map_id,produce_party_event(x,y,name,character_name))
  125.    $game_map.map.events[$game_map.events.size] = produce_party_event(x,y,name,character_name)
  126.    @spriteset.dispose
  127.    @spriteset = Spriteset_Map.new
  128. end

  129. def produce_party_event(x,y,name,character_name)
  130.    e = RPG::Event.new(x,y)
  131.    e.id = $game_map.events.size
  132.    e.name = name
  133.    e.pages = [RPG::Event::Page.new]   
  134.    e.pages[0].graphic = RPG::Event::Page::Graphic.new
  135.    e.pages[0].graphic.character_name = character_name   
  136.    e.pages[0].through = true
  137.    return e
  138. end

  139. def follow_system_update
  140.    num = $game_map.oldeventsnums
  141.    n = $game_player.move_speed
  142.    s=$game_map.oldroute.size-1

  143.    if s>=0
  144.      #$game_map.events[num+1].move_speed = n
  145.      if $game_map.events[num+1].x>$game_map.oldroute[s][0]
  146.        $game_map.events[num+1].move_left
  147.      elsif $game_map.events[num+1].x<$game_map.oldroute[s][0]
  148.        $game_map.events[num+1].move_right
  149.      elsif $game_map.events[num+1].y>$game_map.oldroute[s][1]
  150.        $game_map.events[num+1].move_up
  151.      elsif $game_map.events[num+1].y<$game_map.oldroute[s][1]
  152.        $game_map.events[num+1].move_down
  153.      end
  154.    end
  155.    if s>=1
  156.      $game_map.events[num+2].move_speed = n
  157.      if $game_map.events[num+2].x>$game_map.oldroute[s-1][0]
  158.        $game_map.events[num+2].move_left
  159.      elsif $game_map.events[num+2].x<$game_map.oldroute[s-1][0]
  160.        $game_map.events[num+2].move_right
  161.      elsif $game_map.events[num+2].y>$game_map.oldroute[s-1][1]
  162.        $game_map.events[num+2].move_up
  163.      elsif $game_map.events[num+2].y<$game_map.oldroute[s-1][1]
  164.        $game_map.events[num+2].move_down
  165.      end
  166.    end
  167.    if s>=2
  168.      $game_map.events[num+3].move_speed = n
  169.      if $game_map.events[num+3].x>$game_map.oldroute[s-2][0]
  170.        $game_map.events[num+3].move_left
  171.      elsif $game_map.events[num+3].x<$game_map.oldroute[s-2][0]
  172.        $game_map.events[num+3].move_right
  173.      elsif $game_map.events[num+3].y>$game_map.oldroute[s-2][1]
  174.        $game_map.events[num+3].move_up
  175.      elsif $game_map.events[num+3].y<$game_map.oldroute[s-2][1]
  176.        $game_map.events[num+3].move_down
  177.      end
  178.    end
  179. end
  180. end

复制代码


版务信息:本贴由楼主自主结贴~
哎呀,蛋疼什么的最有爱了

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

2
 楼主| 发表于 2007-7-16 20:43:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
传送脚本是:
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. # 自定义内容解释:
  5. # TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x,
  6. #              传送去的地图y],角色朝向]
  7. #
  8. # 编号请按照0、1、2、3……顺序往下排布
  9. # 当编号的开关打开的时候,才可以选择这个传送地点
  10. # 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系
  11. # 如果是其他方向请自己改。
  12. #
  13. # 需要制作脚本,请点击66rpg.com最底部的QQ交谈
  14. #
  15. # 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件:
  16. #           呼叫脚本:$scene = Scene_Teleport.new
  17. #
  18. # 制作者:柳柳
  19. #==============================================================================
  20. TOWNS=[]
  21. TOWNS[0]=["古德城堡东门",1,[1,2,3],2]
  22. TOWNS[1]=["古德城堡西门",2,[1,2,5],4]
  23. #==============================================================================
  24. # ■ Window_Teleport
  25. #------------------------------------------------------------------------------
  26. #  处理传送的窗口
  27. #==============================================================================
  28. class Window_Teleport < Window_Selectable
  29.   #--------------------------------------------------------------------------
  30.   # ● 初始化对像
  31.   #--------------------------------------------------------------------------
  32.   def initialize
  33.     super(640,640,64,64)
  34.     self.contents = Bitmap.new(width, height)
  35.     self.opacity = 180
  36.     get_towns
  37.     draw_towns
  38.     @column_max = 1
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 获取可到达的城镇和窗口大小
  42.   #--------------------------------------------------------------------------
  43.   def get_towns
  44.     @carol3_towns = []
  45.     @width_temp = 0
  46.     @cont_use = false
  47.     for town in TOWNS
  48.       if $game_switches[town[1]]==true
  49.         @carol3_towns.push(town)
  50.         if contents.text_size(town[0]).width >= @width_temp
  51.           @width_temp = contents.text_size(town[0]).width
  52.         end
  53.       end
  54.     end
  55.     @item_max = @carol3_towns.size
  56.     if @item_max == 0
  57.       @carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
  58.       @width_temp = contents.text_size(@carol3_towns[0][0]).width
  59.       @item_max = 1
  60.       @cont_use = true
  61.     end
  62.     self.width = [@width_temp+32,480].min
  63.     self.height = [(@item_max+1)*32,360].min
  64.     self.x = (640-self.width)/2
  65.     self.y = (480-self.height)/2
  66.     self.contents = Bitmap.new(width-32,row_max*32)
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 描绘城镇名称
  70.   #--------------------------------------------------------------------------
  71.   def draw_towns
  72.     for i in 0...@carol3_towns.size
  73.       self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1)
  74.     end
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 返回的内容
  78.   #========================================================================
  79.   # ● 地图编号
  80.   #--------------------------------------------------------------------------
  81.   def map_id
  82.     return @carol3_towns[self.index][2][0]
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 地图x坐标
  86.   #--------------------------------------------------------------------------
  87.   def map_x
  88.     return @carol3_towns[self.index][2][1]
  89.   end      
  90.   #--------------------------------------------------------------------------
  91.   # ● 地图y坐标
  92.   #--------------------------------------------------------------------------
  93.   def map_y
  94.     return @carol3_towns[self.index][2][2]
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 角色朝向
  98.   #--------------------------------------------------------------------------
  99.   def map_direction
  100.     return @carol3_towns[self.index][2][3]
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 判断是否一个城市都没有
  104.   #--------------------------------------------------------------------------
  105.   def cant_use?
  106.     return @cont_use
  107.   end
  108. end
  109. #==============================================================================
  110. # ■ Scene_Teleport
  111. #------------------------------------------------------------------------------
  112. #  处理传送执行的类
  113. #==============================================================================
  114. class Scene_Teleport
  115.   #--------------------------------------------------------------------------
  116.   # ● 主处理
  117.   #--------------------------------------------------------------------------
  118.   def main
  119.     $game_system.se_play($data_system.decision_se)
  120.     @carol3_trans_white = false
  121.     @carol3_map_sprite = Spriteset_Map.new
  122.     @carol3_teleport_window = Window_Teleport.new
  123.     if @carol3_teleport_window.cant_use?
  124.       @carol3_teleport_window.index = -1
  125.     else
  126.       @carol3_teleport_window.index = 0
  127.     end
  128.     @carol3_teleport_window.active = true
  129.     Graphics.transition
  130.     loop do
  131.       Graphics.update
  132.       Input.update
  133.       carol3_update
  134.       if $scene != self
  135.         break
  136.       end
  137.     end   
  138.     if @carol3_trans_white==true
  139.       @carol3_white_sprite = Sprite.new
  140.       @carol3_white_sprite.bitmap = Bitmap.new(640,480)
  141.       @carol3_white_sprite.opacity = 0
  142.       @carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))
  143.       for i in 0..20
  144.         @carol3_white_sprite.opacity += 15
  145.         @carol3_teleport_window.opacity -= 12
  146.         @carol3_teleport_window.contents_opacity -= 12
  147.         Graphics.update
  148.       end
  149.       Graphics.freeze
  150.       Graphics.transition(0)
  151.       Graphics.update
  152.       @carol3_map_sprite.dispose
  153.       $game_map.setup($game_temp.player_new_map_id)
  154.       $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  155.       $game_player.turn_down
  156.       $game_player.straighten
  157.       $game_map.autoplay      
  158.       Graphics.frame_reset
  159.       for i in 0..20
  160.         @carol3_white_sprite.opacity -= 15
  161.         Graphics.update
  162.       end
  163.       @carol3_white_sprite.dispose
  164.       @carol3_teleport_window.dispose
  165.       Graphics.freeze
  166.     else
  167.       Graphics.freeze
  168.       @carol3_teleport_window.dispose
  169.       @carol3_map_sprite.dispose
  170.     end   
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 刷新画面
  174.   #--------------------------------------------------------------------------
  175.   def carol3_update
  176.     @carol3_teleport_window.update
  177.     if Input.trigger?(Input::B)
  178.       $game_system.se_play($data_system.cancel_se)
  179.       $scene = Scene_Map.new
  180.       return
  181.     end
  182.     if Input.trigger?(Input::C)
  183.       if @carol3_teleport_window.index == -1
  184.         $game_system.se_play($data_system.cancel_se)
  185.         $scene = Scene_Map.new
  186.         return
  187.       else        
  188.         $game_temp.player_new_map_id = @carol3_teleport_window.map_id
  189.         $game_temp.player_new_x = @carol3_teleport_window.map_x
  190.         $game_temp.player_new_y = @carol3_teleport_window.map_y
  191.         $game_temp.player_new_direction = @carol3_teleport_window.map_direction
  192.         $game_temp.player_transferring = true
  193.         $game_temp.transition_processing = true
  194.         $game_temp.transition_name = ""
  195.         $scene = Scene_Map.new
  196.         @carol3_trans_white = true
  197.         Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
  198.         return
  199.       end
  200.     end   
  201.   end
  202. end

  203. #==============================================================================
  204. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  205. #==============================================================================
复制代码

跟随脚本是或主站上其他的跟随脚本:
  1. class Game_Character
  2. attr_accessor :move_speed
  3. end

  4. class Game_Map
  5. attr_accessor :oldroute
  6. attr_accessor :oldeventsnums
  7. attr_reader   :map
  8. alias initialize_old initialize
  9. def initialize
  10.    initialize_old
  11.    @oldroute = []
  12.    @oldeventsnums = 0
  13. end
  14. end

  15. class Game_Player < Game_Character
  16. alias update_old update
  17. def update
  18.    last_moving = moving?
  19.    unless moving? or $game_system.map_interpreter.running? or
  20.           @move_route_forcing or $game_temp.message_window_showing
  21.      case Input.dir4
  22.      when 2
  23.        if passable?(@x, @y, 2)
  24.          $game_map.oldroute.push([@x,@y,2])
  25.          if $game_map.oldroute.size == $game_party.actors.size
  26.            $game_map.oldroute.shift
  27.          end
  28.        end
  29.        move_down
  30.      when 4
  31.        if passable?(@x, @y, 4)
  32.          $game_map.oldroute.push([@x,@y,4])
  33.          if $game_map.oldroute.size == $game_party.actors.size
  34.            $game_map.oldroute.shift
  35.          end
  36.        end
  37.        move_left
  38.      when 6
  39.        if passable?(@x, @y, 6)
  40.          $game_map.oldroute.push([@x,@y,6])
  41.          if $game_map.oldroute.size == $game_party.actors.size
  42.            $game_map.oldroute.shift
  43.          end
  44.        end
  45.        move_right
  46.      when 8
  47.        if passable?(@x, @y, 8)
  48.          $game_map.oldroute.push([@x,@y,8])
  49.          if $game_map.oldroute.size == $game_party.actors.size
  50.            $game_map.oldroute.shift
  51.          end
  52.        end
  53.        move_up
  54.      end
  55.    end
  56.    update_old
  57. end
  58. end

  59. class Interpreter
  60. def command_129
  61.    actor = $game_actors[@parameters[0]]
  62.    if actor != nil
  63.      if @parameters[1] == 0
  64.        if @parameters[2] == 1
  65.          $game_actors[@parameters[0]].setup(@parameters[0])
  66.        end
  67.        $game_party.add_actor(@parameters[0])
  68.        $scene.del_follow
  69.        $scene.follow_system
  70.      else
  71.        $game_party.remove_actor(@parameters[0])
  72.        $scene.del_follow
  73.        $scene.follow_system
  74.      end
  75.    end
  76.    return true
  77. end
  78. end

  79. class Scene_Map
  80. alias main_old main
  81. def main
  82.    @spriteset = Spriteset_Map.new
  83.    if $game_variables[1000] == 0
  84.      follow_system
  85.      $game_variables[1000] = 1
  86.    end
  87.    main_old
  88. end

  89. alias update_old update
  90. def update
  91.    follow_system_update
  92.    update_old
  93. end

  94. alias transfer_player_old transfer_player
  95. def transfer_player
  96.    $game_temp.player_transferring = false
  97.    if $game_map.map_id != $game_temp.player_new_map_id
  98.      del_follow
  99.      $game_map.setup($game_temp.player_new_map_id)
  100.    end
  101.    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  102.    follow_system
  103.    transfer_player_old
  104. end

  105. def follow_system
  106.    $game_map.oldeventsnums = $game_map.events.size
  107.    if $game_party.actors.size>=2
  108.      for i in 2..$game_party.actors.size
  109.        # 为事件加上名字考虑做srpg用
  110.        name = "我军,"+i.to_s
  111.        character_name = $game_party.actors[i-1].character_name
  112.        party_event($game_player.x,$game_player.y,name,character_name)
  113.        $game_map.oldroute.push([$game_player.x,$game_player.y,$game_player.direction])
  114.      end
  115.    end
  116. end

  117. def del_follow
  118.    $game_map.oldroute.clear
  119.    for i in 1..($game_map.events.size-$game_map.oldeventsnums)
  120.      $game_map.events.delete($game_map.oldeventsnums+i)
  121.    end
  122. end

  123. def party_event(x,y,name,character_name)
  124.    $game_map.events[$game_map.events.size+1] = Game_Event.new($game_map.map_id,produce_party_event(x,y,name,character_name))
  125.    $game_map.map.events[$game_map.events.size] = produce_party_event(x,y,name,character_name)
  126.    @spriteset.dispose
  127.    @spriteset = Spriteset_Map.new
  128. end

  129. def produce_party_event(x,y,name,character_name)
  130.    e = RPG::Event.new(x,y)
  131.    e.id = $game_map.events.size
  132.    e.name = name
  133.    e.pages = [RPG::Event::Page.new]   
  134.    e.pages[0].graphic = RPG::Event::Page::Graphic.new
  135.    e.pages[0].graphic.character_name = character_name   
  136.    e.pages[0].through = true
  137.    return e
  138. end

  139. def follow_system_update
  140.    num = $game_map.oldeventsnums
  141.    n = $game_player.move_speed
  142.    s=$game_map.oldroute.size-1

  143.    if s>=0
  144.      #$game_map.events[num+1].move_speed = n
  145.      if $game_map.events[num+1].x>$game_map.oldroute[s][0]
  146.        $game_map.events[num+1].move_left
  147.      elsif $game_map.events[num+1].x<$game_map.oldroute[s][0]
  148.        $game_map.events[num+1].move_right
  149.      elsif $game_map.events[num+1].y>$game_map.oldroute[s][1]
  150.        $game_map.events[num+1].move_up
  151.      elsif $game_map.events[num+1].y<$game_map.oldroute[s][1]
  152.        $game_map.events[num+1].move_down
  153.      end
  154.    end
  155.    if s>=1
  156.      $game_map.events[num+2].move_speed = n
  157.      if $game_map.events[num+2].x>$game_map.oldroute[s-1][0]
  158.        $game_map.events[num+2].move_left
  159.      elsif $game_map.events[num+2].x<$game_map.oldroute[s-1][0]
  160.        $game_map.events[num+2].move_right
  161.      elsif $game_map.events[num+2].y>$game_map.oldroute[s-1][1]
  162.        $game_map.events[num+2].move_up
  163.      elsif $game_map.events[num+2].y<$game_map.oldroute[s-1][1]
  164.        $game_map.events[num+2].move_down
  165.      end
  166.    end
  167.    if s>=2
  168.      $game_map.events[num+3].move_speed = n
  169.      if $game_map.events[num+3].x>$game_map.oldroute[s-2][0]
  170.        $game_map.events[num+3].move_left
  171.      elsif $game_map.events[num+3].x<$game_map.oldroute[s-2][0]
  172.        $game_map.events[num+3].move_right
  173.      elsif $game_map.events[num+3].y>$game_map.oldroute[s-2][1]
  174.        $game_map.events[num+3].move_up
  175.      elsif $game_map.events[num+3].y<$game_map.oldroute[s-2][1]
  176.        $game_map.events[num+3].move_down
  177.      end
  178.    end
  179. end
  180. end

复制代码


版务信息:本贴由楼主自主结贴~
哎呀,蛋疼什么的最有爱了

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

3
 楼主| 发表于 2007-7-18 03:28:02 | 只看该作者
快啊!
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-11-21
帖子
240
4
发表于 2007-7-18 05:49:04 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

5
 楼主| 发表于 2007-7-25 04:50:08 | 只看该作者
thank
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-9-22 13:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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