
做剧情途中又摸鱼搞了个系统.... 感觉某个做恶魔城的貌似要这种地图吧XD
@89444640
除了特殊画面外, 这种地图也适合懒得画大地图的家伙偷懒用=.=....
冲突应该没有, 就一个窗口~
可以一个地图重复利用(SAVE房间)=.= 用变量来做区别
要设置大房间也可以哒~
RUBY 代码
- #------------------------------------
- # 简易格子地图 by 灯笼菜刀酱
- MAP_SWI_ID = 1 #地图开关ID
- MAP_COPY = 1 #重复地图区别变量ID
- #====================================================================
- $platmap = []
- def 打开地图(number)
- case number
- #===============================================================
- #地图设置,
- when0
- 地图 = "map1" #地图图片名称
- #地图每个格子坐标 [x,y]=> 对应的地图ID. ↓可以换行,逗号别忘
- 区号 = {[1,1]=>1.00,[2,1]=> 2,[2,2]=>3,[2,3]=>3,
- [2,4]=>3,[3,4]=>1.01,[4,4]=>4,[4,5]=>4,[5,4]=>4,[5,5]=>4}
- #需要不同的地图,就在下面添加
- #when 1
- #地图 = XXX
- #区号 = XXX
- #然后事件脚本写: 打开地图(1) 就可以打开新的地图,要关掉地图 事件脚本写 : 关闭地图
- #===============================================================
- else
- 地图 = nil
- 区号 = nil
- end
- $platmap.push(地图)
- $platmap.push(区号)
- $mapshow = Window_plat.new
- end
- def 关闭地图
- if$mapshow != nil
- $mapshow.dispose
- $mapshow = nil
- end
- end
- class Window_plat < Window_Base
- def initialize
- super(0, 0, 160, 120)
- self.contents = Bitmap.new(width - 32, height - 32)
- @mapid = 0
- setup if$platmap[0] != nil
- end
- def setup
- self.contents = Bitmap.new("Graphics/gameovers/" + $platmap[0])
- @mx = self.contents.width / 16
- @my = self.contents.height / 16
- refresh
- end
- def refresh
- self.contents.clear
- bitmap = RPG::Cache.gameover($platmap[0])
- cw = bitmap.width
- ch = bitmap.height
- src_rect = Rect.new(0, 0, cw, ch)
- self.contents.blt(0, 0, bitmap, src_rect)
- x,y = 0,0
- loopdo
- 铺块(x,y)
- if x < @mx
- x += 1
- elsif y < @my
- y += 1
- x = 0
- elsif x == @mxand y == @my
- break
- end
- end
- end
- def 铺块(x,y)
- returnif$platmap[1] == nil
- b = $game_map.map_id
- if$platmap[1][[x,y]].is_a?(Float)
- f = $platmap[1][[x,y]] * 100
- ifInteger(f) / 100 == b andInteger(f) % 100 == $game_variables[MAP_COPY]
- self.ox = x*16 - 57
- self.oy = y*16 - 36
- return
- end
- elsif$platmap[1][[x,y]] == b
- self.ox = x*16 - 57
- self.oy = y*16 - 36
- return
- end
- bitmap = RPG::Cache.gameover("outsize")
- src_rect = Rect.new(0, 0, 16, 16)
- self.contents.blt(x*16, y*16, bitmap, src_rect,128)
- end
- def update
- if@mapid != $game_map.map_idand$platmap[0] != nil
- setup
- @mapid = $game_map.map_id
- end
- end
- end
复制代码
地图规格: 长宽无限制, 尽量做成16的倍数看起来比较好看=.=, 放到GAME OVER文件夹里(至于为什么放这里? 一般这里就只放一张图片不是么?太浪费了....=v=)
区号坐标设置参考下图, 每小格是16X16
当然也可以这样画,认得这个地图的都是砖工
格式 [x,y] => 1 #对应的地图ID, 要多次利用的地图后面加上两位小数, 对应 1号变量的值
范例一只~
---------------------
5.13 修复了超过10位数的地图宽度长度会导致计算错误的BUG....
本帖来自P1论坛作者灯笼菜刀王,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:
https://rpg.blue/forum.php?mod=viewthread&tid=408405 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。