HEX..END
Sanny Builder поддерживает запись произвольных значений в выходной файл без какой-либо обработки и проверки.
Используйте эту возможность только в том случае, если вы знаете, что делаете. Любые ошибки могут повредить файл и его невозможно будет прочитать в игре или в скриптовом редакторе.
Синтаксис
hex
<последовательность байтов>
end
последовательность байтов
- одна или несколько пар цифр в шестнадцатиричном формате. Каждая пара представляет собой один байт, который будет записан в файл. Все пробелы игнорируются. Если число символов в последовательности нечетное, к последнему значению слева дописывается 0
:
Эта последовательность является бинарным представлением команды 0004: $2 = 1
. Игра сможет прочитать его и установит значение переменной $2
в 1
.
В конструкции HEX..END
также можно использовать строковые литералы, метки, глобальные переменные, имена моделей. Они компилируются без предшествующего байта, указывающего на тип данных.
Это эквивалентно команде 0004: $PLAYER_CHAR = @get_offset
Строковые литералы, заключенные в двойные скобки, компилируются как последовательность символов:
Экранированные последовательности
В строках допускается использование следующих управляющих символов:
Имя | Последовательность | Вывод в файл |
пустой символ | \0 | 00 |
возврат на один шаг | \b | 08 |
табуляция | \t | 09 |
перевод каретки | \n | 0A |
возврат каретки | \r | 0D |
запись произвольного байта | \x |
|
запись произвольного символа | \ |
|
В файл будет записана последовательность байтов 00 08 09 0A 0D DD
.
В настоящее время несколько подряд идущих пробелов в строке конвертируются в один пробел. Например, строка "This is a string"
будет сконвертирована в "This is a string"
. Используйте символ \
чтобы добавить дополнительные пробелы в строку: "This \ \ \ is \ a \ \ \ \ string"
.
Ввод больших чисел
Для удобства записи больших чисел поставьте в начале знак &
. Число после знака &
может быть как положительным, так и отрицательным, в десятичном или шестнадцатиричном форматах.
В файл будет записана последовательность байтов E8 03 00 CB 5C FF
.
Повторение байтов
В случае, если один байт повторяется много раз, например, для создания пустого буфера, заполненного нулями, кол-во повторений можно задать, добавив (n)
после байта, где n
- это целое положительное число:
Это будет эквивалентно:
Повторения байтов можно использовать несколько раз в одном блоке, так же можно задать кол-во при помощи константы:
Добавление бинарных файлов
hex..end
позволяет использовать директиву {$INCLUDE}
для вставки содержимого бинарного файла в тело скрипта. Используется следующий синтаксис:
Путь к файлу определяется по правилам директивы {$INCLUDE}
.
Last updated