GUI/Shell for Universal PVR Extractor/Patcher v1.3 by SWAT - P@S@f - 26.08.2011 15:13
Написал на скорую руку под свои нужды на AutoIt простенький скрипт, который позволяет обрабатывать Universal PVR Extractor'ом сразу несколько файлов пакетами.
ВНИМАНИЕ! В папку с программой необходимо поместить сам Universal PVR Extractor/Patcher v1.3, который можно скачать здесь: http://www.dc-swat.ru/download/pc/res_edit/Universal_PVR_Extractor_v1.3.7_by_SWAT.7z
Перепаковка (патчинг) текстур пока в тестовом режиме. Для того, чтобы запустить оболочку в режиме Patcher, необходимо запустить исполняемый файл с ключом "-p" , для этого необходимо либо прописать в командной строке
Код:
"UPVREP by SWAT.exe" -p
либо создать ярлык для файла "UPVREP by SWAT.exe" и в его свойствах, в поле "Объект", в самый конец дописать
Скачать:
http://www.mediafire.com/?sxqpwp462ck72dg
Инструкция:
Цитата:Без ключа "-p":
- Если был выбран один файл:
- Извлечь в ту же папку — извлекает текстуры в ту же папку, в которой находится файл из которого извлекаются текстуры
- Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в папке с этим файлом
- И была отмечена галочка "Выбрать папку для извлечения":
- Извлечь в ту же папку — извлекает текстуры прямо в выбранную папку
- Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в выбранной папке
- Если было выбрано несколько файлов:
- Извлечь все в одну папку — создает в папке с выбранными файлами папку "unpacked", и извлекает все текстуры туда, при этом, извлечённые текстуры из последующих файлов после первого будут переименованы по инкременту
Например, если в папке "unpacked" уже существует файл "file_0001.pvr", т.к. он был извлечен из первого файла, извлеченный файл "file_0001.pvr" из второго файла будет переименован в "file_0002.pvr", а затем помещен в папку "unpacked", и т.д.
- Извлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку
- И была отмечена галочка "Выбрать папку для извлечения":
- Извлечь все в одну папку — извлекает все текстуры в выбранную папку
- Извлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку в выбранной папке
С ключом "-p":
- В той же папке (только для одного файла) — патчит выбранный файл, текстуры которого и файл "offset.txt", находятся в одной папке с ним
- В папке с именем файла — патчит выбранный файл(ы), файл "offset.txt" и текстуры которого, находятся в папке с именем этого файла
- Если была отмечена галочка "Выбрать папку извлечения":
- В той же папке (только для одного файла) — патчит выбранный файл, текстуры которого и файл "offset.txt", находятся в выбранной папке
- В папке с именем файла — патчит выбранный файл(ы), файл "offset.txt" и текстуры которого, находятся в подпапке выбранной папки с именем этого файла
Исходный код (на AutoIt):
Код:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.7.14 (beta)
Author: P@S@f
Script Function:
GUI/Shell for Universal PVR ExtPator/Patcher v1.3 by SWAT
#ce ----------------------------------------------------------------------------
#NoTrayIcon
Opt("GUIOnEventMode", 1)
#include <GUIConstants.au3>
#Include <File.au3>
$WinName = "UPVREP by SWAT"
$choise = FileOpenDialog("Открыть...", @WorkingDir, "BIN (*.bin)|DAT (*.dat)|UNKNOW (*.unk)|Все файлы (*.*)", 7)
If @error Then
MsgBox(48,"Ошибка", "Файл(ы) не выбран(ы)!")
Exit
EndIf
FileChangeDir(@ScriptDir)
$main = GUICreate($WinName, 193, 90)
$1radio = GUICtrlCreateRadio("Извлечь все в одну папку",1,1,193)
$2radio = GUICtrlCreateRadio("Извлечь в отдельные папки",1,20,193)
$setdest = GUICtrlCreateCheckbox("Выбрать папку для извлечения", 3, 40)
$okbutton = GUICtrlCreateButton("OK", 62, 62, 70)
GUICtrlSetOnEvent($okbutton, "Exec")
GUISetOnEvent($GUI_EVENT_CLOSE, "E")
GUICtrlSetState ($1radio,$GUI_CHECKED)
Global $onefile = False
Global $selecttext = "Выберите папку для сохранения текстур"
Global $files = StringSplit($choise, "|")
Global $mode = "-e"
If $files[0] == 1 Then
Global $onefile = True;
GUICtrlSetData($1radio, "Извлечь в ту же папку")
GUICtrlSetData($2radio, "Извлечь в папку с именем файла")
EndIf
If $CmdLine[0] <> 0 And $CmdLine[1] == "-p" Then
$mode = $CmdLine[1]
GUICtrlSetData($1radio, "В той же папке")
If $files[0] <> 1 Then
GUICtrlSetState($1radio,$GUI_DISABLE)
GUICtrlSetState($2radio,$GUI_CHECKED)
EndIf
GUICtrlSetData($2radio, "В папке с именем файла")
GUICtrlSetData($setdest, "Выбрать папку извлечения")
$selecttext = "Выберите папку, в которую было произведено извлечение текстур"
EndIf
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func Exec()
GUISetState(@SW_HIDE)
$1radiostate = GUICtrlRead($1radio)
$2radiostate = GUICtrlRead($2radio)
$setdeststate = GUICtrlRead($setdest)
If $onefile Then
Local $file[3]
$file[0] = StringLeft($files[1], StringInStr($files[1], "\", 0, -1) - 1)
$file[1] = StringMid($files[1], StringInStr($files[1], "\", 0, -1) + 1)
If $1radiostate == $GUI_CHECKED And $setdeststate == $GUI_UNCHECKED Then
ExtPat($file[1], ".", $file[0], $mode)
EndIf
If $1radiostate == $GUI_CHECKED And $setdeststate == $GUI_CHECKED Then
ExtPat($file[1], SelectFolder(), $file[0], $mode)
EndIf
If $2radiostate == $GUI_CHECKED Then
$file[2] = StringLeft($file[1], StringInStr($file[1], ".", 0, -1) - 1)
If $setdeststate == $GUI_UNCHECKED Then
ExtPat($file[1], $file[2], $file[0], $mode)
EndIf
If $setdeststate == $GUI_CHECKED Then
ExtPat($file[1], SelectFolder() & "\" & $file[2], $file[0], $mode)
EndIf
EndIf
Quit()
EndIf
If $1radiostate == $GUI_CHECKED Then
If $setdeststate == $GUI_UNCHECKED Then
Ren($files[1] & "\unpacked")
EndIf
If $setdeststate == $GUI_CHECKED Then
Ren(SelectFolder())
EndIf
EndIf
If $2radiostate == $GUI_CHECKED And $setdeststate == $GUI_UNCHECKED Then
For $i = 2 To $files[0]
$savepath = $files[1] & "\" & StringLeft($files[$i],StringInStr($files[$i], ".", 0,-1)-1)
ExtPat($files[$i], $savepath, $files[1], $mode)
Next
EndIf
If $2radiostate == $GUI_CHECKED And $setdeststate == $GUI_CHECKED Then
$path = SelectFolder()
For $i = 2 To $files[0]
$savepath = $path & "\" & StringLeft($files[$i],StringInStr($files[$i], ".", 0,-1)-1)
ExtPat($files[$i], $savepath, $files[1], $mode)
Next
EndIf
Quit()
EndFunc
Func Ren($destdir)
$tempdir = $destdir & "\~temp" & Random(1000,9999,1)
DirCreate($tempdir)
For $i = 2 To $files[0]
ExtPat($files[$i], $tempdir, $files[1])
FileDelete($tempdir & "\offset.txt")
$filea = _FileListToArray($destdir)
$fileb = _FileListToArray($tempdir)
For $o = 1 To $fileb[0]
FileMove($tempdir & "\" & $fileb[$o], $destdir & "\file_" & StringFormat("%04d",$filea[0] + $o - 1) & ".pvr", 8)
Next
Next
DirRemove($tempdir)
EndFunc
Func ExtPat($file, $savepath, $workingdir = @ScriptDir, $mode = "-e")
$param = '"pvrext.exe" ' & $mode & ' "' & $file & '" "' & $savepath & '"'
RunWait($param, $workingdir, @SW_HIDE)
EndFunc
Func SelectFolder()
$path = FileSelectFolder($selecttext, "", 3)
If @error Then
MsgBox(48,"Ошибка", "Папка не выбрана!")
Exit
EndIf
Return $path
EndFunc
Func Quit()
MsgBox(64, $WinName, "Готово!")
Exit
EndFunc
Func E()
Exit
EndFunc
RE: Shell for Universal PVR Extractor/Patcher v1.3 by SWAT - Lin - 27.08.2011 06:56
А наоборот напишешь оболочку?
RE: Shell for Universal PVR Extractor/Patcher v1.3 by SWAT - P@S@f - 27.08.2011 09:54
Обновил!
Теперь после выбора файлов появляется окошко, которое предоставляет варианты:
- Если был выбран один файл:
- Извлечь в ту же папку — извлекает текстуры в ту же папку, в которой находится файл из которого извлекаются текстуры
- Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в папке с этим файлом
- И была отмечена галочка "Выбрать папку для извлечения":
- Извлечь в ту же папку — извлекает текстуры прямо в выбранную папку
- Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в выбранной папке
- Если было выбрано несколько файлов:
- Извлечь все в одну папку — создает в папке с выбранными файлами папку "unpacked", и извлекает все текстуры туда, при этом, извлечённые текстуры из последующих файлов после первого будут переименованы по инкременту
Например, если в папке "unpacked" уже существует файл "file_0001.pvr", т.к. он был извлечен из первого файла, извлеченный файл "file_0001.pvr" из второго файла будет переименован в "file_0002.pvr", а затем помещен в папку "unpacked", и т.д.
- Извлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку
- И была отмечена галочка "Выбрать папку для извлечения":
- Извлечь все в одну папку — извлекает все текстуры в выбранную папку
- Извлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку в выбранной папке
RE: GUI/Shell for Universal PVR Extractor/Patcher v1.3 by SWAT - P@S@f - 27.08.2011 23:59
Обновил! Пока в тестовом режиме поддерживается патчинг (перепаковка) текстур. Вызывается ключом "-p".
Подробности в первом посте.
|