Простой в использовании интерфейс, позволяющий сохранять и загружать внутриигровые переменные в файл и из файла соответственно, что может быть полезно для модмейкеров.
Это может пригодиться в различных ситуациях. Например, всё больше и больше модов обладают обширными настройками в МКМ, которые при начале новой игры приходится выставлять заново. FISS позволяет создателям модов обеспечить возможность создания пользовательских пресетов данных, которые могут быть сохранены, загружены или использованы где-то ещё.
Думаю, кому-нибудь пригодится.

Моды, в настоящее время использующие FISS:

Take Notes - Journal of the Dragonborn;
MinimalHUD;
Spellmaking in Skyrim - The last altar;
Dynamic Potions - Poisons - Ingredients - Food;
Dynamic Magicka and Stamina Growth;
A Matter of Time - A HUD clock widget;
Enchanted Arsenal;
Widget Mod;
Living takes time;
Timing is everything;
Awakened Magicka.


Как использовать:
Для игроков:
1. Скачать и установить FISS (извлечь в папку “Skyrim/Data/”);
2. Активировать FISS.ESP в вашем лаунчере/менеджере модов;
3. После него установить любой использующий FISS мод и использовать его возможности.

Для мододелов:
1 и 2 - аналогично;
3. Использовать FISS в ваших скриптах (см. API и пример ниже);
4. Когда выпускаете свой мод, следует включить следующие файлы в директорию Scripts Вашего мода:
- FISSFactory.pex
- FISSInterface.pex
Но не включать каких-либо других файлов FISS.

ЧАВО:

Вопрос: Где будут находиться созданные файлы?
Ответ: В директории “/Skyrim/Data/SKSE/Plugins/FISS/” или, если используете ModOrganizer, в “/ModOrganizer/overwrite/SKSE/Plugins/FISS”.
Вы также можете создавать свои подпапки: например, fiss.beginSave(“MySubfolderMyFile.xml”).

Вопрос: Нужно ли выпускать другую версию мода для людей, у которых не установлен FISS?
Ответ: Нет. Просто сделайте простую проверку на наличие установленного FISS:
FISSInterface fiss = FISSFactory.getFISS()
If !fiss
debug.MessageBox(“FISS not installed. Save/Reload disabled”)
return
endif



Требования:
- Skyrim;
- SKSE 1.6 и выше.

API (также это есть в файле MS Word папке "Документация" в архиве, наряду с оригинальной документацией):

API FISS'а состоит из двух скриптов: FISSFactory для обращения к интерфейсу FISS, и FISSInterface для операций с файлами.

Функции FISSFactory:

FISSInterface Function getFISS()
Получает ссылку на интерфейс FISS. Возвращает “none”, когда FISS не установлен.

Функции FISSInterface:

Функции загрузки:
Все операции загрузки должны начинаться с объявлений beginLoad и endLoad.

Function beginLoad(string filename)
Объявляет о начале набора операций загрузки.

string Function endLoad()
Объявляет о завершении набора операций загрузки. Возвращает сообщения об ошибке в виде строки. Cтрока будет пустой, если все операции загрузки прошли успешно.

bool Function loadBool(string name)
Загружает переменную логического типа с заданным именем.

string Function loadString(string name)
Загружает строку с заданным именем.

float Function loadFloat(string name)
Загружает число с плавающей точкой с заданным именем.

int Function loadInt(string name)
Загружает целое число с заданным именем.

Функции сохранения:
Все операции сохранения должны начинаться с beginSave и заканчиваться с endSave.

Function beginSave(string filename, string modname)
Объявляет о начале набора операций сохранения. "filename" должен (но не обязательно) заканчиваться “.XML”.
"Modname" здесь - имя мода.

string Function endSave()
Объявляет о завершении набора операций сохранения. Возвращает сообщения об ошибке в виде строки. Cтрока будет пустой, если все операции загрузки прошли успешно.

Function saveBool(string name, bool value)
Сохраняет переменную логического типа с заданным именем.

Function saveString(string name, string value)
Сохраняет строку с заданным именем.

Function saveFloat(string name, float value)
Сохраняет число с плавающей точкой с заданным именем.

Function saveInt(string name, int value)
Сохраняет целое число под заданным именем.

Другие функции:

float Function getVersion()
Получает установленную версию FISS

float Function getInterfaceVersion()
Получает версию интерфейса.

string Function saveTextToTxtFile(string filename, string text)
Напрямую сохраняет строку в текстовый файл. Эта функция должна быть использована без BeginSave и EndSave.

Небольшой пример использования:

Модификация под названием "My Mod" сохранит и загрузит переменные в/из файла “MyFile.xml”.
Для этого определяются функции “MySaveFunction” и “MyLoadFunction”.
Script MyScript extends <whatever>
;переменные
bool bMyBool
int iMyInt
string sMyString
;импорт FISSFactory для создания интерфейса с FISS
import FISSFactory
;функция сохранения
Function MySaveFunction
; получение ссылки на интерфейс FISS
FISSInterface fiss = FISSFactory.getFISS()
; проверка, установлен ли вообще FISS
If !fiss
debug.MessageBox(“FISS не установлен. Сохранение отменено”)
return
endif
; сохранение переменных
fiss.beginSave(“MyFile.xml”)
fiss.saveBool(“MyBool”, bMyBool)
fiss.saveInt(“MyInt”, iMyInt)
fiss.saveString(“MyString”, sMyString)
string saveResult = fiss.endSave()
; проверка результата
if saveResult != “”
debug.Trace(saveResult)
endif
EndFunction
; функция загрузки
Function MyLoadFunction
; получение ссылки на интерфейс FISS 
FISSInterface fiss = FISSFactory.getFISS()
; проверка, установлен ли FISS
If !fiss
debug.MessageBox(“FISS не установлен. Загрузка отменена.”)
return
endif
; загрузка переменных
fiss.beginLoad(“MyFile.xml”)
bMyBool = fiss.loadBool(“MyBool”)
iMyInt = fiss.loadInt(“MyInt”)
sMyString = fiss.loadString (“MyString”)
string loadResult = fiss.endLoad()
; проверка результата
if loadResult != “”
debug.Trace(loadResult)
endif
EndFunction

Загрузил:
Vitalyudin
18

Комментарии

Добавить комментарий

Спасибо, что напомнил про эту штуку, пойду познавать магию MCM)

Года 3-4 назад эта прога была шикарна. А сейчас модмейкерство на убыль идет семимильными шагами.

С 2014 поддерживаемых модов все так же кот насрал.

Очень актуальное решение, только с поддержкой модов полная беда.

хороший мод)давно использую, экономит время...

Авторизуйтесь, чтобы оставить новый комментарий. Или зарегистрируйтесь.