查看: 2602|回复: 6

[已经解决] 如何查找一个开关具体在哪个地图上?

[复制链接]
梦石
0
星屑
50
在线时间
207 小时
注册时间
2014-8-16
回帖
62
发表于 2015-10-13 22:12:09 | 显示全部楼层 |阅读模式

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

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

×
如何查找一个开关具体在哪个地图上?我在游戏里建了好多开关,比如11号开关,而我又忘记了这个开关具体在哪个地图上。
可以用脚本写在编辑器里找到这个开关吗?应该怎么写?或者有什么更快捷的方法?谢谢!
梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
发表于 2015-10-13 22:48:06 | 显示全部楼层
本帖最后由 汪汪 于 2015-10-14 08:18 编辑

[pre lang="ruby"]$jilu = []
$cz = 1            #搜索的开关号
  for @map_id in 1..3        #搜索的地图号1到3         
    # 地图 ID 记录到 @map_id
    @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))  rescue next      
    # 设置地图事件数据
   
    for i in @map.events.keys
      @event =  @map.events      
      @id = @event.id
      for page in @event.pages.reverse
        # 可以参考事件条件 c
        c = page.condition
        # 可以参考事件条件 c
        # 确认开关条件 1
        if c.switch1_valid
          if c.switch1_id == $cz
            $jilu.push([ @map_id,@event.id])
          end
        end
        # 确认开关条件 2
        if c.switch2_valid
          if c.switch2_id == $cz
            $jilu.push([ @map_id,@event.id])
          end
        end
      end
    end
  end
p $jilu[/pre]

点评

如果要更多,参考 f11,game_event 大概是这个。  发表于 2015-10-13 23:02
输出的前面是地图号,后面是事件号,  发表于 2015-10-13 23:01
回复

使用道具 举报

梦石
0
星屑
50
在线时间
207 小时
注册时间
2014-8-16
回帖
62
 楼主| 发表于 2015-10-13 23:26:50 | 显示全部楼层
本帖最后由 a107480098 于 2015-10-13 23:42 编辑
汪汪 发表于 2015-10-13 22:48
$jilu = []
$cz = 1            #搜索的开关号
  for @map_id in 1..3        #搜索的地图号1到3         


脚本第11行有错误。
cuowu.jpg

点评

好像是直接输到网页上时有一个 [i]会莫名奇妙消失,已经修改  发表于 2015-10-14 08:20
回复

使用道具 举报

梦石
0
星屑
451
在线时间
228 小时
注册时间
2015-2-23
回帖
233
发表于 2015-10-21 10:20:55 | 显示全部楼层
你要说清楚开关是用来干什么的,
是用来控制事件的打开和关闭;还是在事件的内容里作为条件分歧,或直接改变开关状态。

点评

好吧,条件分歧那没想到.....  发表于 2015-10-21 11:33
制作XP特效,找我。
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-10-21 13:53:51 | 显示全部楼层
本帖最后由 taroxd 于 2015-10-21 18:18 编辑

楼主用自己的经历证明了全局变量的坏处

下面这个脚本可以在用到开关的时候给提醒(未测试)
[pre lang="ruby"]

class Game_Switches
  alias get_switch_20151021 []
  def [](switch_id)
    if switch_id == 11
      puts "用到了11号开关!"
    end
    get_switch_20151021(switch_id)
  end
  alias set_switch_20151021 []=
  def []=(switch_id, value)
    if switch_id == 11
      puts "用到了11号开关!"
    end
    set_switch_20151021(switch_id, value)
  end
end if $TEST
[/pre]

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
606
在线时间
797 小时
注册时间
2014-7-1
回帖
501

开拓者

发表于 2015-10-21 15:29:55 | 显示全部楼层
taroxd 发表于 2015-10-21 13:53
楼主用自己的经历证明了全局变量的坏处

下面这个脚本可以在用到开关的时候给提醒(未测试)

放进去 在打开11开关的时候没提醒。。。

点评

哦 忘了设置了 已修改  发表于 2015-10-21 18:19
玩不懂 还是老老实实在用开关的时候些清楚些 或者自己用文件写清楚 另外不是还有F9么  发表于 2015-10-21 17:30
大概是使用值的时候会有效吧...  发表于 2015-10-21 17:22
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复

使用道具 举报

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
回帖
1464
发表于 2015-10-21 19:45:59 | 显示全部楼层
本帖最后由 汪汪 于 2015-10-21 22:39 编辑

添加 公共事件搜索
返回文件版
[pre lang="ruby"]
cz = 1            #搜索的开关号
f = File.open("搜索开关.txt","w")
  common_events = load_data("Data/CommonEvents.rxdata")
  c_event_shu = -1
  for c_event in common_events
    c_event_shu += 1
    next if c_event == nil
    if c_event.trigger != 0
      if c_event.switch_id == cz
        f.write("\n")
        f.write("公共事件:"+ c_event_shu.to_s + ",开关")
      end
    end
    listshu = 0
    for list in c_event.list
      listshu += 1
      if list.code == 111
        if list.parameters[0] == 0
          if list.parameters[1] == cz
            f.write("\n")
            f.write("公共事件:"+ c_event_shu.to_s +
                    ",第"+listshu.to_s+ "行"+",条件分歧")  
          end
        end
      end
      if list.code == 121
        if list.parameters[0] <= cz and list.parameters[1] >= cz
          f.write("\n")
          f.write("公共事件:"+ c_event_shu.to_s +
                    ",第"+listshu.to_s+ "行"+",开关操作")         
        end
      end
    end
  end
  
  for map_id in 1..999            
    # 地图 ID 记录到 map_id
    map = load_data(sprintf("Data/Map%03d.rxdata", map_id))  rescue next      
    # 设置地图事件数据
    for i in map.events.keys
      Graphics.update
      event =  map.events
      pageshu = event.pages.size
      for page in event.pages.reverse
        # 可以参考事件条件 c
        c = page.condition
        # 确认开关条件 1
        if c.switch1_valid
          if c.switch1_id == cz
            f.write("\n")
            f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s + ",位置:(" + event.x.to_s + "," + event.y.to_s + ")" +  ",页数:" + pageshu.to_s + ",开关1" )
          end
        end
        # 确认开关条件 2
        if c.switch2_valid
          if c.switch2_id == cz
            f.write("\n")
            f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s + ",位置:(" + event.x.to_s + ","+ event.y.to_s + ")" + ",页数:" + pageshu.to_s + ",开关2")
          end
        end
        listshu = 0
        for list in page.list
          listshu += 1
          if list.code == 111
            if list.parameters[0] == 0
              if list.parameters[1] == cz
                f.write("\n")
                f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s + ","  + event.y.to_s + ")" +  ",页数:"+ pageshu.to_s + ",第"+listshu.to_s+ "行"+",条件分歧")  
              end
            end
          end
          if list.code == 121
            if list.parameters[0] <= cz and list.parameters[1] >= cz
              f.write("\n")
              f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s  + "," + event.y.to_s + ")" +  ",页数:"+ pageshu.to_s + ",第"+listshu.to_s+ "行"+",开关操作")           
            end
          end
        end
        pageshu -= 1
      end
      
      
    end
  end

f.close



[/pre]


额,总之会很慢的拉.......

简化版....大概应该会快一点.....
[pre lang="ruby"]

cz = 1            #搜索的开关号
f = File.open("搜索开关.txt","w")
  common_events = load_data("Data/CommonEvents.rxdata")
  c_event_shu = -1
  for c_event in common_events
    c_event_shu += 1
    next if c_event == nil
    if c_event.trigger != 0
      if c_event.switch_id == cz
        f.write("\n")
        f.write("公共事件:"+ c_event_shu.to_s )
        next
      end
    end
    for list in c_event.list
      if list.code == 111
        if list.parameters[0] == 0
          if list.parameters[1] == cz
            f.write("\n")
            f.write("公共事件:"+ c_event_shu.to_s )
            break
          end
        end
      end
      if list.code == 121
        if list.parameters[0] <= cz and list.parameters[1] >= cz
          f.write("\n")
          f.write("公共事件:"+ c_event_shu.to_s )  
          break
        end
      end
    end
  end
  
  
  for map_id in 1..999            
    # 地图 ID 记录到 map_id
    map = load_data(sprintf("Data/Map%03d.rxdata", map_id))  rescue next      
    # 设置地图事件数据
    for i in map.events.keys
      Graphics.update
      event =  map.events
      pageshu = event.pages.size
      for page in event.pages.reverse
        # 可以参考事件条件 c
        c = page.condition
        # 确认开关条件 1
        if c.switch1_valid
          if c.switch1_id == cz
            f.write("\n")
            f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s + ",位置:(" + event.x.to_s + "," + event.y.to_s + ")"  )
            break
          end
        end
        # 确认开关条件 2
        if c.switch2_valid
          if c.switch2_id == cz
            f.write("\n")
            f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s + ",位置:(" + event.x.to_s + ","+ event.y.to_s + ")" )
            break
          end
        end
        nr = false
        for list in page.list
          if list.code == 111
            if list.parameters[0] == 0
              if list.parameters[1] == cz
                f.write("\n")
                f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s + ","  + event.y.to_s + ")")  
                nr = true
                break
              end
            end
          end
          if list.code == 121
            if list.parameters[0] <= cz and list.parameters[1] >= cz
              f.write("\n")
              f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s  + "," + event.y.to_s + ")" )           
              nr = true
              break
            end
          end
        end         
        if nr == true
          break
        end
      end
    end
  end

f.close



  [/pre]


额,无用的最终版,搜索公共事件,队伍,事件,移动路线,内的开关操作.......[pre lang="ruby"]

  cz = 1            #搜索的开关号
  f = File.open("搜索开关.txt","w")
  troops  = load_data("Data/Troops.rxdata")
  # 搜索全部页的战斗事件
  for troop in troops
    Graphics.update if troop.id % 50 == 49
    next if troop == nil
    pageshu = 0
    for page in troop.pages
      pageshu += 1
      # 事件条件可以参考 c
      c = page.condition
      # 确认开关条件
      if c.switch_valid
        if c.switch_id == cz
          f.write("\n")
          f.write("敌人队伍:"+ troop.id.to_s +  ",页数:" + pageshu.to_s + ",开关")
        end
      end
      listshu = 0
      for list in page.list
        listshu += 1
        if list.code == 111
          if list.parameters[0] == 0
            if list.parameters[1] == cz
              f.write("\n")
              f.write("敌人队伍:"+ troop.id.to_s +   ",页数:" + pageshu.to_s + ",第"+listshu.to_s+ "行"+",条件分歧")  
            end
          end
        end
        if list.code == 121
          if list.parameters[0] <= cz and list.parameters[1] >= cz
            f.write("\n")
            f.write("敌人队伍:"+ troop.id.to_s +   ",页数:" + pageshu.to_s + ",第"+listshu.to_s+ "行"+",开关操作")         
          end
        end
        if list.code == 209
          move_route = list.parameters[1]
          comshu = 0
          for command in move_route.list
            comshu += 1
            if command.code == 27 or command.code == 28
              if command.parameters[0] == cz
                f.write("\n")
                f.write("敌人队伍:"+ troop.id.to_s +   ",页数:" + pageshu.to_s + ",第"+listshu.to_s+ "行"+",移动路线,第"+comshu.to_s+ "行"+",开关操作")  
              end
            end
          end
        end
      end
    end
  end
  

  
  common_events = load_data("Data/CommonEvents.rxdata")
  c_event_shu = -1
  for c_event in common_events
    c_event_shu += 1   
    Graphics.update if c_event_shu %50 == 49
   
    next if c_event == nil
    if c_event.trigger != 0
      if c_event.switch_id == cz
        f.write("\n")
        f.write("公共事件:"+ c_event_shu.to_s + ",开关")
      end
    end
    listshu = 0
    for list in c_event.list
      listshu += 1
      if list.code == 111
        if list.parameters[0] == 0
          if list.parameters[1] == cz
            f.write("\n")
            f.write("公共事件:"+ c_event_shu.to_s + ",第"+listshu.to_s+ "行"+",条件分歧")  
          end
        end
      end
      if list.code == 121
        if list.parameters[0] <= cz and list.parameters[1] >= cz
          f.write("\n")
          f.write("公共事件:"+ c_event_shu.to_s + ",第"+listshu.to_s+ "行"+",开关操作")         
        end
      end
      if list.code == 209
        move_route = list.parameters[1]
        comshu = 0
        for command in move_route.list
          comshu += 1
          if command.code == 27 or command.code == 28
            if command.parameters[0] == cz
              f.write("\n")
              f.write("公共事件:"+ c_event_shu.to_s + ",第"+listshu.to_s+ "行" +",移动路线,第"+comshu.to_s+ "行"+",开关操作")  
            end
          end
        end
      end
    end
  end
  
  for map_id in 1..999  
    Graphics.update if map_id %50 == 49
    # 地图 ID 记录到 map_id
    map = load_data(sprintf("Data/Map%03d.rxdata", map_id))  rescue next      
    # 设置地图事件数据
    for i in map.events.keys
      event =  map.events
      pageshu = event.pages.size
      for page in event.pages.reverse
        # 可以参考事件条件 c
        c = page.condition
        # 确认开关条件 1
        if c.switch1_valid
          if c.switch1_id == cz
            f.write("\n")
            f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s + ",位置:(" + event.x.to_s + "," + event.y.to_s + ")" +  ",页数:" + pageshu.to_s + ",开关1" )
          end
        end
        # 确认开关条件 2
        if c.switch2_valid
          if c.switch2_id == cz
            f.write("\n")
            f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s + ",位置:(" + event.x.to_s + ","+ event.y.to_s + ")" + ",页数:" + pageshu.to_s + ",开关2")
          end
        end
        if page.move_type == 3
          comshu = 0
          for command in page.move_route.list
            comshu += 1
            if command.code == 27 or command.code == 28
              if command.parameters[0] == cz
                f.write("\n")
                f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s + ","  + event.y.to_s + ")" +  ",页数:"+ pageshu.to_s + ",移动路线,第"+comshu.to_s+ "行"+",开关操作")  
              end
            end
          end
        end
        listshu = 0
        for list in page.list
          listshu += 1
          if list.code == 111
            if list.parameters[0] == 0
              if list.parameters[1] == cz
                f.write("\n")
                f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s + ","  + event.y.to_s + ")" +  ",页数:"+ pageshu.to_s + ",第"+listshu.to_s+ "行"+",条件分歧")  
              end
            end
          end
          if list.code == 121
            if list.parameters[0] <= cz and list.parameters[1] >= cz
              f.write("\n")
              f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s  + "," + event.y.to_s + ")" +  ",页数:"+ pageshu.to_s + ",第"+listshu.to_s+ "行"+",开关操作")           
            end
          end
          if list.code == 209
            move_route = list.parameters[1]
            comshu = 0
            for command in move_route.list
              comshu += 1
              if command.code == 27 or command.code == 28
                if command.parameters[0] == cz
                  f.write("\n")
                  f.write("地图:"+ map_id.to_s + ",事件:" + event.id.to_s +  ",位置:(" + event.x.to_s + ","  + event.y.to_s + ")" +  ",页数:"+ pageshu.to_s + ",第"+listshu.to_s+ "行" + ",移动路线,第"+comshu.to_s+ "行"+",开关操作")  
                end
              end
            end
          end
        end
        pageshu -= 1
      end
      
      
    end
  end

f.close






[/pre]


评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部