Overview
Для профессионалов.Осваиваем сохранение и загрузку для скриптов в своих модах.
Введение
Сохранение и загрузка мода в игре хорошо описаны в документации[api.tabletopsimulator.com].
Однако проблемы возникают у нас, русских, при сохранении кириллицы. Здесь пойдёт речь о том, как решить эти проблемы.
Решение 1
В случае использования английского текста в строках, он может быть искажен. Хотя прочесть его удастся в большинстве случаев, но это будет выглядеть не очень красиво. Поэтому решение подходит только для русских игр с русским текстом, включая вводимый текст (в инпуты).
Для использования необходимо русские строки перед сохранением пропускать через специальную функцию RusEncode(), а при загрузке – через функцию RusDecode().
Вставтье этот код в начало скрипта (для каждого объекта, который участвует в сохранении и которому нужна поддержка русского языка):
Далее сформируйте фукнции onSave и onLoad в соответствии с логикой игры:
Решение 2
В случае использования только английского текста в строке, он будет сохранен без изменений. Однако некоторые русские слова, записанные капсом (в отдельной строке), могут быть искажены до неузнаваемости. Это касается, преимущественно, коротких слов. Длинные тексты, да и вообще любые тексты, где есть хоть одна русская буква в нижнем регистре, будут считаться русскими целиком. Соответственно, если в строке смешаны русские и английские символы, то английский будет искажен.
Способ аналогичен предыдущему, только в начало скрипта нужно вставить чуть более умный скрипт:
Решение 3
Решение может внезапнео сломаться, если разработчики исправят баги функции JSON.encode(), хотя вряд ли это случится скоро. Также может сломаться, если в сохранении будут символы, которые TTS не понимает (например, из других языков, кроме русского и английского). В остальном это универсальное и удобное решение, но сравнительно медленное.
Просто скопируйте этот код в начало скрипта и больше не вспоминайте. Он является фиксом API, поэтому в пределах данного скрипта проблем с сохранением русских строк быть не должно вообще.
Заключение
Ни один из способов не является лучшим. Берите и используйте то, что подходит именно вашему моду.
P.S. Если вы не сохраняете кириллицу, то, очевидно, все эти костыли вообще не нужны. То есть сам мод может быть русифицирован, но в сохранение идут только всякие цифры и идентификаторы – тогда незачем городить лишний код.