Тема: creaturecache.wdb
Показать сообщение отдельно
Старый 07.12.2013, 11:02   #2
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

получилось пока что следующее:
эта функция всего-то читает cшную строку без последнего символа (\0) по размеру считанному выше.
Код:
internal string ReadString2(int m_size)
{
    if (this.RemainigLength < m_size)
        throw new ArgumentOutOfRangeException("m_size");

    var size = m_size > 0 ? m_size - 1 : 0;
    var str = Encoding.UTF8.GetString(buffer, index, size);
    index += m_size;
    return str;
}
но пока что смущает этот кусок:
Код:
while ( 1 )
{
	v21 = *(_DWORD *)(v3 + 64);
	if ( v21 == -1 )
		v21 = *(_DWORD *)(v3 + 48);
	if ( a3 >= v21 )
		break;
	a2 = 0;
	CDataStore__GetInt32(v11, (int)&a2);
	v22 = sub_7DA455(v3 + 48, a3++);
	*(_DWORD *)v22 = a2;
}
на сколько мне понятно, тут считывается 4 байта до тех пор пока не наступит конец потока, но остаток не всегда кратное 4
Код:
0 1 4 5 8 12 16 20
__________________
Konctantin вне форума   Ответить с цитированием