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

Project1

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

[RMVX发布] 【教程】如何制作沼泽地图块

[复制链接]

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

跳转到指定楼层
1
发表于 2011-7-24 13:43:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 protosssonny 于 2013-7-13 20:01 编辑

我搜索了本站的帖子,关于“沼泽”的帖子基本没有,而关于“我所谓的沼泽”的帖子数量为0!
所以我今天来弥补这个空缺!
帖子很长,但是不要因此就不看,对你有帮助的。想想,我都有写的工夫,你难道还没看的工夫吗?是吧?其实内容很简单。
首先我解释关键词“我所谓的沼泽”:即是一种地图图块,走在上面的时候就会全体队员的HP减少一定的数值。相信大家玩过这么多RPG游戏,对这种地形一定都了解,比如FC游戏中的《吞食天地》《勇者斗恶龙》等都有这类地形的设计。
下面就来教大家怎么来制作这种地形效果。一共分三步,非常简单
第一步:选择TileA5.png中的一个图块作为沼泽图块,并替换成沼泽的地形图案。
我选择的替换是截图的第2行最后一个图块。如图:


第二步:添加一处脚本。但是为了防止某些同学伸手过长,没有把修改后脚本整合,这个工作请大家各自完成。
Game_Map类下面有个:
  1.   #--------------------------------------------------------------------------
  2.   # ● 判断草木繁茂处
  3.   #     x : X 坐标
  4.   #     y : Y 坐标
  5.   #--------------------------------------------------------------------------
  6.   def bush?(x, y)
  7.     return false unless valid?(x, y)
  8.     return @passages[@map.data[x, y, 1]] & 0x40 == 0x40
  9.   end
复制代码
我们仿照这个脚本,添加一个类似的定义,即在这个脚本的后面加上:
  1.   #--------------------------------------------------------------------------
  2.   # ● 判断沼泽
  3.   #     x : X 坐标
  4.   #     y : Y 坐标
  5.   #--------------------------------------------------------------------------
  6.   def moor?(x, y)
  7.     return false unless valid?(x, y)
  8.     return true if $game_map.data[x, y, 0] == 1631  
  9.   end  
复制代码
这样我们就把沼泽定义好了。解释一下1631,这个数字代表我的截图第2行最后一个图块的位置的代号。假如你替换沼泽的图块和我的图块位置不同,那么可以按照本文最后的注释设置,现在先不打岔。
第三步:修改一处脚本。
在Game_Player类下面有一个:
  1.   #--------------------------------------------------------------------------
  2.   # ● 更新遇敌
  3.   #--------------------------------------------------------------------------
  4.   def update_encounter
  5.     return if $TEST and Input.press?(Input::CTRL)   # 正在显示?
  6.     return if in_vehicle?                           # 乘座了交通工具?
  7.     if $game_map.bush?(@x, @y)                      # 繁茂
  8.       @encounter_count -= 2                         # 计数减少 2
  9.     else                                            # 繁茂以外的情况
  10.       @encounter_count -= 1                         # 计数减少 1
  11.     end
  12.   end
复制代码
我们添加几行,使它变成这样:
  1.   #--------------------------------------------------------------------------
  2.   # ● 更新遇敌
  3.   #--------------------------------------------------------------------------
  4.   def update_encounter
  5.     return if $TEST and Input.press?(Input::CTRL)   # 测试游戏中
  6.     return if in_vehicle?                           # 乘坐交通工具中
  7.     if $game_map.bush?(@x, @y)                      # 在草木繁茂处
  8.       @encounter_count -= 2                         # 将遇敌计数减2
  9.     else                                            # 否则
  10.       @encounter_count -= 1                         # 将遇敌计数减1
  11.     end
  12.     if $game_map.moor?(@x, @y)                      # 在沼泽
  13.       $game_map.screen.start_flash(Color.new(255,0,0,255),5)
  14.       Audio.se_play("Audio/SE/" + "Wind10", 100, 100)
  15.       for i in $game_party.members
  16.         a = i.maxhp / 15
  17.         a = a == 0 ? 1 : a
  18.         if i.hp > a and i.hp != 0
  19.           i.hp -= a
  20.         else
  21.           i.hp = 1
  22.         end
  23.       end
  24.     end
  25.   end
复制代码
这里解释一下“a”,它代表每走一步全员减少的HP数值,你们可以根据需要设置成别的数字,我这里是每走一步减少最大HP的1/15。至于前面的1...4中的“4”代表队员数,假如你的队伍由3人组成就改成3,5人就改成5。(这里请参考一下2楼的办法)
好了,设置完成了。是不是很简单啊?测试一下吧,效果真的很理想哦!

游戏效果(普通):

走在沼泽上:


最后希望高手们勿喷,其实我是一个好人,其实我只是想把自己学会的东西分享给大家而已。

文章末尾附加注释:
假如你替换沼泽的图块和我的图块位置不同,那么可以在地图上画出你所替换的图块,然后在这个把代码加一行变成这样:
  1.   #--------------------------------------------------------------------------
  2.   # ● 判断沼泽
  3.   #     x : X 坐标
  4.   #     y : Y 坐标
  5.   #--------------------------------------------------------------------------
  6.   def moor?(x, y)
  7.     return false unless valid?(x, y)
  8.     #return true if $game_map.data[x, y, 0] == 1631  
  9.     p $game_map.data[x, y, 0]
  10.   end  
复制代码
即显示沼泽图块的代码,然后你把角色走到你地图上画的沼泽处,它弹出对话框中的数字就是沼泽图块的代号,替换脚本中的1631,删除1631这行开头的“#”符号,再删除p $game_map.map.data[x, y, 0]这行即可!

评分

参与人数 2星屑 +74 收起 理由
黑之翅膀 + 14 支持,不过沉默的鲜艳红色一直走的话会太显.
月夜神音 + 60 继续努力~

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747

Lv4.逐梦者

醉啸 长风万里

梦石
0
星屑
6162
在线时间
6593 小时
注册时间
2007-12-16
帖子
4501

贵宾

2
发表于 2011-7-24 13:50:42 | 只看该作者
“我所谓的沼泽”又叫“毒沼”搜索可见

点评

原来关键词不对,呵呵。我看了一下,假设是大片不规则的沼泽,用事件法将很卡,用区域法需要设置很多矩形区域,所以本帖还是有存在价值的吧…  发表于 2011-7-24 13:59

还在龟速填坑中
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1071 小时
注册时间
2011-5-12
帖子
2317

贵宾

3
发表于 2011-7-24 13:55:06 | 只看该作者
挺不错的,之前还想用公共事件来完成的~

不过关于那个update_encounter里的
for i in 1...4
换成
for i in 0..$game_party.members.size(这是用来计算队伍人数用的)
然后下面的$game_actors[i]全部换成$game_party.members[i],
会比较好~

点评

会脚本真好...  发表于 2011-11-2 11:19
因为我是从自己的游戏里拿出来的,当初设计脚本的时候没有注意,你说得对。  发表于 2011-7-24 14:01
找我请找芙蕾娅
顺带一提,完全看得懂我头像请捡起你自己的节操哟(自重
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
134 小时
注册时间
2009-3-29
帖子
470
4
发表于 2011-11-2 04:56:17 | 只看该作者
原谅我一次吧

点评

嗯知道了...我改改  发表于 2011-11-2 11:14
你要测试这个教程的方法,最好新建一个空游戏。这样就不会出现这样那样的错误了。  发表于 2011-11-2 09:01
这不就是系统不认识最大HP——maxhp吗?应该很容易解决的。相信你自己可以解决。要么把你修改的脚本贴出。  发表于 2011-11-2 09:00
黑之结界勇士
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2011-10-27
帖子
19
5
发表于 2011-11-2 12:09:18 | 只看该作者
学习一下,希望对我有帮助

点评

感谢你们的支持,不然帖子沉了我的努力也白费了。7月发的教程,到11月终于又浮起来了。但愿我这几个少量的教程能帮助到更多的人!  发表于 2011-11-2 13:30
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
86
在线时间
62 小时
注册时间
2011-8-27
帖子
36
6
发表于 2012-7-9 13:40:26 | 只看该作者
话说我这个菜鸟问一下,脚本插在哪里啊。。。

点评

不是插哪里的问题,而是要你跟着步骤改脚本。菜鸟也应该会改,只要你认识汉字。  发表于 2012-7-9 19:44
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
119 小时
注册时间
2012-12-16
帖子
425
7
发表于 2013-2-23 10:56:44 | 只看该作者
VA就有嘛!喵!

点评

-_-!!!  发表于 2013-3-20 23:58
吓死猫了!呼哧呼哧!喵!  发表于 2013-2-23 10:59
这个区的版规规定“本区没有挖坟一说”,自己去看。  发表于 2013-2-23 10:58
P叔发布教程的时候,VA都还没有问世。  发表于 2013-2-23 10:58
糟了!挖坟了!对不起!  发表于 2013-2-23 10:57
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 18:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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