| P@S@f   Пользователь
 
   
   Сообщений: 94
 Зарегистрирован: 23.01.2011
 Рейтинг: 1
 Сказал спасибо: 4Поблагодарили 5 раз(а) в 5 сообщ.
 
 | 
			| GUI/Shell for Universal PVR Extractor/Patcher v1.3 by SWAT 
 
				Написал на скорую руку под свои нужды на AutoIt простенький скрипт, который позволяет обрабатывать Universal PVR Extractor'ом сразу несколько файлов пакетами.ВНИМАНИЕ! В папку с программой необходимо поместить сам Universal PVR Extractor/Patcher v1.3, который можно скачать здесь: http://www.dc-swat.ru/download/pc/res_ed...by_SWAT.7z 
Перепаковка (патчинг) текстур пока в тестовом режиме. Для того, чтобы запустить оболочку в режиме Patcher, необходимо запустить исполняемый файл с ключом "-p" , для этого необходимо либо прописать в командной строке  
Код:
 "UPVREP by SWAT.exe" -p
 
 либо создать ярлык для файла "UPVREP by SWAT.exe" и в его свойствах, в поле "Объект", в самый конец дописать Скачать: 
http://www.mediafire.com/?sxqpwp462ck72dg
Инструкция: Цитата:Без ключа "-p":Исходный код (на AutoIt):
 - Если был выбран один файл:
 
- И была отмечена галочка "Выбрать папку для извлечения":Извлечь в ту же папку — извлекает текстуры в ту же папку, в которой находится файл из которого извлекаются текстурыИзвлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в папке с этим файлом
 
Извлечь в ту же папку — извлекает текстуры прямо в выбранную папкуИзвлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в выбранной папке
 - Если было выбрано несколько файлов:
 
Например, если в папке "unpacked" уже существует файл "file_0001.pvr", т.к. он был извлечен из первого файла, извлеченный файл "file_0001.pvr" из второго файла будет переименован в "file_0002.pvr", а затем помещен в папку "unpacked", и т.д.Извлечь все в одну папку — создает в папке с выбранными файлами папку "unpacked", и извлекает все текстуры туда, при этом, извлечённые текстуры из последующих файлов после первого будут переименованы по инкременту 
- И была отмечена галочка "Выбрать папку для извлечения":Извлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку 
Извлечь все в одну папку — извлекает все текстуры в выбранную папкуИзвлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку в выбранной папке С ключом "-p":
 
 
- Если была отмечена галочка "Выбрать папку извлечения":В той же папке (только для одного файла) — патчит выбранный файл, текстуры которого и файл "offset.txt", находятся в одной папке с нимВ папке с именем файла — патчит выбранный файл(ы), файл "offset.txt" и текстуры которого, находятся в папке с именем этого файла
 
В той же папке (только для одного файла) — патчит выбранный файл, текстуры которого и файл "offset.txt", находятся в выбранной папкеВ папке с именем файла — патчит выбранный файл(ы), файл "offset.txt" и текстуры которого, находятся в подпапке выбранной папки с именем этого файла
 
Код:
 #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
				
(Последний раз сообщение было отредактировано 03.12.2012 в 05:05, отредактировал пользователь P@S@f.)
 |  |