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": 
 
- Если был выбран один файл:
- Извлечь в ту же папку — извлекает текстуры в ту же папку, в которой находится файл из которого извлекаются текстуры
 
- Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в папке с этим файлом
 
  
- И была отмечена галочка "Выбрать папку для извлечения":
- Извлечь в ту же папку — извлекает текстуры прямо в выбранную папку
 
- Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в выбранной папке
 
  
 
- Если было выбрано несколько файлов:
- Извлечь все в одну папку — создает в папке с выбранными файлами папку "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
  
			 
			
			
			
				
(Последний раз сообщение было отредактировано 03.12.2012 в 05:05, отредактировал пользователь P@S@f.)
 
				
			 
		 |  
	 
 |