Module: RGSSAD
- Defined in:
- lib/rgss3/rgss3a.rb
Defined Under Namespace
Classes: RGSSAD_File
Constant Summary collapse
- ENC_FILE =
Dir["Game.rgss{ad,2a,3a}"][0] || ""
- @@files =
[]
- @@xor =
0xDEADCAFE
- @@rgss3a_xor =
0
- @@orig_xor =
0
Class Method Summary collapse
Class Method Details
.add_file(file_contents, filename) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/rgss3/rgss3a.rb', line 41 def self.add_file(file_contents, filename) file = RGSSAD_File.new file.filename = filename file.filename_size = filename.size file.file = file_contents file.file_size = file_contents.size @@files.delete_if {|f| f.filename == file.filename} @@files << file @@files.sort! {|a,b| a.filename <=> b.filename} end |
.decrypt ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rgss3/rgss3a.rb', line 12 def self.decrypt return unless File.exists?(ENC_FILE) @@files.clear rgssad = '' File.open(ENC_FILE, 'rb') {|file| file.read(8) @@orig_xor = file.read(4).unpack('L*') * 9 + 3 if ENC_FILE == "Game.rgss3a" rgssad = file.read } rgssad = self.parse_rgssad(rgssad, true) offset = 0 while rgssad[offset] != nil file = RGSSAD_File.new file.filename_size = rgssad[offset, 4].unpack('L')[0] offset += 4 file.filename = rgssad[offset, file.filename_size] offset += file.filename_size file.file_size = rgssad[offset, 4].unpack('L')[0] offset += 4 file.file = rgssad[offset, file.file_size] @@files << file offset += file.file_size end end |
.encrypt ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rgss3/rgss3a.rb', line 52 def self.encrypt return if @@files.empty? && !File.exists?(ENC_FILE) rgssad = '' @@files.each do |file| rgssad << [file.filename_size].pack('L') rgssad << file.filename rgssad << [file.file_size].pack('L') rgssad << file.file end File.open(ENC_FILE, 'wb') do |file| file.print("RGSSAD\0\1") file.print(self.parse_rgssad(rgssad, false)) end end |
.files ⇒ Object
37 38 39 |
# File 'lib/rgss3/rgss3a.rb', line 37 def self.files @@files end |