查看: 1695|回复: 1

[已经解决] 求助,怎么把地图上队友名字的事件带入到变量里

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-2-7 22:32:10 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 yang1zhi 于 2016-2-8 00:20 编辑

地图上的队友名字对应角色库名字。
不过使用了重复角色脚本。
重复角色的队友名字是
      add_actor.party_name = add_actor.name + "_" + party_index.to_s
[pre lang="ruby"]class Game_Friend < Game_Event
  alias sn_160131_party_id party_id
  def party_id
    for i in $game_party.actors
      # 改成用队员的队伍序列名字做判定
      if self.name == i.party_name
        return i.index.to_i
        break
      end
    end
  end
end[/pre]


[pre lang="ruby"]    duiyou_mingzi = $game_map.events.values.select{|ev| ev.event.name == "party_id"}
     for d in duiyou_mingzi
    #XY坐标差之和
    distance = (d.x - self.x).abs + (d.y - self.y).abs
    enable   = (distance <= @sensor_range)
    key = [$game_map.map_id, self.id, XAS_BA::SENSOR_SELF_SWITCH]
    last_enable = $game_self_switches[key]
    last_enable = false if last_enable == nil
    if enable != last_enable
      $game_self_switches[key] = enable
      $game_map.need_refresh = true
    end
  end
  end
end
[/pre]

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2016-2-8 23:29:51 | 显示全部楼层
  1. duiyou_mingzi = $game_map.events.values.collect{|ev|
  2. for data_actor in $data_actors
  3. if ev.name.include?(data_actor.name)
  4. ev.party_name
  5. end
  6. end}
  7.      for d in duiyou_mingzi
  8. for event in $game_map.events.values
  9. if event.name == d
  10. t_event = event
  11. break
  12. end
  13. end
  14.     #XY坐标差之和
  15.     distance = (t_event.x - self.x).abs + (t_event.y - self.y).abs
  16.     enable   = (distance <= @sensor_range)
  17.     key = [$game_map.map_id, self.id, XAS_BA::SENSOR_SELF_SWITCH]
  18.     last_enable = $game_self_switches[key]
  19.     last_enable = false if last_enable == nil
  20.     if enable != last_enable
  21.       $game_self_switches[key] = enable
  22.       $game_map.need_refresh = true
  23.     end
  24.   end
  25.   end
  26. end
复制代码
如果队友的事件命名是“数据库角色名_序列号”的话,
就用上面这段……
顺便,
Array.select是选择一个值并返回,
然后,照这个思路,duiyou_mingzi里面全是名字字符,
在下面的.x和.y是不能用的…………

点评

名字应该可以用那个= $game_party.actors.collect{|actor| actor.name}  发表于 2016-2-9 00:04
这个是module里的内容。那个name定义我也加了的好像没效果  发表于 2016-2-9 00:03
定义name的办法去查私信,我给你发过的。  发表于 2016-2-8 23:57
不行,name没有定义  发表于 2016-2-8 23:56
$game_map.events.values.select{|ev| ev.event.name == "party_id"}这段是直接得到引号里面的名字的事件,这个试过了,里面写上敌人名字就能得到所有敌人事件  发表于 2016-2-8 23:44

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部