Project1

标题: 如何判断事件以及角色所在区域 [打印本页]

作者: Beside    时间: 2008-3-11 19:02
标题: 如何判断事件以及角色所在区域
RT. [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 小幽的马甲    时间: 2008-3-11 19:04
区域?是Area么
作者: 雪流星    时间: 2008-3-11 19:23
我说你究竟在做什麽系统?
又是增加角色属性,又是增加物品属性,现在又要判断事件及物品所在区域。
作者: 小兵的大刀    时间: 2008-3-11 20:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2008-3-12 01:42
区域?
什么意思?

这个实在无法理解……
坐标?地图?
作者: 趙雲    时间: 2008-3-12 03:56
x坐标大于x1且小于x2
y坐标大于y1且小于y2
这样?
作者: Beside    时间: 2008-3-12 04:13
以下引用小幽的马甲于2008-3-11 11:04:11的发言:

区域?是Area么

1楼就正解了.想利用一下vx的区域功能,不知道能不能判断事件在哪个区域里面。

以下引用snstar2006于2008-3-11 11:23:47的发言:

我说你究竟在做什麽系统?
又是增加角色属性,又是增加物品属性,现在又要判断事件及物品所在区域。


前面两个是一个系统里面的,后面的是一个小支线啦
作者: 小幽的马甲    时间: 2008-3-12 05:12
我说,用搜索吧
for i in 1...$data_areas.size
  area = $data_areas
  if event.x > area.rect.x and event.y > area.rect.y and event.x < area.rect.x + area.rect.width and event.y < area.rect.y + area.rect.height then
xxxx
end
end
没调试过,肯定出错,只是大概思路
作者: Beside    时间: 2008-3-12 05:23
不用测试就知道不行
脚本里有这样一段
def in_area?(area)
    return false if area == nil
    return false if $game_map.map_id != area.map_id
    return false if @x < area.rect.x
    return false if @y < area.rect.y
    return false if @x >= area.rect.x + area.rect.width
    return false if @y >= area.rect.y + area.rect.height
    return true
  end
只是不知道这个参数是什么 反正不是名称 也不是id
作者: 趙雲    时间: 2008-3-12 05:42
汗,原来是VX的区域。。
边上不是有写么?
参数,RPG::Area,属性在F1里可以看
作者: Beside    时间: 2008-3-12 05:49
那你告诉我怎么调用...
作者: 趙雲    时间: 2008-3-12 05:51
参考此方法
  #--------------------------------------------------------------------------
  # ● 生成遇敌列表敌人小组
  #--------------------------------------------------------------------------
  def make_encounter_troop_id
    encounter_list = $game_map.encounter_list.clone
    for area in $data_areas.values
      encounter_list += area.encounter_list if in_area?(area)
    end
    if encounter_list.empty?
      make_encounter_count
      return 0
    end
    return encounter_list[rand(encounter_list.size)]
  end

作者: 雪流星    时间: 2008-3-12 08:51
我来解释一下
主要就是这段循环:
   for area in $data_areas.values # 循环区域数据
     encounter_list += area.encounter_list if in_area?(area) # 判断角色是否在区域中
   end
作者: wy29    时间: 2008-3-12 16:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: Beside    时间: 2008-3-12 22:27
我知道怎么判断Character在不在区域了,可是能不能判断在几号区域呢?或者说取得角色现在所在区域的id?
哇哈哈 解决了
area_1 = $game_player.areas
area_2 = $game_map.events[5].areas
if area_1 == area_2
$game_temp.common_event_id = 9
end
这样就可以判断在同一区域的情况了
楼上真是强大啊




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1