仙剑之十里坡

标题: [6r教程整理]传送脚本 [打印本页]

作者: 最爱南宫煌    时间: 2010-7-2 22:29
标题: [6r教程整理]传送脚本
  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. TOWNS[2]=["修道院门口",3,[3,3,6],4]
  24. TOWNS[3]=["女神遗迹南口",4,[4,2,6],4]
  25. TOWNS[4]=["圣天城骑士团练兵场",5,[5,2,6],4]
  26. TOWNS[5]=["许愿之塔",6,[6,9,6],4]
  27. #==============================================================================
  28. # ■ Window_Teleport
  29. #------------------------------------------------------------------------------
  30. #  处理传送的窗口
  31. #==============================================================================
  32. class Window_Teleport < Window_Selectable
  33.   #--------------------------------------------------------------------------
  34.   # ● 初始化对像
  35.   #--------------------------------------------------------------------------
  36.   def initialize
  37.     super(640,640,64,64)
  38.     self.contents = Bitmap.new(width, height)
  39.     self.opacity = 180
  40.     get_towns
  41.     draw_towns
  42.     @column_max = 1
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 获取可到达的城镇和窗口大小
  46.   #--------------------------------------------------------------------------
  47.   def get_towns
  48.     @carol3_towns = []
  49.     @width_temp = 0
  50.     @cont_use = false
  51.     for town in TOWNS
  52.       if $game_switches[town[1]]==true
  53.         @carol3_towns.push(town)
  54.         if contents.text_size(town[0]).width >= @width_temp
  55.           @width_temp = contents.text_size(town[0]).width
  56.         end
  57.       end
  58.     end
  59.     @item_max = @carol3_towns.size
  60.     if @item_max == 0
  61.       @carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
  62.       @width_temp = contents.text_size(@carol3_towns[0][0]).width
  63.       @item_max = 1
  64.       @cont_use = true
  65.     end
  66.     self.width = [@width_temp+32,480].min
  67.     self.height = [(@item_max+1)*32,360].min
  68.     self.x = (640-self.width)/2
  69.     self.y = (480-self.height)/2
  70.     self.contents = Bitmap.new(width-32,row_max*32)
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 描绘城镇名称
  74.   #--------------------------------------------------------------------------
  75.   def draw_towns
  76.     for i in 0...@carol3_towns.size
  77.       self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1)
  78.     end
  79.   end
  80. #--------------------------------------------------------------------------
  81.   # ● 返回的内容
  82.   #========================================================================
  83.   # ● 地图编号
  84.   #--------------------------------------------------------------------------
  85.   def map_id
  86.     return @carol3_towns[self.index][2][0]
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 地图x坐标
  90.   #--------------------------------------------------------------------------
  91.   def map_x
  92.     return @carol3_towns[self.index][2][1]
  93.   end      
  94.   #--------------------------------------------------------------------------
  95.   # ● 地图y坐标
  96.   #--------------------------------------------------------------------------
  97.   def map_y
  98.     return @carol3_towns[self.index][2][2]
  99.   end  
  100.   #--------------------------------------------------------------------------
  101.   # ● 角色朝向
  102.   #--------------------------------------------------------------------------
  103.   def map_direction
  104.     return @carol3_towns[self.index][2][3]
  105.   end  
  106.   #--------------------------------------------------------------------------
  107.   # ● 判断是否一个城市都没有
  108.   #--------------------------------------------------------------------------
  109.   def cant_use?
  110.     return @cont_use
  111.   end  
  112. end
  113. #==============================================================================
  114. # ■ Scene_Teleport
  115. #------------------------------------------------------------------------------
  116. #  处理传送执行的类
  117. #==============================================================================
  118. class Scene_Teleport
  119.   #--------------------------------------------------------------------------
  120.   # ● 主处理
  121.   #--------------------------------------------------------------------------
  122.   def main
  123.     $game_system.se_play($data_system.decision_se)
  124.     @carol3_trans_white = false
  125.     @carol3_map_sprite = Spriteset_Map.new
  126.     @carol3_teleport_window = Window_Teleport.new
  127.     if @carol3_teleport_window.cant_use?
  128.       @carol3_teleport_window.index = -1
  129.     else
  130.       @carol3_teleport_window.index = 0
  131.     end
  132.     @carol3_teleport_window.active = true
  133.     Graphics.transition
  134.     loop do
  135.       Graphics.update
  136.       Input.update
  137.       carol3_update
  138.       if $scene != self
  139.         break
  140.       end
  141.     end     
  142.     if @carol3_trans_white==true
  143.       @carol3_white_sprite = Sprite.new
  144.       @carol3_white_sprite.bitmap = Bitmap.new(640,480)
  145.       @carol3_white_sprite.opacity = 0
  146.       @carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))  
  147.       for i in 0..20
  148.         @carol3_white_sprite.opacity += 15
  149.         @carol3_teleport_window.opacity -= 12
  150.         @carol3_teleport_window.contents_opacity -= 12
  151.         Graphics.update
  152.       end
  153.       Graphics.freeze
  154.       Graphics.transition(0)
  155.       Graphics.update
  156.       @carol3_map_sprite.dispose
  157.       $game_map.setup($game_temp.player_new_map_id)
  158.       $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  159.       $game_player.turn_down
  160.       $game_player.straighten
  161.       $game_map.autoplay      
  162.       Graphics.frame_reset
  163.       for i in 0..20
  164.         @carol3_white_sprite.opacity -= 15
  165.         Graphics.update
  166.       end
  167.       @carol3_white_sprite.dispose
  168.       @carol3_teleport_window.dispose
  169.       Graphics.freeze
  170.     else
  171.       Graphics.freeze
  172.       @carol3_teleport_window.dispose
  173.       @carol3_map_sprite.dispose
  174.     end     
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● 刷新画面
  178.   #--------------------------------------------------------------------------
  179.   def carol3_update
  180.     @carol3_teleport_window.update
  181.     if Input.trigger?(Input::B)
  182.       $game_system.se_play($data_system.cancel_se)
  183.       $scene = Scene_Map.new
  184.       return
  185.     end
  186.     if Input.trigger?(Input::C)
  187.       if @carol3_teleport_window.index == -1
  188.         $game_system.se_play($data_system.cancel_se)
  189.         $scene = Scene_Map.new
  190.         return
  191.       else         
  192.         $game_temp.player_new_map_id = @carol3_teleport_window.map_id
  193.         $game_temp.player_new_x = @carol3_teleport_window.map_x
  194.         $game_temp.player_new_y = @carol3_teleport_window.map_y
  195.         $game_temp.player_new_direction = @carol3_teleport_window.map_direction
  196.         $game_temp.player_transferring = true
  197.         $game_temp.transition_processing = true
  198.         $game_temp.transition_name = ""
  199.         $scene = Scene_Map.new
  200.         @carol3_trans_white = true
  201.         Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
  202.         return
  203.       end
  204.     end     
  205.   end
  206. end
复制代码

作者: 最爱南宫煌    时间: 2010-7-2 22:30
解释一下,这个就是在不同的开关打开时触动相同的事件,到达不同的场景。
作者: BlackFeather    时间: 2010-7-3 05:35
这个不如用事件做
作者: 最爱南宫煌    时间: 2010-7-3 11:36
我也是这么想的,不如来个公共事件里面来几个条件分歧。
作者: BlackFeather    时间: 2010-7-3 12:50
你这样想的话还发?




欢迎光临 仙剑之十里坡 (http://palslp.com/bbs/) Powered by Discuz! X2.5