赞 | 406 |
VIP | 0 |
好人卡 | 11 |
积分 | 390 |
经验 | 242285 |
最后登录 | 2024-11-26 |
在线时间 | 5719 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 39021
- 在线时间
- 5719 小时
- 注册时间
- 2006-11-10
- 帖子
- 6619
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 灯笼菜刀王 于 2018-5-14 19:10 编辑
做剧情途中又摸鱼搞了个系统.... 感觉某个做恶魔城的貌似要这种地图吧XD @89444640
除了特殊画面外, 这种地图也适合懒得画大地图的家伙偷懒用=.=....
冲突应该没有, 就一个窗口~
可以一个地图重复利用(SAVE房间)=.= 用变量来做区别
要设置大房间也可以哒~
#------------------------------------ # 简易格子地图 by 灯笼菜刀酱 MAP_SWI_ID = 1 #地图开关ID MAP_COPY = 1 #重复地图区别变量ID #==================================================================== $platmap = [] def 打开地图(number) case number #=============================================================== #地图设置, when 0 地图 = "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 loop do 铺块(x,y) if x < @mx x += 1 elsif y < @my y += 1 x = 0 elsif x == @mx and y == @my break end end end def 铺块(x,y) return if $platmap[1] == nil b = $game_map.map_id if $platmap[1][[x,y]].is_a?(Float) f = $platmap[1][[x,y]] * 100 if Integer(f) / 100 == b and Integer(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_id and $platmap[0] != nil setup @mapid = $game_map.map_id end end end
#------------------------------------
# 简易格子地图 by 灯笼菜刀酱
MAP_SWI_ID = 1 #地图开关ID
MAP_COPY = 1 #重复地图区别变量ID
#====================================================================
$platmap = []
def 打开地图(number)
case number
#===============================================================
#地图设置,
when 0
地图 = "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
loop do
铺块(x,y)
if x < @mx
x += 1
elsif y < @my
y += 1
x = 0
elsif x == @mx and y == @my
break
end
end
end
def 铺块(x,y)
return if $platmap[1] == nil
b = $game_map.map_id
if $platmap[1][[x,y]].is_a?(Float)
f = $platmap[1][[x,y]] * 100
if Integer(f) / 100 == b and Integer(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_id and $platmap[0] != nil
setup
@mapid = $game_map.map_id
end
end
end
地图规格: 长宽无限制, 尽量做成16的倍数看起来比较好看=.=, 放到GAME OVER文件夹里(至于为什么放这里? 一般这里就只放一张图片不是么?太浪费了....=v=)
区号坐标设置参考下图, 每小格是16X16
当然也可以这样画,认得这个地图的都是砖工
格式 [x,y] => 1 #对应的地图ID, 要多次利用的地图后面加上两位小数, 对应 1号变量的值
范例一只~
简易格子地图.rar
(196.99 KB, 下载次数: 128)
---------------------
5.13 修复了超过10位数的地图宽度长度会导致计算错误的BUG.... |
评分
-
查看全部评分
|