Перейти к содержимому
Zone of Games Forum
Damin72

Проблема с запаковкой текста

Рекомендованные сообщения

Добрый вечер.
Имеется проблема с запаковкой текста в этот файл. Вытащить текст — легко. Обратно — уже вызывает вопросы.
Сам файл:
https://yadi.sk/d/CUMcRWxyNzQ0nw
Описание формата:

Скрытый текст

 

//------------------------------------------------
//--- 010 Editor v10.0.2 Binary Template
//
//      File: tuscrdata.bt
//   Authors: bqio
//   Version: 1.0
//   Purpose: 
//  Category: Text
// File Mask: tuscrdata.bin
//  ID Bytes: 
//   History: 
//------------------------------------------------

local int i;
local int j;
local int languageRelativePos;
local int tableRelativePos;

struct FILE {
  struct FILE_HEADER {
    uint numOfLanguages <name="Number of Languages">;
    struct LANGUAGE_PTRS {
      uint ptr <name="Pointer">;
      uint size <name="Size">;
    } LanguagePtrs [numOfLanguages] <name="Language Pointers">;
  } FileHeader <name="Header">;
  
  for (i = 0; i < FileHeader.numOfLanguages; i++) {
    FSeek(FileHeader.LanguagePtrs.ptr);
    languageRelativePos = FTell();
    
    struct LANGUAGE {
      struct LANGUAGE_HEADER {
        uint numOfTables <name="Number of Tables">;
        struct TABLE_PTRS {
          uint ptr <name="Pointer">;
          uint size <name="Size">;
        } TablePtrs [numOfTables] <name="Table Pointers">;
      } LanguageHeader <name="Header">;

      tableRelativePos = FTell();
            
      struct FIRST_TABLE {
        struct FIRST_TABLE_HEADER {
          uint magic <name="Magic">;
          ushort tableSize <name="Table Size">;
          ushort unk;
          ushort numOfMessages <name="Number of Messages">;
          ushort ptrSize <name="Pointer Size">;
          ushort headerSize <name="Header Size", comment="Maybe uint">;
          ushort unk;
          uint unk;
          uint unk;
          struct FIRST_TABLE_TEXT_PTRS {
            uint ptr <name="Pointer">;
            uint unk;
            uint unk;
            uint unk;
            uint unk;
          } FirstTableTextPtrs [numOfMessages] <name="Text Pointers">;
        } FirstTableHeader <name="Header">;
        for (j = 0; j < FirstTableHeader.numOfMessages; j++) {
          FSeek(tableRelativePos + FirstTableHeader.headerSize + FirstTableHeader.FirstTableTextPtrs[j].ptr);
          struct FIRST_TABLE_TEXT {
            char line[ReadStringLength(FTell())] <name="Value">;
          } FirstTableText <name="Text">;
        }
      } FirstTable <name="First Table", comment="Header size = 0x18">;

      tableRelativePos = LanguageHeader.TablePtrs[1].ptr + languageRelativePos;
      FSeek(tableRelativePos);
        
      struct SECOND_TABLE {
        struct SECOND_TABLE_HEADER {
          uint magic <name="Magic">;
          ushort tableSize <name="Table Size">;
          ushort unk;
          ushort numOfMessages <name="Number of Messages">;
          ushort ptrSize <name="Pointer Size">;
          uint headerSize <name="Header Size">;
          uint unk;
          uint secondTableTextPtrs [numOfMessages] <name="Text Pointers">;
        } SecondTableHeader <name="Header">;
        for (j = 0; j < SecondTableHeader.numOfMessages; j++) {
          FSeek(tableRelativePos + SecondTableHeader.headerSize + SecondTableHeader.secondTableTextPtrs[j]);
          struct SECOND_TABLE_TEXT {
            char line[ReadStringLength(FTell())] <name="Value">;
          } SecondTableText <name="Text">;
        }
      } SecondTable <name="Second Table">;
    } Language <name="Language">;
  }
} File <name="File">;

 

 

 

 

Изменено пользователем Damin72

Поделиться сообщением


Ссылка на сообщение
1 час назад, Damin72 сказал:

for (i = 0; i < FileHeader.numOfLanguages; i++) {
    FSeek(FileHeader.LanguagePtrs.ptr);
    languageRelativePos = FTell();

исправь на FSeek(FileHeader.LanguagePtrs[ i ].ptr);

 

 P.S. скинь скрипт файлом, а то  [ i ] форум удаляет

Изменено пользователем Zolodei

Поделиться сообщением


Ссылка на сообщение
1 час назад, Zolodei сказал:

исправь на FSeek(FileHeader.LanguagePtrs[ i ].ptr);

 

 P.S. скинь скрипт файлом, а то  [ i ] форум удаляет

https://yadi.sk/d/KW_Nq4caT-q1Mw

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: Damin72

      Жанр: Rail Shooter
      Платформы: Switch PC
      Разработчик: MegaPixel SA
      Издатель: Forever Entertaiment SA
      Издатель в России: -
      Дата выхода: 8 августа 2025
      Продолжение знаменитой The House of The Dead. Дело Кюриена из 1998-го было лишь началом кошмара. Нашествие мутантов в 2000-ом застигает агентов AMS врасплох. Только Джеймс и Гэри могут спасти ситуацию и разобраться с истинным зачинщиком нового кошмара.
       
    • Автор: Sudakov Pavel
      Решил выложить исходники программ, которые я делал для некоторых игр, а также исходники программы TTG Tools от @Den Em, которую пытался поддерживать вплоть до ремастеров серии игр Сэм и Макс.
      По игре Doctor Who: the adventure games
      По играм от Telltale Games/Skunkape Games:
      По игре Crash Bandicoot N. Sane Trilogy:
      По игре Shrek 2 Team Action:
       
      По первым трём частям игры Professor Layton:
       
      Остальные программы:
      Sonic and All-Star Racing Transformed (https://gitflic.ru/project/pashok6798/sonic-all-star-racing-repacker-tool):
      Пытался по скрипту aluigi сделать полноценный инструментарий для возможного редактирования текста, шрифтов и текстур, но в итоге хватило сил на распаковку/перепаковку архивов. Остальное я забросил.
       
      Who wants to be a millionaire: special edition questions editor (https://gitflic.ru/project/pashok6798/wwbam-se-questions-editor):
      Редактор вопросов к игре Кто хочет стать миллионером: особое издание (2012 года выпуска игра).
       
      По игре Shantae and the Pirate’s curse:
      Shantae tool (https://gitflic.ru/project/pashok6798/shantae-tool):
      Пытался сделать инструментарий для редактирования текста, шрифтов и текстур, но в итоге получилось распаковать/запаковать ресурсы и редактировать текст. С шрифтами и текстурами не удалось мне решить проблему.
       
      UPK environment (https://gitflic.ru/project/pashok6798/upk-environment):
      Пытался сделать оболочку для библиотеки upkpacker.dll, чтобы было проще работать, а ещё пытался сжимать некоторые архивы после перепаковки, но в итоге забросил данную оболочку для игр на Unreal Engine 3.
       
      Надеюсь, кому-нибудь данные инструментарии пригодятся. Я больше не собираюсь поддерживать данные приложения.
       
      P.S. продублировал на github и gitverse исходники и сборки инструментариев.
      Вот ссылка на github: https://github.com/zenderovpaulo95
      А вот ссылка на GitVerse: https://gitverse.ru/pashok6798


Zone of Games © 2003–2025 | Реклама на сайте.

×