Project1

标题: 【翻译】让VX图层无穷无尽!(BUG已解决) [打印本页]

作者: 仲秋启明    时间: 2010-10-31 14:00
标题: 【翻译】让VX图层无穷无尽!(BUG已解决)
本帖最后由 仲秋启明 于 2011-2-13 20:11 编辑

好的,既然要出地图教程了,就应该关注一下地图加强,于是,搜到了,翻译了
原版的图片宣传:

自己改后的使用方法:

可以无穷无尽,最多我也不知道会到多少
直接上脚本:

  1. #==============================================================================
  2. # ■ VX图层无穷无尽
  3. #------------------------------------------------------------------------------
  4. #  原作BY:S. F. LaValle   翻译、修改BY:仲秋启明
  5. #  使用方法:在子地图名的最后加上“LX”(X为第几添加层)
  6. #  更新手记:2011.2.13 解决战斗渐变问题
  7. #==============================================================================
  8. class Scene_Map < Scene_Base
  9.   alias start_2 start
  10.   alias update_2 update
  11.   attr_reader :map_layer_spritesets
  12.   def start
  13.     start_2
  14.     setup_map_layers
  15.   end
  16.   def update
  17.     for i in 0...@map_layer_spritesets.size
  18.       @map_layers[i].update
  19.       @map_layer_spritesets[i].update
  20.     end
  21.     update_2
  22.   end  
  23.   def update_transfer_player
  24.     return unless $game_player.transfer?
  25.     fade = (Graphics.brightness > 0)
  26.     fadeout(30) if fade
  27.     @spriteset.dispose
  28.     for i in 0...@map_layer_spritesets.size
  29.       @map_layer_spritesets[i].dispose
  30.     end
  31.     $game_player.perform_transfer
  32.     $game_map.autoplay
  33.     $game_map.update
  34.     Graphics.wait(15)
  35.     @spriteset = Spriteset_Map.new
  36.     setup_map_layers
  37.     fadein(30) if fade
  38.     Input.update
  39.   end
  40.   def call_battle
  41.     @spriteset.update
  42.     Graphics.update
  43.     $game_player.make_encounter_count
  44.     $game_player.straighten
  45.     for i in 0...@map_layer_spritesets.size
  46.       @map_layer_spritesets[i].dispose
  47.     end
  48.     $game_temp.map_bgm = RPG::BGM.last
  49.     $game_temp.map_bgs = RPG::BGS.last
  50.     RPG::BGM.stop
  51.     RPG::BGS.stop
  52.     Sound.play_battle_start
  53.     $game_system.battle_bgm.play
  54.     $game_temp.next_scene = nil
  55.     $scene = Scene_Battle.new
  56.   end
  57.   def setup_map_layers
  58.     maps = load_data("Data/MapInfos.rvdata")
  59.     game_map_name = maps[$game_map.map_id].name
  60.     @map_layers = []
  61.     @map_layer_spritesets = []
  62.     map_names = []
  63.     layer_map_names = []
  64.     layer_index = []
  65.     c = maps.keys
  66.     d = c.max
  67.     for i in 1..d
  68.       unless maps[i] == nil
  69.         a = nil
  70.         map_names.push(maps[i].name)
  71.         a = maps[i].name =~ /(l|L)\d+/
  72.         layer_map_names.push(maps[i].name) if a != nil
  73.         layer_index.push(maps.index(maps[i])) if a != nil
  74.       end
  75.     end
  76.     for string in layer_map_names
  77.       string.chop! until string == game_map_name or string == ""
  78.     end
  79.     if layer_map_names.include?(game_map_name)
  80.       for i in 0...layer_map_names.size
  81.         if layer_map_names[i] != ""
  82.           map = Game_Map.new
  83.           map.setup(layer_index[i])
  84.           @map_layer_spritesets.push(Spriteset_Map_2.new(map))
  85.           @map_layers.push(map)
  86.         end
  87.       end
  88.     end
  89.   end
  90. end

  91. class Spriteset_Map_2 < Spriteset_Map
  92.   def initialize(layer)
  93.     @layer = layer
  94.     create_viewports
  95.     create_tilemap
  96.     update
  97.   end
  98.   def update
  99.     update_tilemap
  100.     update_viewports
  101.   end
  102.   def dispose
  103.     @tilemap.dispose
  104.   end
  105.   def create_tilemap(a1 = nil, a2 = nil, a3 = nil, a4 = nil, a5 = nil, b = nil, c = nil, d = nil, e = nil)
  106.     @tilemap = Tilemap.new(@viewport1)
  107.     @tilemap.bitmaps[0] = (a1 == nil ? Cache.system("TileA1") : a1)
  108.     @tilemap.bitmaps[1] = (a2 == nil ? Cache.system("TileA2") : a2)
  109.     @tilemap.bitmaps[2] = (a3 == nil ? Cache.system("TileA3") : a3)
  110.     @tilemap.bitmaps[3] = (a4 == nil ? Cache.system("TileA4") : a4)
  111.     @tilemap.bitmaps[4] = (a5 == nil ? Cache.system("TileA5") : a5)
  112.     @tilemap.bitmaps[5] = (b == nil ? Cache.system("TileB") : b)
  113.     @tilemap.bitmaps[6] = (c == nil ? Cache.system("TileC") : c)
  114.     @tilemap.bitmaps[7] = (d == nil ? Cache.system("TileD") : d)
  115.     @tilemap.bitmaps[8] = (e == nil ? Cache.system("TileE") : e)
  116.     @tilemap.map_data = @layer.data
  117.     @tilemap.passages = @layer.passages
  118.   end
  119.   def update_viewports
  120.     @viewport1.tone = @layer.screen.tone
  121.     @viewport1.ox = @layer.screen.shake
  122.     @viewport2.color = @layer.screen.flash_color
  123.     @viewport3.color.set(0, 0, 0, 255 - @layer.screen.brightness)
  124.     @viewport1.update
  125.     @viewport2.update
  126.     @viewport3.update
  127.   end
  128. end
复制代码
范例工程不提供,很简单的

作者: 夕阳武士    时间: 2010-10-31 14:10
嗯,看明白了,这个相当于xp的图层吧。学长加油。
作者: 李光兆    时间: 2010-10-31 14:20
恩,GOOD!
作者: 新坦克君    时间: 2010-10-31 14:24
是个好东西=。=
作者: 狠、陌生    时间: 2010-10-31 14:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: px.凤翔九天    时间: 2010-10-31 14:47
无知的我想问:这个对XP有效吗?以前一直是用SHIFT加个图层,要是有效,那就省事多了。
作者: N.K    时间: 2010-10-31 14:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: zhushimin10    时间: 2010-10-31 15:03
真是个不错的脚本……不过用地图名来控制的话……某些地图名控制的脚本就会冲突了……比如地图名显示
作者: 越前リョーマ    时间: 2010-10-31 15:12
依旧是很烦人才能让VX稍微加强一些的东西囧,和图块扩充一样……
作者: 企鹅达达    时间: 2010-10-31 20:10
强大,太强大了!虽说我默认的两层加事件做的第三层已经够用了……
作者: 38571240    时间: 2010-10-31 20:55
太有趣了.... 这样可以让人从高楼后面走过去了!看上去被挡住的部分都可以这样
想想还有什么其他的用法
作者: 红灯    时间: 2010-10-31 21:32
哇!太强大了啊!
作者: 高须小龙    时间: 2010-10-31 22:55
老物,不过楼主还是应该拿好人卡得。
作者: 八云紫    时间: 2010-11-3 12:30
其实可以一张地图一个图层, 然后实现伪 2.5D , 咱的之前的工程就是这么设计的~~
作者: 38571240    时间: 2010-11-3 22:40
刚才发现进入战斗时,子图层的图像没有及时刷掉,不过ARPG表示无压力
作者: zx991    时间: 2010-11-14 16:59
{:2_33:}  关键是图块的扩充啊
作者: 风雪优游    时间: 2010-11-14 21:11
泪……这样子画地图更加复杂了,果然还是需要专业支持的……
作者: 仲秋启明    时间: 2011-2-13 20:14
BUG已解决
作者: pl03424626    时间: 2011-5-5 02:30
{:4_84:}换地图无淡出淡入脚本冲突,快速换图的话副层地图刷新不到。
作者: 821496632    时间: 2011-8-15 14:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: candy2266    时间: 2011-8-25 13:42
虽然不是很懂= =但是留着,希望有天能用好
作者: 1370528656    时间: 2011-10-1 10:14
谁能帮忙翻译成XP的?
感激不尽




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