赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 47 |
经验 | 251834 |
最后登录 | 2024-10-11 |
在线时间 | 5240 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4684
- 在线时间
- 5240 小时
- 注册时间
- 2009-4-29
- 帖子
- 14318
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 protosssonny 于 2013-7-13 20:01 编辑
我搜索了本站的帖子,关于“沼泽”的帖子基本没有,而关于“我所谓的沼泽”的帖子数量为0!
所以我今天来弥补这个空缺!
帖子很长,但是不要因此就不看,对你有帮助的。想想,我都有写的工夫,你难道还没看的工夫吗?是吧?其实内容很简单。
首先我解释关键词“我所谓的沼泽”:即是一种地图图块,走在上面的时候就会全体队员的HP减少一定的数值。相信大家玩过这么多RPG游戏,对这种地形一定都了解,比如FC游戏中的《吞食天地》《勇者斗恶龙》等都有这类地形的设计。
下面就来教大家怎么来制作这种地形效果。一共分三步,非常简单:
第一步:选择TileA5.png中的一个图块作为沼泽图块,并替换成沼泽的地形图案。
我选择的替换是截图的第2行最后一个图块。如图:
第二步:添加一处脚本。但是为了防止某些同学伸手过长,没有把修改后脚本整合,这个工作请大家各自完成。
Game_Map类下面有个:- #--------------------------------------------------------------------------
- # ● 判断草木繁茂处
- # x : X 坐标
- # y : Y 坐标
- #--------------------------------------------------------------------------
- def bush?(x, y)
- return false unless valid?(x, y)
- return @passages[@map.data[x, y, 1]] & 0x40 == 0x40
- end
复制代码 我们仿照这个脚本,添加一个类似的定义,即在这个脚本的后面加上:- #--------------------------------------------------------------------------
- # ● 判断沼泽
- # x : X 坐标
- # y : Y 坐标
- #--------------------------------------------------------------------------
- def moor?(x, y)
- return false unless valid?(x, y)
- return true if $game_map.data[x, y, 0] == 1631
- end
复制代码 这样我们就把沼泽定义好了。解释一下1631,这个数字代表我的截图第2行最后一个图块的位置的代号。假如你替换沼泽的图块和我的图块位置不同,那么可以按照本文最后的注释设置,现在先不打岔。
第三步:修改一处脚本。
在Game_Player类下面有一个:- #--------------------------------------------------------------------------
- # ● 更新遇敌
- #--------------------------------------------------------------------------
- def update_encounter
- return if $TEST and Input.press?(Input::CTRL) # 正在显示?
- return if in_vehicle? # 乘座了交通工具?
- if $game_map.bush?(@x, @y) # 繁茂
- @encounter_count -= 2 # 计数减少 2
- else # 繁茂以外的情况
- @encounter_count -= 1 # 计数减少 1
- end
- end
复制代码 我们添加几行,使它变成这样:- #--------------------------------------------------------------------------
- # ● 更新遇敌
- #--------------------------------------------------------------------------
- def update_encounter
- return if $TEST and Input.press?(Input::CTRL) # 测试游戏中
- return if in_vehicle? # 乘坐交通工具中
- if $game_map.bush?(@x, @y) # 在草木繁茂处
- @encounter_count -= 2 # 将遇敌计数减2
- else # 否则
- @encounter_count -= 1 # 将遇敌计数减1
- end
- if $game_map.moor?(@x, @y) # 在沼泽
- $game_map.screen.start_flash(Color.new(255,0,0,255),5)
- Audio.se_play("Audio/SE/" + "Wind10", 100, 100)
- for i in $game_party.members
- a = i.maxhp / 15
- a = a == 0 ? 1 : a
- if i.hp > a and i.hp != 0
- i.hp -= a
- else
- i.hp = 1
- end
- end
- end
- end
复制代码 这里解释一下“a”,它代表每走一步全员减少的HP数值,你们可以根据需要设置成别的数字,我这里是每走一步减少最大HP的1/15。至于前面的1...4中的“4”代表队员数,假如你的队伍由3人组成就改成3,5人就改成5。(这里请参考一下2楼的办法)
好了,设置完成了。是不是很简单啊?测试一下吧,效果真的很理想哦!
游戏效果(普通):
走在沼泽上:
最后希望高手们勿喷,其实我是一个好人,其实我只是想把自己学会的东西分享给大家而已。
文章末尾附加注释:
假如你替换沼泽的图块和我的图块位置不同,那么可以在地图上画出你所替换的图块,然后在这个把代码加一行变成这样:- #--------------------------------------------------------------------------
- # ● 判断沼泽
- # x : X 坐标
- # y : Y 坐标
- #--------------------------------------------------------------------------
- def moor?(x, y)
- return false unless valid?(x, y)
- #return true if $game_map.data[x, y, 0] == 1631
- p $game_map.data[x, y, 0]
- end
复制代码 即显示沼泽图块的代码,然后你把角色走到你地图上画的沼泽处,它弹出对话框中的数字就是沼泽图块的代号,替换脚本中的1631,删除1631这行开头的“#”符号,再删除p $game_map.map.data[x, y, 0]这行即可!
|
评分
-
查看全部评分
|