Project1

标题: 脚本出现nomethoderror [打印本页]

作者: iusan    时间: 2013-7-18 21:10
标题: 脚本出现nomethoderror
本帖最后由 iusan 于 2013-7-18 23:36 编辑

没有办法读取存档,一读取就提示第97行里defined method ‘bitmap' for nil:NilClass
脚本是从这边下载的,存档是在脚本导入后重新开始新游戏才存的
求高人指教!
  1. #==============================================================================
  2. # ■ Game_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图的类。包含卷动以及可以通行的判断功能。
  5. # 本类的实例请参考 $game_map 。
  6. #==============================================================================

  7. class Game_Map
  8.   MAZE_SWITCH = 1
  9.   MAZE_SPRITE_OPACITY = 180
  10.   #--------------------------------------------------------------------------
  11.   # ● 定义实例变量
  12.   #--------------------------------------------------------------------------
  13.   attr_reader   :screen                   # 地图画面状态
  14.   attr_reader   :interpreter              # 地图事件用解释器
  15.   attr_reader   :display_x                # 显示 X 坐标 * 256
  16.   attr_reader   :display_y                # 显示 Y 坐标 * 256
  17.   attr_reader   :parallax_name            # 远景 文件名
  18.   attr_reader   :passages                 # 通行表
  19.   attr_reader   :events                   # 事件
  20.   attr_reader   :vehicles                 # 交通工具
  21.   attr_accessor :need_refresh             # 刷新要求标志
  22.   attr_accessor :map                      # 刷新要求标志
  23.   #--------------------------------------------------------------------------
  24.   # ● 初始化对象
  25.   #--------------------------------------------------------------------------
  26.   def initialize
  27.     @screen = Game_Screen.new
  28.     @interpreter = Game_Interpreter.new(0, true)
  29.     @map_id = 0
  30.     @display_x = 0
  31.     @display_y = 0
  32.     create_vehicles
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 设置
  36.   #     map_id : 地图 ID
  37.   #--------------------------------------------------------------------------
  38.   def setup(map_id)
  39.     @map_id = map_id
  40.     @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
  41.     setup_maze
  42.     # 临时写在这里
  43.     @display_x = 0
  44.     @display_y = 0
  45.     @passages = $data_system.passages
  46.     referesh_vehicles
  47.     setup_events
  48.     setup_scroll
  49.     setup_parallax   
  50.     @need_refresh = false
  51.   end
  52.   
  53.   def setup_maze
  54.     $game_maze6R_search[@map_id] = Table.new(width, height) if $game_maze6R_search[@map_id] == nil
  55.     $maze_sprite = nil if $map_sprite != nil
  56.     $maze_sprite = Sprite.new
  57.     $maze_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
  58.     $maze_sprite.bitmap.fill_rect(0, 0, Graphics.width, Graphics.height, Color.new(0, 0, 0))
  59.     $maze_sprite.z = 2000
  60.     $maze_sprite.zoom_x = 0.4
  61.     $maze_sprite.zoom_y = 0.4
  62.     $maze_sprite.opacity = MAZE_SPRITE_OPACITY
  63.     $maze_sprite.visible = $game_switches[MAZE_SWITCH]
  64.     $maze_sprite.update
  65.     @maze_rect_width = Graphics.width / width
  66.     @maze_rect_height = Graphics.height / height
  67.     $maze_player_sprite = nil if $maze_player_sprite != nil
  68.     $maze_player_sprite = Sprite.new
  69.     $maze_player_sprite.bitmap = Cache.system("Maze_Char_main")
  70.     $maze_player_sprite.z = 2002
  71.     $maze_player_sprite.ox = $maze_player_sprite.bitmap.width / 2
  72.     $maze_player_sprite.oy = $maze_player_sprite.bitmap.height
  73.     $maze_player_sprite.visible = $maze_sprite.visible
  74.     @refresh_maze_count == 0
  75.   end
  76.   #-----------------------------------------------------
  77.   # ☆ 刷新迷宫game数据,主要用于添加当前一屏幕内容
  78.   #-----------------------------------------------------
  79.   def refresh_maze_game
  80.     for x in 0..$game_map.width
  81.       for y in 0..$game_map.height
  82.         next if not in_range?(x, y)
  83.         $game_maze6R_search[@map_id][x, y] = 1 #unless $game_maze6R_search[@map_id][x, y]
  84.       end
  85.     end   
  86.   end
  87.   
  88.   #-----------------------------------------------------
  89.   # ☆ 刷新迷宫图片
  90.   #-----------------------------------------------------
  91.   def refresh_maze_sprite
  92.     for x in 0..$game_map.width
  93.       for y in 0..$game_map.height
  94.         if $game_maze6R_search[@map_id][x, y] == 1
  95.           bmpt = get_xy_bitmap(x, y)
  96.           $maze_sprite.bitmap.stretch_blt(Rect.new(@maze_rect_width * x, @maze_rect_height * y, @maze_rect_width, @maze_rect_height), bmpt, bmpt.rect)
  97.       end
  98.     end   
  99.     $maze_sprite.visible = $game_switches[MAZE_SWITCH]
  100.     $maze_player_sprite.x = ($game_player.x * @maze_rect_width) * $maze_sprite.zoom_x + $maze_sprite.x
  101.     $maze_player_sprite.y = ($game_player.y * @maze_rect_height) * $maze_sprite.zoom_y + $maze_sprite.y
  102.     $maze_player_sprite.zoom_x = $maze_sprite.zoom_x
  103.     $maze_player_sprite.zoom_y = $maze_sprite.zoom_y
  104.     $maze_player_sprite.visible = $maze_sprite.visible
  105.     $maze_sprite.update
  106.     $maze_player_sprite.update
  107.   end
  108.   
  109.   #-----------------------------------------------------
  110.   # ☆ 刷新迷宫地图的可视情况
  111.   #-----------------------------------------------------
  112.   def change_maze_visible(maze_visible = nil)
  113.     maze_visible = $game_switches[MAZE_SWITCH] if maze_visible == nil
  114.     $maze_sprite.visible = maze_visible
  115.     $maze_player_sprite.visible = maze_visible
  116.   end
  117.   
  118.   #-----------------------------------------------------
  119.   # ☆ 刷新迷宫game数据和图片,小幅度刷新
  120.   #-----------------------------------------------------
  121.   def refresh_maze_small   
  122.     screne_x = $game_map.display_x
  123.     screne_x -= 256
  124.     screne_y = $game_map.display_y
  125.     screne_y -= 256
  126.     screne_width = $game_map.display_x
  127.     screne_width += 8 * Graphics.width + 256
  128.     screne_height = $game_map.display_y
  129.     screne_height += 8 * Graphics.height + 256
  130.     xb = screne_x / 256
  131.     yb = screne_y / 256
  132.     xe = screne_width / 256
  133.     ye = screne_height / 256
  134.     if $maze_sprite == nil or $maze_sprite.disposed?
  135.       refresh_maze_sprite
  136.     end
  137.     for x in xb..xe # 0..$game_map.width
  138.       for y in yb..ye # 0..$game_map.height
  139.         next if not in_range?(x, y)
  140.         next if $game_maze6R_search[@map_id][x, y] == 1
  141.         $game_maze6R_search[@map_id][x, y] = 1
  142.         bmpt = get_xy_bitmap(x, y)
  143.         $maze_sprite.bitmap.stretch_blt(Rect.new(@maze_rect_width * x, @maze_rect_height * y, @maze_rect_width, @maze_rect_height), bmpt, bmpt.rect)
  144.       end
  145.     end
  146.     $maze_sprite.visible = $game_switches[MAZE_SWITCH]
  147.     $maze_player_sprite.x = ($game_player.x * @maze_rect_width) * $maze_sprite.zoom_x + $maze_sprite.x
  148.     $maze_player_sprite.y = ($game_player.y * @maze_rect_height) * $maze_sprite.zoom_y + $maze_sprite.y
  149.     $maze_player_sprite.visible = $maze_sprite.visible
  150.     $maze_sprite.update
  151.     $maze_player_sprite.update
  152.   end
  153.   
  154.   #-----------------------------------------------------
  155.   # ☆ 看某XY是否在屏幕显示范围内
  156.   #-----------------------------------------------------
  157.   def in_range?(inx, iny)
  158.     screne_x = $game_map.display_x
  159.     screne_x -= 256
  160.     screne_y = $game_map.display_y
  161.     screne_y -= 256
  162.     screne_width = $game_map.display_x
  163.     screne_width += 4608 # 8 * Graphics.width + 256
  164.     screne_height = $game_map.display_y
  165.     screne_height += 3584 # 8 * Graphics.height + 256
  166.     return false if inx * 256 <= screne_x
  167.     return false if inx * 256 >= screne_width
  168.     return false if iny * 256 <= screne_y
  169.     return false if iny * 256 >= screne_height
  170.     return true
  171.   end
  172.   
  173.   #-----------------------------------------------------
  174.   # ☆ 获得X,Y理论点的图像
  175.   #-----------------------------------------------------
  176.   def get_xy_bitmap(x, y)
  177.     bitmap = Bitmap.new(32, 32)
  178.     for i in [0] #, 1, 2]
  179.       id = @map.data[x, y, i]
  180.       tb = bmprect_id(id)
  181.       bitmap.blt(0, 0, tb[0], Rect.new(tb[1] * 32, tb[2] * 32, 32, 32)) if tb[0] != nil
  182.     end
  183.     return bitmap
  184.   end  
  185.   
  186.   #-----------------------------------------------------
  187.   # ☆ 根据ID获得Bitmap的rect
  188.   #-----------------------------------------------------
  189.   def bmprect_id(id)   
  190.     case id
  191.     when 0..255      
  192.       bitmap_rectxyb = get_where(id)
  193.       return [$map6r_bitmaps[5], bitmap_rectxyb[0], bitmap_rectxyb[1]]
  194.     when 256..511
  195.       bitmap_rectxyb = get_where(id - 256)
  196.       return [$map6r_bitmaps[6], bitmap_rectxyb[0], bitmap_rectxyb[1]]
  197.     when 512..767
  198.       bitmap_rectxyb = get_where(id - 512)
  199.       return [$map6r_bitmaps[7], bitmap_rectxyb[0], bitmap_rectxyb[1]]
  200.     when 768..1023
  201.       bitmap_rectxyb = get_where(id - 768)
  202.       return [$map6r_bitmaps[8], bitmap_rectxyb[0], bitmap_rectxyb[1]]
  203.     when 1536..1791
  204.       bitmap_rectxyb = get_where(id - 1536)
  205.       return [$map6r_bitmaps[4], bitmap_rectxyb[0], bitmap_rectxyb[1]]   
  206.     when 2048..8191 # 2048..2048 + 48 * 128 - 1   
  207.       bitmap_rectxyb = get_where(id)
  208.       return [bitmap_rectxyb[0], bitmap_rectxyb[1], bitmap_rectxyb[2]]  
  209.     end
  210.     return [nil, 0, 0]
  211.   end
  212.   
  213.   #-----------------------------------------------------
  214.   # ☆ 根据ID返回Bitmap的rect
  215.   #-----------------------------------------------------
  216.   def get_where(id)
  217.     case id
  218.     when 0..255
  219.       x = id % 8
  220.       y = id / 8
  221.       return [x, y]
  222.     when 2048..2767 # 2048..2048 + 48 * 15 - 1
  223.       tempid = (id - 2048) % 48 # 这个表示是48系列图中的第几个系列种
  224.       series_id = (id - 2048) / 48   # 这个表示是在图上素材分类的第几个
  225.       case series_id
  226.       when 0
  227.         return get_ofxoftdiyilei(tempid, 0, 0)
  228.       when 1
  229.         return get_ofxoftdiyilei(tempid, 0, 3)
  230.       when 2
  231.         return get_ofxoftdiyilei(tempid, 6, 0)
  232.       when 3
  233.         return get_ofxoftdiyilei(tempid, 6, 3)
  234.       when 4
  235.         return get_ofxoftdiyilei(tempid, 8, 0)
  236.       when 5
  237.         return get_ofxoftdiyilei(tempid, 8, 3)
  238.       when 6
  239.         return get_ofxoftdiyilei(tempid, 14, 0)
  240.       when 7
  241.         return get_ofxoftdiyilei(tempid, 14, 3)
  242.       when 8
  243.         return get_ofxoftdiyilei(tempid, 0, 6)
  244.       when 9
  245.         return get_ofxoftdiyilei(tempid, 0, 9)
  246.       when 10
  247.         return get_ofxoftdiyilei(tempid, 6, 6)
  248.       when 11
  249.         return get_ofxoftdiyilei(tempid, 6, 9)
  250.       when 12
  251.         return get_ofxoftdiyilei(tempid, 8, 6)
  252.       when 13
  253.         return get_ofxoftdiyilei(tempid, 8, 9)
  254.       when 14
  255.         return get_ofxoftdiyilei(tempid, 14, 6)
  256.       when 15
  257.         return get_ofxoftdiyilei(tempid, 14, 9)
  258.       end
  259.       
  260.     #-----------------------------------------------------------------
  261.     # 这个是A2素材的定义方式
  262.     #-----------------------------------------------------------------
  263.     when 2768..4351 #2048 + 48 * 15..2048 + 48 * 48 - 1
  264.       tempid = (id - 2048 - 48 * 16) % 48      # 这个表示是48系列图中的第几个系列种
  265.       series_id = (id - 2048 - 48 * 16) / 48   # 这个表示是在图上素材分类的第几个
  266.       ofx = (series_id % 8) * 2
  267.       ofy = (series_id / 8) * 3
  268.       return get_ofxoftdiyilei(tempid, ofx, ofy, 1)
  269.       
  270.     #-----------------------------------------------------------------
  271.     # 这个是A3素材的房顶方式,前半部分
  272.     #-----------------------------------------------------------------
  273.     when 4352..4735 #2048 + 48 * 48..2048 + 48 * 56 - 1
  274.       tempid = (id - 2048 - 48 * 48) % 48      # 这个表示是48系列图中的第几个系列种
  275.       series_id = (id - 2048 - 48 * 48) / 48   # 这个表示是在图上素材分类的第几个
  276.       ofx = (series_id % 8) * 2
  277.       ofy = 0
  278.       return get_ofxoftdierlei(tempid, ofx, ofy, 2)     
  279.     #-----------------------------------------------------------------
  280.     # 这个是A3素材的房顶方式,后半部分
  281.     #-----------------------------------------------------------------
  282.     when 5120..5503 #2048 + 48 * 64..2048 + 48 * 72 - 1
  283.       tempid = (id - 2048 - 48 * 64) % 48      # 这个表示是48系列图中的第几个系列种
  284.       series_id = (id - 2048 - 48 * 64) / 48   # 这个表示是在图上素材分类的第几个
  285.       ofx = (series_id % 8) * 2
  286.       ofy = 4
  287.       return get_ofxoftdierlei(tempid, ofx, ofy, 2)  
  288.     #-----------------------------------------------------------------
  289.     # 这个是A3素材的房屋体方式,前半部分
  290.     #-----------------------------------------------------------------
  291.     when 4736..5119 #2048 + 48 * 56..2048 + 48 * 64 - 1
  292.       tempid = (id - 2048 - 48 * 48) % 48      # 这个表示是48系列图中的第几个系列种
  293.       series_id = (id - 2048 - 48 * 48) / 48   # 这个表示是在图上素材分类的第几个
  294.       ofx = (series_id % 8) * 2
  295.       ofy = 0
  296.       return get_ofxoftdierlei(tempid, ofx, ofy, 2, 1)     
  297.     #-----------------------------------------------------------------
  298.     # 这个是A3素材的房屋体方式,后半部分
  299.     #-----------------------------------------------------------------
  300.     when 5504..5887#2048 + 48 * 72..2048 + 48 * 80 - 1
  301.       tempid = (id - 2048 - 48 * 64) % 48      # 这个表示是48系列图中的第几个系列种
  302.       series_id = (id - 2048 - 48 * 64) / 48   # 这个表示是在图上素材分类的第几个
  303.       ofx = (series_id % 8) * 2
  304.       ofy = 4
  305.       return get_ofxoftdierlei(tempid, ofx, ofy, 2, 1)   
  306.       
  307.       
  308.       
  309.       
  310.     #-----------------------------------------------------------------
  311.     # 这个是A4素材的房顶方式 1
  312.     #-----------------------------------------------------------------
  313.     when 5888..6271 #2048 + 48 * 80..2048 + 48 * 88 - 1
  314.       tempid = (id - 2048 - 48 * 80) % 48      
  315.       series_id = (id - 2048 - 48 * 80) / 48   
  316.       ofx = (series_id % 8) * 2
  317.       ofy = 0
  318.       return get_ofxoftdiyilei(tempid, ofx, ofy, 3)   
  319.     #-----------------------------------------------------------------
  320.     # 这个是A4素材的房顶方式 2
  321.     #-----------------------------------------------------------------
  322.     when 6656..7039 #2048 + 48 * 96..2048 + 48 * 104 - 1
  323.       tempid = (id - 2048 - 48 * 80) % 48      
  324.       series_id = (id - 2048 - 48 * 80) / 48   
  325.       ofx = (series_id % 8) * 2
  326.       ofy = 5
  327.       return get_ofxoftdiyilei(tempid, ofx, ofy, 3)   
  328.     #-----------------------------------------------------------------
  329.     # 这个是A4素材的房顶方式 3
  330.     #-----------------------------------------------------------------
  331.     when 7424..7807 #2048 + 48 * 112..2048 + 48 * 120 - 1
  332.       tempid = (id - 2048 - 48 * 80) % 48      
  333.       series_id = (id - 2048 - 48 * 80) / 48   
  334.       ofx = (series_id % 8) * 2
  335.       ofy = 10
  336.       return get_ofxoftdiyilei(tempid, ofx, ofy, 3)   
  337.       
  338.       
  339.       
  340.     #-----------------------------------------------------------------
  341.     # 这个是A4素材的墙壁方式 1
  342.     #-----------------------------------------------------------------
  343.     when 6272..6655 #2048 + 48 * 88..2048 + 48 * 96 - 1
  344.       tempid = (id - 2048 - 48 * 80) % 48      
  345.       series_id = (id - 2048 - 48 * 80) / 48   
  346.       ofx = (series_id % 8) * 2
  347.       ofy = 0
  348.       return get_ofxoftdierlei(tempid, ofx, ofy, 3, 2)   
  349.     #-----------------------------------------------------------------
  350.     # 这个是A4素材的墙壁方式 2
  351.     #-----------------------------------------------------------------
  352.     when 7040..7423 #2048 + 48 * 104..2048 + 48 * 112 - 1
  353.       tempid = (id - 2048 - 48 * 80) % 48      
  354.       series_id = (id - 2048 - 48 * 80) / 48   
  355.       ofx = (series_id % 8) * 2
  356.       ofy = 5
  357.       return get_ofxoftdierlei(tempid, ofx, ofy, 3, 2)  
  358.     #-----------------------------------------------------------------
  359.     # 这个是A4素材的墙壁方式 3
  360.     #-----------------------------------------------------------------
  361.     when 7808..8191 #2048 + 48 * 120..2048 + 48 * 128 - 1
  362.       tempid = (id - 2048 - 48 * 80) % 48      
  363.       series_id = (id - 2048 - 48 * 80) / 48   
  364.       ofx = (series_id % 8) * 2
  365.       ofy = 10
  366.       return get_ofxoftdierlei(tempid, ofx, ofy, 3, 2)  
  367.     end   
  368.   end
  369.   
  370.   #--------------------------------------------------------------------------
  371.   # ☆ 中间函数,用来返回某张图上的一个rect,特别针对A1
  372.   #--------------------------------------------------------------------------
  373.   def get_ofxoftdiyilei(tempid = 0, ofx = 0, ofy = 0, bmps = 0)
  374.     bmp = Bitmap.new(32, 32)
  375.     ta = diyitao(tempid)
  376.     ofx *= 32
  377.     ofy *= 32
  378.     bmp.blt(0,0,$map6r_bitmaps[bmps], Rect.new(ta[0][1]*16 + ofx, ta[0][0]*16 + ofy, 16, 16))
  379.     bmp.blt(16,0,$map6r_bitmaps[bmps], Rect.new(ta[1][1]*16 + ofx, ta[1][0]*16 + ofy, 16, 16))
  380.     bmp.blt(0,16,$map6r_bitmaps[bmps], Rect.new(ta[2][1]*16 + ofx, ta[2][0]*16 + ofy, 16, 16))
  381.     bmp.blt(16,16,$map6r_bitmaps[bmps], Rect.new(ta[3][1]*16 + ofx, ta[3][0]*16 + ofy, 16, 16))
  382.     return [bmp, 0, 0]
  383.   end
  384.   
  385.   #--------------------------------------------------------------------------
  386.   # ☆ 中间函数,用来返回某张图上的一个rect,针对A3
  387.   #--------------------------------------------------------------------------
  388.   def get_ofxoftdierlei(tempid = 0, ofx = 0, ofy = 0, bmps = 0, hx = 0)
  389.     bmp = Bitmap.new(32, 32)
  390.     ta = diertao(tempid) if hx == 0
  391.     ta = disantao(tempid) if hx == 1
  392.     ta = disitao(tempid) if hx == 2
  393.     ofx *= 32
  394.     ofy *= 32
  395.     bmp.blt(0,0,$map6r_bitmaps[bmps], Rect.new(ta[0][1]*16 + ofx, ta[0][0]*16 + ofy, 16, 16))
  396.     bmp.blt(16,0,$map6r_bitmaps[bmps], Rect.new(ta[1][1]*16 + ofx, ta[1][0]*16 + ofy, 16, 16))
  397.     bmp.blt(0,16,$map6r_bitmaps[bmps], Rect.new(ta[2][1]*16 + ofx, ta[2][0]*16 + ofy, 16, 16))
  398.     bmp.blt(16,16,$map6r_bitmaps[bmps], Rect.new(ta[3][1]*16 + ofx, ta[3][0]*16 + ofy, 16, 16))
  399.     return [bmp, 0, 0]
  400.   end
  401.   
  402.   #--------------------------------------------------------------------------
  403.   # ☆ 第二套结构代码,定义了素材A3的房顶部分
  404.   #--------------------------------------------------------------------------
  405.   def diertao(whattype = 0)
  406.     array = [
  407.     [[2,2],[2,1],[1,2],[1,1]],
  408.     [[2,0],[2,1],[1,0],[1,1]],
  409.     [[0,2],[0,1],[1,2],[1,1]],
  410.     [[0,0],[0,1],[1,0],[1,1]],
  411.     [[2,2],[2,3],[1,2],[1,3]],
  412.     [[2,0],[2,3],[1,0],[1,3]],
  413.     [[0,2],[0,3],[1,2],[1,3]],
  414.     [[0,0],[0,3],[1,0],[1,3]],
  415.     [[2,2],[2,1],[3,2],[3,1]],
  416.     [[2,0],[2,1],[3,0],[3,1]],
  417.     [[0,2],[0,1],[3,2],[3,1]],   
  418.     [[0,0],[0,1],[3,0],[3,1]],
  419.     [[2,2],[2,3],[3,2],[3,3]],
  420.     [[2,0],[2,3],[3,0],[3,3]],
  421.     [[0,2],[0,3],[3,2],[3,3]],
  422.     [[0,0],[0,3],[3,0],[3,3]],
  423.     [[0,0],[0,0],[0,0],[0,0]],
  424.     ]
  425.     return array[whattype] if array[whattype] != nil
  426.     return [[0,0],[0,0],[0,0],[0,0]]
  427.   end
  428.   
  429.   #--------------------------------------------------------------------------
  430.   # ☆ 第二套结构代码,定义了素材A4的墙壁部分
  431.   #--------------------------------------------------------------------------
  432.   def disitao(whattype = 0)
  433.     array = [
  434.     [[8,2],[8,1],[7,2],[7,1]],
  435.     [[8,0],[8,1],[7,0],[7,1]],
  436.     [[6,2],[6,1],[7,2],[7,1]],
  437.     [[6,0],[6,1],[7,2],[7,1]],
  438.     [[8,2],[8,3],[7,2],[7,3]],
  439.     [[8,0],[8,3],[7,0],[7,3]],
  440.     [[6,2],[6,3],[7,2],[7,3]],
  441.     [[6,2],[6,3],[7,0],[7,3]],
  442.     [[8,2],[8,1],[9,2],[9,1]],
  443.     [[8,0],[8,1],[9,0],[9,1]],
  444.     [[6,2],[6,1],[9,2],[9,1]],   
  445.     [[6,0],[6,1],[9,0],[9,1]],
  446.     [[8,2],[8,3],[9,2],[9,3]],
  447.     [[8,0],[8,3],[9,0],[9,3]],
  448.     [[6,2],[6,3],[9,2],[9,3]],
  449.     [[6,0],[6,3],[9,0],[9,3]],
  450.     [[6,0],[6,0],[6,0],[6,0]], # 填满48个
  451.     ]
  452.     return array[whattype] if array[whattype] != nil
  453.     return [[6,0],[6,0],[6,0],[6,0]]
  454.   end
  455.   
  456.   #--------------------------------------------------------------------------
  457.   # ☆ 第三套结构代码,定义了素材A3的房屋部分
  458.   #--------------------------------------------------------------------------
  459.   def disantao(whattype = 0)
  460.     array = [
  461.     [[6,2],[6,1],[5,2],[5,1]],
  462.     [[6,0],[6,1],[5,0],[5,1]],
  463.     [[4,2],[4,1],[5,2],[5,1]],
  464.     [[4,0],[4,1],[5,2],[5,1]],
  465.     [[6,2],[6,3],[5,2],[5,3]],
  466.     [[6,0],[6,3],[5,0],[5,3]],
  467.     [[4,2],[4,3],[5,2],[5,3]],
  468.     [[4,2],[4,3],[5,0],[5,3]],
  469.     [[6,2],[6,1],[7,2],[7,1]],
  470.     [[6,0],[6,1],[7,0],[7,1]],
  471.     [[4,2],[4,1],[7,2],[7,1]],   
  472.     [[4,0],[4,1],[7,0],[7,1]],
  473.     [[6,2],[6,3],[7,2],[7,3]],
  474.     [[6,0],[6,3],[7,0],[7,3]],
  475.     [[4,2],[4,3],[7,2],[7,3]],
  476.     [[4,0],[4,3],[7,0],[7,3]],
  477.     [[4,0],[4,0],[4,0],[4,0]], # 填满48个
  478.     ]
  479.     return array[whattype] if array[whattype] != nil
  480.     return [[4,0],[4,0],[4,0],[4,0]]
  481.   end# 房屋部分
  482.    
  483.   
  484.   #--------------------------------------------------------------------
  485.   # ★ 第一套结构数组,这个用于定义A1里面的自动元件构成。写得晕死了
  486.   #--------------------------------------------------------------------
  487.   def diyitao(whattype = 0)
  488.     array = [
  489.     [[4,2],[4,1],[3,2],[3,1]],
  490.     [[0,2],[4,1],[3,2],[3,1]],
  491.     [[4,2],[0,3],[3,2],[3,1]],
  492.     [[0,2],[0,3],[3,2],[3,1]],
  493.     [[4,2],[4,1],[3,2],[1,3]],
  494.     [[0,2],[4,1],[3,2],[1,3]],
  495.     [[4,2],[0,3],[3,2],[1,3]],
  496.     [[0,2],[0,3],[3,2],[1,3]],
  497.     [[4,2],[4,1],[1,2],[3,1]],
  498.     [[0,2],[4,1],[1,2],[3,1]],   
  499.     [[4,2],[0,3],[1,2],[3,1]],
  500.     [[0,2],[0,3],[1,2],[3,1]],
  501.     [[4,2],[4,1],[1,2],[1,3]],
  502.     [[0,2],[4,1],[1,2],[1,3]],
  503.     [[4,2],[0,3],[1,2],[1,3]],
  504.     [[0,2],[0,3],[1,2],[1,3]],   
  505.     [[4,0],[4,1],[3,0],[3,1]],
  506.     [[4,0],[0,3],[3,0],[3,1]],
  507.     [[4,0],[4,1],[3,0],[1,3]],
  508.     [[4,0],[0,3],[3,0],[1,3]],   
  509.     [[2,2],[2,1],[3,2],[3,1]],
  510.     [[2,2],[2,1],[3,2],[1,3]],
  511.     [[2,2],[2,1],[1,2],[3,1]],
  512.     [[2,2],[2,1],[1,2],[1,3]],
  513.     [[4,2],[4,3],[3,2],[3,3]],
  514.     [[4,2],[4,3],[1,2],[3,3]],
  515.     [[0,2],[4,3],[3,2],[3,3]],
  516.     [[0,2],[4,3],[1,2],[3,3]],
  517.     [[4,2],[4,1],[5,2],[5,1]],
  518.     [[0,2],[4,1],[5,2],[5,1]],
  519.     [[4,2],[0,3],[5,2],[5,1]],
  520.     [[0,2],[0,3],[5,2],[5,1]],
  521.     [[4,0],[4,3],[3,0],[3,3]],
  522.     [[2,2],[2,1],[5,2],[5,1]],
  523.     [[2,0],[2,1],[3,0],[3,1]], #34
  524.     [[2,0],[2,1],[3,0],[1,3]],  
  525.     [[2,2],[2,3],[3,2],[3,3]],
  526.     [[2,2],[2,3],[1,2],[3,3]],
  527.     [[4,2],[4,3],[5,2],[5,3]],
  528.     [[0,2],[4,3],[5,2],[5,3]],
  529.     [[4,0],[4,1],[5,0],[5,1]],
  530.     [[4,0],[0,3],[5,0],[5,1]],
  531.     [[2,0],[2,3],[3,0],[3,3]],
  532.     [[2,0],[2,1],[5,0],[5,1]],
  533.     [[4,0],[4,3],[5,0],[5,3]],
  534.     [[2,2],[2,3],[5,2],[5,3]],
  535.     [[2,0],[2,3],[5,0],[5,3]],
  536.     [[0,0],[0,1],[1,0],[1,1]]
  537.     ]
  538.     return array[whattype]
  539.   end
  540.   
  541.   
  542.   
  543.   
  544.   #--------------------------------------------------------------------------
  545.   # ● 生成交通工具
  546.   #--------------------------------------------------------------------------
  547.   def create_vehicles
  548.     @vehicles = []
  549.     @vehicles[0] = Game_Vehicle.new(0)    # 小型船
  550.     @vehicles[1] = Game_Vehicle.new(1)    # 大型船
  551.     @vehicles[2] = Game_Vehicle.new(2)    # 飛行船
  552.   end
  553.   #--------------------------------------------------------------------------
  554.   # ● 刷新交通工具
  555.   #--------------------------------------------------------------------------
  556.   def referesh_vehicles
  557.     for vehicle in @vehicles
  558.       vehicle.refresh
  559.     end
  560.   end
  561.   #--------------------------------------------------------------------------
  562.   # ● 获取小型船
  563.   #--------------------------------------------------------------------------
  564.   def boat
  565.     return @vehicles[0]
  566.   end
  567.   #--------------------------------------------------------------------------
  568.   # ● 获取大型船
  569.   #--------------------------------------------------------------------------
  570.   def ship
  571.     return @vehicles[1]
  572.   end
  573.   #--------------------------------------------------------------------------
  574.   # ● 获取飞行船
  575.   #--------------------------------------------------------------------------
  576.   def airship
  577.     return @vehicles[2]
  578.   end
  579.   #--------------------------------------------------------------------------
  580.   # ● 设置事件
  581.   #--------------------------------------------------------------------------
  582.   def setup_events
  583.     @events = {}          # 地图事件
  584.     for i in @map.events.keys
  585.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  586.     end
  587.     @common_events = {}   # 公共事件
  588.     for i in 1...$data_common_events.size
  589.       @common_events[i] = Game_CommonEvent.new(i)
  590.     end
  591.   end
  592.   #--------------------------------------------------------------------------
  593.   # ● 设置滚动
  594.   #--------------------------------------------------------------------------
  595.   def setup_scroll
  596.     @scroll_direction = 2
  597.     @scroll_rest = 0
  598.     @scroll_speed = 4
  599.     @margin_x = (width - 17) * 256 / 2      # 画面不显示的地方宽 / 2
  600.     @margin_y = (height - 13) * 256 / 2     # 画面不显示的地方高 / 2
  601.   end
  602.   #--------------------------------------------------------------------------
  603.   # ● 设置远景
  604.   #--------------------------------------------------------------------------
  605.   def setup_parallax
  606.     @parallax_name = @map.parallax_name
  607.     @parallax_loop_x = @map.parallax_loop_x
  608.     @parallax_loop_y = @map.parallax_loop_y
  609.     @parallax_sx = @map.parallax_sx
  610.     @parallax_sy = @map.parallax_sy
  611.     @parallax_x = 0
  612.     @parallax_y = 0
  613.   end
  614.   #--------------------------------------------------------------------------
  615.   # ● 设置显示位置
  616.   #     x : 新显示 X 坐标 (*256)
  617.   #     y : 新显示 Y 坐标 (*256)
  618.   #--------------------------------------------------------------------------
  619.   def set_display_pos(x, y)
  620.     @display_x = (x + @map.width * 256) % (@map.width * 256)
  621.     @display_y = (y + @map.height * 256) % (@map.height * 256)
  622.     @parallax_x = x
  623.     @parallax_y = y
  624.     refresh_maze_game
  625.     refresh_maze_sprite
  626.   end
  627.   #--------------------------------------------------------------------------
  628.   # ● 计算远景显示 X 坐标
  629.   #     bitmap : 远景位图
  630.   #--------------------------------------------------------------------------
  631.   def calc_parallax_x(bitmap)
  632.     if bitmap == nil
  633.       return 0
  634.     elsif @parallax_loop_x
  635.       return @parallax_x / 16
  636.     elsif loop_horizontal?
  637.       return 0
  638.     else
  639.       w1 = bitmap.width - 544
  640.       w2 = @map.width * 32 - 544
  641.       if w1 <= 0 or w2 <= 0
  642.         return 0
  643.       else
  644.         return @parallax_x * w1 / w2 / 8
  645.       end
  646.     end
  647.   end
  648.   #--------------------------------------------------------------------------
  649.   # ● 计算远景显示 Y 坐标
  650.   #     bitmap : 远景位图
  651.   #--------------------------------------------------------------------------
  652.   def calc_parallax_y(bitmap)
  653.     if bitmap == nil
  654.       return 0
  655.     elsif @parallax_loop_y
  656.       return @parallax_y / 16
  657.     elsif loop_vertical?
  658.       return 0
  659.     else
  660.       h1 = bitmap.height - 416
  661.       h2 = @map.height * 32 - 416
  662.       if h1 <= 0 or h2 <= 0
  663.         return 0
  664.       else
  665.         return @parallax_y * h1 / h2 / 8
  666.       end
  667.     end
  668.   end
  669.   #--------------------------------------------------------------------------
  670.   # ● 获取地图 ID
  671.   #--------------------------------------------------------------------------
  672.   def map_id
  673.     return @map_id
  674.   end
  675.   #--------------------------------------------------------------------------
  676.   # ● 获取宽度
  677.   #--------------------------------------------------------------------------
  678.   def width
  679.     return @map.width
  680.   end
  681.   #--------------------------------------------------------------------------
  682.   # ● 获取高度
  683.   #--------------------------------------------------------------------------
  684.   def height
  685.     return @map.height
  686.   end
  687.   #--------------------------------------------------------------------------
  688.   # ● 横方向循环吗?
  689.   #--------------------------------------------------------------------------
  690.   def loop_horizontal?
  691.     return (@map.scroll_type == 2 or @map.scroll_type == 3)
  692.   end
  693.   #--------------------------------------------------------------------------
  694.   # ● 纵方向循环吗?
  695.   #--------------------------------------------------------------------------
  696.   def loop_vertical?
  697.     return (@map.scroll_type == 1 or @map.scroll_type == 3)
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● 获取跑动与否?
  701.   #--------------------------------------------------------------------------
  702.   def disable_dash?
  703.     return @map.disable_dashing
  704.   end
  705.   #--------------------------------------------------------------------------
  706.   # ● 获取遇敌列表
  707.   #--------------------------------------------------------------------------
  708.   def encounter_list
  709.     return @map.encounter_list
  710.   end
  711.   #--------------------------------------------------------------------------
  712.   # ● 获取遇敌步数
  713.   #--------------------------------------------------------------------------
  714.   def encounter_step
  715.     return @map.encounter_step
  716.   end
  717.   #--------------------------------------------------------------------------
  718.   # ● 获取地图数据
  719.   #--------------------------------------------------------------------------
  720.   def data
  721.     return @map.data
  722.   end
  723.   #--------------------------------------------------------------------------
  724.   # ● 计算扣除显示坐标的 X 坐标
  725.   #     x : X 坐标
  726.   #--------------------------------------------------------------------------
  727.   def adjust_x(x)
  728.     if loop_horizontal? and x < @display_x - @margin_x
  729.       return x - @display_x + @map.width * 256
  730.     else
  731.       return x - @display_x
  732.     end
  733.   end
  734.   #--------------------------------------------------------------------------
  735.   # ● 计算扣除显示坐标的 Y 坐标
  736.   #     y : Y 坐标
  737.   #--------------------------------------------------------------------------
  738.   def adjust_y(y)
  739.     if loop_vertical? and y < @display_y - @margin_y
  740.       return y - @display_y + @map.height * 256
  741.     else
  742.       return y - @display_y
  743.     end
  744.   end
  745.   #--------------------------------------------------------------------------
  746.   # ● 计算循环修正后的 X 坐标
  747.   #     x : X 坐标
  748.   #--------------------------------------------------------------------------
  749.   def round_x(x)
  750.     if loop_horizontal?
  751.       return (x + width) % width
  752.     else
  753.       return x
  754.     end
  755.   end
  756.   #--------------------------------------------------------------------------
  757.   # ● 计算循环修正后的 Y坐标
  758.   #     y : Y 坐标
  759.   #--------------------------------------------------------------------------
  760.   def round_y(y)
  761.     if loop_vertical?
  762.       return (y + height) % height
  763.     else
  764.       return y
  765.     end
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   # ● 计算特定方向移动 1 マス X 坐标
  769.   #     x         : X 坐标
  770.   #     direction : 方向 (2,4,6,8)
  771.   #--------------------------------------------------------------------------
  772.   def x_with_direction(x, direction)
  773.     return round_x(x + (direction == 6 ? 1 : direction == 4 ? -1 : 0))
  774.   end
  775.   #--------------------------------------------------------------------------
  776.   # ● 计算特定方向移动 1 マス Y 坐标
  777.   #     y         : Y 坐标
  778.   #     direction : 方向 (2,4,6,8)
  779.   #--------------------------------------------------------------------------
  780.   def y_with_direction(y, direction)
  781.     return round_y(y + (direction == 2 ? 1 : direction == 8 ? -1 : 0))
  782.   end
  783.   #--------------------------------------------------------------------------
  784.   # ● 获取指定坐标存在的事件排列
  785.   #     x : X 坐标
  786.   #     y : Y 坐标
  787.   #--------------------------------------------------------------------------
  788.   def events_xy(x, y)
  789.     result = []
  790.     for event in $game_map.events.values
  791.       result.push(event) if event.pos?(x, y)
  792.     end
  793.     return result
  794.   end
  795.   #--------------------------------------------------------------------------
  796.   # ● BGM / BGS 自动切换
  797.   #--------------------------------------------------------------------------
  798.   def autoplay
  799.     @map.bgm.play if @map.autoplay_bgm
  800.     @map.bgs.play if @map.autoplay_bgs
  801.   end
  802.   #--------------------------------------------------------------------------
  803.   # ● 刷新
  804.   #--------------------------------------------------------------------------
  805.   def refresh
  806.     if @map_id > 0
  807.       for event in @events.values
  808.         event.refresh
  809.       end
  810.       for common_event in @common_events.values
  811.         common_event.refresh
  812.       end
  813.     end
  814.     refresh_mg_tansuo
  815.     @need_refresh = false
  816.   end
  817.   #--------------------------------------------------------------------------
  818.   # ● 迷宫探索系统
  819.   #--------------------------------------------------------------------------
  820.   def refresh_mg_tansuo
  821.    
  822.   end  
  823.   #--------------------------------------------------------------------------
  824.   # ● 向下滚动
  825.   #     distance : 滚动距离
  826.   #--------------------------------------------------------------------------
  827.   def scroll_down(distance)
  828.     if loop_vertical?
  829.       @display_y += distance
  830.       @display_y %= @map.height * 256
  831.       @parallax_y += distance
  832.     else
  833.       last_y = @display_y
  834.       @display_y = [@display_y + distance, (height - 13) * 256].min
  835.       @parallax_y += @display_y - last_y
  836.     end
  837.   end
  838.   #--------------------------------------------------------------------------
  839.   # ● 向左滚动
  840.   #     distance : 滚动距离
  841.   #--------------------------------------------------------------------------
  842.   def scroll_left(distance)
  843.     if loop_horizontal?
  844.       @display_x += @map.width * 256 - distance
  845.       @display_x %= @map.width * 256
  846.       @parallax_x -= distance
  847.     else
  848.       last_x = @display_x
  849.       @display_x = [@display_x - distance, 0].max
  850.       @parallax_x += @display_x - last_x
  851.     end
  852.   end
  853.   #--------------------------------------------------------------------------
  854.   # ● 向右滚动
  855.   #     distance : 滚动距离
  856.   #--------------------------------------------------------------------------
  857.   def scroll_right(distance)
  858.     if loop_horizontal?
  859.       @display_x += distance
  860.       @display_x %= @map.width * 256
  861.       @parallax_x += distance
  862.     else
  863.       last_x = @display_x
  864.       @display_x = [@display_x + distance, (width - 17) * 256].min
  865.       @parallax_x += @display_x - last_x
  866.     end
  867.   end
  868.   #--------------------------------------------------------------------------
  869.   # ● 向上滚动
  870.   #     distance : 滚动距离
  871.   #--------------------------------------------------------------------------
  872.   def scroll_up(distance)
  873.     if loop_vertical?
  874.       @display_y += @map.height * 256 - distance
  875.       @display_y %= @map.height * 256
  876.       @parallax_y -= distance
  877.     else
  878.       last_y = @display_y
  879.       @display_y = [@display_y - distance, 0].max
  880.       @parallax_y += @display_y - last_y
  881.     end
  882.   end
  883.   #--------------------------------------------------------------------------
  884.   # ● 有效坐标判定
  885.   #     x          : X 坐标
  886.   #     y          : Y 坐标
  887.   #--------------------------------------------------------------------------
  888.   def valid?(x, y)
  889.     return (x >= 0 and x < width and y >= 0 and y < height)
  890.   end
  891.   #--------------------------------------------------------------------------
  892.   # ● 可以通行判定
  893.   #     x    : X 坐标
  894.   #     y    : Y 坐标  
  895.   #     flag : 检查通行禁止数据 (通常 0x01、交通工具的情况下变更)
  896.   #--------------------------------------------------------------------------
  897.   def passable?(x, y, flag = 0x01)
  898.     for event in events_xy(x, y)            # 检查坐标相同的事件
  899.       next if event.tile_id == 0            # 地图没有图块的情况下
  900.       next if event.priority_type > 0       # 不是[通常形式下]
  901.       next if event.through                 # 穿透状态
  902.       pass = @passages[event.tile_id]       # 获取通行属性
  903.       next if pass & 0x10 == 0x10           # [☆] : 不影响通行
  904.       return true if pass & flag == 0x00    # [○] : 可通行
  905.       return false if pass & flag == flag   # [×] : 不可通行
  906.     end
  907.     for i in [2, 1, 0]                      # 从层按从上到下的顺序调查循环
  908.       tile_id = @map.data[x, y, i]          # 获取元件 ID
  909.       return false if tile_id == nil        # 取得元件 ID 失败 : 不能通行
  910.       pass = @passages[tile_id]             # 获取通行属性
  911.       next if pass & 0x10 == 0x10           # [☆] : 不影响通行
  912.       return true if pass & flag == 0x00    # [○] : 可通行
  913.       return false if pass & flag == flag   # [×] : 不可通行
  914.     end
  915.     return false                            # 通行不可
  916.   end
  917.   #--------------------------------------------------------------------------
  918.   # ● 小型船通行判定
  919.   #     x : X 坐标
  920.   #     y : Y 坐标
  921.   #--------------------------------------------------------------------------
  922.   def boat_passable?(x, y)
  923.     return passable?(x, y, 0x02)
  924.   end
  925.   #--------------------------------------------------------------------------
  926.   # ● 大型船通行判定
  927.   #     x : X 坐标
  928.   #     y : Y 坐标
  929.   #--------------------------------------------------------------------------
  930.   def ship_passable?(x, y)
  931.     return passable?(x, y, 0x04)
  932.   end
  933.   #--------------------------------------------------------------------------
  934.   # ● 飞行船着陆可能判定
  935.   #     x : X 坐标
  936.   #     y : Y 坐标
  937.   #--------------------------------------------------------------------------
  938.   def airship_land_ok?(x, y)
  939.     return passable?(x, y, 0x08)
  940.   end
  941.   #--------------------------------------------------------------------------
  942.   # ● 茂密判定
  943.   #     x : X 坐标
  944.   #     y : Y 坐标
  945.   #--------------------------------------------------------------------------
  946.   def bush?(x, y)
  947.     return false unless valid?(x, y)
  948.     return @passages[@map.data[x, y, 1]] & 0x40 == 0x40
  949.   end
  950.   #--------------------------------------------------------------------------
  951.   # ● 反击判定
  952.   #     x : X 坐标
  953.   #     y : Y 坐标
  954.   #--------------------------------------------------------------------------
  955.   def counter?(x, y)
  956.     return false unless valid?(x, y)
  957.     return @passages[@map.data[x, y, 0]] & 0x80 == 0x80
  958.   end
  959.   #--------------------------------------------------------------------------
  960.   # ● 滚动开始
  961.   #     direction : 滚动方向
  962.   #     distance  : 滚动距离
  963.   #     speed     : 滚动速度
  964.   #--------------------------------------------------------------------------
  965.   def start_scroll(direction, distance, speed)
  966.     @scroll_direction = direction
  967.     @scroll_rest = distance * 256
  968.     @scroll_speed = speed
  969.   end
  970.   #--------------------------------------------------------------------------
  971.   # ● 滚动中中判定
  972.   #--------------------------------------------------------------------------
  973.   def scrolling?
  974.     return @scroll_rest > 0
  975.   end
  976.   #--------------------------------------------------------------------------
  977.   # ● 画面刷新
  978.   #--------------------------------------------------------------------------
  979.   def update
  980.     refresh if $game_map.need_refresh
  981.     update_scroll
  982.     update_events
  983.     update_vehicles
  984.     update_parallax
  985.     update_maze
  986.     @screen.update
  987.   end
  988.   #--------------------------------------------------------------------------
  989.   # ● 刷新迷宫,每20帧刷一次
  990.   #--------------------------------------------------------------------------
  991.   def update_maze   
  992.     @refresh_maze_count = 0 if @refresh_maze_count == nil
  993.     if @refresh_maze_count == 0
  994.       refresh_maze_small
  995.       @refresh_maze_count = 20
  996.     else
  997.       @refresh_maze_count -= 1
  998.     end
  999.   end
  1000.   #--------------------------------------------------------------------------
  1001.   # ● 滚动刷新
  1002.   #--------------------------------------------------------------------------
  1003.   def update_scroll
  1004.     if @scroll_rest > 0                 # 滚动中的情况下
  1005.       distance = 2 ** @scroll_speed     # 滚动速度变化为地图坐标系的距离
  1006.       case @scroll_direction
  1007.       when 2  # 下
  1008.         scroll_down(distance)
  1009.       when 4  # 左
  1010.         scroll_left(distance)
  1011.       when 6  # 右
  1012.         scroll_right(distance)
  1013.       when 8  # 上
  1014.         scroll_up(distance)
  1015.       end
  1016.       @scroll_rest -= distance          # 滚动距离的减法运算
  1017.     end
  1018.   end
  1019.   #--------------------------------------------------------------------------
  1020.   # ● 刷新事件
  1021.   #--------------------------------------------------------------------------
  1022.   def update_events
  1023.     for event in @events.values
  1024.       event.update
  1025.     end
  1026.     for common_event in @common_events.values
  1027.       common_event.update
  1028.     end
  1029.   end
  1030.   #--------------------------------------------------------------------------
  1031.   # ● 刷新交通工具
  1032.   #--------------------------------------------------------------------------
  1033.   def update_vehicles
  1034.     for vehicle in @vehicles
  1035.       vehicle.update
  1036.     end
  1037.   end
  1038.   #--------------------------------------------------------------------------
  1039.   # ● 刷新远景
  1040.   #--------------------------------------------------------------------------
  1041.   def update_parallax
  1042.     @parallax_x += @parallax_sx * 4 if @parallax_loop_x
  1043.     @parallax_y += @parallax_sy * 4 if @parallax_loop_y
  1044.   end
  1045. end
复制代码

作者: 怪蜀黍    时间: 2013-7-18 21:28
把这句放在报错行的上面一行试试:
$maze_sprite = Sprite.new if $maze_sprite.nil?
作者: iusan    时间: 2013-7-18 21:40
protosssonny 发表于 2013-7-18 21:28
把这句放在报错行的上面一行试试:
$maze_sprite = Sprite.new if $maze_sprite.nil?

还是无法读取新存档,提示变成了undefined method 'stretch_blt' for nil:NilClass
作者: 怪蜀黍    时间: 2013-7-18 21:47
那就在刚才那行下面再加一行:
$maze_sprite.bitmap = Bitmap.new(544,516) if $maze_sprite.bitmap.nil?
参数我是随便写的,你先看看还报错不。
作者: iusan    时间: 2013-7-18 22:45
protosssonny 发表于 2013-7-18 21:47
那就在刚才那行下面再加一行:
$maze_sprite.bitmap = Bitmap.new(544,516) if $maze_sprite.bitmap.nil?
...

这样行吗?

Project1.rar

614.57 KB, 下载次数: 63






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