Здравствуйте, гость ( Вход | Регистрация )

> Tiledata
Александр Needle™
сообщение 22.10.2017, 0:59
Сообщение #1


********

Mammy's hero
Сообщений: 1.236
Регистрация: 26.5.2009
Группа: Пользователи
Наличность: 0
Из: Украина , Одесса
Пользователь №: 11.891
Возраст: 33



del
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Frog
сообщение 24.10.2017, 21:14
Сообщение #2


****

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 - судя по коду клиента - ИД источника света, но по факту пока не сходится, может быть еще нужно пошаманить с этим значением.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Александр 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
StaticZ   По полям тайлдаты тут кое-что есть, но не все пол...   24.10.2017, 21:37
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

 

- Текстовая версия | Версия для КПК Сейчас: 11.7.2025, 10:21
Designed by Nickostyle