Sanny Builder — различия между версиями
Материал из GTAModding.ru
Dageron (обсуждение | вклад) |
Dageron (обсуждение | вклад) |
||
Строка 456: | Строка 456: | ||
!Значение | !Значение | ||
|- | |- | ||
− | |ENTER | + | |'''ENTER''' |
|По выделенному опкоду - скопировать в буфер. | |По выделенному опкоду - скопировать в буфер. | ||
|- | |- | ||
− | |SHIFT + ENTER | + | |'''SHIFT + ENTER''' |
|По выделенному опкоду - добавить его к содержимому буфера. | |По выделенному опкоду - добавить его к содержимому буфера. | ||
|- | |- | ||
− | |SCROLL LOCK | + | |'''SCROLL LOCK''' |
|(при параметре extra_search=1) включить/отключить поиск | |(при параметре extra_search=1) включить/отключить поиск | ||
|- | |- | ||
− | |F1 | + | |'''F1''' |
|Вызвать справку по поиску | |Вызвать справку по поиску | ||
|- | |- | ||
− | |F2 | + | |'''F2''' |
|Скопировать все опкоды в списке в буфер | |Скопировать все опкоды в списке в буфер | ||
|- | |- | ||
− | |F3 | + | |'''F3''' |
|Сортировка по опкодам | |Сортировка по опкодам | ||
|- | |- | ||
− | |F4 | + | |'''F4''' |
|Сортировка по словам | |Сортировка по словам | ||
|- | |- | ||
− | |F11 | + | |'''F11''' |
|Очистить строку поиска, показать все опкоды | |Очистить строку поиска, показать все опкоды | ||
|- | |- | ||
− | |ESC | + | |'''ESC''' |
|Выход | |Выход | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | '''Операторы поиска:''' | ||
+ | |||
+ | [U]ЛОГИЧЕСКИЕ ОПЕРАТОРЫ[/U] | ||
+ | |||
+ | Оператор '''[color=red]И (AND)[/color]''' | ||
+ | В программе эту функцию выполняет одиночный пробел между словами. | ||
+ | |||
+ | Пример: @ player | ||
+ | |||
+ | Будут показаны опкоды, где встречаются И символ @, И слово player | ||
+ | |||
+ | Оператор '''[color=red]ИЛИ (OR)[/color]''' | ||
+ | В программе эту функцию выполняет символ | между словами. | ||
+ | |||
+ | Пример: @ | player | ||
+ | Будут показаны опкоды, где встречаются ИЛИ символ @, ИЛИ слово player | ||
+ | |||
+ | Если поставить | первым элементом, программа будет связывать все последующие слова оператором OR. | ||
+ | |||
+ | Пример: | actor player car | ||
+ | Будут показаны опкоды, где есть хотя бы одно из этих слов. | ||
+ | |||
+ | Оператор '''[color=red]НЕТ (NOT)[/color]''' | ||
+ | Для всех случаев это два минуса перед исключаемым словом -- | ||
+ | |||
+ | Пример: car --car2 | ||
+ | Будут показаны опкоды, где ЕСТЬ слово car И НЕТ слова car2 | ||
+ | |||
+ | Для слов и символов $ и @ можно использовать один минус. Это сделано, чтобы не перепутать исключение с поиском отрицательных чисел. | ||
+ | |||
+ | Пример: -10 -@ -car --3 | ||
+ | |||
+ | Будут показаны опкоды, где ЕСТЬ число -10 И НЕТ символа @, слова car и цифры 3. | ||
+ | |||
+ | |||
+ | |||
Версия 09:40, 1 апреля 2009
Шаблон:Карточка программы Sanny Builder – это быстрая и мощная программа для редактирования скриптов трехмерной серии GTA (GTA3, VC, SA; частично LCS и VCS). Включает в себя дизассемблер, позволяющий пользователю быстро декомпилировать main.scm с игровыми скриптами. Автор и разработчик Sanny Builder – Seemann.
Содержание |
Основные возможности
- Поддержка всех игр трехмерной серии GTA, кроме GTA 4. Позволяет декомпилировать и компилировать скрипты для GTA3, GTA VC и GTA SA. Скриптовый формат GTA LCS и GTA VCS поддерживается лишь частично: Sanny Builder поможет только декомпилировать скрипты этих игр;
- В Sanny Builder встроен самый быстрый компилятор среди аналогичных программ;
- Представляет собой удобную интегрированную среду разработки с подсветкой кода;
- Содержит детальную справку, включающую описания и пути разрешения различных run-time ошибок.
Игра | Декомпиляция | Компиляция |
---|---|---|
GTA III | да | да |
GTA VC | да | да |
GTA SA | да | да |
GTA LCS | да | нет |
GTA VCS | да | нет |
Опции программы
Опции программы вызываются нажатием кнопки F10. Вы увидите окно, поделенное на 4 части, каждая из которых содержит определенный вид настроек. По умолчанию открывается страница общих настроек.
Общие настройки
Данная страница содержит в основном настройки (де)компилятора.
Работа программы требует использования определенных файлов игры, поэтому вы должны указать корректный путь к папке, куда была установлена игра. Вы можете ввести адрес вручную или выбрать папку через диалог, появляющийся при нажатии кнопки.
Для корректной работы программы ей требуется INI-файл
, со списком опкодов. В данном поле вы можете указать путь к данному файлу. При нажатии на кнопку появится диалог выбора файла.
В правой части находится список доступных языков для интерфейса программы. Сами переводы находится в папке lang
. Для установки нового языка интерфейса, выберите его в списке.
Информация о создании новых переводов содержится в файле How to translate.txt
в папке lang
.
Для удобства работы с SCM-файлами вы можете ассоциировать их с Sanny Builder’ом.
Когда галочка выбрана, в реестр Windows будут внесены необходимые изменения, и теперь при клике по файлу с расширением .scm будет автоматически запускаться декомпилятор SB. Для того чтобы прекратить ассоциацию, уберите галочку.
Общий список опций (де)компилятора. В левом столбце находятся опции, сопутствующие процессу работы программы, в правом - конкретные варианты (де)компиляции.
[U]Перезапись выходного файла[/U]
При выборе данной опции декомпилятор будет записывать данные в выходной файл, независимо от того, существует он уже или нет. Если опция не выбрана, то при условии существования выходного текстового с таким именем, декомпилятор не будет его перезаписывать, а создаст новый файл, добавив к нему индекс (например, main[0].txt
).
[U]Показывать прогресс[/U]
При выборе данной опции в процессе работы (де)компилятора в статусбаре будет отображаться текущий прогресс. В противном случае в статусбаре будут слова «Пожалуйста ждите…». Показ прогресса немного замедляет процесс (де)компиляции.
[U]Показывать отчет[/U]
При выборе данной опции Sanny Builder будет показывать различную информацию об итогах проделанной декомпиляции либо компиляции.
[U]Показывать предупреждение[/U]
Данная опция имеет значение только при компиляции скриптов San Andreas. Если игра запущена ко время компиляции, то файл script.img
, содержащий часть скриптов не сможет быть перезаписан, поскольку игра использует данный файл. Компилятор покажет об этом предупреждение. Вы можете отключить его показ, выбрав данную опцию.
[U]Ручной выбор IMG-файла[/U]
При декомпиляции программа ищет файл script.img
, содержащий часть игровых скриптов. Если файл не будет найден в одной папке с .scm-файлом или в папке игры, то будет показана ошибка. Однако при выборе данной опции вы сможете указать IMG-файл вручную.
[U]Быстрая загрузка игры[/U]
Sanny Builder способен пропускать начальные заставки при запуске San Andreas (F8). Если данная возможность вызывает ошибку в вашей версии игры, отключите данную опцию.
[U]Проверка условий[/U]
Данная опция имеет 2 значения. При декомпиляции с включенной данной опцией программа будет заменять количество условий в опкоде IF на слова AND и OR. При компиляции программа будет способна компилировать конструкции IF..END, а также определять параметр для опкода IF в условиях со словами AND и OR.
[U]Проверка локальных переменных[/U]
Количество используемых локальных переменных имеет свои лимиты. При включении данной опции компилятор будет проверять правильность их использования.
[U]Использовать опкоды[/U]
Данная опция превращает декомпилятор Sanny Builder из высокоуровневого в низкоуровневый и наоборот. При ее выключении декомпилятор будет использовать доступные классы и кейворды, заменяя ими опкоды. Также не будут записываться опкоды для некоторых простых математических выражений. При включении данной опции все опкоды будут записываться в исходник.
[U]Заменять номера миссий[/U]
При включении данной опции декомпилятор будет заменять номера миссий в опкоде start_mission 0 на ее имя. Например, start_mission INITIAL. Имя миссии определяется по имени метки в заголовке файла. Его также можно использовать для быстрого перехода к телу миссии.
[U]Вставлять оригинальные имена миссий[/U]
Когда данная опция включена, декомпилятор добавляет заранее определенные имена миссий как комментарии к опкоду start_mission, а также к строке DEFINE MISSION в заголовке файла.
[U]Добавлять дополнительную информацию в SCM.[/U]
При включении данной опции компилятор будет записывать определенную информацию в конец файла main.scm
. Эта информация будет потом использоваться при декомпиляции файла для максимального соответствия оригинальному скомпилированному файлу. В конец main.scm
записываются позиции конструкций hex..end, имена использованных глобальных переменных и т. п. Обратите внимание, что файл, скомпилированный таким образом нельзя будет декомпилировать в старых версиях SB (кроме случая включения опции ignore_unknown).
См. так же "Кодинг в Sanny Builder 3".
Форматирование
На данной вкладке вы можете настроить имена исходника, форматы меток, регистры идентификаторов.
Здесь вы можете выбрать как будут называться файлы, получаемые после (де)компиляции. В верхнем поле вы указываете путь и имя текстового файла, в который записывается содержимое декомпилируемого файла. В нижних двух – пути и имена бинарных файлов SCM и IMG, содержащих скомпилированные скрипты. Все поля имеют общий синтаксис. Специальными словами обозначатся часть имени декомпилируемого SCM-файла (для верхнего поля), либо исходного текстового файла (для нижних двух полей).
$dir – путь к указанному файлу
$name – имя файла
$ext – его расширение
$game – папка игры // game path
$sb – папка Sanny Builder // Sanny Builder path
Например, если вы декомпилируете файл C:\MyDir\main.scm, то
$dir = C:\MyDir;
$name = main
$ext - .scm
Тогда при задании маски $dir\$name.txt
декомпилированный исходник получит имя C:\MyDir\main.txt
(это будет отображаться в строке под одним из 3-х полей).
В этой части страницы вы можете выбрать как будут именоваться метки при декомпиляции scm-файла.
Смещение от начала файла: все метки будут иметь числовое имя, например [color=green]@12345[/color]. Цифра после знака @ будет означать позицию данной метки в декомпилируемом файле.
Имя потока+смещение от его начала: все метки будут иметь имя потока, в котором они находятся (определяется по опкоду name_thread) плюс дополнительно смещение от начала потока. Например, [color=green]@MAIN_12[/color]
Имя потока+смещение от начала файла: данный вариант похож на предыдущий, только после имени потока в метке будет записано ее позиция в файле (как в первом случае). Например, [color=green]@HELP_34567[/color].
Если вы хотите, чтобы смещения в именах меток были указаны в 16-чном формате, поставьте галочку в соответствующем поле внизу. По умолчанию смещения записываются в десятеричном формате.
Здесь вы можете выбрать будет ли декомпилятор использовать имена отдельных элементов скрипта, определенные пользователем в соответствующих файлах.
Имена меток содержатся в файле CustomLabels.ini
в папке data\<игра>
. Файл представляет собой список имен меток и их смещений от начала файла. Если данная галочка поставлена, декомпилятор, в случае соответствия позиции метки в файле одной из позиций в данном списке, назовет метку как указано в списке. Содержимое файла CustomLabels.ini
содержит смещения для оригинального файла main.scm
версии 1.0
Имена переменных содержатся в файле CustomVariables.ini
для каждой игры. Файл представляет собой список оригинальных числовых имен переменных (DMA) и их текстовые эквиваленты. При включении данной опции декомпилятор будет называть переменные указанными именами.
Имена массивов содержатся в файле CustomArrays.ini
. Формат файла следующий: первым числом на строке стоит оригинальное имя переменной – начало массива, затем через пробел количество элементов в массиве – размер, затем текстовое имя. Данная опция предназначена для того, чтобы декомпилятор заменял некоторые идущие подряд глобальные переменные на индексированные переменные.
Эта опция имеет 2 назначения. Декомпилятор, используя данную опцию, будет именовать глобальные переменные, метки, массивы в указанном регистре букв. Компилятор будет записывать строковые значения в SCM также в указанном регистре.
Редактор
На данной странице вы можете изменить настройки IDE
Данные списки устанавливают цвета различных элементов окна редактора. Активная строка – цвет строки, на которой стоит курсор. Отступ – цвет левого края редактора. Поле редактора – фон текста в редакторе.
Значение глубины просмотра используется при построении списка миссий, меток, переменных и т.п. по нажатию Ctrl+[space]
. Число означает количество просматриваемых строк вверх и вниз от той строки, где был вызван список. Если вы поставите число 0, программа будет искать указанные элементы по всему скрипту.
Также вы можете регулировать автоматическое появление списка. При поставленной галочке, список будет автоматически появляться после набора символа @, $, # и т.д.
Здесь представлены основные опции редактора.
Показывать главную панель – вы можете показать/спрятать панель с кнопками в главном окне редактора.
Показывать информацию об опкодах – при выборе данной опции редактор будет отображать с статусбаре отдельную информацию об опкоде на текущей строке: число параметров, имя опкода в классе, номер модели, тип переменной и т. д.
Показывать номера строк – в левом отступе появятся номера строк.
Показывать границу отступа – при выборе этой опции левый отступ будет ограничен с правой стороны. Отключите данную опцию, если вы хотите визуально увеличить пространство редактора.
Открывать при запуске последний файл – при выборе данной опции программа при запуске будет открывать последний закрытый файл, если таковой имеется.
Открывать все закрытые файлы – вы можете открывать разом все закрытые файлы при запуске. Данная опция может быть выбрана только при включенной опции Открывать при запуске последний файл.
Подтверждать выход – при закрытии программы вы должны будете подтвердить выход. Полезно для предупреждения случайного закрытия программы.
Здесь вы можете выбрать шрифт и его настройки для редактора. Sanny Builder поддерживает только пропорциональные шрифты. Строка AaBbCcDd
отражает текущие настройки.
Подсветка
На данной вкладке вы можете выбрать варианты подсветки синтаксиса в окне редактора. Каждый элемент кода имеет 3 свойства: Цвет, Фон, Стиль.
Доступны 3 элемента стиля: B – полужирный, I – курсив, U – [U]подчеркнутый[/U].
Выбранный вариант подсветки используется также при сохранении кода в формат RTF или HTML.
Элементы кода:
Комментарии – текст, находящийся за двойным слешем [color-navy]//[/color] либо между фигурными скобками [color-navy]{}[/color].
Метки – идентификаторы, начинающиеся с символа [color=green]@[/color].
Переменные - – идентификаторы, начинающиеся с символа [color=blue]$[/color] (глобальные), а также заканчивающиеся символом [color=blue]@[/color] (локальные). Также к переменным приравнивается тип aDMA (начинается c [color=blue]&[/color]) и массивы.
Кейворды – специальные слова, записанные в файле keywords.ini
(общий для всех) и <codekeywords.txt (свой для каждой игры).
Числа – целые и дробные числа.
Строки – текст между символами [color=red]“…”[/color] и [color=red]‘…’[/color].
Модели - идентификаторы, начинающиеся с символа [color=brown]#[/color].
Классы – часть класса, идентификатор стоящий перед знаком точки.
Команды - часть класса, идентификатор стоящий после знака точки.
Директивы – идентификаторы, заключенные в фигурные скобки и начинающиеся с [color=green]$[/color]
Консоль
Назначение консоли в Sanny Builder’е – переключение особых опций программы (в первую очередь (де)компилятора). Консоль вызывается нажатием Ctrl + ~
. В поле ввода внизу вы можете писать команды и параметры. После набора команды нажмите Enter. Результат работы будет отображаться в поле консоли.
Команды нечувствительны к регистру, поэтому вы можете набирать их в любом удобном регистре букв.
Список поддерживаемых команд:
help – при вводе команды help откроется окно справки о командах консоли.
clear – очищает поле консоли
list – команда list выводит в консоли список всех поддерживаемых команд.
Дополнительный параметр: list options – при наборе слов list options в консоли появится список всех возможных опций для переключения. См. команду toggle.
toggle – основная команда для переключения опций программы.
Дополнительный параметр: toggle <имя опции> [on/off] Список опций может меняться в разных версиях. Для получения всех возможных опций наберите list options.
После имени опции может стоять либо слово ON (тогда опция будет включена), либо слово OFF (опция будет выключена), либо ничего (тогда опция будет переключена на другое состояние – с ON на OFF или наоборот).
Игра | Декомпиляция | ||||||||
---|---|---|---|---|---|---|---|---|---|
toggle CODE_OFFSETS | при включении этой опции декомпилятор будет печатать оффсеты для каждого опкода. | ||||||||
toggle VAR_COUNTER | при включении данной опции после компиляции исходника в поле консоли будет выведен список глобальных переменных, которые использовались в коде только раз. Очень полезно при поиске ненужных переменных. | ||||||||
toggle IGNORE_UNKNOWN | при включении это опции декомпилятор будет пропускать весь неизвестный ему код. Это поможет декомпилировать поврежденные или защищенные scm-файлы. | ||||||||
toggle CONSTANT_INDEXES | декомпилятор будет записывать идущие подряд глобальные переменные как массив, используя числовые константы. Например
По умолчанию данная опция включена. | ||||||||
toggle SKIP_SCM_HEADER | Будет пропущено чтение заголовка scm-файла. Это поможет декомпилировать внешние скрипты из файла script.img Компилятор не будет писать заголовок для компилируемого файла.
Аналогом использования данной опции является директива $EXTERNAL. |
Эти опции могут быть переключены через меню на главной панели.
Вы также можете устанавливать все опции разом при запуске программы. Для этого используется ключ \debug. Параметром ключа является число, значения битов которого определяют включена опция или нет.
Для правильного указания параметра запустите Калькулятор Windows, переключите его сначала на инженерный, а затем на двоичный режим (F8). Напишите последовательность нулей и единиц, обозначающих состояние той или иной опции в соответствии с таблицей ниже. Счет идет справа налево.
Например, двоичное число 10 (или 2 в десятичном формате) выключит опцию code offsets и включит ignore_unknown. Таким образом при запуске Sanny Builder с ключом \debug=2 будет такой же эффект, как если бы активировали указанные опции через консоль.
# | Sanny Builder Option | # | Sanny Builder Option |
---|---|---|---|
0 | toggle code offsets | 16 | |
1 | toggle ignore_unknown | 17 | |
2 | toggle var_counter | 18 | |
3 | toggle constant_indexes | 19 | |
4 | toggle skip_scm_header | 20 | |
5 | 21 | ||
6 | 22 | ||
7 | 23 | ||
8 | 24 | ||
9 | 25 | ||
10 | 26 | ||
11 | 27 | ||
12 | 28 | ||
13 | 29 | ||
14 | 30 | ||
15 | 31 |
Горячие клавиши
Поиск опкодов
Вы можете вызвать программу OST
нажатием Ctrl+Alt+2
или через меню
Сервис->Инструменты->Поиск опкодов
.
Чтобы найти нужный опкод, впишите в верхнем поле слова, соответствующие ему, например 'actor car'
(без кавычек). В списке останутся команды, содержащие эти слова. Вписывайте уточняющие слова, пока нужный опкод не будет найден. При поиске можно пользоваться специальными операторами (подробнее о них ниже).
Также программа учитывает кол-во введенных одинаковых слов и ищет их в необходимом количестве. Т.е, если вы напишете три слова 'car'
, то программа будет искать опкоды, в которых именно три слова car
.
Вы можете регулировать задержку перед началом поиска. Если вы хотите найти длинное слово, например 'weapon'
, то лишний отсев, который происходит, пока вы пишете слово, может быть нежелателен. Чтобы увеличить или уменьшить задержку, откройте настроечный файл settings.ini
и измените значение параметра delay на нужное. Единица измерения - миллисекунда. По умолчанию задержка - 300 мс.
Есть также еще один вариант. Измените значение параметра extra_search на 1, и теперь, если SCROLL LOCK
будет включен, то поиск осуществляться не будет. Напишите нужное вам выражение, отключите SCROLL LOCK
, и поиск будет осуществлен.
Если при открытии окна поиска в редакторе был выделен участок строки, он будет автоматически вставлен в строку поиска.
Копирование:
После того, как вы нашли нужный вам опкод, выделите его в списке и нажмите ENTER
. Опкод будет записан в буфер. Если вы хотите добавить к нему еще один опкод, нажмите SHIFT+ENTER
. Тогда в буфере обмена будет уже два ваших опкода.
F2
- скопировать весь список целиком.
Горячие клавиши:
Клавиши | Значение |
---|---|
ENTER | По выделенному опкоду - скопировать в буфер. |
SHIFT + ENTER | По выделенному опкоду - добавить его к содержимому буфера. |
SCROLL LOCK | (при параметре extra_search=1) включить/отключить поиск |
F1 | Вызвать справку по поиску |
F2 | Скопировать все опкоды в списке в буфер |
F3 | Сортировка по опкодам |
F4 | Сортировка по словам |
F11 | Очистить строку поиска, показать все опкоды |
ESC | Выход |
Операторы поиска:
[U]ЛОГИЧЕСКИЕ ОПЕРАТОРЫ[/U]
Оператор [color=red]И (AND)[/color] В программе эту функцию выполняет одиночный пробел между словами.
Пример: @ player
Будут показаны опкоды, где встречаются И символ @, И слово player
Оператор [color=red]ИЛИ (OR)[/color] В программе эту функцию выполняет символ | между словами.
Пример: @ | player
Будут показаны опкоды, где встречаются ИЛИ символ @, ИЛИ слово player
Если поставить | первым элементом, программа будет связывать все последующие слова оператором OR.
Пример: | actor player car
Будут показаны опкоды, где есть хотя бы одно из этих слов.
Оператор [color=red]НЕТ (NOT)[/color] Для всех случаев это два минуса перед исключаемым словом --
Пример: car --car2
Будут показаны опкоды, где ЕСТЬ слово car И НЕТ слова car2
Для слов и символов $ и @ можно использовать один минус. Это сделано, чтобы не перепутать исключение с поиском отрицательных чисел.
Пример: -10 -@ -car --3
Будут показаны опкоды, где ЕСТЬ число -10 И НЕТ символа @, слова car и цифры 3.