Tabletop Simulator Guide

Урок 6. Сохранение и загрузка for Tabletop Simulator

Урок 6. Сохранение и загрузка

Overview

Для профессионалов.Осваиваем сохранение и загрузку для скриптов в своих модах.

Введение

Сохранение и загрузка мода в игре хорошо описаны в документации[api.tabletopsimulator.com].

Однако проблемы возникают у нас, русских, при сохранении кириллицы. Здесь пойдёт речь о том, как решить эти проблемы.

Решение 1

Удобство
Низкое
Требования
Строки должны быть только русские (английские использовать нельзя)
Надежность
Максимальная (если требования выполнены)
Скорость
Высокая

В случае использования английского текста в строках, он может быть искажен. Хотя прочесть его удастся в большинстве случаев, но это будет выглядеть не очень красиво. Поэтому решение подходит только для русских игр с русским текстом, включая вводимый текст (в инпуты).

Как пользоваться
[link]

Для использования необходимо русские строки перед сохранением пропускать через специальную функцию RusEncode(), а при загрузке – через функцию RusDecode().

Вставтье этот код в начало скрипта (для каждого объекта, который участвует в сохранении и которому нужна поддержка русского языка):

Далее сформируйте фукнции onSave и onLoad в соответствии с логикой игры:

Решение 2

Удобство
Низкое
Требования
Строки должны быть только русские и английские, но не капсом и не смешанные (то есть либо русские, либо английские)
Надежность
Высокая (если требования выполнены)
Скорость
Средняя

В случае использования только английского текста в строке, он будет сохранен без изменений. Однако некоторые русские слова, записанные капсом (в отдельной строке), могут быть искажены до неузнаваемости. Это касается, преимущественно, коротких слов. Длинные тексты, да и вообще любые тексты, где есть хоть одна русская буква в нижнем регистре, будут считаться русскими целиком. Соответственно, если в строке смешаны русские и английские символы, то английский будет искажен.

Как пользоваться
[link]

Способ аналогичен предыдущему, только в начало скрипта нужно вставить чуть более умный скрипт:

Решение 3

Удобство
Высокое
Требования
Строки могут содержать только русские и ascii символы. Версия игры – v12.3.5
Надежность
Максимальная (если требования выполнены)
Скорость
Низкая

Решение может внезапнео сломаться, если разработчики исправят баги функции JSON.encode(), хотя вряд ли это случится скоро. Также может сломаться, если в сохранении будут символы, которые TTS не понимает (например, из других языков, кроме русского и английского). В остальном это универсальное и удобное решение, но сравнительно медленное.

Как пользоваться
[link]

Просто скопируйте этот код в начало скрипта и больше не вспоминайте. Он является фиксом API, поэтому в пределах данного скрипта проблем с сохранением русских строк быть не должно вообще.

Заключение

Ни один из способов не является лучшим. Берите и используйте то, что подходит именно вашему моду.

P.S. Если вы не сохраняете кириллицу, то, очевидно, все эти костыли вообще не нужны. То есть сам мод может быть русифицирован, но в сохранение идут только всякие цифры и идентификаторы – тогда незачем городить лишний код.

SteamSolo.com