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

Project1

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

[原创发布] 活动描绘双远景地图

[复制链接]

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
跳转到指定楼层
1
发表于 2010-2-8 21:26:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 奶油Da蛋糕 于 2010-2-12 14:26 编辑

【用途】

可以用于迅速描绘大型商业地图。如,我用这个脚本可以将一张8000*4400的大型商业地图(大小共35M左右)成功描绘(在半秒内描绘完毕)。并且描绘迅速,不影响运行效率。(如果现在还想做梦幻同人,可以利用此脚本,把整个长安城的地图完整描绘下来,不用像某部作品那样将地图拆分成N张地图。)本帖范例示范了一张5M的大型商业地图。


【思路】

将地图分为320*240的小块,根据主角当前的位置,获取当前的地图块以及主角的左边、右边、上边、下边、左上、右上、左下、右下,一共9块进行描绘,只描绘当前主角位置的9个小块(总大小960*720),不描绘其余的区域。当主角移动到别的地图小块时,再描绘新的3块区域,调整好位置。


【范例】

点击进入下载-动态描绘双远景范例.rar


【脚本】
(PS.使用该脚本如果没有合适素材将看不到任何效果,请下载范例)
  1. #==============================================================================
  2. # ■ 动态描绘双远景地图
  3. #------------------------------------------------------------------------------
  4. #  By 奶油Da蛋糕 http://mxxyy.5d6d.com
  5. #==============================================================================
  6.   #脚本使用说明:
  7.   
  8.   #指定远景图名的方法:先在Panoramas文件夹里随意放一个图片文件,将图片文件
  9.   #命名为您想要的远景图名,然后在游戏数据库的图块中设置好该远景图,再返回
  10.   #Panoramas文件夹删除原来随意放置的图片文件,即可指定远景图名。
  11.   
  12.   #指定好远景图名后,在Panoramas文件夹中创建一个与远景图名一致的文件夹,用
  13.   #于存放地图单块图片。宽度和高度以及文件的命名方式可以在稍后设置。  
  14.   
  15.   #脚本自带了双远景功能,如果不需要使用双远景功能,可以直接无视,不会对你造
  16.   #成任何影响。如果需要用到,可以创建一个远景图名加“_2”的文件夹放置相应的
  17.   #遮盖层文件。
  18.   
  19.   #备注:
  20.   #1.如果远景图无法被宽度和高度整除,您可以无须保证远景图的最右边几块和最底
  21.   #边几块的宽度和高度一致。
  22.   #2.由于描绘方式的差异,您的远景图的左边和右边的几个地图块将可能有-((640-单
  23.   #块图宽度)/2-单块图宽度)个像素无法完整描绘,顶边和底边几个地图块将有-((480
  24.   #-单块图高度)/2-单块图高度)个像素无法完整描绘。如果确实需要描绘到这几个像
  25.   #素,可以将素材进行简单的处理,推移这几个像素即可。
  26. class Spriteset_Map
  27.   Cake单块图宽度 = 320 # 单个图块的宽度,不要超过640,推荐值320。
  28.   Cake单块图高度 = 240 # 单个图块的高度,不要超过480,推荐值240。
  29.   #为节约内存,宽度和高度可以尽量选较小值,但不要过小,否则行走时易出现黑底。
  30.   #如果没有特殊需要,宽度和高度尽量不要再改大,单块图320*240描绘9块之后要变
  31.   #成960*720的地图块,如果宽度和高度再改大的话,描绘的地图块过大,就起不到节
  32.   #约内存的作用了。
  33.   #文件夹内的图片文件宽度和高度必须一致为设置的宽度和高度。
  34.   Cake分隔符 = "-"
  35.   #文件夹内的文件名必须是:数字(X坐标)+分隔符+数字(Y坐标)。
  36.   #如:分隔符为"a",则描绘地图时获取的文件名为依次为:
  37.   #0a0;0a1;0a2
  38.   #1a0;1a1;1a2
  39.   #2a0;2a1;2a2
  40.   #--------------------------------------------------------------------------
  41.   # ● 初始化对像
  42.   #--------------------------------------------------------------------------
  43.   def initialize
  44.     # 生成显示端口
  45.     @viewport1 = Viewport.new(0, 0, 640, 480)
  46.     @viewport2 = Viewport.new(0, 0, 640, 480)
  47.     @viewport3 = Viewport.new(0, 0, 640, 480)
  48.     @viewport4 = Viewport.new(0, 0, 256, 192)
  49.     @viewport2.z = 200
  50.     @viewport3.z = 5000
  51.     # 生成远景平面
  52.     @panorama = []
  53.     @panorama2 = []
  54.     # 生成一个用于记录当前远景图位置的变量,方便切换远景图位置
  55.     @panorama_status = []
  56.     for i in 0..8
  57.     @panorama[i] = Sprite.new
  58.     @panorama[i].z = -1000
  59.     @panorama2[i] = Sprite.new
  60.     @panorama2[i].z = 0
  61.     @panorama_status[i] = i
  62.     end
  63.     update_xy
  64.     for i in 0..8
  65.       @panorama2[i].opacity = 128
  66.     end
  67.     # 生成雾平面
  68.     @fog = Plane.new(@viewport1)
  69.     @fog.z = 3000
  70.     # 生成角色活动块
  71.     @character_sprites = []
  72.     for i in $game_map.events.keys.sort
  73.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  74.       @character_sprites.push(sprite)
  75.     end
  76.     @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
  77.     # 生成天气
  78.     @weather = RPG::Weather.new(@viewport1)
  79.     # 生成图片
  80.     @picture_sprites = []
  81.     for i in 1..50
  82.       @picture_sprites.push(Sprite_Picture.new(@viewport2,
  83.         $game_screen.pictures[i]))
  84.     end
  85.     # 生成计时器块
  86.     @timer_sprite = Sprite_Timer.new
  87.     # 刷新画面
  88.     update
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # ● 释放
  92.   #--------------------------------------------------------------------------
  93.   def dispose
  94.     # 释放远景平面
  95.     for i in 0..8      
  96.       if @panorama[i].bitmap != nil
  97.         @panorama[i].bitmap.dispose
  98.         @panorama[i].bitmap = nil
  99.       end
  100.       if @panorama2[i].bitmap != nil
  101.         @panorama2[i].bitmap.dispose
  102.         @panorama2[i].bitmap = nil
  103.       end
  104.     @panorama[i].dispose
  105.     @panorama2[i].dispose
  106.     end
  107.     # 释放雾平面
  108.     @fog.dispose
  109.     # 释放角色活动块
  110.     for sprite in @character_sprites
  111.       sprite.dispose
  112.     end
  113.     # 释放天候
  114.     @weather.dispose
  115.     # 释放图片
  116.     for sprite in @picture_sprites
  117.       sprite.dispose
  118.     end
  119.     # 释放计时器块
  120.     @timer_sprite.dispose
  121.     # 释放显示端口
  122.     @viewport1.dispose
  123.     @viewport2.dispose
  124.     @viewport3.dispose
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 刷新画面
  128.   #--------------------------------------------------------------------------
  129.   def update
  130.       
  131.       # 远景与现在的情况有差异发情况下
  132.     if @panorama_name != $game_map.panorama_name or
  133.        @panorama_hue != $game_map.panorama_hue
  134.       @panorama_name = $game_map.panorama_name
  135.       @panorama_hue = $game_map.panorama_hue
  136.       #修正display_x和display_y,避免出现黑底
  137.        $game_map.display_x = $game_map.display_x-($game_map.display_x/4%Cake单块图宽度)*4+Cake单块图宽度/2*4
  138.        $game_map.display_y = $game_map.display_y-($game_map.display_y/4%Cake单块图高度)*4+Cake单块图高度/2*4
  139.         update_panorama
  140.          @old_x = $game_map.display_x
  141.          @old_y = $game_map.display_y
  142.        # 修正如果地图切换时,主角在地图边缘边缘时出现黑底的问题
  143.       if ($game_map.display_x/4+@panorama[2].x) >= ($game_map.width*32)
  144.         $game_map.display_x-=640
  145.       end
  146.       if ($game_map.display_y/4+@panorama[6].y) >= ($game_map.height*32)
  147.         $game_map.display_y-=480
  148.       end
  149.     end
  150.     # 雾与现在的情况有差异的情况下
  151.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  152.       @fog_name = $game_map.fog_name
  153.       @fog_hue = $game_map.fog_hue
  154.       if @fog.bitmap != nil
  155.         @fog.bitmap.dispose
  156.         @fog.bitmap = nil
  157.       end
  158.       if @fog_name != ""
  159.         @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  160.       end
  161.       Graphics.frame_reset
  162.     end
  163.     # 刷新远景平面
  164.     if @old_x != $game_map.display_x
  165.      v = @old_x / 4
  166.      d = $game_map.display_x / 4
  167.     for i in 0..8
  168.     @panorama[i].ox -= v - d
  169.     @panorama2[i].ox -= v - d
  170.     end
  171.     @old_x = $game_map.display_x
  172.     end  
  173.     if @old_y != $game_map.display_y
  174.      v = @old_y / 4
  175.      d = $game_map.display_y / 4
  176.     for i in 0..8
  177.     @panorama[i].oy -= v-d
  178.     @panorama2[i].oy -= v-d
  179.     end
  180.     @old_y = $game_map.display_y
  181.   end
  182.          x = $game_map.display_x / 4
  183.          a = x / Cake单块图宽度 + 1
  184.          y = $game_map.display_y / 4
  185.          b = y / Cake单块图高度 + 1
  186.     if @old_plx != a
  187.         if a-1 >= 0
  188.            c = a-1
  189.          else
  190.            c = false
  191.          end  
  192.          wi = $game_map.width*32
  193.          if a+1 < wi / Cake单块图宽度
  194.            d = a+1
  195.          else
  196.            d = false
  197.          end
  198.          if b-1 >= 0
  199.            e = b-1
  200.          else
  201.            e = false
  202.          end  
  203.          he = $game_map.height*32
  204.          if b+1 <= he / Cake单块图高度
  205.            f = b+1
  206.          else
  207.            f = false
  208.          end
  209.       if a < @old_plx
  210.       for i in 0..8
  211.         case @panorama_status[i]
  212.         when 2
  213.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{e}", @panorama_hue) if c.is_a?(Fixnum) and e.is_a?(Fixnum)
  214.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{e}", @panorama_hue) if c.is_a?(Fixnum) and e.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  215.         when 5
  216.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{b}", @panorama_hue) if c.is_a?(Fixnum) and b.is_a?(Fixnum)
  217.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{b}", @panorama_hue) if c.is_a?(Fixnum) and b.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  218.         when 8
  219.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{f}", @panorama_hue) if c.is_a?(Fixnum) and f.is_a?(Fixnum)
  220.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{f}", @panorama_hue) if c.is_a?(Fixnum) and f.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  221.         end
  222.       end
  223.         for i in 0..8
  224.         eval "@old_#{i} = @panorama_status[i]"
  225.       end
  226.        @panorama_status[0] = @old_1
  227.        @panorama_status[1] = @old_2
  228.        @panorama_status[2] = @old_0
  229.        @panorama_status[3] = @old_4
  230.        @panorama_status[4] = @old_5
  231.        @panorama_status[5] = @old_3
  232.        @panorama_status[6] = @old_7
  233.        @panorama_status[7] = @old_8
  234.        @panorama_status[8] = @old_6
  235.       else
  236.       for i in 0..8
  237.         case @panorama_status[i]
  238.         when 0
  239.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{e}", @panorama_hue) if d.is_a?(Fixnum) and e.is_a?(Fixnum)
  240.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{e}", @panorama_hue) if d.is_a?(Fixnum) and e.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  241.         when 3
  242.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{b}", @panorama_hue) if d.is_a?(Fixnum) and b.is_a?(Fixnum)
  243.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{b}", @panorama_hue) if d.is_a?(Fixnum) and b.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  244.         when 6
  245.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{f}", @panorama_hue) if d.is_a?(Fixnum) and f.is_a?(Fixnum)     
  246.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{f}", @panorama_hue) if d.is_a?(Fixnum) and f.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  247.         end
  248.       end
  249.         for i in 0..8
  250.         eval "@old_#{i} = @panorama_status[i]"
  251.       end
  252.        @panorama_status[0] = @old_2
  253.        @panorama_status[1] = @old_0
  254.        @panorama_status[2] = @old_1
  255.        @panorama_status[3] = @old_5
  256.        @panorama_status[4] = @old_3
  257.        @panorama_status[5] = @old_4
  258.        @panorama_status[6] = @old_8
  259.        @panorama_status[7] = @old_6
  260.        @panorama_status[8] = @old_7
  261.         end
  262.         update_xy
  263.       m = @panorama[0].ox
  264.       if @panorama[0].ox < 0
  265.       for i in 0..8
  266.         @panorama[i].ox = Cake单块图宽度+m
  267.         @panorama2[i].ox = Cake单块图宽度+m
  268.       end     
  269.       else
  270.       for i in 0..8
  271.         @panorama[i].ox = -(Cake单块图宽度)+m
  272.         @panorama2[i].ox = -(Cake单块图宽度)+m
  273.       end     
  274.     end
  275.     @old_plx = a
  276.     end   
  277.     if @old_ply != b
  278.               if a-1 >= 0
  279.            c = a-1
  280.          else
  281.            c = false
  282.          end  
  283.          wi = $game_map.width*32
  284.          if a+1 < wi / Cake单块图宽度
  285.            d = a+1
  286.          else
  287.            d = false
  288.          end
  289.          if b-1 >= 0
  290.            e = b-1
  291.          else
  292.            e = false
  293.          end  
  294.          he = $game_map.height*32
  295.          if b+1 <= he / Cake单块图高度
  296.            f = b+1
  297.          else
  298.            f = false
  299.          end
  300.       if b < @old_ply
  301.         for i in 0..8
  302.         case @panorama_status[i]
  303.         when 6
  304.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{e}", @panorama_hue) if c.is_a?(Fixnum) and e.is_a?(Fixnum)
  305.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{e}", @panorama_hue) if c.is_a?(Fixnum) and e.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  306.         when 7
  307.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{a}#{Cake分隔符}#{e}", @panorama_hue) if a.is_a?(Fixnum) and e.is_a?(Fixnum)
  308.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{a}#{Cake分隔符}#{e}", @panorama_hue) if a.is_a?(Fixnum) and e.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  309.         when 8
  310.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{e}", @panorama_hue) if d.is_a?(Fixnum) and e.is_a?(Fixnum)
  311.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{e}", @panorama_hue) if d.is_a?(Fixnum) and e.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  312.         end
  313.       end
  314.         for i in 0..8
  315.         eval "@old_#{i} = @panorama_status[i]"
  316.       end
  317.        @panorama_status[0] = @old_3
  318.        @panorama_status[1] = @old_4
  319.        @panorama_status[2] = @old_5
  320.        @panorama_status[3] = @old_6
  321.        @panorama_status[4] = @old_7
  322.        @panorama_status[5] = @old_8
  323.        @panorama_status[6] = @old_0
  324.        @panorama_status[7] = @old_1
  325.        @panorama_status[8] = @old_2
  326.      else
  327.         for i in 0..8
  328.         case @panorama_status[i]
  329.         when 0
  330.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{f}", @panorama_hue) if c.is_a?(Fixnum) and f.is_a?(Fixnum)
  331.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{f}", @panorama_hue) if c.is_a?(Fixnum) and f.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  332.         when 1
  333.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{a}#{Cake分隔符}#{f}", @panorama_hue) if a.is_a?(Fixnum) and f.is_a?(Fixnum)
  334.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{a}#{Cake分隔符}#{f}", @panorama_hue) if a.is_a?(Fixnum) and f.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  335.         when 2
  336.         @panorama[i].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{f}", @panorama_hue) if d.is_a?(Fixnum) and f.is_a?(Fixnum)     
  337.         @panorama2[i].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{f}", @panorama_hue) if d.is_a?(Fixnum) and f.is_a?(Fixnum) and FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  338.         end
  339.       end
  340.         for i in 0..8
  341.         eval "@old_#{i} = @panorama_status[i]"
  342.       end
  343.        @panorama_status[0] = @old_6
  344.        @panorama_status[1] = @old_7
  345.        @panorama_status[2] = @old_8
  346.        @panorama_status[3] = @old_0
  347.        @panorama_status[4] = @old_1
  348.        @panorama_status[5] = @old_2
  349.        @panorama_status[6] = @old_3
  350.        @panorama_status[7] = @old_4
  351.        @panorama_status[8] = @old_5
  352.       end
  353.       update_xy
  354.         n = @panorama[0].oy
  355.       if @panorama[0].oy < 0
  356.       for i in 0..8
  357.         @panorama[i].oy = Cake单块图高度+n
  358.         @panorama2[i].oy = Cake单块图高度+n
  359.       end     
  360.       else
  361.       for i in 0..8
  362.         @panorama[i].oy = -(Cake单块图高度)+n
  363.         @panorama2[i].oy = -(Cake单块图高度)+n
  364.       end     
  365.     end
  366.    @old_ply = b
  367.     end

  368.     # 刷新雾平面
  369.     @fog.zoom_x = $game_map.fog_zoom / 100.0
  370.     @fog.zoom_y = $game_map.fog_zoom / 100.0
  371.     @fog.opacity = $game_map.fog_opacity
  372.     @fog.blend_type = $game_map.fog_blend_type
  373.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  374.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  375.     @fog.tone = $game_map.fog_tone
  376.     # 刷新角色活动块
  377.     for sprite in @character_sprites
  378.       sprite.update
  379.     end
  380.     # 刷新天候图形
  381.     @weather.type = $game_screen.weather_type
  382.     @weather.max = $game_screen.weather_max
  383.     @weather.ox = $game_map.display_x / 4
  384.     @weather.oy = $game_map.display_y / 4
  385.     @weather.update
  386.     # 刷新图片
  387.     for sprite in @picture_sprites
  388.       sprite.update
  389.     end
  390.     # 刷新计时器块
  391.     @timer_sprite.update
  392.     # 设置画面的色调与震动位置
  393.     @viewport1.tone = $game_screen.tone
  394.     @viewport1.ox = $game_screen.shake
  395.     # 设置画面的闪烁色
  396.     @viewport3.color = $game_screen.flash_color
  397.     # 刷新显示端口
  398.     @viewport1.update
  399.     @viewport3.update
  400.   end
  401.   def update_panorama
  402.           for i in 0..8
  403.       if @panorama[i].bitmap != nil
  404.         @panorama[i].bitmap.dispose
  405.         @panorama[i].bitmap = nil
  406.       end
  407.       end
  408.       if @panorama_name != ""
  409.          x = $game_map.display_x / 4
  410.          a = x / Cake单块图宽度 + 1
  411.          y = $game_map.display_y / 4
  412.          b = y / Cake单块图高度 + 1
  413.          @old_plx = a
  414.          @old_ply = b
  415.          if a-1 >= 0
  416.            c = a-1
  417.          else
  418.            c = false
  419.          end  
  420.          wi = $game_map.width*32
  421.          if a+1 < wi / Cake单块图宽度
  422.            d = a+1
  423.          else
  424.            d = false
  425.          end
  426.          if b-1 >= 0
  427.            e = b-1
  428.          else
  429.            e = false
  430.          end  
  431.          he = $game_map.height*32
  432.          if b+1 <= he / Cake单块图高度
  433.            f = b+1
  434.          else
  435.            f = false
  436.          end
  437.      if FileTest.directory?("Graphics/Panoramas/#{@panorama_name}_2")
  438.         @panorama2[0].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{e}", @panorama_hue) if c.is_a?(Fixnum) and e.is_a?(Fixnum)
  439.         @panorama2[1].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{a}#{Cake分隔符}#{e}", @panorama_hue) if a.is_a?(Fixnum) and e.is_a?(Fixnum)
  440.         @panorama2[2].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{e}", @panorama_hue) if d.is_a?(Fixnum) and e.is_a?(Fixnum)
  441.         @panorama2[3].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{b}", @panorama_hue) if c.is_a?(Fixnum) and b.is_a?(Fixnum)
  442.         @panorama2[4].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{a}#{Cake分隔符}#{b}", @panorama_hue) if a.is_a?(Fixnum) and b.is_a?(Fixnum)
  443.         @panorama2[5].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{b}", @panorama_hue) if d.is_a?(Fixnum) and b.is_a?(Fixnum)
  444.         @panorama2[6].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{c}#{Cake分隔符}#{f}", @panorama_hue) if c.is_a?(Fixnum) and f.is_a?(Fixnum)
  445.         @panorama2[7].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{a}#{Cake分隔符}#{f}", @panorama_hue) if a.is_a?(Fixnum) and f.is_a?(Fixnum)
  446.         @panorama2[8].bitmap = RPG::Cache.panorama(@panorama_name+"_2/#{d}#{Cake分隔符}#{f}", @panorama_hue) if d.is_a?(Fixnum) and f.is_a?(Fixnum)     
  447.      end     
  448.         @panorama[0].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{e}", @panorama_hue) if c.is_a?(Fixnum) and e.is_a?(Fixnum)
  449.         @panorama[1].bitmap = RPG::Cache.panorama(@panorama_name+"/#{a}#{Cake分隔符}#{e}", @panorama_hue) if a.is_a?(Fixnum) and e.is_a?(Fixnum)
  450.         @panorama[2].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{e}", @panorama_hue) if d.is_a?(Fixnum) and e.is_a?(Fixnum)
  451.         @panorama[3].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{b}", @panorama_hue) if c.is_a?(Fixnum) and b.is_a?(Fixnum)
  452.         @panorama[4].bitmap = RPG::Cache.panorama(@panorama_name+"/#{a}#{Cake分隔符}#{b}", @panorama_hue) if a.is_a?(Fixnum) and b.is_a?(Fixnum)
  453.         @panorama[5].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{b}", @panorama_hue) if d.is_a?(Fixnum) and b.is_a?(Fixnum)
  454.         @panorama[6].bitmap = RPG::Cache.panorama(@panorama_name+"/#{c}#{Cake分隔符}#{f}", @panorama_hue) if c.is_a?(Fixnum) and f.is_a?(Fixnum)
  455.         @panorama[7].bitmap = RPG::Cache.panorama(@panorama_name+"/#{a}#{Cake分隔符}#{f}", @panorama_hue) if a.is_a?(Fixnum) and f.is_a?(Fixnum)
  456.         @panorama[8].bitmap = RPG::Cache.panorama(@panorama_name+"/#{d}#{Cake分隔符}#{f}", @panorama_hue) if d.is_a?(Fixnum) and f.is_a?(Fixnum)     
  457.       end      
  458.       Graphics.frame_reset
  459.     end
  460.     def update_xy
  461.       for i in 0..8
  462.         case @panorama_status[i]
  463.         when 0
  464.     @panorama[i].x = (640-Cake单块图宽度)/2-Cake单块图宽度
  465.     @panorama[i].y = (480-Cake单块图高度)/2-Cake单块图高度
  466.     @panorama2[i].x = (640-Cake单块图宽度)/2-Cake单块图宽度
  467.     @panorama2[i].y = (480-Cake单块图高度)/2-Cake单块图高度
  468.         when 1
  469.     @panorama[i].x = (640-Cake单块图宽度)/2
  470.     @panorama[i].y = (480-Cake单块图高度)/2-Cake单块图高度
  471.     @panorama2[i].x = (640-Cake单块图宽度)/2
  472.     @panorama2[i].y = (480-Cake单块图高度)/2-Cake单块图高度
  473.         when 2
  474.     @panorama[i].x = (640-Cake单块图宽度)/2+Cake单块图宽度
  475.     @panorama[i].y = (480-Cake单块图高度)/2-Cake单块图高度
  476.     @panorama2[i].x = (640-Cake单块图宽度)/2+Cake单块图宽度
  477.     @panorama2[i].y = (480-Cake单块图高度)/2-Cake单块图高度
  478.         when 3
  479.     @panorama[i].x = (640-Cake单块图宽度)/2-Cake单块图宽度
  480.     @panorama[i].y = (480-Cake单块图高度)/2
  481.     @panorama2[i].x = (640-Cake单块图宽度)/2-Cake单块图宽度
  482.     @panorama2[i].y = (480-Cake单块图高度)/2
  483.         when 4
  484.     @panorama[i].x = (640-Cake单块图宽度)/2
  485.     @panorama[i].y = (480-Cake单块图高度)/2
  486.     @panorama2[i].x = (640-Cake单块图宽度)/2
  487.     @panorama2[i].y = (480-Cake单块图高度)/2
  488.         when 5
  489.     @panorama[i].x = (640-Cake单块图宽度)/2+Cake单块图宽度
  490.     @panorama[i].y = (480-Cake单块图高度)/2
  491.     @panorama2[i].x = (640-Cake单块图宽度)/2+Cake单块图宽度
  492.     @panorama2[i].y = (480-Cake单块图高度)/2
  493.         when 6
  494.     @panorama[i].x = (640-Cake单块图宽度)/2-Cake单块图宽度
  495.     @panorama[i].y = (480-Cake单块图高度)/2+Cake单块图高度
  496.     @panorama2[i].x = (640-Cake单块图宽度)/2-Cake单块图宽度
  497.     @panorama2[i].y = (480-Cake单块图高度)/2+Cake单块图高度
  498.         when 7
  499.     @panorama[i].x = (640-Cake单块图宽度)/2
  500.     @panorama[i].y = (480-Cake单块图高度)/2+Cake单块图高度
  501.     @panorama2[i].x = (640-Cake单块图宽度)/2
  502.     @panorama2[i].y = (480-Cake单块图高度)/2+Cake单块图高度
  503.         when 8
  504.     @panorama[i].x = (640-Cake单块图宽度)/2+Cake单块图宽度
  505.     @panorama[i].y = (480-Cake单块图高度)/2+Cake单块图高度
  506.     @panorama2[i].x = (640-Cake单块图宽度)/2+Cake单块图宽度
  507.     @panorama2[i].y = (480-Cake单块图高度)/2+Cake单块图高度
  508.         end
  509.       end
  510.     end
  511. end
复制代码

点评

强大。  发表于 2010-10-26 22:21

评分

参与人数 2星屑 +1100 收起 理由
后知后觉 + 700 偶然发现此物很不错
小传子 + 400 精品文章

查看全部评分

Lv2.观梦者

梦石
0
星屑
359
在线时间
228 小时
注册时间
2009-8-25
帖子
48
2
发表于 2010-8-6 19:31:10 | 只看该作者
下载无此文件?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
57 小时
注册时间
2010-8-8
帖子
20
3
发表于 2010-9-11 20:45:49 | 只看该作者
双远景?
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
769
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
4
发表于 2010-10-26 22:18:21 | 只看该作者
本帖最后由 传说VS天涯 于 2010-10-26 22:23 编辑

这个实际上是用CPU的性能来代替了内存的性能,- -。

我想问的是,如果一张大地图走完以后,所消耗的内存是不是和原来那个版本的远景脚本所消耗的相同?
因为不显示的部分在消失以后不至于被释放吧?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 21:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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