じ☆ve冰风 发表于 2024-4-20 00:33:12

简易格子地图(DNF/恶魔城式地图)

做剧情途中又摸鱼搞了个系统.... 感觉某个做恶魔城的貌似要这种地图吧XD@89444640

除了特殊画面外, 这种地图也适合懒得画大地图的家伙偷懒用=.=....

冲突应该没有, 就一个窗口~



可以一个地图重复利用(SAVE房间)=.= 用变量来做区别


要设置大房间也可以哒~


RUBY 代码
#------------------------------------
# 简易格子地图by 灯笼菜刀酱

MAP_SWI_ID = 1#地图开关ID
MAP_COPY = 1    #重复地图区别变量ID
#====================================================================
$platmap = []
def 打开地图(number)
case number
#===============================================================
#地图设置,
when0
    地图 = "map1"#地图图片名称
    #地图每个格子坐标 => 对应的地图ID.    ↓可以换行,逗号别忘
    区号 = {=>1.00,=> 2,=>3,=>3,
    =>3,=>1.01,=>4,=>4,=>4,=>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 != nil
end
def setup
   self.contents = Bitmap.new("Graphics/gameovers/" + $platmap)
   @mx = self.contents.width / 16
   @my = self.contents.height / 16
   refresh
end
def refresh
    self.contents.clear
    bitmap = RPG::Cache.gameover($platmap)   
    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 == nil
    b = $game_map.map_id
    if$platmap[].is_a?(Float)
      f = $platmap[] * 100
      ifInteger(f) / 100 == b andInteger(f) % 100 == $game_variables
      self.ox = x*16 - 57
      self.oy = y*16 - 36
      return
      end
    elsif$platmap[] == 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 != nil
   setup
   @mapid = $game_map.map_id
    end
end
end


地图规格: 长宽无限制, 尽量做成16的倍数看起来比较好看=.=,放到GAME OVER文件夹里(至于为什么放这里? 一般这里就只放一张图片不是么?太浪费了....=v=)

区号坐标设置参考下图, 每小格是16X16
   

当然也可以这样画,认得这个地图的都是砖工


格式 => 1 #对应的地图ID, 要多次利用的地图后面加上两位小数, 对应 1号变量的值

范例一只~

---------------------
5.13 修复了超过10位数的地图宽度长度会导致计算错误的BUG....
             本帖来自P1论坛作者灯笼菜刀王,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=408405若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 简易格子地图(DNF/恶魔城式地图)