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

Project1

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

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

[复制链接]

Lv4.逐梦者

醉啸 长风万里

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

贵宾

跳转到指定楼层
1
发表于 2010-10-4 13:17:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

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

用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

然后,在地图上设置一个区域

VX主程序里的效果

看到那个没有阴影的地方了吗?当角色走到那里时就会有人说话的
放置一个事件

事件ID,一会儿会用到

再设置一个并行处理事件,判断角色是否在区域里

用到的事件脚本:
  1. area = $game_player.area_id
  2. $game_map.events[X].start if area == M    #X代表地图上事件编号 M代表区域编号
复制代码


然后运行游戏,见证奇迹吧!!!
效果:



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

华丽的谢幕

评分

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

查看全部评分


还在龟速填坑中

Lv1.梦旅人

前进之卒

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

点评

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

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
3
发表于 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.
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
50
在线时间
89 小时
注册时间
2009-10-26
帖子
747
4
发表于 2010-10-4 18:36:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

战国美少年森兰丸

梦石
0
星屑
204
在线时间
852 小时
注册时间
2008-7-20
帖子
3705
5
发表于 2010-10-10 22:06:21 | 只看该作者
支持学长,一起努力吧,咱争取出他30篇教程~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
132 小时
注册时间
2010-9-30
帖子
100
6
发表于 2010-12-28 13:13:30 | 只看该作者
很实用的:lol
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

Lv4.逐梦者

醉啸 长风万里

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

贵宾

8
 楼主| 发表于 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代表区域名称

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

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
4 小时
注册时间
2011-5-15
帖子
5
10
发表于 2011-5-16 13:44:19 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 13:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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