注册会员 登录
Project1 返回首页

喵呜喵5的树洞 https://rpg.blue/?291206 [收藏] [复制] [分享] [RSS]

日志

【脚本】导入/导出媒体文件列表

热度 3已有 1076 次阅读2014-4-17 12:24 |个人分类:脚本

=begin
===============================================================================
  导入/导出媒体文件列表 By喵呜喵5
===============================================================================

【说明】

  将游戏中使用到的媒体文件名称导出到一个TXT文件中
  
  修改完毕后可以重新导入回游戏
  
  使用这个脚本可以方便的批量替换或者检查游戏中的媒体文件
  
  目前仅对事件指令中的显示图片以及播放音乐类指令有效
  
=end
#==============================================================================
# 设定部分
#==============================================================================

  M5MARK = "◎"
  
  #播放音乐的标志,在这里填写一个不会在文件名中出现的符号
  
  M5MARK2 = "★"
  
  #显示图片的标志,在这里填写一个不会在文件名中出现的符号
  
  COMMON = true   # true / false
  
  #导出/导入公共事件中的媒体文件名
  
  TROOP = true    # true / false
  
  #导出/导入敌群事件中的媒体文件名
  
  
  LOADMODE = true # true / false
  
  #需要导入修改好的内容的话,这里修改为false  
  
  
#==============================================================================
# 设定结束
#==============================================================================
#==============================================================================
# 脚本部分
#==============================================================================  
def read_txt(file_name)  
  @file = []
  return if !File.exists?("Event/#{file_name}.txt")
  @text = nil
  IO.foreach("Event/#{file_name}.txt") do |line|
    @text = line.gsub("\xEF\xBB\xBF","").split("\n")[0]
    @file.push(@text.delete("#{M5MARK}").delete("#{M5MARK2}")) if @text    
  end
end
def save_event_list(event_list)
  return if !@file
  event_list.each do |command|
    case command.code
    when 241,245,249,250
      command.parameters[0].name = @file.delete_at(0)
    when 231
      command.parameters[1] = @file.delete_at(0)
    end    
  end
end
def save_map_event
  map_list = load_data("Data/MapInfos.rvdata2").keys
  map_list.each do |map_id|
    read_txt("地图#{map_id}")
    map = load_data(sprintf("Data/Map%03d.rvdata2",map_id))
    map.events.keys.each do |event_id|      
      map.events[event_id].pages.each do |page|
        save_event_list(page.list)
      end
    end
    save_data(map,sprintf("Data/Map%03d.rvdata2",map_id))
  end
end
def save_common_event
  read_txt("公共事件")
  file = load_data("Data/CommonEvents.rvdata2")
  file.each do |event|
    save_event_list(event.list) if event
  end
  save_data(file,"Data/CommonEvents.rvdata2")
end
def save_troop_event
  file = load_data("Data/Troops.rvdata2")
  file.each do |troop|
    next if !troop
    read_txt("敌群#{troop.id}")
    troop.pages.each do |page|
      save_event_list(page.list)
    end
  end
  save_data(file,"Data/Troops.rvdata2")
end

def load_event_list(event_list)  
  event_list.each do |command|
    case command.code
    when 241,245,249,250
      @file_content += ("#{M5MARK}#{command.parameters[0].name}\n")
    when 231
      @file_content += ("#{M5MARK2}#{command.parameters[1]}\n")
    end
  end
end
def load_map_event  
  file = load_data("Data/MapInfos.rvdata2")
  file.keys.each do |map_id|
    @file_content = ""
    map = load_data(sprintf("Data/Map%03d.rvdata2",map_id))    
    event = map.events    
    event.keys.each do |event_id|
      event[event_id].pages.each_with_index do |event_page,index|        
        load_event_list(event_page.list)
      end
    end
    save_text("地图#{map_id}",@file_content)
  end
end
def load_common_event
  @file_content = ""
  file = load_data("Data/CommonEvents.rvdata2")  
  file.each do |event|
    next if !event    
    load_event_list(event.list)
  end
  save_text("公共事件",@file_content)
end
def load_troop_event
  @file_content = ""
  file = load_data("Data/Troops.rvdata2")
  file.each do |troop|
    next if !troop    
    troop.pages.each_with_index do |event_page,index|      
      load_event_list(event_page.list)
    end
    save_text("敌群#{troop.id}",@file_content)
  end
end
def save_text(name,word)
  return if word == ""
  content = File.open("Event/#{name}.txt",'w')
  content.puts word
  content.close
end
if LOADMODE
  Dir.mkdir("Event") if !File.directory?("Event")
  load_map_event
  load_common_event if COMMON
  load_troop_event if TROOP
  msgbox "导出完毕!\n导出的媒体文件列表保存在游戏工程的Event目录下"
else
  save_map_event
  save_common_event if COMMON
  save_troop_event if TROOP
  msgbox "导入完毕!#{$TEST ? "\n请重新启动编辑器以查看效果" : ""}"
end
exit

鸡蛋

鲜花

刚表态过的朋友 (0 人)

评论 (0 个评论)

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

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

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

GMT+8, 2024-4-29 04:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部