|
Tiledata |
|
|
|
|
Ответов
Frog |
24.10.2017, 21:14
|
Apprentice
Сообщений: 266
Регистрация: 6.9.2005 Группа: Пользователи Наличность: 0
Пользователь №: 4.172
Возраст: 25
|
По полям тайлдаты тут кое-что есть, но не все поля на 100% изучены. Брал напрямую из клиента 203, в 6ххх и может даже 7ххх проверял - кроме размера поля Flags ничего не изменилось. Подкреплю кусочком псевдокода: Код char LoadTiledata() { FILE *file; // esi@1 char result; // al@2 char landIndex; // bl@3 signed int landOffset; // edi@3 char statiscIndex; // bl@7 signed int staticsOffset; // edi@7
file = OpenFile(aTiledata_mul, g_Text_rb); if ( file ) { landIndex = 0; landOffset = 0; do { if ( !(landIndex & 0x1F) ) SeekFile(file, 4, 1); ReadFileData(&g_LandTiledata[landOffset], 4u, 1u, file); ReadFileData(&g_LandTiledata[landOffset].TextureID, 2u, 1u, file); ReadFileData(g_LandTiledata[landOffset].Name, 20u, 1u, file); ++landOffset; ++landIndex; } while ( landOffset < 0x4000 ); statiscIndex = 0; staticsOffset = 0; do { if ( !(statiscIndex & 0x1F) ) SeekFile(file, 4, 1); ReadFileData(&g_StaticTiledata[staticsOffset], 4u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Weight, 1u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].QualityOrLayer, 1u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Count, 4u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].AnimID, 2u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Hue, 2u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].LightIndex, 2u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Height, 1u, 1u, file); ReadFileData(g_StaticTiledata[staticsOffset].Name, 20u, 1u, file); ++staticsOffset; ++statiscIndex; } while ( staticsOffset < 0x4000 ); result = FileManager__CloseFile(file); } else { result = TraceUOReportError(aCobjectmanag_0, aTiledata_mul); } return result; } И чуть подробнее о некоторых полях: Weight - используется для определения статуса Locked предметов, на уровне тайлдаты и при просчете шагаCount, Hue - предположительно, для стандартного количества и цвета (если не задан) для компонент мульти. На 100% не уверен, но использование только в конструкторе объекта статики (в клиенте конечно же). LightIndex - судя по коду клиента - ИД источника света, но по факту пока не сходится, может быть еще нужно пошаманить с этим значением.
--------------------
|
|
|
|
StaticZ |
24.10.2017, 21:37
|
Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009 Группа: Пользователи Наличность: 0 Из: РФ, Москва
Пользователь №: 11.948
|
Цитата(Frog @ 24.10.2017, 21:14) По полям тайлдаты тут кое-что есть, но не все поля на 100% изучены. Брал напрямую из клиента 203, в 6ххх и может даже 7ххх проверял - кроме размера поля Flags ничего не изменилось. Подкреплю кусочком псевдокода: Код char LoadTiledata() { FILE *file; // esi@1 char result; // al@2 char landIndex; // bl@3 signed int landOffset; // edi@3 char statiscIndex; // bl@7 signed int staticsOffset; // edi@7
file = OpenFile(aTiledata_mul, g_Text_rb); if ( file ) { landIndex = 0; landOffset = 0; do { if ( !(landIndex & 0x1F) ) SeekFile(file, 4, 1); ReadFileData(&g_LandTiledata[landOffset], 4u, 1u, file); ReadFileData(&g_LandTiledata[landOffset].TextureID, 2u, 1u, file); ReadFileData(g_LandTiledata[landOffset].Name, 20u, 1u, file); ++landOffset; ++landIndex; } while ( landOffset < 0x4000 ); statiscIndex = 0; staticsOffset = 0; do { if ( !(statiscIndex & 0x1F) ) SeekFile(file, 4, 1); ReadFileData(&g_StaticTiledata[staticsOffset], 4u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Weight, 1u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].QualityOrLayer, 1u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Count, 4u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].AnimID, 2u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Hue, 2u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].LightIndex, 2u, 1u, file); ReadFileData(&g_StaticTiledata[staticsOffset].Height, 1u, 1u, file); ReadFileData(g_StaticTiledata[staticsOffset].Name, 20u, 1u, file); ++staticsOffset; ++statiscIndex; } while ( staticsOffset < 0x4000 ); result = FileManager__CloseFile(file); } else { result = TraceUOReportError(aCobjectmanag_0, aTiledata_mul); } return result; } И чуть подробнее о некоторых полях: Weight - используется для определения статуса Locked предметов, на уровне тайлдаты и при просчете шагаCount, Hue - предположительно, для стандартного количества и цвета (если не задан) для компонент мульти. На 100% не уверен, но использование только в конструкторе объекта статики (в клиенте конечно же). LightIndex - судя по коду клиента - ИД источника света, но по факту пока не сходится, может быть еще нужно пошаманить с этим значением. Ну я ведь о том же самом и говорю, а теперь сопоставим приведенные выше названия с названиями представленными в фидлере на основании их смещений и получим показательную картину: Weight -> Weight QualityOrLayer -> Quality Count -> Miscdata | (Unkn1 << 8) | (Quantity << 16) AnimID -> Animation Hue -> Unk2 | (Hue << 8) LightIndex -> StackingOff | (Value << 8) Height -> Height Большой вопрос, кто и каким образом сочинял названия полей в обоих случаях, но как видно названия первого варианта часто приведены вообще не в попад, в то время как во втором лучше, но при этом часть названий была заимствована из первого и разбавлена львиной долей собственного бреда.
--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.Game isn't a dream, it is the reality, reality which is coming while we dream...
|
|
|
|
Сообщений в этой теме
Александр Needle™ Tiledata 22.10.2017, 0:59 Aimed
Сообщений ни от кого не поступило, нашел информац... 23.10.2017, 19:36 Александр Needle™
Это все в фиддлере уже сто лет как отображается, ... 23.10.2017, 19:42 Sirocco Зачем ты прокомментировал его сообщение, тем более... 23.10.2017, 19:39 Aimed
Зачем ты прокомментировал его сообщение, тем боле... 23.10.2017, 20:32 Александр Needle™
Притом самое смешное, что реально толку от такого... 23.10.2017, 22:03 Aimed
Это не перевод, взял из старой статьи.
Практическ... 23.10.2017, 23:08 Александр Needle™
А где ты это спрашивал то? Я не могу найти эту те... 23.10.2017, 23:19 StaticZ На форуме конечно крайне скудная возможность по оф... 24.10.2017, 15:15 Sirocco Name Anim Weight StackOff - это не относится к ... 24.10.2017, 11:10 Александр Needle™ del 24.10.2017, 16:17 StaticZ Тут скорей спрос с фидлера, например в клиенте фла... 24.10.2017, 18:00 Александр Needle™ del 24.10.2017, 18:28 StaticZ Так что если рассматривать клиент в этот период, т... 24.10.2017, 19:59 Sirocco > Height не делает предмет непроходимым , это д... 24.10.2017, 18:52 Александр Needle™
> Height не делает предмет непроходимым , это ... 24.10.2017, 23:55 Sirocco
Попробовал, не проходит.
Вот ты сам написал, ... 25.10.2017, 8:20 Александр Needle™
Вот ты сам написал, что обсуждаешь клиент - так и... 25.10.2017, 11:49 Sirocco Ну да конечно... я поменяю тайлдату под Wall Stone... 25.10.2017, 12:13 Александр Needle™ del 25.10.2017, 12:27 Sirocco Вот кстати даже сервер использует этот параметр дл... 25.10.2017, 12:44
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|