FLResourceLibrary/README.md
Dvurechensky 3b92bf134f 1.0.0
2025-05-13 15:23:06 +03:00

112 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Обработчик файлов инфокарт из игры 💤 Freelancer Rebirth 💤
## Что делает❓
### 💥 Главное 💥
- Формирует выгрузку **`FLResources`** на `NET 3.5` совместимую с `Unity`
![alt text](Media/dlls.png)
- Класс к которому обращаемся при подключении библиотеки к проекту
- `ResControl`
- Она имеет такое API для взаимодействия:
- `Dictionary<string, int> 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)