搜索附件  

简易格子地图.rar

 

简易格子地图(DNF/恶魔城式地图):
做剧情途中又摸鱼搞了个系统.... 感觉某个做恶魔城的貌似要这种地图吧XD@89444640

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

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



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


要设置大房间也可以哒~


RUBY 代码
  1. #------------------------------------
  2. # 简易格子地图  by 灯笼菜刀酱
  3. MAP_SWI_ID = 1  #地图开关ID
  4. MAP_COPY = 1    #重复地图区别变量ID
  5. #====================================================================
  6. $platmap = []
  7. def 打开地图(number)
  8.   case number
  9. #===============================================================
  10. #地图设置,
  11.   when0
  12.     地图 = "map1"  #地图图片名称
  13.     #地图每个格子坐标 [x,y]=> 对应的地图ID.    ↓可以换行,逗号别忘
  14.     区号 = {[1,1]=>1.00,[2,1]=> 2,[2,2]=>3,[2,3]=>3,
  15.     [2,4]=>3,[3,4]=>1.01,[4,4]=>4,[4,5]=>4,[5,4]=>4,[5,5]=>4}  
  16.     #需要不同的地图,就在下面添加
  17.     #when 1
  18.     #地图 = XXX
  19.     #区号 = XXX
  20. #然后事件脚本写: 打开地图(1) 就可以打开新的地图,要关掉地图 事件脚本写 : 关闭地图
  21. #===============================================================
  22.   else
  23.     地图 = nil
  24.     区号 = nil
  25.   end
  26.   $platmap.push(地图)
  27.   $platmap.push(区号)
  28.   $mapshow = Window_plat.new
  29. end
  30. def 关闭地图
  31. if$mapshow != nil
  32.   $mapshow.dispose
  33.   $mapshow = nil
  34. end
  35. end
  36. class Window_plat < Window_Base
  37.   def initialize
  38.     super(0, 0, 160, 120)
  39.     self.contents = Bitmap.new(width - 32, height - 32)
  40.     @mapid = 0
  41.     setup if$platmap[0] != nil
  42.   end
  43.   def setup
  44.      self.contents = Bitmap.new("Graphics/gameovers/" + $platmap[0])
  45.      @mx = self.contents.width / 16
  46.      @my = self.contents.height / 16
  47.      refresh
  48.   end  
  49.   def refresh
  50.     self.contents.clear
  51.     bitmap = RPG::Cache.gameover($platmap[0])   
  52.     cw = bitmap.width  
  53.     ch = bitmap.height
  54.     src_rect = Rect.new(0, 0, cw, ch)
  55.     self.contents.blt(0, 0, bitmap, src_rect)
  56.     x,y = 0,0
  57.     loopdo
  58.       铺块(x,y)
  59.       if x < @mx
  60.         x += 1
  61.       elsif y < @my
  62.         y += 1
  63.         x = 0
  64.       elsif x == @mxand y == @my
  65.         break
  66.       end
  67.     end
  68.   end
  69.   def 铺块(x,y)
  70.     returnif$platmap[1] == nil
  71.     b = $game_map.map_id
  72.     if$platmap[1][[x,y]].is_a?(Float)
  73.       f = $platmap[1][[x,y]] * 100
  74.       ifInteger(f) / 100 == b andInteger(f) % 100 == $game_variables[MAP_COPY]
  75.         self.ox = x*16 - 57
  76.         self.oy = y*16 - 36
  77.         return
  78.       end
  79.     elsif$platmap[1][[x,y]] == b
  80.       self.ox = x*16 - 57
  81.       self.oy = y*16 - 36
  82.       return
  83.     end
  84.     bitmap = RPG::Cache.gameover("outsize")
  85.     src_rect = Rect.new(0, 0, 16, 16)
  86.     self.contents.blt(x*16, y*16, bitmap, src_rect,128)
  87.   end
  88.   def update
  89.     if@mapid != $game_map.map_idand$platmap[0] != nil
  90.      setup
  91.      @mapid = $game_map.map_id
  92.     end
  93.   end
  94. 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在线咨询功能删除,谢谢。
关闭

幸运抽奖

社区每日抽奖来袭,快来试试你是欧皇还是非酋~

立即查看

Loading...

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2025-4-11 10:19 , Processed in 0.067482 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部