# Обработчик файлов инфокарт из игры 💤 Freelancer Rebirth 💤 ## Что делает❓ ### 💥 Главное 💥 - Формирует выгрузку **`FLResources`** на `NET 3.5` совместимую с `Unity` ![alt text](Media/dlls.png) - Класс к которому обращаемся при подключении библиотеки к проекту - `ResControl` - Она имеет такое API для взаимодействия: - `Dictionary LoadIds(int ids)` - подаём число из INI файла для ids_name или ids_info - получаем имя DLL файла и индекс строки с данными - `StatusHandle GetData(string nameResources, int id)` - подаём имя RESX файла запечатанного в DLL `(OfferBribeResources_name,NameResources_name,EquipResources_name,SBM3_name,SBM2_name,SBM_name,SBM_info,EquipResources_info,MiscTextInfo2_info,InfoCards_info,MiscText_info, SBM3_info)` и идентификатор - получаем значение ресурса по ключу из инициализированного RESX - `FLGenerateLibrary` формирует файлы `.resx` для `FLResources` на основе данных полученных из `.dll` Win32 для игры `Freelancer 2003`. Данные предварительно получаем с помощью программы [`Resource Hacker`](Soft/reshacker_setup.exe). Порядок получения описан ниже - `FLEDId` программа для быстрого конвертирования `ids_name` и `ids_info` в число которое зашито в `DLL` файл ресурсов игры `Freelancer Rebirth` (не завязан на freelancer.ini структуру) и наоборот покажет по имени dll и числу в нём тот номер который нужно вписать в `INI` файл ### 🌟 Порядок извлечения файлов из `dll` с помощью [`Resource Hacker`](Soft/reshacker_setup.exe) 🌟 1. Открываем `dll` в [`Resource Hacker`](Soft/reshacker_setup.exe) например `equipresources.dll` > выделяем `String Table` \ > сохраняем .rc в папку `INPUT` которая лежит рядом с исполняемым `.exe` файлом \ > меняем имя файла c `.rc` на `data.txt` \ > внутри файла удаляем `LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL` \ ![alt text](Media/res1.png) ![alt text](Media/image.png)![alt text](Media/image-1.png) ![alt text](Media/image-2.png) > [!NOTE] > Поздравляю вы создали файл для определения `ids_name` полей! 2. В этом же `dll` если есть папка `HTML` нужно > выделяем `HTML` \ > сохраняем .rc в папку `INPUT\HTML` которая лежит рядом с исполняемым `.exe` файлом \ > удаляем файл `.rc` (нам нужны те `.txt` которые он там формирует под каждый `.html`) \ ![alt text](Media/image-3.png) ![alt text](Media/image-4.png)![alt text](Media/image-5.png) > [!NOTE] > Поздравляю вы создали файл для определения `ids_info` полей! 3. Фактически мы получим папку `INPUT` обязательно в таком виде ![alt text](Media/image-6.png) ### 😈 Командная оболочка 😈 1. Команда `g [filename.ini] [field]` - поиск уникальных значений поля в INI файле который лежит в папке `Analis` - [filename.ini] - имя файла строго существующего в папке `Analis` (При желании туда можно положить свой INI) - [field] - Имя поля внутри файла которое там постоянно встречается но с одинаковым значением > Например ```sh g example.ini progres_field ``` ![alt text](Media/image-7.png) ![alt text](Media/image-8.png) 2. Команда `c [path/to/file.resx]` или `clear [path/to/file.resx]` - очистка всех данных ресурсов в `.resx` файле - [path/to/file.resx] - Как правило такой файл лежит в отдельном C# проекте и вы наполняете его информацией > Например ```sh c path/to/file.resx ``` > или ```sh clear path/to/file.resx ``` 3. Команда `st [path/to/file.resx] [path/to/data.txt]` - генерация из папки с TXT (.dll Win32 -> Resource Hacker -> .rc файл -> .txt файлы) строк в .resx файл - [path/to/file.resx] - Как правило такой файл лежит в отдельном C# проекте и вы наполняете его информацией - [path/to/data.txt] - Как правило это файл из папки `INPUT` конкретно отсканированной библиотеки `dll` - файл `data.txt` > Например ```sh st path/to/file.resx path/to/data.txt ``` 4. Команда `st [path/to/file.resx] [path/to/html]` - генерация из папки с TXT (.dll Win32 -> Resource Hacker -> .rc файл -> .txt файлы) строк в .resx файл - [path/to/file.resx] - Как правило такой файл лежит в отдельном C# проекте и вы наполняете его информацией - [path/to/html] - Как правило это папка HTML с информациннными картами (которые указываются в `ids_info`) из папки `INPUT` > Например ```sh st path/to/file.resx path/to/html ``` 5. Команда `import` или `i` - копирует тестовые данные в папку `INPUT` для того чтобы можно было генерировать `.resx` файл ресурсов > Например ```sh import ``` > или ``` i ``` 6. Команда `all` или `a` - генерирует из папки `INPUT` файлы ресурсов в папку `OUTPUT` (их также можно перезаписывать командами описанными выше) > Например ```sh all ``` > или ``` a ``` 7. Команда `rhtml` - вывод текста сгенерированного в папке `HTML` после обработки в формате для `Unity - TextMeshPro` ![alt text](Media/image-9.png) 8. Команда `exit` или `e` или `q` - выход 9. Команда начинающаяся на `::text` выводит найденные совпадения слов которые встречаются в зашитых данных в `FLResources.dll` ![alt text](Media/image-10.png) 10. Команда начинающаяся на `::489` выводит найденные совпадения идентификаторов которые встречаются в зашитых данных в `FLResources.dll` ![alt text](Media/image-11.png)