Project1

标题: 如何将XP的地图转移到vx中? [打印本页]

作者: 3121362    时间: 2008-3-30 23:56
标题: 如何将XP的地图转移到vx中?
如何将XP的地图转移到vx中?  很郁闷 !~
作者: 八云紫    时间: 2008-3-30 23:58
回答是,不能。我觉得。
作者: 3121362    时间: 2008-3-31 00:06
可是没办法么?
作者: 八云紫    时间: 2008-3-31 00:10
地图元件不一样,而且VX可扩展的空间很少。除非用脚本来扩展。
再说了,XP用好好的,怎么要换成VX呢?
作者: 火鸡三毛老大    时间: 2008-3-31 04:21
远景图...不过只限于小型地图
  先截图然后远景 会了吧
作者: 八云紫    时间: 2008-3-31 04:23
以下引用火鸡三毛老大于2008-3-30 20:21:49的发言:

远景图...不过只限于小型地图
先截图然后远景 会了吧

不推荐用这种做法。这样做会使游戏体积增大。
作者: trentswd    时间: 2008-3-31 21:44
可以的,以前66有过一个vip限制贴

但是回档回掉了

那个66求学记vx版用的就是这方法
作者: 精灵使者    时间: 2008-3-31 22:53
应该很简单的吧。
其实就这么几步:把xp的那些默认脚本f1(里面的那些)拷贝到vx中。
然后使用某柳的tileset转换方式。
这个我试验过,可以是可以,但是不稳定。
大概范例脚本在vx求学记里面有。
作者: asperta    时间: 2008-3-31 23:28
那个回档的我又把它找回来了!
  1. #==============================================================================
  2. # ■ Spriteset_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面活动块和元件的类。本类在
  5. # Scene_Map 类的内部使用。
  6. #==============================================================================

  7. class Spriteset_Map
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     # 生成显示端口
  13.     @viewport1 = Viewport.new(0, 0, 640, 480)
  14.     @viewport2 = Viewport.new(0, 0, 640, 480)
  15.     @viewport3 = Viewport.new(0, 0, 640, 480)
  16.     @viewport2.z = 200
  17.     @viewport3.z = 5000
  18.     # 生成元件地图
  19.     # @tilemap = Tilemap.new(@viewport1)
  20.     # @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  21.     # for i in 0..6
  22.     #   autotile_name = $game_map.autotile_names[i]
  23.     #   @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  24.     # end
  25.     # @tilemap.map_data = $game_map.data
  26.     # @tilemap.priorities = $game_map.priorities
  27.    
  28.     @map_sp = []
  29.     for i in 0...$game_map.height + 7
  30.       @map_sp[i] = Sprite.new(@viewport1)
  31.       @map_sp[i].bitmap = Bitmap.new($game_map.width * 32 , 192)
  32. #      @map_sp[i].bitmap.draw_text(0, 0, $game_map.width * 32 , 32, i.to_s)
  33.       @map_sp[i].z = 32 + i * 32
  34.     end
  35.    
  36.     for i in 0...$game_map.width
  37.       for j in 0...$game_map.height
  38.         for k in [0,1,2]
  39.           tile_id = $game_map.data[i,j,k]
  40.           next if tile_id == 0
  41.           numb = j + $game_map.priorities[tile_id]
  42.           if tile_id < 384
  43.             tid = tile_id / 48
  44.             bmp = at48(tile_id - tid * 48, RPG::Cache.autotile($game_map.autotile_names[tid-1]))
  45.             tx = i * 32
  46.             ty = (5 - $game_map.priorities[tile_id])* 32
  47.             @map_sp[numb].bitmap.blt(tx, ty, bmp, bmp.rect)
  48.             next
  49.           end
  50.           x = (tile_id - 384) % 8 * 32
  51.           y = (tile_id - 384) / 8 * 32
  52.           rect = Rect.new(x, y, 32, 32)
  53.           tx = i * 32
  54.           ty = (5 - $game_map.priorities[tile_id])* 32
  55.           @map_sp[numb].bitmap.blt(tx, ty, RPG::Cache.tileset($game_map.tileset_name), rect)
  56. #          @map_sp[numb].bitmap.draw_text(tx, ty, 32, 32, numb.to_s)
  57.         end
  58.       end
  59.     end
  60.    
  61.     for i in 0...$game_map.height + 6
  62.       @map_sp[i].y = i * 32 -  160
  63.     end
  64.    
  65.    
  66.     # 生成远景平面
  67.     @panorama = Plane.new(@viewport1)
  68.     @panorama.z = -1000
  69.     # 生成雾平面
  70.     @fog = Plane.new(@viewport1)
  71.     @fog.z = 3000
  72.     # 生成角色活动块
  73.     @character_sprites = []
  74.     for i in $game_map.events.keys.sort
  75.       sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  76.       @character_sprites.push(sprite)
  77.     end
  78.     @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
  79.     # 生成天气
  80.     @weather = RPG::Weather.new(@viewport1)
  81.     # 生成图片
  82.     @picture_sprites = []
  83.     for i in 1..50
  84.       @picture_sprites.push(Sprite_Picture.new(@viewport2,
  85.         $game_screen.pictures[i]))
  86.     end
  87.     # 生成计时器块
  88.     @timer_sprite = Sprite_Timer.new
  89.     # 刷新画面
  90.     update
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 释放
  94.   #--------------------------------------------------------------------------
  95.   def dispose
  96.     # 释放元件地图
  97.     # @tilemap.tileset.dispose
  98.     # for i in 0..6
  99.     #   @tilemap.autotiles[i].dispose
  100.     # end
  101.     # @tilemap.dispose
  102.     # 释放远景平面
  103.     @panorama.dispose
  104.     # 释放雾平面
  105.     @fog.dispose
  106.     # 释放角色活动块
  107.     for sprite in @character_sprites
  108.       sprite.dispose
  109.     end
  110.     # 释放天候
  111.     @weather.dispose
  112.     # 释放图片
  113.     for sprite in @picture_sprites
  114.       sprite.dispose
  115.     end
  116.     # 释放计时器块
  117.     @timer_sprite.dispose
  118.     # 释放显示端口
  119.     @viewport1.dispose
  120.     @viewport2.dispose
  121.     @viewport3.dispose
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 刷新画面
  125.   #--------------------------------------------------------------------------
  126.   def update
  127.     # 远景与现在的情况有差异发情况下
  128.     if @panorama_name != $game_map.panorama_name or
  129.        @panorama_hue != $game_map.panorama_hue
  130.       @panorama_name = $game_map.panorama_name
  131.       @panorama_hue = $game_map.panorama_hue
  132.       if @panorama.bitmap != nil
  133.         @panorama.bitmap.dispose
  134.         @panorama.bitmap = nil
  135.       end
  136.       if @panorama_name != ""
  137.         @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
  138.       end
  139.       Graphics.frame_reset
  140.     end
  141.     # 雾与现在的情况有差异的情况下
  142.     if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
  143.       @fog_name = $game_map.fog_name
  144.       @fog_hue = $game_map.fog_hue
  145.       if @fog.bitmap != nil
  146.         @fog.bitmap.dispose
  147.         @fog.bitmap = nil
  148.       end
  149.       if @fog_name != ""
  150.         @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
  151.       end
  152.       Graphics.frame_reset
  153.     end
  154.     # 刷新元件地图
  155.     for i in 0...$game_map.height + 6
  156.       @map_sp[i].y = i * 32 -  160 - $game_map.display_y / 4
  157.       @map_sp[i].x = - $game_map.display_x / 4
  158.       @map_sp[i].z = (i * 128 - $game_map.display_y + 3) / 4 + 32
  159.     end
  160. #    @tilemap.ox = $game_map.display_x / 4
  161. #    @tilemap.oy = $game_map.display_y / 4
  162. #    @tilemap.update
  163.     # 刷新远景平面
  164.     @panorama.ox = $game_map.display_x / 8
  165.     @panorama.oy = $game_map.display_y / 8
  166.     # 刷新雾平面
  167.     @fog.zoom_x = $game_map.fog_zoom / 100.0
  168.     @fog.zoom_y = $game_map.fog_zoom / 100.0
  169.     @fog.opacity = $game_map.fog_opacity
  170.     @fog.blend_type = $game_map.fog_blend_type
  171.     @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
  172.     @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
  173.     @fog.tone = $game_map.fog_tone
  174.     # 刷新角色活动块
  175.     for sprite in @character_sprites
  176.       sprite.update
  177.     end
  178.     # 刷新天候图形
  179.     @weather.type = $game_screen.weather_type
  180.     @weather.max = $game_screen.weather_max
  181.     @weather.ox = $game_map.display_x / 4
  182.     @weather.oy = $game_map.display_y / 4
  183.     @weather.update
  184.     # 刷新图片
  185.     for sprite in @picture_sprites
  186.       sprite.update
  187.     end
  188.     # 刷新计时器块
  189.     @timer_sprite.update
  190.     # 设置画面的色调与震动位置
  191.     @viewport1.tone = $game_screen.tone
  192.     @viewport1.ox = $game_screen.shake
  193.     # 设置画面的闪烁色
  194.     @viewport3.color = $game_screen.flash_color
  195.     # 刷新显示端口
  196.     @viewport1.update
  197.     @viewport3.update
  198.   end
  199.   
  200.   def at48(i, bmp)
  201.     a = [
  202.       [27,28,5 ,28,27,6 ,5 ,6 ,27,28,5 ,28,27,6 ,5 ,6 ],
  203.       [33,34,33,34,33,34,33,34,33,12,33,12,33,12,33,12],
  204.       [27,28,5 ,28,27,6 ,5 ,6 ,27,28,5 ,28,27,6 ,5 ,6 ],
  205.       [11,34,11,34,11,34,11,34,11,12,11,12,11,12,11,12],
  206.       [25,26,25,6 ,25,26,25,6 ,15,16,15,16,15,16,15,16],
  207.       [31,32,31,32,31,12,31,12,21,22,21,12,11,22,11,12],
  208.       [29,30,29,30,5 ,30,5 ,30,39,40,5 ,40,39,6 ,5 ,6 ],
  209.       [35,36,11,36,35,36,11,36,45,46,45,46,45,46,45,46],
  210.       [25,30,15,16,13,14,13,14,17,18,17,18,41,42,5 ,42],
  211.       [31,36,45,46,19,20,19,12,23,24,11,24,47,48,47,48],
  212.       [37,38,37,6 ,13,18,13,14,37,42,17,18,13,18,1 ,2 ],
  213.       [43,44,43,44,19,24,43,44,43,48,47,48,43,48,7 ,8 ]
  214.       ]
  215.     bitmap = Bitmap.new(32, 32)
  216.     xy = getrect(i)
  217.     y = xy[1] * 2
  218.     x = xy[0] * 2
  219.     #p i,y,x,a[y][x],a[y][x+1],a[y+1][x],a[y+1][x+1]
  220.     bitmap.blt(0, 0, bmp, Rect.new(get_at(a[y][x])[0] * 16,get_at(a[y][x])[1] * 16, 16,16))
  221.     bitmap.blt(16, 0, bmp, Rect.new(get_at(a[y][x+1])[0] * 16,get_at(a[y][x+1])[1] * 16, 16,16))
  222.     bitmap.blt(0, 16, bmp, Rect.new(get_at(a[y+1][x])[0] * 16,get_at(a[y+1][x])[1]* 16, 16,16))
  223.     bitmap.blt(16, 16, bmp, Rect.new(get_at(a[y+1][x+1])[0] * 16,get_at(a[y+1][x+1])[1]* 16, 16,16))
  224.     return bitmap
  225.    
  226.   end
  227.   
  228.   def getrect(id)
  229.     x = id % 8
  230.     y = id / 8
  231.     return [x, y]
  232.   end   
  233.   
  234.   def get_at(id)
  235.     id -= 1
  236.     x = id % 6
  237.     y = id / 6
  238.     return [x, y]
  239.   end  
  240.       
  241. end
复制代码

作者: jayuegt    时间: 2008-4-1 00:09
根本不行de吖~!(*^__^*) 嘻嘻……
作者: 越前リョーマ    时间: 2008-4-1 02:28
这个转移到底是什么意思?
素材?

还是做好的地图直接复制过去?
作者: 精灵使者    时间: 2008-4-1 02:31
我感觉还是使用xp系列素材重新制作vx格式的地图的说……
作者: 越前リョーマ    时间: 2008-4-1 02:33
以下引用精灵使者于2008-3-31 18:31:48的发言:

我感觉还是使用xp系列素材重新制作vx格式的地图的说……

但是VX可以容量地图素材的大小太少了……
作者: 精灵使者    时间: 2008-4-1 02:48
这就看把什么做成自动元件的了……其实,xp系统大概50多张图,如果汇集起来的话,有些图还是可以直接作自动元件的……(恐怕,从a图块到e图块都需要全部改写了- -建议,有些东西作为事件图……
作者: 雪流星    时间: 2008-4-1 05:11
我曾经尝试过把XP的自动元件改成VX的
不过本人美工有限,做出来效果不佳

最大的问题是XP的 3X3 格自动元件 VX成了 2X2 格
作者: 精灵使者    时间: 2008-4-1 08:14
2x2格的原因大概是仅仅留下边角4块吧。难怪,vx的那个太方了地说……莫非想让我进行放缩?!
作者: 雪流星    时间: 2008-4-1 08:33
我就是用缩放
但是内角的缩放就出了问题了
同样只有一格,怎麽缩放呢?
既使照比例缩放了,那麽空白边该填上哪部分呢?
作者: 精灵使者    时间: 2008-4-1 17:25
使用XP的自动元件画好图,再进行裁切。
P.S.多余的空白部分可以用相应的元件进行补充。




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