Project1

标题: 请问怎么得到当前地图的事件总数 [打印本页]

作者: oksh    时间: 2007-6-30 20:40
标题: 请问怎么得到当前地图的事件总数
如题,也就是想要得到一张地图里的最大事件id号
作者: oksh    时间: 2007-6-30 20:40
标题: 请问怎么得到当前地图的事件总数
如题,也就是想要得到一张地图里的最大事件id号
作者: 精灵使者    时间: 2007-6-30 21:18
这个= =如果我能知道的话,置顶的悬赏帖我就应该能做了。
作者: 雪流星    时间: 2007-6-30 21:19
创一个新事件
看它的ID是几号就行了
作者: 亿万星辰    时间: 2007-6-30 21:21
不知道你是问游戏进行中还是编辑模式下....
还有就是你要的只是最大的编号?还是整个地图上事件的个数?

不过还得多考虑考虑,比如事件编号:1,2,3,50
作者: 精灵使者    时间: 2007-6-30 21:25
如果我记得没错的话,你的悬赏贴里面需要本地图最大的事件id号。在脚本里要调用的。
不过那个中间如果判定没有事件的话可以直接跳过循环。
楼主需要的事件个数也可能用于人口统计……
例如用美兽的四处留情脚本创建事件,完毕以后最后统计一下事件个数。
作者: 亿万星辰    时间: 2007-6-30 21:28
以下引用精灵使者于2007-6-30 13:25:43的发言:

如果我记得没错的话,你的悬赏贴里面需要本地图最大的事件id号。在脚本里要调用的。
不过那个中间如果判定没有事件的话可以直接跳过循环。

怎么讨论开悬赏帖了......   >_<
那里面也没说最大还是总数.....
比如A工程里是1,2,3,10
B工程里面是1,2,3,4,5
不B合到A以后,至于是1,2,3,10,11,12,13,14,15,还是1,2,3,4,5,6,7,8,10.....怎么样都无所谓...
作者: 精灵使者    时间: 2007-6-30 21:38
这个也是我的悬赏帖原理……取得2个地图的最大总数以后就拿第1个地图当事件仓库按对应坐标复制事件了……循环中要求循环变量的……
如果a里面有1,2,3,4,5,你怎么知道要复制5次呢- -
至于复制后的id号,搜索空事件直接处理即可。
例如1 2 3 4 5 =〉1 2 3 10
那么就成了 1 2 3 4 5 6 7 8 10
如果第2地图是 1 2 3 7的话
就成了 1 2 3 4 5 6 7 8 9
如果第2地图是 1 2 3 4的话就成了
1 2 3 4 5 6 7 8 9
带彩部分就是第1张地图的事件。
作者: 亿万星辰    时间: 2007-6-30 21:45
以下引用精灵使者于2007-6-30 13:38:58的发言:
如果a里面有1,2,3,4,5,你怎么知道要复制5次呢- -

说明你对RM默认的地图环节还是不够了解,再看看 Game_Map 类吧
作者: oksh    时间: 2007-6-30 21:46
要在运行时获得这个最大值,中间空的id可以另外处理
作者: 精灵使者    时间: 2007-6-30 21:49
# 设置地图事件数据
    @events = {}
    for i in @map.events.keys
      @events = Game_Event.new(@map_id, @map.events)
    end
  #--------------------------------------------------------------------------
  # ● 获取指定位置的事件 ID
  #     x          : X 坐标
  #     y          : Y 坐标
  #--------------------------------------------------------------------------
  def check_event(x, y)
    for event in $game_map.events.values
      if event.x == x and event.y == y
        return event.id
      end
    end
  end

用这个? 直接调用check_event获取事件id?这个应该可行。
p.s.今天在不讨论的话悬赏明天就要结束LIAO……
另外。map.event.keys好像里面定义了所有的事件……如果直接用上边的读取部分的话应该能获得这个地图的所有的事件吧。
作者: oksh    时间: 2007-6-30 21:55
好像不是,是给你一张地图,直接得到他的最大事件id。不是指定位置的事件id
作者: 精灵使者    时间: 2007-6-30 22:03
使用双循环遍搜地图上每一个坐标,然后把返回值代入一个变量。如果这个变量里的值比返回值小则不予代入(提示:使用max)。
如果是事件个数的话……可以让一个变量+1。最后返回事件的个数。
基本的算法就是这样吧。
作者: oksh    时间: 2007-6-30 22:05
我现在就是这样算的,可是效率太慢了,需要一个更快速的算法
作者: 精灵使者    时间: 2007-6-30 22:06
中间的循环里如果没有事件的话直接空循环过去……会减少些计算量。
作者: 幻の飞鱼    时间: 2007-6-30 23:18
如果你做事件的时候没有删掉一些,又补一些的话就比较好算了- -||
作者: 精灵使者    时间: 2007-6-30 23:52
以下引用幻の飞鱼于2007-6-30 15:18:22的发言:

如果你做事件的时候没有删掉一些,又补一些的话就比较好算了- -||

可惜在我的游戏里是很经常的事- -




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