设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 12228|回复: 32
打印 上一主题 下一主题

[RMVX发布] 地图无缝拼接(仿·暗黑破坏神)

 关闭 [复制链接]

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
594
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

跳转到指定楼层
1
发表于 2008-8-3 15:36:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
看了雪流星的【移动场所不淡出淡入】脚本后的想法:可以做出像暗黑破坏神那样的连贯的地图

我的语文水平不太高……所以就不多说废话了,看图

0.准备:找好移动场所不淡出淡入和地图名显示脚本放在main前,画出张需要拼接的地图

1.两张地图都拉长9格



2.把地图2的最边上8格弄到地图1里(注意用shift)


3.做好过渡处理


4.把地图1最边上的17格复制到地图2(注意用shift),会覆盖掉地图2上的一部分


5.在两张地图的过渡那一格设上【场所移动】事件,触发方式是【被主角接触】
  注意要错开一格



6.开启那两个脚本,这个需要根据自己的游戏来确定放在哪里,我的范例用的自动事件
  插入RGSS脚本语句:transfer_fade
  控制系统开关:6号 打开

7.完成了

一定要注意在“搬运”地图的时候按住shift截取按住shift话,否则效果很差

范例:http://rpg.blue/upload_program/d ... ��例_103652298.rar

附带那两个脚本

  1. #移动场所不淡出淡入 by 雪流星
  2. class Scene_Map < Scene_Base
  3.   def update_transfer_player
  4.     return unless $game_player.transfer?
  5.     if $transfer_location_fadeout
  6.       @spriteset.dispose              # Dispose of sprite set
  7.       $game_player.perform_transfer   # Execute player transfer
  8.       $game_map.autoplay              # Automatically switch BGM and BGS
  9.       $game_map.update
  10.       @spriteset = Spriteset_Map.new  # Recreate sprite set
  11.     else
  12.       fade = (Graphics.brightness > 0)
  13.       fadeout(30) if fade
  14.       @spriteset.dispose              # Dispose of sprite set
  15.       $game_player.perform_transfer   # Execute player transfer
  16.       $game_map.autoplay              # Automatically switch BGM and BGS
  17.       $game_map.update
  18.       Graphics.wait(15)
  19.       @spriteset = Spriteset_Map.new  # Recreate sprite set
  20.       fadein(30) if fade
  21.     end
  22.     Input.update
  23.   end
  24. end
  25. class Game_Interpreter
  26.   def transfer_fade(tf = true)
  27.     $transfer_location_fadeout = tf
  28.   end
  29. end
复制代码

  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载和使用请保留此信息
  3. # ————————————————————————————————————

  4. #==============================================================================
  5. # ■ 地图名显示脚本
  6. #     by Yuee
  7. #------------------------------------------------------------------------------
  8. # 在Main的上方插入一个页,将本脚本复制到那页中即可
  9. #==============================================================================

  10. #==============================================================================
  11. # ■ Window_MapName
  12. #------------------------------------------------------------------------------
  13. #  显示地图名字的窗口。
  14. #==============================================================================

  15. class Window_MapName < Window_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 类常量定义
  18.   #--------------------------------------------------------------------------

  19.   # 暂时屏蔽用的开关
  20.   SWITCH = 6
  21.   
  22.   # 窗口位置设定
  23.   NAME_X = 544-220      # 矩形左上顶点X坐标
  24.   NAME_Y = 0       # 矩形左上顶点Y坐标
  25.   NAME_W = 220      # 矩形宽
  26.   NAME_H = 60       # 矩形高
  27.    
  28.   # 显示时间设置
  29.   SHOW_TIME_0 = 10  # 地图名出现前等待的帧数
  30.   SHOW_TIME_1 = 10  # 地图名从不可见变成可见的帧数
  31.   SHOW_TIME_2 = 34  # 地图名完全可见的帧数
  32.   SHOW_TIME_3 = 16  # 地图名从可见变成不可见的帧数
  33.   
  34.   # 完全可见时的透明度设置
  35.   OPACITY_1 = 244   # 边框
  36.   OPACITY_2 = 100   # 背景
  37.   OPACITY_3 = 255   # 文字
  38.   
  39.   # 地图名字的颜色
  40.   TEXT_COLOR = Color.new(255, 255, 255, 255)
  41.    
  42.   #--------------------------------------------------------------------------
  43.   # ● 初始化状态
  44.   #--------------------------------------------------------------------------
  45.   def initialize
  46.     super(NAME_X , NAME_Y, NAME_W, NAME_H)
  47.     # 初始化窗口透明度
  48.     self.opacity = 0
  49.     self.back_opacity = 0
  50.     self.z = 9999
  51.     self.contents_opacity = 0
  52.     self.contents = Bitmap.new(width - 32, height - 32)
  53.     # 剩余帧数初始化
  54.     @show_time = 0
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 输出文字
  58.   #--------------------------------------------------------------------------
  59.   def setname
  60.     if $game_switches[SWITCH]
  61.       # 获取地图ID
  62.       newid = $game_map.map_id
  63.       time = SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3  
  64.       # 如果现在的地图的ID不是刚才显示的地图ID则开始显示
  65.       if newid != @id
  66.         @id = newid
  67.         @show_time = SHOW_TIME_0 + SHOW_TIME_1 + SHOW_TIME_2 + SHOW_TIME_3
  68.       # 剩余帧数为0是时,全部窗口透明
  69.       elsif @show_time < 1
  70.         self.opacity = 0
  71.         self.back_opacity = 0
  72.         self.contents_opacity = 0
  73.         return
  74.       end      
  75.       self.contents.clear
  76.       self.contents.font.color = TEXT_COLOR
  77.       # 描绘地图名
  78.       self.contents.draw_text(4, 0 , width - 40, 32, $data_mapinfos[@id].name, 1)
  79.       # 根本帧数设定窗口透明度
  80.       if @show_time > (SHOW_TIME_2 + SHOW_TIME_3)
  81.         self.opacity = @show_time < time ? (((OPACITY_1 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  82.         self.back_opacity = @show_time < time ? (((OPACITY_2 / SHOW_TIME_1 )* (time - @show_time)).to_i) : 0
  83.         self.contents_opacity = @show_time < time ? (((OPACITY_3 / SHOW_TIME_1) * (time - @show_time)).to_i) : 0
  84.       else
  85.         self.opacity = @show_time < (SHOW_TIME_3 / 16 * 14) ? ((OPACITY_1 / SHOW_TIME_3) * @show_time).to_i : OPACITY_1
  86.         self.back_opacity = @show_time < (SHOW_TIME_3 / 16 * 9) ? ((OPACITY_2 / SHOW_TIME_3) * @show_time).to_i : OPACITY_2
  87.         self.contents_opacity = @show_time < SHOW_TIME_3 ? ((OPACITY_3 / SHOW_TIME_3)* @show_time).to_i : OPACITY_3
  88.       end
  89.       @show_time -= 1
  90.       $game_switches[SWITCH] = false if @show_time < 0
  91.     end
  92.   end
  93. end

  94. #==============================================================================
  95. # ■ Scene_Map
  96. #------------------------------------------------------------------------------
  97. #  处理地图画面的类。(追加定义)
  98. #==============================================================================

  99. class Scene_Map
  100.   alias smn_start start
  101.   def start
  102.     @mapname = Window_MapName.new
  103.     smn_start
  104.   end
  105.   
  106.   alias smn_dispose terminate
  107.   def terminate
  108.     smn_dispose
  109.     @mapname.dispose
  110.   end
  111.   
  112.   alias smn_update update
  113.   def update
  114.     smn_update
  115.     @mapname.setname
  116.   end
  117. end

  118. #==============================================================================
  119. # ■ Scene_Title
  120. #------------------------------------------------------------------------------
  121. #  处理标题画面的类。(追加定义)
  122. #==============================================================================

  123. class Scene_Title
  124.   alias smn_load load_database
  125.   def load_database
  126.     # 读取地图信息文件
  127.     $data_mapinfos = load_data("Data/MapInfos.rvdata")
  128.     smn_load
  129.   end
  130. end

  131. #==============================================================================
  132. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  133. #==============================================================================
复制代码
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2006-5-21
帖子
773
2
发表于 2008-8-3 17:00:47 | 只看该作者
1.应该发在技术区
2.这个不难
3.500*500的地图貌似不够-。-
MadniMStudio|Beside
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
594
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

3
 楼主| 发表于 2008-8-3 17:39:17 | 只看该作者
以下引用Beside于2008-8-3 9:00:47的发言:

1.应该发在技术区
2.这个不难
3.500*500的地图貌似不够-。-

因为不难,所以没发到技术区
第3条看不懂……
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
4
发表于 2009-6-12 08:00:00 | 只看该作者
不错,积分+=150.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
5
发表于 2008-8-3 20:05:25 | 只看该作者
确实很不错
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

6
发表于 2008-8-3 22:37:57 | 只看该作者
不过这个有什么用处呢?
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
594
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

7
 楼主| 发表于 2009-6-12 08:00:00 | 只看该作者
以下引用风雪优游于2008-8-3 14:37:57的发言:

不过这个有什么用处呢?

最基本的用处是仿暗黑破坏神的地图效果
当然还有跟多的用处,比如【变异·地图回圈】之类的
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

8
发表于 2008-8-3 23:30:44 | 只看该作者
仿·暗黑...又有什么用处呢?

不过话说回来,地图太大了是会很卡的 吧?
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
594
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

9
 楼主| 发表于 2008-8-3 23:41:21 | 只看该作者
以下引用风雪优游于2008-8-3 15:30:44的发言:

仿·暗黑...又有什么用处呢?

不过话说回来,地图太大了是会很卡的 吧?

只是比原来扩大9格而已……会卡吗{/gg}
这个只是看起来是一张图,实际上还是多张地图的
(所以要设置好分割线附近的事件以免出BUG{/wx})
对别人来说可能会有用的
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

胃:伪·好人之怨念<

梦石
0
星屑
50
在线时间
4 小时
注册时间
2007-6-24
帖子
5058

开拓者VX城市地图大赛亚军

10
发表于 2008-8-3 23:50:40 | 只看该作者
……问题是,如果某张地图的边缘那几格有一个随机移动的NPC,不是会露馅么?
哈哈哈哈哈
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-30 15:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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