- 3
- 0
Как говорится - спасибо @chapo за это
Оригинальная тема: https://www.blast.hk/threads/90305/
Вкратце - пишите /ma [текст] - в чат отправляется ваш текст зашифрованный на шифре Цезаря, перед шифром добавляется специальный символ который помогает определить что это шифр цезаря в дешифровщик.
Всё сыро, но кому интересно взять под идею - велком
Отличие от оригинала - есть дешифровщик (костыльный)
Оригинальная тема: https://www.blast.hk/threads/90305/
Вкратце - пишите /ma [текст] - в чат отправляется ваш текст зашифрованный на шифре Цезаря, перед шифром добавляется специальный символ который помогает определить что это шифр цезаря в дешифровщик.
Всё сыро, но кому интересно взять под идею - велком
Отличие от оригинала - есть дешифровщик (костыльный)
Со словарём:
local ev = require('lib.samp.events')
local list1 = {
['а'] = 'в', ['б'] = 'г', ['в'] = 'д', ['г'] = 'е', ['д'] = 'ё', ['е'] = 'ж', ['ё'] = 'з', ['ж'] = 'и', ['з'] = 'й', ['и'] = 'к',
['й'] = 'л', ['к'] = 'м', ['л'] = 'н', ['м'] = 'о', ['н'] = 'п', ['о'] = 'р', ['п'] = 'с', ['р'] = 'т', ['с'] = 'у', ['т'] = 'ф',
['у'] = 'х', ['ф'] = 'ц', ['х'] = 'ч', ['ц'] = 'ш', ['ч'] = 'щ', ['ш'] = 'ъ', ['щ'] = 'ы', ['ъ'] = 'ь', ['ы'] = 'э', ['ь'] = 'ю',
['э'] = 'я', ['ю'] = 'ь', ['я'] = 'э', [' '] = ' ', ['.'] = '.', ['!'] = '!', [','] = ',', ['?'] = '?', [':'] = ':', ['"'] = '"',
['1'] = '3', ['2'] = '4', ['3'] = '5', ['4'] = '6', ['5'] = '7', ['6'] = '8', ['7'] = '9', ['8'] = '10', ['9'] = '11', ['0'] = '2',
['·'] = '·',
}
local list2 = {
['в'] = 'а', ['г'] = 'б', ['д'] = 'в', ['е'] = 'г', ['ё'] = 'д', ['ж'] = 'е', ['з'] = 'ё', ['и'] = 'ж', ['й'] = 'з', ['к'] = 'и',
['л'] = 'й', ['м'] = 'к', ['н'] = 'л', ['о'] = 'м', ['п'] = 'н', ['р'] = 'о', ['с'] = 'п', ['т'] = 'р', ['у'] = 'с', ['ф'] = 'т',
['х'] = 'у', ['ц'] = 'ф', ['ч'] = 'х', ['ш'] = 'ц', ['щ'] = 'ч', ['ш'] = 'ъ', ['щ'] = 'ы', ['ъ'] = 'ь', ['ы'] = 'э', ['ь'] = 'ю',
['э'] = 'я', ['ю'] = 'ь', ['я'] = 'э', [' '] = ' ', ['.'] = '.', ['!'] = '!', [','] = ',', ['?'] = '?', [':'] = ':', ['"'] = '"',
['1'] = '2', ['2'] = '0', ['3'] = '1', ['4'] = '2', ['5'] = '3', ['6'] = '4', ['7'] = '5', ['8'] = '6', ['9'] = '7', ['0'] = '9',
['·'] = '·',
}
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('ma', function(arg)
local result = translate(arg, list1)
sampSendChat('·' .. result)
end)
wait(-1)
end
function translate(text, translationTable)
local result = ''
for i = 1, #text do
local char = text:sub(i, i)
local replacement = translationTable[char:lower()]
if replacement then
if char:lower() == char then
result = result .. replacement
else
result = result .. replacement:upper()
end
else
result = result .. char
end
end
return result
end
function ev.onServerMessage(color, text)
local separator = '·'
local index = string.find(text, separator)
if index then
local prefix = text:sub(1, index - 1)
local postfix = text:sub(index + 1)
local modifiedResult = prefix .. translate(postfix, list2)
sampAddChatMessage(modifiedResult, 0xFF0000)
end
end
С указанием смещения:
local ev = require('lib.samp.events')
local shiftAmount = 3 -- Количество позиций для сдвига, можно изменить
local function shiftChar(char, amount)
local base = string.byte('а')
local charCode = string.byte(char)
if charCode >= base and charCode <= base + 32 then
return string.char((charCode - base + amount) % 33 + base)
else
return char
end
end
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('ma', function(arg)
local result = ''
for i = 1, #arg do
local char = arg:sub(i, i)
result = result .. shiftChar(char, shiftAmount)
end
sampSendChat('·' .. result)
end)
wait(-1)
end
function ev.onServerMessage(color, text)
local separator = '·'
local index = string.find(text, separator)
if index then
local prefix = text:sub(1, index - 1)
local postfix = text:sub(index + 1)
local modifiedResult = prefix .. translate(postfix, -shiftAmount)
sampAddChatMessage(modifiedResult, 0xFF0000)
end
end
function translate(text, amount)
local result = ''
for i = 1, #text do
local char = text:sub(i, i)
result = result .. shiftChar(char, amount)
end
return result
end