Материал из Скретч Вики
RuMaks (обсуждение | вклад) Нет описания правки |
Asqwde (обсуждение | вклад) м (Asqwde переименовал страницу Сохранение в облаке в Сохранение в Облаке без оставления перенаправления) |
(нет различий)
|
Версия от 04:52, 18 июня 2018
Шифрование облачных переменных — процесс преобразования нечисловых данных и списков в числовой формат, пригодный для облака. Обычно используется для создания списков победителей или в многопользовательских играх.
Пример «Список победителей»
Что нужно для создания
Нам понадобятся несколько переменных. Все названия приведены в пример, однако, если их заменить, то нужно заменить названия и в скриптах ниже.
(символы) (i) (i2) (i3) (☁ data)
Ещё нам понадобится список пользователей в виде списка, например, пользователи.
Шифрование
Для начала поочерёдно возьмём элементов массива, разделим их каким-нибудь разделителем, например, 00 и преобразуем всё в числовой формат (например, в двузначные числа).
В примере элементы разделены с помощью 00. Такой разделитель используется, потому что в позиции 0 нет ничего. После шифровки у нас получится длинное число, пригодное для облачной переменной. Все замены представлены в переменной символы. Мы будем заменять символы на их позицию в переменной. В примере для зашифровки буквы b будет использовано число 12.
when gf clicked set [символы v] to [0123456789abcdefghijklmnopqrstuvwxyz] define encode set [i v] to [0] set [☁ data v] to [] repeat (length of [пользователи v]) change [i v] by (1) set [i2 v] to [0] repeat (length of (item (i) of [пользователи v])) change [i2 v] by (1) set [i3 v] to [0] repeat until <(letter (i2) of (item (i) of [пользователи v])) = (letter (i3) of (z))> change [i3 v] by (1) end if <(i3) < [10]> then set [☁ data v] to (join (☁ data) (join [0] (i3))) else set [☁ data v] to (join (☁ data) (i3)) end end set [☁ data v] to (join (☁ data) [00]) end
Расшифровка
define decode set [i v] to [1] delete (all v) of [пользователи v] add [] to [пользователи v] repeat ((length of (☁ data)) / (2)) if <(join (letter (i) of (☁ data)) (letter ((i) + (1)) of (☁ data))) = [00]> then add [] to [пользователи v] else replace item (last v) of [пользователи v] with (join (item (last v) of [пользователи v]) (letter (join (letter (i) of (☁ data)) (letter ((i) + (1)) of (☁ data))) of (символы))) end change [i v] by (2) end delete (last v) of [пользователи v]