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

Project1

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

[已经过期] 这是什么脚本

[复制链接]

Lv2.观梦者

梦石
0
星屑
549
在线时间
59 小时
注册时间
2017-11-19
帖子
71
跳转到指定楼层
1
发表于 2017-12-31 15:36:57 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
如下,完全看不懂,在我的脚本编辑器里面,是我添加的,就是忘了干什么用的
=begin
#==============================================================================
** Resource Checker
Author: Hime
Date: May 5, 2013
------------------------------------------------------------------------------
** Change log
Feb 11, 2015
   - added support for listing unused resources
May 5, 2013
   - added move routes
Aug 2, 2012
   - added support for VX
Jul 27, 2012
   - initial release
------------------------------------------------------------------------------   
** Description

This script goes through all of the data files in the data folder and
displays a list of graphics and audio used.

It performs a very simple resource check and copy: if it's defined in your
database or in any event, it is assumed you are using it.

Additionally, it also prints out a list of files that exist in your project
resource folders, but are not being used in the game

This script also does not support custom scripts that reference RTP
resources; if you have custom scripts and you know they use RTP materials,
you should consider copying everything related to that script over manually.
--------------------------------------------------------------------------------
** Installation

Place this script below Materials and above Main

--------------------------------------------------------------------------------
** Usage

Press F5 to run the resource checker. You can change this key in the
configuration section.

After the resource checker finishes, a file called "used_resources.txt" will be
created in your project folder.

It will also create a file called "unused_resources.txt" which lists
all of the files that aren't in use currently

You can also choose to copy files over from the RTP folder directly.
In the configuration section, type in the absolute path to the RTP, and
enable file copying.

#==============================================================================
=end
$imported = {} if $imported.nil?
$imported["Tsuki_Resource_Checker"] = true
#==============================================================================
# ** Configuration
#==============================================================================
module Tsuki
  module Resource_Checker
   
    # Copy your RTP path here.
    # Don't forget the trailing slash (I don't check it)
    RTP_Directory = "F:/Program Files/RPG Runtime/RPGVXAce/"
   
    # Set it to false if you only want a list of resources you use
    Copy_Files_Over = true
   
    # change this if you need to
    Check_Key = Input::F2
#==============================================================================
# ** Rest of the script
#==============================================================================
    Graphics_Dirs = [:Animations, :Battlebacks1, :Battlebacks2, :Battlers,
                     :Characters, :Faces, :Parallaxes, :Pictures, :System,
                     :Tilesets, :Titles1, :Titles2]
    Audio_Dirs = [:BGM, :BGS, :ME, :SE]
    Font_Dirs = [:Fonts]
   
    # this is supposed to add some path checking...
    def self.rtp_directory
      RTP_Directory
    end
  
    def self.rpgvxace?
      defined? BasicObject
    end
   
    def self.rpgvx?
      defined? Graphics.resize_screen
    end
   
    def self.show_message(message)
      if rpgvxace?
        $game_message.add(message)
      elsif rpgvx?
        $game_message.texts.push(message)
      end
    end
   
    def self.init_resource_finder
      return Resource_Finder_Ace.new if rpgvxace?
      return Resource_Finder_VX.new if rpgvx?
    end
  end
end

# just add it somewhere

class Game_Player
  
  alias tsuki_Resource_Checker_update update
  def update
    tsuki_Resource_Checker_update
    if Input.trigger?(Tsuki::Resource_Checker::Check_Key)
      r = Tsuki::Resource_Checker.init_resource_finder
      r.run
    end
  end
end
#~  
# generic parser class. Subclasses should implement the methods if needed
class Data_Parser
  
  def initialize
    @data_animations = load_data_file("Animations")
  end
  
  def make_data_path(filename)
  end
  
  def load_data_file(filename)
    path = make_data_path(filename)
    return load_data(path)
  end
  
  def parse_actors
  end
  
  def parse_classes
  end
  
  def parse_skills
  end
  
  def parse_items
  end
  
  def parse_weapons
  end
  
  def parse_armors
  end
  
  def parse_states
  end
  
  def parse_enemies
  end
  
  def parse_troops
  end
  
  def parse_animations
  end
  
  def parse_tilesets
  end
  
  def parse_system
  end
  
  def parse_fonts
  end
  
  # takes a vehicle object stored in System.rvdata2
  def parse_vehicle(vehicle)
  end
  
  def parse_terms
  end
  
  # map parsing
  
  def parse_datamaps
  end
  
  # pass in a map ID
  def parse_map(map_id)
  end
  
  # takes an RPG::Map::Encounter object
  def parse_encounters(encounters)
  end
  
  # event parsers
  
  def parse_event_commands(list)
  end
  
  def parse_event_page(page)
  end
  
  def parse_event(event)
  end
  
  def parse_map_events(events)
  end
  
  def parse_common_events
  end
  
  def parse_data_files
    parse_actors
    parse_classes
    parse_skills
    parse_items
    parse_weapons
    parse_armors
    parse_enemies
    parse_troops
    parse_states
    parse_animations
    parse_tilesets
    parse_common_events
    parse_system
    parse_terms
    parse_datamaps
    parse_fonts
  end
end

class Resource_Finder_Ace < Data_Parser
  
  attr_reader :resources

  def initialize
    super
    @resources = {}
  end
  
  def make_data_path(filename)
    "Data/#{filename}.rvdata2"
  end
  
  def init_category(category)
    @resources[category] = []
  end
  
  def add_resource(category, name)
    init_category(category) if @resources[category].nil?
    return unless name && !name.empty?
    @resources[category] |= [name]
  end
  
  def parse_actors
    actors = load_data_file("Actors")
    actors.each {|actor|
      next unless actor
      add_resource(:Characters, actor.character_name)
      add_resource(:Faces, actor.face_name)
    }
  end   
  
  def parse_enemies
    enemies = load_data_file("Enemies")
    enemies.each {|enemy|
      next unless enemy
      add_resource(:Battlers, enemy.battler_name)
    }
  end
  
  def parse_troops
    troops = load_data_file("Troops")
  end
  
  def parse_animations
    anims = load_data_file("Animations")
    anims.each {|anim|
      next unless anim
      add_resource(:Animations, anim.animation1_name)
      add_resource(:Animations, anim.animation2_name)
    }
  end
  
  def parse_tilesets
    tilesets = load_data_file("Tilesets")
    tilesets.each {|tileset|
      next unless tileset
      tileset.tileset_names.each {|name|
        add_resource(:Tilesets, name)
      }
    }
  end
  
  def parse_common_events
    events = load_data_file("CommonEvents")
    events.each {|evt|
      next unless evt
      parse_command_list(evt.list)
    }
  end
  
  def parse_system
    system = load_data_file("System")
    add_resource(:BGM, system.title_bgm.name)
    add_resource(:BGM, system.battle_bgm.name)
    add_resource(:ME, system.battle_end_me.name)
    add_resource(:ME, system.gameover_me.name)
   
    # add system sounds
    system.sounds.each {|sound|
      add_resource(:SE, sound.name)
    }
   
    # test battle and editor related
    add_resource(:Battlebacks1, system.battleback1_name)
    add_resource(:Battlebacks2, system.battleback2_name)
    add_resource(:Battlers, system.battler_name)   
   
    # vehicles
    parse_vehicle(system.boat)
    parse_vehicle(system.ship)
    parse_vehicle(system.airship)
   
    # titles
    add_resource(:Titles1, system.title1_name)
    add_resource(:Titles2, system.title2_name)
   
    # some default stuff
    add_resource(:System, "BattleStart")
    add_resource(:System, "GameOver")
    add_resource(:System, "IconSet")
    add_resource(:System, "Shadow")
    add_resource(:System, "Window")
  end
  
  def parse_vehicle(vehicle)
    add_resource(:Characters, vehicle.character_name)
    add_resource(:BGM, vehicle.bgm.name)
  end
  
  # just hardcoded...
  def parse_fonts
    add_resource(:Fonts, "VL-Gothic-Regular")
    add_resource(:Fonts, "VL-PGothic-Regular")
  end
  
  # map parser
  
  def parse_datamaps
   
    infos = load_data_file("MapInfos")
    infos.each {|id, map|
      next unless map
      parse_map(id)
    }
  end
  
  def parse_map(map_id)
    map = load_data_file(sprintf("Map%03d", map_id))
    add_resource(:Parallaxes, map.parallax_name)
    add_resource(:BGM, map.bgm.name)
    add_resource(:BGS, map.bgs.name)
    parse_map_events(map.events)
  end
  
  # event parsing
  
  def check_event_resources(cmd)
    code, params = cmd.code, cmd.parameters
    case code
    when 101 # show text
      add_resource(:Faces, params[0]) # face name
    when 205 # move route
      check_move_route(params[1])
    when 212 # show animation
    when 213 # show balloon
      add_resource(:System, "Balloon")
    when 231 # show picture
      add_resource(:Pictures, params[1])
    when 241 # play BGM
      add_resource(:BGM, params[0].name)
    when 245 # play BGS
      add_resource(:BGS, params[0].name)
    when 249 # play ME
      add_resource(:ME, params[0].name)
    when 250 # play SE
      add_resource(:SE, params[0].name)
    when 261 # play movie
    when 282 # change tileset
      tset_id = params[0]
    when 283 # change battleback
      add_resource(:Battlebacks1, params[0])
      add_resource(:Battlebacks2, params[1])
    when 284 # change parallax
      add_resource(:Parallaxes, params[0])
    when 322 # Change Actor Graphic
      add_resource(:Characters, params[1])
      add_resource(:Faces, params[3])
    when 323 # Change Vehicle Graphic
      add_resource(:Characters, params[1])
    when 335 # Enemy appear
    when 336 # Enemy transform
    when 337 # Show battle animation
      add_resource(:Animations, @data_animations[params[1]].name)
    end
  end
  
  def check_move_route(route)
    route.list.each do |cmd|
      case cmd.code
      when 41 # change character graphic
        add_resource(:Characters, cmd.parameters[0])
      when 44 # play SE
        add_resource(:SE, cmd.parameters[0].name)
      end
    end
  end
  
  def parse_command_list(list)
    list.each {|cmd|
      check_event_resources(cmd)
    }
  end
  
  def parse_event_page(page)
   
    add_resource(:Characters, page.graphic.character_name)
    parse_command_list(page.list)
  end
  
  def parse_event(event)
    event.pages.each {|page|
      parse_event_page(page)
    }
  end
  
  def parse_map_events(events)
    events.each {|id, evt|
      parse_event(evt)
    }
  end
  
  def run
    parse_data_files
    export
  end
  
  def export
    r = Resource_Exporter.new(@resources)
    r.run
  end
end

# basically the same thing, except no tilesets and different system
class Resource_Finder_VX < Resource_Finder_Ace
  
  def make_data_path(filename)
    "Data/#{filename}.rvdata"
  end
  
  def parse_tilesets
    system = load_data_file("System")
    add_resource(:System, "TileA1")
    add_resource(:System, "TileA2")
    add_resource(:System, "TileA3")
    add_resource(:System, "TileA4")
    add_resource(:System, "TileA5")
    add_resource(:System, "TileB")
    add_resource(:System, "TileC")
    add_resource(:System, "TileD")
    add_resource(:System, "TileE")
  end
  
  def parse_system
    system = load_data_file("System")
    add_resource(:BGM, system.title_bgm.name)
    add_resource(:BGM, system.battle_bgm.name)
    add_resource(:ME, system.battle_end_me.name)
    add_resource(:ME, system.gameover_me.name)
   
    # add system sounds
    system.sounds.each {|sound|
      add_resource(:SE, sound.name)
    }
   
    # test battle and editor related
    add_resource(:Battlers, system.battler_name)   
   
    # vehicles
    parse_vehicle(system.boat)
    parse_vehicle(system.ship)
    parse_vehicle(system.airship)
   
    # titles
    add_resource(:System, "Title")
   
    # some default stuff
    add_resource(:System, "BattleStart")
    add_resource(:System, "BattleFloor")
    add_resource(:System, "MessageBack")
    add_resource(:System, "GameOver")
    add_resource(:System, "IconSet")
    add_resource(:System, "Shadow")
    add_resource(:System, "Window")
  end
  
  def parse_fonts
    add_resource(:Fonts, "umeplus-gothic")
  end
end

class Resource_Exporter
  
  def initialize(data)
    @data = data
    @outfile = nil
  end
  
  def rtp_directory
    Tsuki::Resource_Checker.rtp_directory
  end
  
  def rtp_directory_valid?
    return false unless File.directory?(rtp_directory)
    return false unless File.directory?(rtp_directory + "Graphics")
    return false unless File.directory?(rtp_directory + "Audio")
    return false unless File.directory?(rtp_directory + "Fonts")
    return true
  end
  
  def create_outfile(name)
    File.open(name, "w")
  end
  
  def make_category_folder(category)
    if Tsuki::Resource_Checker::Graphics_Dirs.include?(category)
      name = "Graphics%s%s" %[File::Separator, category]
    elsif Tsuki::Resource_Checker::Audio_Dirs.include?(category)
      name = "Audio%s%s" %[File::Separator, category]
    elsif Tsuki::Resource_Checker::Font_Dirs.include?(category)
      return
    end
    Dir.mkdir(name) unless File.directory?(name)
    return name
  end
  
  def make_out_name(folder, category, name)
    matches = Dir::glob("#{rtp_directory}#{folder}/#{category}/#{name}.*")
    unless matches.empty?
      ext = matches[0].split("/")[-1].split(".")[-1]
    else
      #Tsuki::Resource_Checker.show_message("%s was not found" %name)
    end
    return name #+ ".#{ext}"
  end
  
  def make_path(category, name)   
    outName = ""
    if Tsuki::Resource_Checker::Graphics_Dirs.include?(category)
      name = make_out_name("Graphics", category, name)
      outName << sprintf("Graphics%s%s%s", File::Separator, category, File::Separator)
    elsif Tsuki::Resource_Checker::Audio_Dirs.include?(category)
      name = make_out_name("Audio", category, name)
      outName << sprintf("Audio%s%s%s", File::Separator, category, File::Separator)
    elsif Tsuki::Resource_Checker::Font_Dirs.include?(category)
      name = make_out_name("", category, name)
      outName << sprintf("Fonts%s", File::Separator)
    end
    return outName << name
  end
  
  # just read/write
  def copy_file(srcPath, destPath)
    File.open(srcPath, 'rb') {|src_file|
      File.open(destPath, 'wb') {|dest_file|
        dest_file.write(src_file.read)
      }
    }
  end
  
  def make_file(path)
    begin
      if FileTest.exist?(path)
        # nothing. Don't clutter the console
      elsif !FileTest.exist?(rtp_directory + path)
        p "%s isn't an RTP file" %path
      else
        copy_file(rtp_directory + path, path)
        p "%s - copied successfully" %path
      end
    rescue
      Tsuki::Resource_Checker.show_message("Something went wrong! Just be careful")
    end
  end
  
  def write_heading(name)
    @outfile.puts("== %s == " %name)
  end
  
  def write_data(category, list)
    list.sort.each {|name|
      path = make_path(category, name)
      @outfile.puts(sprintf("%s", path))
    }
    @outfile.puts("\n")
  end
  
  # write the log out
  def export_log
    Tsuki::Resource_Checker.show_message("Scanning for resources")   
    @outfile = create_outfile("used_resources.txt")
   
    @outfile.puts("The follow resources are used in the game:\n")
    @data.each {|category, list|
      write_heading(category)
      write_data(category, list)
    }
    @outfile.close
   
    @outfile = create_outfile("unused_resources.txt")
    write_unused_resources
    @outfile.close
   
    Tsuki::Resource_Checker.show_message("Finished scanning resources")
  end
  
  def write_unused_resources
    @outfile.puts("=========================================\n")
    @outfile.puts("The follow resources are unused\n")
    @outfile.puts("=========================================\n")
    @data.each do |category, list|
      dirName = make_category_folder(category)
      next unless dirName
      
      # Grab all of the files in the folder, without extensions
      filenames = Dir.glob(dirName << "/*").collect {|path| File.basename(path, ".*") }
      
      # Remove the ones that we found in the game
      filenames -= list
      
      # These are all unused      
      write_heading(category)
      write_data(category, filenames)
    end
  end
  
  # lol inefficient but I like it separated
  def copy_files
    Tsuki::Resource_Checker.show_message("Begin file copying")
    t1 = Time.now
    # check RTP folder exists
    unless rtp_directory_valid?
      Tsuki::Resource_Checker.show_message("Your RTP directory is invalid or inaccessible")
      return
    end
    # basic folders
    Dir.mkdir("Graphics") unless File.directory?("Graphics")
    Dir.mkdir("Audio") unless File.directory?("Audio")
    Dir.mkdir("Fonts") unless File.directory?("Fonts")
    Dir.mkdir("Movies") unless File.directory?("Movies")
    Dir.mkdir("System") unless File.directory?("System")
   
    @data.each {|category, list|
      make_category_folder(category)
      list.each { |name|
        path = make_path(category, name)
        make_file(path)
      }
    }
    t2 = Time.now
    Tsuki::Resource_Checker.show_message("File copy complete in %f seconds." %(t2 - t1))
  end
  
  def run
    export_log
    copy_files if Tsuki::Resource_Checker::Copy_Files_Over
  end
end

class Game_Interpreter
  
  def build_resource_list
    r = Tsuki::Resource_Checker.init_resource_finder
    r.run
  end
end

Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
21035
在线时间
4886 小时
注册时间
2014-12-22
帖子
1527

开拓者

8
发表于 2017-12-31 21:56:56 | 只看该作者

脚本错误,可能是脚本冲突也可能是别的什么
我不懂脚本,这里的报错我并不会修改,抱歉无法帮你更多。
要么就等大佬来帮忙,要么就放弃这个脚本?

但是我很好奇你不知道RTP是什么的话(6楼点评中)……
你确定知道这个脚本什么功能吗?确定自己需要这个脚本的功能吗???


另外我似乎知道这个作者搜了下找到了脚本的发布页:
http://himeworks.com/2013/05/resource-checker/
看下面的留言反馈似乎是有一些问题的,比如这条作者回复
Hime  October 23, 2015 at 1:19 pm
I just noticed when I’m parsing animations, it doesn’t read the sound effects that are used. That might be what is missing.
Having a list of missing resources would be useful.
看脚本的更新记录好像并没有修复这个bug……?
(所以收集脚本我建议大家一定要记录下出处,并不只是版权问题,是有实用性因素的)
我感觉吧,还是放弃这个脚本,自己手动检查说不定还比较快。

记得论坛里也看到过类似功能的脚本,有兴趣可以搜搜(然而关键字我一时还真想不到……)
只是一般这种脚本都无法保证能100%的把使用过的资源挑出来的,一些别的脚本里使用的素材很可能并不会被检查到,所以为了保险起见还是必须手动检查一遍
——那你不如就手动排查咯?可以参考这个脚本生成的列表txt文件手动复制。
或者你还可以考虑放弃精简素材,毕竟游戏报错无法进行下去比游戏体积大一点更为致命。
新手还是先做完游戏,再考虑打包的问题吧……

点评

我就是在这个网站下载的,至于RTP,是不是软件安装目录的那一个 不过还是谢谢你了  发表于 2017-12-31 22:50
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
549
在线时间
59 小时
注册时间
2017-11-19
帖子
71
7
 楼主| 发表于 2017-12-31 20:35:28 | 只看该作者
寒冷的企鹅 发表于 2017-12-31 20:17
是上楼的,不过路径对了也不行呀

这又是怎么了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
549
在线时间
59 小时
注册时间
2017-11-19
帖子
71
6
 楼主| 发表于 2017-12-31 20:17:22 | 只看该作者
shencao 发表于 2017-12-31 19:32
丢到百度翻译里——
(脚本里的换行断句因为页面宽度的关系会比较奇怪,整理一下后机翻。翻译英文现在机翻 ...

是上楼的,不过路径对了也不行呀

捕获.PNG (5.27 KB, 下载次数: 28)

捕获.PNG

点评

RTP是?  发表于 2017-12-31 20:53
RTP路径不是VA安装路径  发表于 2017-12-31 20:41
你在后面再加个“RTP/”呢?如果再不行,也许是win系统权限的问题,用管理员模式运行va试试  发表于 2017-12-31 20:27
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
549
在线时间
59 小时
注册时间
2017-11-19
帖子
71
5
 楼主| 发表于 2017-12-31 19:35:49 | 只看该作者
shencao 发表于 2017-12-31 19:32
丢到百度翻译里——
(脚本里的换行断句因为页面宽度的关系会比较奇怪,整理一下后机翻。翻译英文现在机翻 ...

点评

抱歉这层的图片一直加载刷不出,如果是上层楼的问题,那就是你va的安装路径填错了?目前写的路径是F:/盘,你看下自己va安装在哪里的  发表于 2017-12-31 19:53
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
549
在线时间
59 小时
注册时间
2017-11-19
帖子
71
4
 楼主| 发表于 2017-12-31 19:33:35 | 只看该作者
gforce 发表于 2017-12-31 15:52
检查在资料库及事件中使用的图片及音乐

可是这样了
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
21035
在线时间
4886 小时
注册时间
2014-12-22
帖子
1527

开拓者

3
发表于 2017-12-31 19:32:52 | 只看该作者
丢到百度翻译里——
(脚本里的换行断句因为页面宽度的关系会比较奇怪,整理一下后机翻。翻译英文现在机翻已经很强了)

**Usage
Press F5 to run the resource checker. You can change this key in the configuration section.

After the resource checker finishes, a file called "used_resources.txt" will be created in your project folder.

It will also create a file called "unused_resources.txt" which lists all of the files that aren't in use currently

You can also choose to copy files over from the RTP folder directly.
In the configuration section, type in the absolute path to the RTP, and enable file copying.

使用

按F5运行资源检查程序。您可以在配置部分中更改此键。

资源检查结束后,一个名为“used_resources文件.txt”将在你的项目文件夹的创建。

它还将创建一个名为“unused_resources文件.txt”,列出了所有当前不在使用的文件

您还可以选择直接从RTP文件夹复制文件。
在配置部分中,键入RTP的绝对路径,并启用文件复制。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7290
在线时间
1690 小时
注册时间
2017-4-28
帖子
85

开拓者

2
发表于 2017-12-31 15:52:50 | 只看该作者
This script goes through all of the data files in the data folder and
displays a list of graphics and audio used.

It performs a very simple resource check and copy: if it's defined in your
database or in any event, it is assumed you are using it.


检查在资料库及事件中使用的图片及音乐

Press F5 to run the resource checker. You can change this key in the
configuration section.


按下F5使用 (目測已改為F2)

点评

游戏文件出现两个.txt。"unused_resources"未使用资源 , "used_resources"已使用资源  发表于 2017-12-31 19:27
然后了??  发表于 2017-12-31 19:17
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 15:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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