Уроки моддинга
Основной раздел
Search…
⌃K
Links

00051. Работа с HEX. HEX-буфер

Работа с HEX. HEX-буфер|В этом уроке мы познакомимся с одной возможностью блока HEX-END - буффером данных.|wmysterio|||||Здравствуйте, друзья! Очень давно я планировал сделать урок по HEX, но никак руки не доходили. Я не знаю всех возможможностей этого блока, но использовать его как буфер я умею.
Давайте определим понятие "Буфер", так как не все понимают что это такое. Я находил в интернете значение слова "Buffer", но все они такто туманно описывают это слово. Что же оно значит с точки зрения программирования ( скриптинга ) ? Если говорить простым языком, буфер - это произвольный набор данных, который имеет свою структуру.
Сами структуры Вы могли наблюдать в уроках о выделении памяти и форматированном считывании с файла. В первом случае у нас была простая структура - набор актёров. Во втором ( последний пример ) : цепочка данных с целых и дробных чисел.
Как видим, структуру определяет разработчик, в зависимости от потребности. Но если в ситуации с файлами мы могли наблюдать данные в явном виде, то с выделением памяти всё выглядело более абстрактно. HEX-буфер в этой ситуации является гибридом - данные "вшиваются" в скрипт в явном виде, но дальнейшая работа переходит в абстрактную, так как мы не будем знать какие там данные будут находится в процессе записи.
Для того, чтобы работать с буфером, нужно научится его создавать. Для этого нужно точно знать какие данные он будет хранить. Пусть это будут актёры, как в ситуации с выделением памяти. Узнаём размер ( в байтах ) одной ячейки этой структуры, после чего узнаём максимальное количество элементов такой структуры. Табличка с размерами приведена ниже:
Тип данных
Размеры ( байт )
float
4
int
1, 2, 3 или 4
sString
8
vString
16
Actor, Car, Objet и т.п.
4
× Примечание:** Актёры, транспорт и подобные сущности записываются как целые числа20 * 4 = 80 байт
handle, model, x, y, z 4+4+4+4+4=20 байт5*20=100 байт
8+16=24 байта
× **ВАЖНО:** HEX-буфер временно сохраняет данные. Другими словами после перезагрузки игры данные возвращаются в изначальный вид.