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

Project1

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

[已经解决] 如何获得含有某字符串的事件ID或当前地图内的事件数量?

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
4432
在线时间
1912 小时
注册时间
2010-12-21
帖子
2365
跳转到指定楼层
1
发表于 2011-4-16 01:55:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://rpg.blue/forum.php?mod=vi ... =%E6%B3%A8%E9%87%8A
我使用了这个方法来判断事件中是否含有某字符串
但是我想要获取含有这个字符串的事件的ID
应该怎么做?

另外
如何获得当前地图内的事件数量?
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
2
发表于 2011-4-16 07:42:16 | 只看该作者
  1. have_id = 0
  2. $game_map.event.each do |key, value|
  3.    next unless value.list
  4.    if value.list.parameters[0] == ["就是咱"]
  5.       have_id = key
  6.       break
  7.    end
  8. end
复制代码
have_id 就是有包含某字符串的事件 ID

总的事件数量是:
$game_map.event.size

未测试

点评

不显示什么?  发表于 2011-4-16 08:52
为什么超级版主可以不显示啊  发表于 2011-4-16 08:22
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4432
在线时间
1912 小时
注册时间
2010-12-21
帖子
2365
3
 楼主| 发表于 2011-4-16 18:15:04 | 只看该作者
回复 蕾米莉亚·斯卡雷特 的帖子

唔……
果然还是有些问题呢
events少了个s,list需要换成list[0]什么的……

因为要放在公共事件里判定全部地图事件,而这个方法只能判断当前的事件……
所以要用到values方法的说……
不过弄了半天也没弄出个所以然,于是就换了一个方法……
  1. for event in 1..$game_map.events.size
  2.   next unless $game_map.events[event].list
  3.   for i in 0...$game_map.events[event].list.size
  4.     if $game_map.events[event].list[i].parameters[0].to_s.include?("敌人")
  5.       $have_id = event
  6.       $game_temp.common_event_id = 3
  7.     end
  8.   end
  9. end
复制代码
如果换成这样,运行效率和values方法相比有没有太大的差别?
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
4
发表于 2011-4-16 18:50:57 | 只看该作者
差不多. 咱不知道你说的是公共事件什么呢.  另外那个咱的那个脚本不是成熟的.

个人感觉使用 each 来遍历效果会高很多.
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4432
在线时间
1912 小时
注册时间
2010-12-21
帖子
2365
5
 楼主| 发表于 2011-4-16 19:04:07 | 只看该作者
回复 蕾米莉亚·斯卡雷特 的帖子

其实在做事件脚本ARPG
为了判定哪些事件是“敌人”,而执行装有这个脚本的公共事件而已

PS:其实不熟悉 each……
所以总是在用for in ……
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
6
发表于 2011-4-16 19:06:23 | 只看该作者
本帖最后由 蕾米莉亚·斯卡雷特 于 2011-4-16 19:08 编辑

$game_map.events.each do |key, value|
   next unless value.list
   value.list.each do |data|
    if data.parameters[0].to_s.include?("敌人")
      $have_id = key
      $game_temp.common_event_id = 3
    end
  end
end

不知道可不可以就是了~~~
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4432
在线时间
1912 小时
注册时间
2010-12-21
帖子
2365
7
 楼主| 发表于 2011-4-16 19:31:26 | 只看该作者
回复 蕾米莉亚·斯卡雷特 的帖子

其实我弄成这样了……
  1. (1..$game_map.events.size).each do |event|
  2.   next unless $game_map.events[event].list
  3.   (0...$game_map.events[event].list.size).each do |i|
  4.     if $game_map.events[event].list[i].parameters[0].to_s.include?("敌人")
  5.       $have_id = event
  6.       $game_temp.common_event_id = 3
  7.     end
  8.   end
  9. end
复制代码
为了防止眼花缭乱,以至于各种错误……
于是把ID和事件分开了

点评

嘛, 能用就行. 加油哦~~  发表于 2011-4-16 19:36
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 21:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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