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