Материал из Скретч Вики
![]() |
В другой языковой вики есть более полная страница Сохранение в облаке. Вы можете помочь Скретч Вики, докончив перевод. |
Шифрование облачных переменных — процесс преобразования нечисловых данных и списков в числовой формат, пригодный для облака. Обычно используется для создания списков победителей или в многопользовательских играх.
Пример «Список победителей»
Что нужно для создания
Нам понадобятся несколько переменных. Все названия приведены в пример, однако, если их заменить, то нужно заменить названия и в скриптах ниже.
(символы) (i) (i2) (i3) (☁ data)
Ещё нам понадобится список пользователей в виде списка, например, пользователи.
Шифрование
Для начала поочерёдно возьмём элементов массива, разделим их каким-нибудь разделителем, например, 00 и преобразуем всё в числовой формат (например, в двузначные числа).
В примере элементы разделены с помощью 00. Такой разделитель используется, потому что в позиции 0 нет ничего. После шифровки у нас получится длинное число, пригодное для облачной переменной. Все замены представлены в переменной символы. Мы будем заменять символы на их позицию в переменной. В примере для зашифровки буквы b будет использовано число 12.
когда щёлкнут по зелёному флагу задать [символы v] значение [0123456789abcdefghijklmnopqrstuvwxyz] определить зашифровать задать [i v] значение [0] задать [☁ data v] значение [] повторить (длина списка [пользователи v]) раз изменить [i v] на (1) задать [i2 v] значение [0] повторить (длина (элемент (i) в [пользователи v])) раз изменить [i2 v] на (1) задать [i3 v] значение [0] повторять пока не <(буква (i2) в (элемент (i) в [пользователи v])) = (буква (i3) в (z))> изменить [i3 v] на (1) end если <(i3) < [10]> , то задать [☁ data v] значение (объединить (☁ data) (объединить [0] (i3))) иначе задать [☁ data v] значение (объединить (☁ data) (i3)) end end задать [☁ data v] значение (объединить (☁ data) [00]) end
Расшифровка
определить расшифровать задать [i v] значение [1] удалить (все v) из [пользователи v] добавить [] к [пользователи v] повторить ((длина (☁ data)) / (2)) раз если <(объединить (буква (i) в (☁ data)) (буква ((i) + (1)) в (☁ data))) = [00]> , то добавить [] к [пользователи v] иначе заменить элемент (last v) в [пользователи v] на (объединить (элемент (last v) в [пользователи v]) (буква (объединить (буква (i) в (☁ data)) (буква ((i) + (1)) в (☁ data))) в (символы))) end изменить [i v] на (2) end удалить (last v) из [пользователи v]