查看: 9144|回复: 12

[RMVX发布] 新手教程-区域控制事件

[复制链接]

醉啸 长风万里

梦石
0
星屑
6512
在线时间
6616 小时
注册时间
2007-12-16
回帖
4301

贵宾

发表于 2010-10-4 13:17:55 | 显示全部楼层 |阅读模式

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

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

×
既然这几天夕阳没有功夫,我就发一个自己的新手教程吧。

这次是利用区域控制事件开始

其实,这个用事件的条件分歧就可以做到了,但是,如果侍庞大的地图和大量的坐标哪种方法就显得很废柴

用VX默认的事件就可以做到大量的区域发生事件了

首先要在Game_Player加入以下脚本
  1.   #--------------------------------------------------------------------------
  2.   # ● 判断当前人物所在区域id
  3.   #--------------------------------------------------------------------------
  4.   def area_id
  5.     for area in $data_areas.values
  6.      if in_area?(area)
  7.        return area.id
  8.      end
  9.    end
  10. end
复制代码

以上脚本作者:beside

然后,在地图上设置一个区域
2010-10-04_130456.png
VX主程序里的效果
2010-10-04_130525.png
看到那个没有阴影的地方了吗?当角色走到那里时就会有人说话的
放置一个事件
2010-10-04_130808.png
事件ID,一会儿会用到
2010-10-04_130849.png
再设置一个并行处理事件,判断角色是否在区域里
2010-10-04_131014.png
用到的事件脚本:
  1. area = $game_player.area_id
  2. $game_map.events[X].start if area == M    #X代表地图上事件编号 M代表区域编号
复制代码


然后运行游戏,见证奇迹吧!!!
效果:
2010-10-04_131327.png
2010-10-04_131448.png

异常简陋的工程: Project1.rar (238.21 KB, 下载次数: 2275)

华丽的谢幕

评分

参与人数 1星屑 +1500 收起 理由
小幽的马甲 + 1500

查看全部评分


还在龟速填坑中

前进之卒

梦石
0
星屑
55
在线时间
20 小时
注册时间
2010-8-17
回帖
173
发表于 2010-10-4 14:54:18 | 显示全部楼层
不知道能否达到此种效果:限制某NPC只在某区域活动?
如楼主范例所示,能否设置事件001只在区域001内随机移动?

点评

当角色不在区域里面的时候,掉转180度,前进一步……  发表于 2010-10-5 07:49
这个空吧这样不行,我做不出来  发表于 2010-10-4 15:54
开始拼吧!
回复

使用道具 举报

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
回帖
2406
发表于 2010-10-4 16:37:20 | 显示全部楼层
首先要在Game_Player加入以下脚本
  1.   #--------------------------------------------------------------------------
  2.   # ● 判断当前人物所在区域id
  3.   #--------------------------------------------------------------------------
  4.   def area_id
  5.     for area in $data_areas.values
  6.      if in_area?(area)
  7.        return area.id
  8.      end
  9.    end
  10. end
复制代码
---------------
与其让新手去找Game_Player还不如直接把这个方法封装在Game_Player里= =

  1. class Game_Player < Game_Character
  2.   def area_id
  3.     $data_areas.values.each{|area| return area.id if in_area?(area)}
  4.   end
  5. end
复制代码

点评

这个看不懂....  发表于 2013-8-27 18:07
我下次注意  发表于 2010-10-4 16:38
From mortal hope immortal power springs.
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
89 小时
注册时间
2009-10-26
回帖
700
发表于 2010-10-4 18:36:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

战国美少年森兰丸

梦石
0
星屑
204
在线时间
852 小时
注册时间
2008-7-20
回帖
3560
发表于 2010-10-10 22:06:21 | 显示全部楼层
支持学长,一起努力吧,咱争取出他30篇教程~
回复

使用道具 举报

梦石
0
星屑
50
在线时间
132 小时
注册时间
2010-9-30
回帖
98
发表于 2010-12-28 13:13:30 | 显示全部楼层
很实用的:lol
回复

使用道具 举报

梦石
0
星屑
551
在线时间
69 小时
注册时间
2011-3-26
回帖
4
发表于 2011-4-10 12:44:11 | 显示全部楼层
area== 1, 1代表区域1,不过 同时 我又使用了 显示区域名称 的脚本.
不想在地图上显示Area001的字样.
想把其换成文字, 不知道怎么实现?
请大大帮我...
回复

使用道具 举报

醉啸 长风万里

梦石
0
星屑
6512
在线时间
6616 小时
注册时间
2007-12-16
回帖
4301

贵宾

 楼主| 发表于 2011-4-10 17:27:21 | 显示全部楼层
回复 doublefred 的帖子
  1. 01.class Game_Player < Game_Character

  2. 02.  def area_name

  3. 03.    $data_areas.values.each{|area| return area.name if in_area?(area)}

  4. 04.  end

  5. 05.end
复制代码
应该是这样吧,未测试

area = $game_player.area_name
$game_map.events[X].start if area == "M"   #X代表地图上事件编号 M代表区域名称

还在龟速填坑中
回复

使用道具 举报

梦石
0
星屑
551
在线时间
69 小时
注册时间
2011-3-26
回帖
4
发表于 2011-4-11 07:28:23 | 显示全部楼层
啊 万分感谢, 作为一个新手, 我对RM有无穷的兴趣.
谢谢楼上的支持.
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
4 小时
注册时间
2011-5-15
回帖
4
发表于 2011-5-16 13:44:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部