Материал из Скретч Вики
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]