幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 15817|回复: 46

[地图画面] VX地图块只能A~E?NO!NO!NO!A~Z只要你愿意

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-12-24 22:05:56 | 显示全部楼层 |阅读模式
请仔细看下边帖子的用法。。。
1楼的脚本是必须的。。。


放到main前
  1. module Cache
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取图块图片
  4.   #     filename : 文件名
  5.   #--------------------------------------------------------------------------
  6.   def self.tile(filename)
  7.     load_bitmap("Graphics/Tile/", filename)
  8.   end
  9. end
  10. class Game_Map
  11.   #--------------------------------------------------------------------------
  12.   # ● 设置
  13.   #     map_id : 地图 ID
  14.   #--------------------------------------------------------------------------
  15.   def setup(map_id)
  16.     @map_id = map_id
  17.     @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id))
  18.     @display_x = 0
  19.     @display_y = 0
  20.     @passages = $data_system.passages
  21.     for i in 0...4
  22.       g = load_data("Data/Tile" + $game_map_data[@map_id][i] + ".rvdata")
  23.       for j in 0...256
  24.         @passages[256 * i + j] = g[j]
  25.       end
  26.     end
  27.     referesh_vehicles
  28.     setup_events
  29.     setup_scroll
  30.     setup_parallax
  31.     @need_refresh = false
  32.   end
  33. end
  34. class Sprite_Character < Sprite_Base
  35.   #--------------------------------------------------------------------------
  36.   # ● 获取包含所选图块的元件图档
  37.   #     tile_id : 元件ID
  38.   #--------------------------------------------------------------------------
  39.   def tileset_bitmap(tile_id)
  40.     set_number = tile_id / 256
  41.     return Cache.tile("Tile"+$game_map_data[$game_map.map_id][0]) if set_number == 0
  42.     return Cache.tile("Tile"+$game_map_data[$game_map.map_id][1]) if set_number == 1
  43.     return Cache.tile("Tile"+$game_map_data[$game_map.map_id][2]) if set_number == 2
  44.     return Cache.tile("Tile"+$game_map_data[$game_map.map_id][3]) if set_number == 3
  45.     return nil
  46.   end
  47. end
  48. class Spriteset_Map
  49.   #--------------------------------------------------------------------------
  50.   # ● 生成地图元件
  51.   #--------------------------------------------------------------------------
  52.   def create_tilemap
  53.     @tilemap = Tilemap.new(@viewport1)
  54.     @tilemap.bitmaps[0] = Cache.tile("TileA1")
  55.     @tilemap.bitmaps[1] = Cache.tile("TileA2")
  56.     @tilemap.bitmaps[2] = Cache.tile("TileA3")
  57.     @tilemap.bitmaps[3] = Cache.tile("TileA4")
  58.     @tilemap.bitmaps[4] = Cache.tile("TileA5")
  59.     @tilemap.bitmaps[5] = Cache.tile("Tile"+$game_map_data[$game_map.map_id][0])
  60.     @tilemap.bitmaps[6] = Cache.tile("Tile"+$game_map_data[$game_map.map_id][1])
  61.     @tilemap.bitmaps[7] = Cache.tile("Tile"+$game_map_data[$game_map.map_id][2])
  62.     @tilemap.bitmaps[8] = Cache.tile("Tile"+$game_map_data[$game_map.map_id][3])
  63.     @tilemap.map_data = $game_map.data
  64.     @tilemap.passages = $game_map.passages
  65.   end
  66. end
复制代码
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-12-24 22:10:30 | 显示全部楼层
A层我没有动手脚。。。动手脚的是B~E。。将这些进行扩展
你可以自己作图 TileF.png  TileG.png等等

首先定义 一个hash
  1. $game_map_data = {}
复制代码
这个是用来存放地图要用到的图片的数据的
  1. $game_map_data[id] = ["F","G","H","I"]
复制代码
这个是 定义地图用那些图块这个数组有4个参数
id表示地图号 4个参数 分别表示 [用TileF代替TileB,TileG代替TileC,H代替D,I代替E]注意大小写
  1. def _map_passage_(tile_index,tile_name)
  2.   # tile_index 0=>B 1=>C 2=>D 3=>E
  3.   f = load_data("Data/System.rvdata")
  4.   table = f.passages
  5.   a = Table.new(256)
  6.   for i in 0...256
  7.     a[i] = table[256 * tile_index + i]
  8.   end
  9.   save_data(a,"Tile" + tile_name + ".rvdata")
  10. end
复制代码

这一段是记录通行度的。。。TileF TileG总不能没有通行吧
用法。。将TileF改名TileB。。放入System文件夹。。。这样打开工程 B曾就变成TileF的图片了。。。这时更改通行
然后运行这个脚本
_map_passage_(0,"F")就生成 在工程目录F图的通行文件了
将它放到 Data文件夹就可以了。。
两个参数。。第一个参数 是数字 0~3
# tile_index 0=>B 1=>C 2=>D 3=>E 写得很清楚 0代表B层 1是C层等等。。例子中F是更名成B的所以是0,后边的参数是"F""G"等等这表示是F图的通行。。
另外。。地图的图片包括A层的 都请放到 Graphics/Tile中,这个文件夹需要自己创立。。。

这样就大功告成了!有不明白的请跟贴!
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-12-24 22:24:02 | 显示全部楼层
这个还会有后续版本。。。我不想将$game_map_data[id]都放到脚本里。。。以后会做一小段脚本将这个数组单独生成一个文件。。。

当然这个文件不会是System.rvdata那样的东西。。一个save_data就搞定多没意思


在这里附上解释吧。。。要不大家觉得这个太麻烦了。。。其实作图的时候一点都不麻烦。。。这是为了解决作图总要换图片的问题  我才 加了一个Tile 文件夹的

网友问了一个问题。。我一幅图 用的是 FFFF  但是 制作的时候  BCDE  ,F
图片显示不到编辑器中,没办法作图了
  1. 麦田 守望  23:05:09
  2. 制作的时候不是很难搞啊-0-。造个大房子都不知道怎么组合
  3. Secondsen  23:05:27
  4. 。。。你真是。。。。
  5. 麦田 守望  23:06:04
  6. 这么说的话我也见到过一个图块加强脚本,效果跟你这个一样哦,用法不同。
  7. Secondsen  23:06:41
  8. 就拿你的 001 来说吧
  9. 吧 TileF 改成 TileB ~E 放到 System 里面。。。这样 制作的时候 B~E显示的图片都是  F了
  10. Secondsen  23:06:44
  11. 所以我才说
  12. Secondsen  23:06:52
  13. Secondsen  23:02:38
  14. 其实不累。。。你的城镇 用4张图  森林,草原 4张  山洞4张
  15. 你一种一种的做啊。。。你不会是  做了一张 城镇 就做 森林吧。。。打乱的做当然累了
  16. 麦田 守望  23:07:19
  17. 对哦,可以这样的
  18. 麦田 守望  23:07:53
  19. 做完了,再拿到Tile 里就可以了
  20. Secondsen  23:08:00
  21. 这样不就很简单了么?而且一种类型一种类型的作图。。。并不比 原来的麻烦。。只是换种类的时候 需要改一下文件名就可以了
  22. 麦田 守望  23:08:21
  23. 恩,了解了。
  24. Secondsen  23:08:24
  25. Tile 的根本不用动,把要用到的是先复制到里面就可以了
  26. 麦田 守望  23:08:24
  27. 不错不错,哈哈
复制代码
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-12-24 22:46:29 | 显示全部楼层
后边的两个图分别是
$game_map_data[65] = ["B","C","D","I"]
$game_map_data[68] = ["B","C","G","H"]

本帖子中包含更多资源

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

x
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-12-24 23:33:35 | 显示全部楼层
对了,有不明白的可以跟帖提问。。我也不知道自己是否描述的清楚明白

本帖子中包含更多资源

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

x
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

黑暗的界 该用户已被删除
发表于 2010-1-10 14:09:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2010-1-10 21:36:18 | 显示全部楼层
不需要懂脚本。。。

是这样。。。这个脚本,可以使你的第二层不止仅仅限于 TILEB ~E 4附图片

在脚本的最上方,写脚本
$game_map_data[1] = ["C","B","F","I"]
就表示 要用 TileC TileB TileF TileI  这4附图来做 Map001
第一个[]中填写地图的编号 1 就是1号图 也就是Map001
CBFI  表示 用 TileC TileB TileF TileI   这4附图片
TileC做B层元件使用  TileB 做C层元件使用  TileF 做D层元件使用 TileI 做E层元件使用
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

1

主题

17

帖子

180

积分

③业余

积分
180
发表于 2010-1-14 16:24:47 | 显示全部楼层
其实不喜欢用RMVX的最大原因就是不习惯这么少的块绘那么多的图。太费脑了。还是喜欢RMXP的绘图方式。如果RMVX也能做到就很完美了。
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2010-1-14 20:51:26 | 显示全部楼层
除非自己做Tilemap,否则是不可能事件
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

7

主题

84

帖子

769

积分

⑤进阶

积分
769
发表于 2010-1-15 20:15:51 | 显示全部楼层
不是说图块E理论上可以无限大么?为啥还要这样呢……
我原本看中VX只是因为它自动图块多……后来发现,不能自己设置……郁闷……
说是说有了个墙阴影设定……可惜都是固定的……毛
而且人物角色的阴影问题他还是没结局……哭
不过他素材的管理还是不错的,比如行走图、图标拼在一起,看起来舒服
哎呀呀呀~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-17 04:05 , Processed in 0.020745 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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