查看: 91|回复: 0

[转载发布] 简易格子地图(DNF/恶魔城式地图)

[复制链接]
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    2022

    主题

    32

    回帖

    7144

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5074
    OK点
    16
    积分
    7144
    发表于 同元一千年八月七日(秋) | 显示全部楼层 |阅读模式
    做剧情途中又摸鱼搞了个系统.... 感觉某个做恶魔城的貌似要这种地图吧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在线咨询功能删除,谢谢。

    本帖子中包含更多资源

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

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-3 06:37 , Processed in 0.054777 second(s), 44 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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