rgsshd 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +97 -0
- data/Rakefile +1 -0
- data/lib/rgsshd.rb +434 -0
- data/lib/rgsshd/version.rb +3 -0
- data/rgsshd.gemspec +22 -0
- metadata +86 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 yoshikizh
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
# Rgsshd
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'rgsshd'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install rgsshd
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
RGSSHD加密包
|
22
|
+
|
23
|
+
制作思路:
|
24
|
+
1.音乐文件,图片文件 ZLIB 加密 数据库文件 直接打入加密包
|
25
|
+
|
26
|
+
2.数据结构:
|
27
|
+
|
28
|
+
总文件头:开始地址:0x00
|
29
|
+
00-07(8byte) 描述数据包名称
|
30
|
+
08-0F(8byte) 描述版本号
|
31
|
+
10-13(4byte) Audio文件头地址
|
32
|
+
14-17(4byte) Audio文件头长度
|
33
|
+
18-1B(4byte) Graphics文件头地址
|
34
|
+
1C-1F(4byte) Graphics文件头长度
|
35
|
+
20-23(4byte) Date文件头地址
|
36
|
+
24-27(4byte) Date文件头长度
|
37
|
+
|
38
|
+
|
39
|
+
Audio文件头:
|
40
|
+
AUDIO文件块地址 (4byte) --|
|
41
|
+
AUDIO文件块长度 (4byte) --|--Total(12byte)
|
42
|
+
AUDIO文件数量 (4byte) --|
|
43
|
+
|
44
|
+
"hash = { 路径\文件名1=>[文件1地址,文件1长度],
|
45
|
+
路径\文件名2=>[文件2地址,文件2长度],
|
46
|
+
..............
|
47
|
+
...........
|
48
|
+
路径\文件名x=>[文件x地址,文件x长度],
|
49
|
+
}"
|
50
|
+
|
51
|
+
|
52
|
+
Audio文件块:文件1内容+文件2内容+文件3内容......
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
Graphics文件头:
|
58
|
+
Graphics文件块地址 (4byte) --|
|
59
|
+
Graphics文件块长度 (4byte) --|--Total(12byte)
|
60
|
+
Graphics文件数量 (4byte) --|
|
61
|
+
|
62
|
+
"hash = { 路径\文件名1=>[文件1地址,文件1长度],
|
63
|
+
路径\文件名2=>[文件2地址,文件2长度],
|
64
|
+
..............
|
65
|
+
...........
|
66
|
+
路径\文件名x=>[文件x地址,文件x长度],
|
67
|
+
}"
|
68
|
+
|
69
|
+
|
70
|
+
Graphics文件块:文件1内容+文件2内容+文件3内容......
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
Data文件头:
|
75
|
+
Data文件块地址 (4byte) --|
|
76
|
+
Data文件块长度 (4byte) --|--Total(12byte)
|
77
|
+
Data文件数量 (4byte) --|
|
78
|
+
|
79
|
+
"hash = { 路径\文件名1=>[文件1地址,文件1长度],
|
80
|
+
路径\文件名2=>[文件2地址,文件2长度],
|
81
|
+
..............
|
82
|
+
...........
|
83
|
+
路径\文件名x=>[文件x地址,文件x长度],
|
84
|
+
}"
|
85
|
+
|
86
|
+
|
87
|
+
Data文件块:文件1内容+文件2内容+文件3内容......
|
88
|
+
|
89
|
+
数据包结尾块信息:预留16个字节
|
90
|
+
|
91
|
+
## Contributing
|
92
|
+
|
93
|
+
1. Fork it
|
94
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
95
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
96
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
97
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/rgsshd.rb
ADDED
@@ -0,0 +1,434 @@
|
|
1
|
+
require "rgsshd/version"
|
2
|
+
|
3
|
+
#==============================================================================
|
4
|
+
# ■ RGSSHD_Package
|
5
|
+
#------------------------------------------------------------------------------
|
6
|
+
# 数据包生成的模块。
|
7
|
+
#==============================================================================
|
8
|
+
module Set_File
|
9
|
+
OFFSET = 0x0c
|
10
|
+
def self.load
|
11
|
+
$rgss = File.open("Game.rgsshide","rb")
|
12
|
+
tp = $rgss.read(16)
|
13
|
+
if tp[0,8] != "RGSSHIDE"
|
14
|
+
raise "不是RGSSHIDE文件!"
|
15
|
+
end
|
16
|
+
if tp[8,8] != "20080808"
|
17
|
+
raise "不支持的版本!"
|
18
|
+
end
|
19
|
+
@head = []
|
20
|
+
@audioH = []
|
21
|
+
@graphicsH = []
|
22
|
+
@dataH = []
|
23
|
+
6.times{@head.push $rgss.read(4).unpack("L")[0]}
|
24
|
+
$rgss.pos = @head[0]
|
25
|
+
3.times{@audioH.push $rgss.read(4).unpack("L")[0]}
|
26
|
+
$rgss.pos = @head[2]
|
27
|
+
3.times{@graphicsH.push $rgss.read(4).unpack("L")[0]}
|
28
|
+
$rgss.pos = @head[4]
|
29
|
+
3.times{@dataH.push $rgss.read(4).unpack("L")[0]}
|
30
|
+
|
31
|
+
$rgss.pos = @head[0] + OFFSET
|
32
|
+
@audioInf = eval(Zlib::Inflate.inflate($rgss.read(@head[1]- OFFSET)))
|
33
|
+
$rgss.pos = @head[2] + OFFSET
|
34
|
+
@graphicsInf = eval(Zlib::Inflate.inflate($rgss.read(@head[3]- OFFSET)))
|
35
|
+
$rgss.pos = @head[4] + OFFSET
|
36
|
+
@dataInf = eval(Zlib::Inflate.inflate($rgss.read(@head[5]- OFFSET)))
|
37
|
+
end
|
38
|
+
|
39
|
+
#--------------------------------------------------------------------------
|
40
|
+
# ● 解码代码
|
41
|
+
#--------------------------------------------------------------------------
|
42
|
+
def self.inflate(filename,kind)
|
43
|
+
# Set_File.load if $rgss.closed?
|
44
|
+
case kind
|
45
|
+
when 0
|
46
|
+
inf = @audioInf[filename]
|
47
|
+
offset = @audioH[0]
|
48
|
+
when 1
|
49
|
+
inf = @graphicsInf[filename]
|
50
|
+
offset = @graphicsH[0]
|
51
|
+
when 2
|
52
|
+
inf = @dataInf[filename]
|
53
|
+
offset = @dataH[0]
|
54
|
+
end
|
55
|
+
$rgss.pos = inf[0] + offset
|
56
|
+
code = $rgss.read(inf[1])
|
57
|
+
if kind != 2
|
58
|
+
code = Zlib::Inflate.inflate(code)
|
59
|
+
end
|
60
|
+
return code
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
module RGSSHD_Package
|
67
|
+
|
68
|
+
Audios = ["wav","mp3","ogg","wma","mid"]
|
69
|
+
Graphicses = ["bmp","jpg","png"]
|
70
|
+
Databases = ["rxdata"]
|
71
|
+
|
72
|
+
# 文件头地址
|
73
|
+
LpAudioHead = 0x10 #||
|
74
|
+
LpAudioLength = 0x14 #||
|
75
|
+
LpGraphicsHead = 0x18 #||TOTAL(16byte)
|
76
|
+
LpGraphicsLength = 0x1C #||
|
77
|
+
LpDataHead = 0x20 #||
|
78
|
+
LpDataLength = 0x24 #||
|
79
|
+
|
80
|
+
module_function
|
81
|
+
#--------------------------------------------------------------------------
|
82
|
+
# ● 开始制作数据包
|
83
|
+
#--------------------------------------------------------------------------
|
84
|
+
def start
|
85
|
+
@count = 0
|
86
|
+
@block = 0
|
87
|
+
@sprite = Sprite.new
|
88
|
+
@sprite_base = Sprite.new
|
89
|
+
@sprite_base2 = Sprite.new
|
90
|
+
@bitmap = Bitmap.new(14,16)
|
91
|
+
@bitmap.fill_rect(Rect.new(0,0,16,16),color = Color.new(0,255,0,255))
|
92
|
+
bitmap2 = Bitmap.new(322,18)
|
93
|
+
bitmap2.fill_rect(Rect.new(0,0,322,18),color = Color.new(128,128,128,255))
|
94
|
+
bitmap3 = Bitmap.new(324,20)
|
95
|
+
bitmap3.fill_rect(Rect.new(0,0,324,20),color = Color.new(255,0,0,255))
|
96
|
+
|
97
|
+
auth = Sprite.new
|
98
|
+
auth.bitmap = Bitmap.new(150,16)
|
99
|
+
auth.bitmap.font.size = 14
|
100
|
+
auth.bitmap.draw_text(0,0,150,16,"RGSSHD"+" "+"作者:秀秀")
|
101
|
+
auth.x,auth.y,auth.z = 250,300,103
|
102
|
+
|
103
|
+
@sprite_base.bitmap = bitmap2
|
104
|
+
@sprite_base.x = (640-322)/2
|
105
|
+
@sprite_base.y = 300
|
106
|
+
@sprite_base.z = 102
|
107
|
+
|
108
|
+
@sprite_base2.bitmap = bitmap3
|
109
|
+
@sprite_base2.x = (640-322)/2 - 1
|
110
|
+
@sprite_base2.y = 300 - 1
|
111
|
+
@sprite_base2.z = 101
|
112
|
+
|
113
|
+
@old_dir = Dir.pwd
|
114
|
+
@audio_files = []
|
115
|
+
@graphics_files = []
|
116
|
+
@database_files = []
|
117
|
+
@path = ""
|
118
|
+
self.next_file(@path,0)
|
119
|
+
self.next_file(@path,1)
|
120
|
+
self.next_file(@path,2)
|
121
|
+
if (@audio_files + @graphics_files + @database_files).size == 0
|
122
|
+
"没有搜索到资源"
|
123
|
+
return
|
124
|
+
end
|
125
|
+
|
126
|
+
@all_files = (@audio_files + @graphics_files + @database_files).size
|
127
|
+
@rate = (@all_files / 20).to_f
|
128
|
+
|
129
|
+
|
130
|
+
Dir.chdir(@old_dir)
|
131
|
+
self.create_file
|
132
|
+
self.write_file_header
|
133
|
+
self.write_audio_header
|
134
|
+
self.write_audio_block
|
135
|
+
self.write_graphics_header
|
136
|
+
self.write_graphics_block
|
137
|
+
self.write_database_header
|
138
|
+
self.write_database_block
|
139
|
+
self.write_file_end
|
140
|
+
p "Game.RGSSHD 制作成功"
|
141
|
+
exit
|
142
|
+
end
|
143
|
+
|
144
|
+
def create_file
|
145
|
+
@file = File.open("Game.rgsshide","wb")
|
146
|
+
end
|
147
|
+
|
148
|
+
def write_file_header
|
149
|
+
@file.write "RGSSHIDE"
|
150
|
+
@file.write "20080808"
|
151
|
+
end
|
152
|
+
|
153
|
+
def write_audio_header
|
154
|
+
@file.pos = 0x28
|
155
|
+
if @audio_files.size == 0
|
156
|
+
@@audio_head_adress = 0x28
|
157
|
+
@@audio_head_length = 12
|
158
|
+
@audio_files_block_adress = 0
|
159
|
+
@audio_files_block_length = 0
|
160
|
+
@audio_files_amount = 0
|
161
|
+
return
|
162
|
+
end
|
163
|
+
Dir.chdir(@old_dir)
|
164
|
+
posop = 0
|
165
|
+
fsize = 0
|
166
|
+
@tempa = ""
|
167
|
+
audio_list = "resource_list = {\n"
|
168
|
+
begin
|
169
|
+
for name in @audio_files
|
170
|
+
begin
|
171
|
+
fr = File.open(name,"rb") # 打开目标Audio文件
|
172
|
+
code = Zlib::Deflate.deflate(fr.read,9)
|
173
|
+
fsize = code.size
|
174
|
+
@tempa += code
|
175
|
+
audio_list += sprintf("%s=>[%d,%d],\n","\"#{name.split(/\./)[0]}\"",
|
176
|
+
posop,fsize)
|
177
|
+
posop += fsize # 记录位置
|
178
|
+
rescue
|
179
|
+
print "\"#{name}\" can't open"
|
180
|
+
ensure
|
181
|
+
fr.close
|
182
|
+
@count += 1
|
183
|
+
if @count >= @rate
|
184
|
+
@sprite_base.bitmap.blt(@block*16,0,@bitmap,Rect.new(0,0,14,16))
|
185
|
+
@block += 1
|
186
|
+
@count = 0
|
187
|
+
end
|
188
|
+
Graphics.update
|
189
|
+
end
|
190
|
+
end
|
191
|
+
ensure
|
192
|
+
audio_list.slice!(audio_list.size-2,1)
|
193
|
+
audio_list += "}\n"
|
194
|
+
audio_list = Zlib::Deflate.deflate(audio_list,9)
|
195
|
+
|
196
|
+
@audio_head_adress = 0x28
|
197
|
+
@audio_head_length = audio_list.size + 12
|
198
|
+
@audio_files_block_adress = 0x28 + @audio_head_length
|
199
|
+
@audio_files_block_length = @tempa.length
|
200
|
+
@audio_files_amount = @audio_files.length
|
201
|
+
|
202
|
+
@file.pos = LpAudioHead
|
203
|
+
@file.write [@audio_head_adress].pack("L")
|
204
|
+
@file.pos = LpAudioLength
|
205
|
+
@file.write [@audio_head_length].pack("L")
|
206
|
+
|
207
|
+
@file.pos = 0x28
|
208
|
+
@file.write [@audio_files_block_adress].pack("L")
|
209
|
+
@file.pos = 0x28+4
|
210
|
+
@file.write [@audio_files_block_length].pack("L")
|
211
|
+
@file.pos = 0x28+8
|
212
|
+
@file.write [@audio_files_amount].pack("L")
|
213
|
+
@file.pos = 0x28+12
|
214
|
+
@file.write audio_list
|
215
|
+
while false
|
216
|
+
p @audio_head_adress
|
217
|
+
p @audio_head_length
|
218
|
+
p "文件块地址" + @audio_files_block_adress.to_s
|
219
|
+
p "文件块长度" + @audio_files_block_length.to_s
|
220
|
+
p "文件数量" + @audio_files_amount.to_s
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
def write_audio_block
|
228
|
+
@file.write @tempa
|
229
|
+
end
|
230
|
+
|
231
|
+
def write_graphics_header
|
232
|
+
@gr_start_adr = @audio_files_block_adress+@audio_files_block_length
|
233
|
+
@file.pos = @gr_start_adr
|
234
|
+
|
235
|
+
if @graphics_files.size == 0
|
236
|
+
@graphics_head_adress = @gr_start_adr
|
237
|
+
@graphics_head_length = 12 # 不包含hash信息块
|
238
|
+
@graphics_files_block_adress = 0
|
239
|
+
@graphics_files_block_length = 0
|
240
|
+
@graphics_files_amount = 0
|
241
|
+
return
|
242
|
+
end
|
243
|
+
|
244
|
+
Dir.chdir(@old_dir)
|
245
|
+
posop = 0
|
246
|
+
fsize = 0
|
247
|
+
@tempg = ""
|
248
|
+
graphics_list = "resource_list = {\n"
|
249
|
+
begin
|
250
|
+
for name in @graphics_files
|
251
|
+
begin
|
252
|
+
fr = File.open(name,"rb") # 打开目标Audio文件
|
253
|
+
code = Zlib::Deflate.deflate(fr.read,9)
|
254
|
+
fsize = code.size
|
255
|
+
#压缩后写入到指定位置
|
256
|
+
@tempg += code
|
257
|
+
graphics_list += sprintf("%s=>[%d,%d],\n","\"#{name.split(/\./)[0]}\"",
|
258
|
+
posop,fsize)
|
259
|
+
posop += fsize # 记录现在位置
|
260
|
+
rescue
|
261
|
+
print "\"#{name}\" can't open"
|
262
|
+
ensure
|
263
|
+
fr.close
|
264
|
+
@count += 1
|
265
|
+
if @count >= @rate
|
266
|
+
@sprite_base.bitmap.blt(@block*16,0,@bitmap,Rect.new(0,0,14,16))
|
267
|
+
@block += 1
|
268
|
+
@count = 0
|
269
|
+
end
|
270
|
+
Graphics.update
|
271
|
+
end
|
272
|
+
end
|
273
|
+
ensure
|
274
|
+
graphics_list.slice!(graphics_list.size-2,1)
|
275
|
+
graphics_list += "}\n"
|
276
|
+
graphics_list = Zlib::Deflate.deflate(graphics_list,9)
|
277
|
+
|
278
|
+
@graphics_head_adress = @gr_start_adr
|
279
|
+
@graphics_head_length = graphics_list.size + 12
|
280
|
+
@graphics_files_block_adress = @graphics_head_adress + @graphics_head_length
|
281
|
+
@graphics_files_block_length = @tempg.length
|
282
|
+
@graphics_files_amount = @graphics_files.length
|
283
|
+
|
284
|
+
@file.pos = LpGraphicsHead
|
285
|
+
@file.write [@graphics_head_adress].pack("L")
|
286
|
+
@file.pos = LpGraphicsLength
|
287
|
+
@file.write [@graphics_head_length].pack("L")
|
288
|
+
|
289
|
+
@file.pos = @graphics_head_adress
|
290
|
+
@file.write [@graphics_files_block_adress].pack("L")
|
291
|
+
@file.pos = @graphics_head_adress+4
|
292
|
+
@file.write [@graphics_files_block_length].pack("L")
|
293
|
+
@file.pos = @graphics_head_adress+8
|
294
|
+
@file.write [@graphics_files_amount].pack("L")
|
295
|
+
@file.pos = @graphics_head_adress+12
|
296
|
+
@file.write graphics_list
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
def write_graphics_block
|
301
|
+
@file.write @tempg
|
302
|
+
end
|
303
|
+
|
304
|
+
def write_database_header
|
305
|
+
@da_start_adr = @graphics_files_block_adress + @graphics_files_block_length
|
306
|
+
@file.pos = @da_start_adr
|
307
|
+
|
308
|
+
if @database_files.size == 0
|
309
|
+
@data_head_adress = @gr_start_adr
|
310
|
+
@data_head_length = 12 # 不包含hash信息块
|
311
|
+
@data_files_block_adress = 0
|
312
|
+
@data_files_block_length = 0
|
313
|
+
@data_files_amount = 0
|
314
|
+
return
|
315
|
+
end
|
316
|
+
p @database_files
|
317
|
+
Dir.chdir(@old_dir)
|
318
|
+
posop = 0
|
319
|
+
fsize = 0
|
320
|
+
@tempd = ""
|
321
|
+
data_list = "resource_list = {\n"
|
322
|
+
begin
|
323
|
+
for name in @database_files
|
324
|
+
begin
|
325
|
+
fr = File.open(name,"rb") # 打开目标Audio文件
|
326
|
+
code = fr.read # 导出内容
|
327
|
+
fsize = code.size
|
328
|
+
#压缩后写入到指定位置
|
329
|
+
@tempd += code
|
330
|
+
data_list += sprintf("%s=>[%d,%d],\n","\"#{name.split(/\./)[0]}\"",
|
331
|
+
posop,fsize)
|
332
|
+
posop += fsize # 记录现在位置
|
333
|
+
rescue
|
334
|
+
print "\"#{name}\" can't open"
|
335
|
+
ensure
|
336
|
+
fr.close
|
337
|
+
@count += 1
|
338
|
+
if @count >= @rate
|
339
|
+
@sprite_base.bitmap.blt(@block*16,0,@bitmap,Rect.new(0,0,14,16))
|
340
|
+
@block += 1
|
341
|
+
@count = 0
|
342
|
+
end
|
343
|
+
Graphics.update
|
344
|
+
end
|
345
|
+
end
|
346
|
+
ensure
|
347
|
+
data_list.slice!(data_list.size-2,1)
|
348
|
+
data_list += "}\n"
|
349
|
+
data_list = Zlib::Deflate.deflate(data_list,9)
|
350
|
+
|
351
|
+
@data_head_adress = @da_start_adr
|
352
|
+
@data_head_length = data_list.size + 12
|
353
|
+
@data_files_block_adress = @data_head_adress + @data_head_length
|
354
|
+
@data_files_block_length = @tempd.length
|
355
|
+
@data_files_amount = @database_files.length
|
356
|
+
|
357
|
+
@file.pos = LpDataHead
|
358
|
+
@file.write [@data_head_adress].pack("L")
|
359
|
+
@file.pos = LpDataLength
|
360
|
+
@file.write [@data_head_length].pack("L")
|
361
|
+
|
362
|
+
@file.pos = @data_head_adress
|
363
|
+
@file.write [@data_files_block_adress].pack("L")
|
364
|
+
@file.pos = @data_head_adress+4
|
365
|
+
@file.write [@data_files_block_length].pack("L")
|
366
|
+
@file.pos = @data_head_adress+8
|
367
|
+
@file.write [@data_files_amount].pack("L")
|
368
|
+
@file.pos = @data_head_adress+12
|
369
|
+
@file.write data_list
|
370
|
+
end
|
371
|
+
|
372
|
+
end
|
373
|
+
|
374
|
+
def write_database_block
|
375
|
+
@file.write @tempd
|
376
|
+
end
|
377
|
+
|
378
|
+
def write_file_end
|
379
|
+
@file.write "RGSSHIDE-END"
|
380
|
+
@file.close
|
381
|
+
end
|
382
|
+
|
383
|
+
#--------------------------------------------------------------------------
|
384
|
+
# ● 搜索全部资源文件
|
385
|
+
#--------------------------------------------------------------------------
|
386
|
+
def next_file(path,kind)
|
387
|
+
Dir.chdir(@old_dir)
|
388
|
+
Dir.chdir(path) if path != ""
|
389
|
+
case kind
|
390
|
+
when 0
|
391
|
+
for f in Dir["*"]
|
392
|
+
if FileTest.directory?(f)
|
393
|
+
@path = @path + f + "/"
|
394
|
+
self.next_file(@path,0)
|
395
|
+
else
|
396
|
+
if Audios.include? f.split(/\./)[1]
|
397
|
+
@audio_files.push @path + f
|
398
|
+
end
|
399
|
+
end
|
400
|
+
end
|
401
|
+
when 1
|
402
|
+
for f in Dir["*"]
|
403
|
+
if FileTest.directory?(f)
|
404
|
+
@path = @path + f + "/"
|
405
|
+
self.next_file(@path,1)
|
406
|
+
else
|
407
|
+
if Graphicses.include? f.split(/\./)[1]
|
408
|
+
@graphics_files.push @path + f
|
409
|
+
end
|
410
|
+
end
|
411
|
+
end
|
412
|
+
when 2
|
413
|
+
for f in Dir["*"]
|
414
|
+
if FileTest.directory?(f)
|
415
|
+
@path = @path + f + "/"
|
416
|
+
self.next_file(@path,2)
|
417
|
+
else
|
418
|
+
if Databases.include? f.split(/\./)[1]
|
419
|
+
@database_files.push @path + f
|
420
|
+
end
|
421
|
+
end
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
path_a = path.split(/\//)
|
426
|
+
@path = ""
|
427
|
+
for i in 0...path_a.size - 1
|
428
|
+
@path += path_a[i] + "/"
|
429
|
+
end
|
430
|
+
Dir.chdir(@old_dir)
|
431
|
+
Dir.chdir(@path) if @path != ""
|
432
|
+
|
433
|
+
end
|
434
|
+
end
|
data/rgsshd.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'rgsshd/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "rgsshd"
|
8
|
+
gem.version = Rgsshd::VERSION
|
9
|
+
gem.authors = ["yoshikizh"]
|
10
|
+
gem.email = ["177365340@qq.com"]
|
11
|
+
gem.description = "rgsshd encrypt"
|
12
|
+
gem.summary = "rgsshd encrypt"
|
13
|
+
gem.homepage = "https://github.com/yoshikizh/rgsshd"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_development_dependency "rspec"
|
21
|
+
gem.add_development_dependency "bundler", ">= 1.0.0"
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rgsshd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- yoshikizh
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-19 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: bundler
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.0.0
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.0
|
46
|
+
description: rgsshd encrypt
|
47
|
+
email:
|
48
|
+
- 177365340@qq.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- .gitignore
|
54
|
+
- Gemfile
|
55
|
+
- LICENSE.txt
|
56
|
+
- README.md
|
57
|
+
- Rakefile
|
58
|
+
- lib/rgsshd.rb
|
59
|
+
- lib/rgsshd/version.rb
|
60
|
+
- rgsshd.gemspec
|
61
|
+
homepage: https://github.com/yoshikizh/rgsshd
|
62
|
+
licenses: []
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ! '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
requirements: []
|
80
|
+
rubyforge_project:
|
81
|
+
rubygems_version: 1.8.24
|
82
|
+
signing_key:
|
83
|
+
specification_version: 3
|
84
|
+
summary: rgsshd encrypt
|
85
|
+
test_files: []
|
86
|
+
has_rdoc:
|