Tosyk
Новичок
- Сообщения
- 206
- Репутация
- 0
сейчас пишу более сложный скрипт преобразования файлов. Он состоит из двух частей:
1. Дампинг файлов. Уже обсуждали эту часть и я добился успехов в процессе чтения форума. Вот что проиходит:
В качестве РАСШИРЕНИЯ в первом этапе выступает раширение *.sds. В результате получаются несколько файлов *.dae (иногда очень много, несколько сотен). Вот мой скрипт для этого (работает отлично):
как видно в процессе участвуют ещё и несколько необходимых dll, выполнение происходит в системном темпе, а далее полученные файлы переносятся в папку со скриптом (для второго этапа учтено что файлы пока что находятся там куда происходит дампинг, т.е. в системном темпе). Полученные файлы *.dae являются промежуточными. Они нужны для второго этапа.
2. Конвертирование полученных *.dae. Происходит таким образом:
в качестве РАШИРЕНИЯ может быть любой поддерживаемый тип, в данном примере во втором этапе используется расширение .dae как для исходного так и для конечного файлов.
После конвертирования полученные файлы *.dae имеют почти вдвое уменьшенный размер и должны быть скопированы/перемещены туда где расплагаются изначальные файлы *.sds, которые участвуют в дампинге из первого этапа. Для конвертирования я написал отдельный скрипт, который должен искать файлы по маске (*.dae) в системном темпе и конвертировать их. Но он этого не делает:
В идеале это должен быть один скрипт, в котором есть функции для получения файлов, дампинга файлов, конвертирования файлов и перемещения файлов в исходный каталог.
Загвоздка состоит во втором этапе, в котором не могу понять как снова получить файлы .dae и передать их для конвертирования функции.
1. Дампинг файлов. Уже обсуждали эту часть и я добился успехов в процессе чтения форума. Вот что проиходит:
Код:
Mafia2ModelDumper.exe ФАЙЛ.РАСШИРЕНИЕ
Код:
#NoTrayIcon
$aFiles = _Get_Files()
_DumpDae($aFiles)
Func _DumpDae($a_Files)
Local $s_MDumper = 'Mafia2ModelDumper.exe', $s_Ghelper = 'Gibbed.Helpers.dll', $s_Gillusion = 'Gibbed.Illusion.FileFormats.dll', $s_ICSharp = 'ICSharpCode.SharpZipLib.dll', $s_M2Config = 'Mafia2ModelDumper.exe.config', $s_M2Tool = 'Mafia2Tool.dll', $s_ScriptDir = @ScriptDir, $s_TempDir = @TempDir & '\_TempM2Models', $i_End
If Not FileExists($s_TempDir) Then
If Not DirCreate($s_TempDir) Then Return SetError(1)
EndIf
If Not FileInstall('Mafia2ModelDumper.exe', $s_TempDir & '\' & $s_MDumper, 1) Then Return SetError(1)
If Not FileInstall('Gibbed.Helpers.dll', $s_TempDir & '\' & $s_Ghelper, 1) Then Return SetError(1)
If Not FileInstall('Gibbed.Illusion.FileFormats.dll', $s_TempDir & '\' & $s_Gillusion, 1) Then Return SetError(1)
If Not FileInstall('ICSharpCode.SharpZipLib.dll', $s_TempDir & '\' & $s_ICSharp, 1) Then Return SetError(1)
If Not FileInstall('Mafia2ModelDumper.exe.config', $s_TempDir & '\' & $s_M2Config, 1) Then Return SetError(1)
If Not FileInstall('Mafia2Tool.dll', $s_TempDir & '\' & $s_M2Tool, 1) Then Return SetError(1)
For $i = 1 To $a_Files[0]
$i_End = RunWait('"' & $s_TempDir & '\' & $s_MDumper & '" "' & $a_Files[$i] & '"', $s_TempDir, @SW_HIDE)
If $i_End Then Return SetError(1)
;FileMove($a_Files[$i], $s_ScriptDir, 1)
FileMove($s_TempDir & '\' & '*.dae', $s_ScriptDir, 1)
Next
;DirRemove ($s_TempDir, 1)
EndFunc ;==>_DumpDae
Func _Get_Files()
Local $aFiles[$CmdLine[0] + 1] = [$CmdLine[0]]
For $i = 1 To $CmdLine[0]
$aFiles[$i] = $CmdLine[$i]
Next
Return $aFiles
EndFunc ;==>_Get_Files
2. Конвертирование полученных *.dae. Происходит таким образом:
Код:
mesh2rdm.exe ИСХОДНЫЙ_ФАЙЛ.РАСШИРЕНИЕ КОНЕЧНЫЙ_ФАЙЛ.РАСШИРЕНИЕ -flipuv -scale 100 -nopause -rotate 0 180 0
После конвертирования полученные файлы *.dae имеют почти вдвое уменьшенный размер и должны быть скопированы/перемещены туда где расплагаются изначальные файлы *.sds, которые участвуют в дампинге из первого этапа. Для конвертирования я написал отдельный скрипт, который должен искать файлы по маске (*.dae) в системном темпе и конвертировать их. Но он этого не делает:
Код:
#NoTrayIcon
_Convert()
Func _Convert($a_Files)
Local $s_M2RDM = 'mesh2rdm.exe', $s_ScriptDir = @ScriptDir, $s_TempDir = @TempDir & '\_TempM2Models', $i_End
If Not FileExists($s_TempDir) Then
If Not DirCreate($s_TempDir) Then Return SetError(1)
EndIf
If Not FileInstall('mesh2rdm.exe', $s_TempDir & '\' & $s_M2RDM, 1) Then Return SetError(1)
For $i = 1 To $a_Files[0]
$i_End = RunWait('"' & $s_TempDir & '\' & $s_M2RDM & '" "' & $s_TempDir & '\' '*.dae' & $s_ScriptDir & '\' '*.dae' & '" "' & '" -overwrite -D -c 1 -out tga "' & '"', $s_ScriptDir, @SW_HIDE)
If $i_End Then Return SetError(1)
;FileMove($a_Files[$i], $s_ScriptDir, 1)
;FileMove($s_TempDir & '\' & '*.dae', $s_ScriptDir, 1)
Next
;DirRemove ($s_TempDir, 1)
EndFunc ;==>_Convert
Загвоздка состоит во втором этапе, в котором не могу понять как снова получить файлы .dae и передать их для конвертирования функции.