Создать ответ 
 
Рейтинг темы:
  • Голосов: 1 - Средняя оценка: 5
  • 1
  • 2
  • 3
  • 4
  • 5
GUI/Shell for Universal PVR Extractor/Patcher v1.3 by SWAT
Автор Сообщение
P@S@f Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 23.01.2011
Рейтинг: 1
Сказал спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщ.
Сообщение: #1
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" и в его свойствах, в поле "Объект", в самый конец дописать
Код:
-p

Скачать:

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.)
26.08.2011 15:13
Найти все сообщения Цитировать это сообщение
Lin Не на форуме
Продвинутый
***

Сообщений: 344
Зарегистрирован: 14.03.2009
Рейтинг: 1
Сказал спасибо: 3
Поблагодарили 10 раз(а) в 7 сообщ.
Сообщение: #2
RE: Shell for Universal PVR Extractor/Patcher v1.3 by SWAT
А наоборот напишешь оболочку?

Dreamcast torrent tracker - www.dc4you.ru
27.08.2011 06:56
Найти все сообщения Цитировать это сообщение
P@S@f Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 23.01.2011
Рейтинг: 1
Сказал спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщ.
Сообщение: #3
RE: Shell for Universal PVR Extractor/Patcher v1.3 by SWAT
Обновил!

Теперь после выбора файлов появляется окошко, которое предоставляет варианты:

- Если был выбран один файл:
  • Извлечь в ту же папку — извлекает текстуры в ту же папку, в которой находится файл из которого извлекаются текстуры
  • Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в папке с этим файлом
- И была отмечена галочка "Выбрать папку для извлечения":
  • Извлечь в ту же папку — извлекает текстуры прямо в выбранную папку
  • Извлечь в папку с именем файла — создает папку с названием файла, из которого извлекаются текстуры, в выбранной папке

- Если было выбрано несколько файлов:
  • Извлечь все в одну папку — создает в папке с выбранными файлами папку "unpacked", и извлекает все текстуры туда, при этом, извлечённые текстуры из последующих файлов после первого будут переименованы по инкременту
Например, если в папке "unpacked" уже существует файл "file_0001.pvr", т.к. он был извлечен из первого файла, извлеченный файл "file_0001.pvr" из второго файла будет переименован в "file_0002.pvr", а затем помещен в папку "unpacked", и т.д.
  • Извлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку
- И была отмечена галочка "Выбрать папку для извлечения":
  • Извлечь все в одну папку — извлекает все текстуры в выбранную папку
  • Извлечь в отдельные папки — извлекает текстуры из каждого файла в отдельную папку в выбранной папке
(Последний раз сообщение было отредактировано 27.08.2011 в 11:21, отредактировал пользователь P@S@f.)
27.08.2011 09:54
Найти все сообщения Цитировать это сообщение
P@S@f Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 23.01.2011
Рейтинг: 1
Сказал спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщ.
Сообщение: #4
RE: GUI/Shell for Universal PVR Extractor/Patcher v1.3 by SWAT
Обновил! Пока в тестовом режиме поддерживается патчинг (перепаковка) текстур. Вызывается ключом "-p".
Подробности в первом посте.
27.08.2011 23:59
Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  SH4 Disassemblers and Official bin utils Pack v1.0 by SWAT Renji-kun 13 42490 28.08.2013 02:57
Посл. сообщение: kof888
  sdfs lib by SWAT? alex 4 17067 19.07.2010 07:26
Посл. сообщение: SWAT
  swat помоги может быть будушему програмисту,pliz Guest 28 86040 28.03.2009 03:23
Посл. сообщение: Guest
  Swat Guest 4 16993 14.01.2006 17:01
Посл. сообщение: SWAT
  2 SWAT Guest 2 9966 17.06.2005 22:07
Посл. сообщение: SWAT

Переход:


Пользователи просматривают эту тему: 3 Гость(ей)