Краткий гайд по созданию структур для датедитора. Здесь рассмотрено общее построение структуры, её переменные и функции (наиболее используемые). Создание и построение структуры будет рассматриваться для файлов из клиента, поскольку именно в этих файлах используется наибольшее количество возможностей и типов данных.
Общая структура.
[Маска, по которой проходит поиск соответствующего файла для структуры]
[Структура первого уровня, которая содержит начальные данные по деревьям леса (количество блоков, строк и общий размер одного блока) и является родителем для структур третьего уровня]
[Структура второго уровня, которая отображает данные и их тип, что находятся в каждом блоке]
Пример:
Код:
[filemask="example.dat"] //указывает, что структура создана и используется для файла example.dat
struct ExampleFile //структруа первого уровня
{
u32 exampleblock;
u32 examplecolumn;
u32 examplesize;
child ExampleBlock [count=exampleblock]; // указывается, что есть дочерняя структура с названием ExampleBlock
}
struct ExampleBlock [preload=1] //структура второго уровня, в которой отображаются данные по каждому блоку
{
u32;
u32;
}
Список типов переменных, функции и общий синтаксис.
u32 - содержит только положительные десятичные значения. 4 байта.
i32 - может содержать как положительные так и отрицательные значения. 4 байта.
x32 - содержит hex значение. 4 байта.
u16 - содержит только положительные десятичные значения. 2 байта.
i16 - может содержать как положительные так и отрицательные значения. 2 байта.
x16 - содержит hex значение. 2 байта.
u8 - содержит только положительные десятичные значения. 1 байт.
i8 - может содержать как положительные так и отрицательные значения. 1 байт.
x8 - содержит hex значение. 1 байт.
float - содержит значения с плавающей точкой
str ( или cstr) [len=] - строка в ASCII кодировке
wstr [len=] - строка в Unicode кодировке
seek ( ) - пропуск определённого количества байт. В скобках указывается или количество байт, или формула, по которой это количество высчитывается.
repeat RepeatNum { } - повторяет написанные в фигурных скобках поля то количество раз, которое необходимо. RepeatNum - количество повторений
Синтаксис:
Код:
u32 Переменная; // Переменная - любое сочетании букв, в котором будут хранится данные строки
wstr [len=8] Переменная; // len=8 указывает, что поле занимает 8 байт. Может содержать любое число
Атрибуты.
Все атрибуты для каждого поля задаются в квадратных скобках [], через запятую
[filemask=" "] - задаётся маска, по которой ищется файл
hidden - прячет структуру или поле. Может принимать значения 0 и 1
preload - загрузка дерева структуры при открытии файла. Может принимать значения 0 и 1
tag="" - можно задать название строки
readonly - делает строку доступной только для просмотра, не меняя её типа. Может принимать значения 0 и 1
blob [len= ] - делает доступным просмотр hex кода без возможности редактирования. Обязательно указывать длину поля.
count= Переменная - задаёт количество, взяв его из указанной переменной. Актуально для указания количества блоков в структуре.
group="" - задаёт название группы для диапазона блоков в пределах одной структуры
offset - задаёт количество байт, которые пропускаются перед структурой или блоком
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Чтобы его прочитать, вы должны заработать сообщения. Как это сделать бесплатно, описано в правилах форума. Как купить доступ, описано в Платных услугах.
Последний раз редактировалось wodewill; 20.07.2009 в 13:28.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
такой вопрос по готовой клиентской структуре item.edf (взято с местного форума)
идем значит в оружку, там видим ПТ(1байт), дальше 4 байта хз чего, и дальше интересует вот эти 4 байта, в структуре оружия они идут неизвестными по 1 байту, дальще объединяем их в u32(4 байта); тут надо выставить такое значение, в hex - 00.00.ff.ff т.е. в dec это будет "4294901760", но пытаясь такое выставить выскакивает error "Invalid Value:Invalid integernumber 4294901760". Может кто сразу написать "готовое решение" для вставки "подобных чисел"?! я нуб нубом в программировании