Цитата(HikeR @ 01.04.2010, 03:51)
а вобще получается, что конфиги у нас открытые, а скрипты компилированные, и все заявления разрабов что они использовали Lua только при разработке (мол движок с Lua-скриптами будет сильно жручий и неподъемный) - мягко говоря неправда.
скриптов в ресурсах по-моему вообще нет, так что слова "про ЛУА только для разработки" наоборот похожи на правду
Формат scripts.bin простой. В нем последовательно идут чанки - файлы конфигов. Ид чанка - это CRC32 от имени файла конфига
Внутри чанка первый байт - аттрибуты архива, битовое поле.
В scripts.bin встречаются следующие маски:
enum
{
ATTR_EDITOR = 1,///значит что в конфиге будут указываться название и тип параметров
ATTR_UNKNOWN = 2,///встречается вроде только в одном конфиге language_type.bin
ATTR_DICTIONARY = 4,///Строки вынесены в отдельный словарь и в конфиге вместо строки указывается индекс строки в словаре
///в конфиге тогда создаются 2 чанка: чанк 1 - в нем конфиг, чанк 2 - словарь
///формат чанка 2: количество строк в словаре, потом сами строчки
};
Большинство файлов имеет аттрибуты ATTR_EDITOR | ATTR_DICTIONARY. Они и лежат разобранные в архиве
в конфигах с этими аттрибутами последовательно уложены структуры:
struct
{
int idxName;//индекс названия параметра
int idxType;//индекс названия типа
//значение параметра - зависит от типа
}
Также иногда встречаются секции. Их я определял по тому что у очередного поля индекс названия выходил за границы словаря. Тогда считал это секцией. Секции представлены ввиде чанков, внутри которых уложены параметры. Ид чанка - CRC32 от имени секции. в начале секции один байт - аттрибуты
ну и кстати
есть разобранный textures.bin