From e3461034394825beceef2eb605bcbdcb0d6dbe0d Mon Sep 17 00:00:00 2001 From: rubin Date: Mon, 10 Oct 2022 11:26:46 +0300 Subject: [PATCH] initial commit --- SRP-Number.lua | 198 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 SRP-Number.lua diff --git a/SRP-Number.lua b/SRP-Number.lua new file mode 100644 index 0000000..2fa4bcd --- /dev/null +++ b/SRP-Number.lua @@ -0,0 +1,198 @@ +script_author('SRP-Number') +local sampev = require 'lib.samp.events' +local number = {} + +local mode = { + [1] = { run = false, title = 'Поиск номера' }, + [2] = { run = 3, title = 'Совпадающие цифры' }, + [3] = { run = '', title = 'Избранные номера' }, + [4] = { run = '', title = 'Описание скрипта' }, +} +local func = { + ['Поиск номера'] = function(button, index) + if button == 1 then + mode[index].run = not mode[index].run + return true + end + end, + ['Совпадающие цифры'] = function(button, index) + if button == 1 then + if type(mode[index].run) == 'number' then + mode[index].run = mode[index].run + 1 + if mode[index].run > 6 then + mode[index].run = 1 + end + end + return true + end + end, + ['Избранные номера'] = function(button, index) + if button == 1 then + FileRead() + local text = 'Добавить номер\n' + dialogLine = {} + for k,v in pairs(number) do + text = text..k..'\n' + dialogLine[#dialogLine + 1] = k + end + sampShowDialog(55524, 'Избранные номера для поиска', text, 'Выбрать', 'Назад', 4) + return false + end + end, + ['Описание скрипта'] = function(button, index) + if button == 1 then + sampShowDialog(55524, 'Описание скрипта для поиска номера', '{FFFFFF}Скрипт создан для поиска номера на сервере SAMP-RP\nВы запускаете поиск номера, открываете диалог в 24-7 с покупкой номера и нажимаете на покупку номера.\nДальше скрипт ищет номер подходящий под ваши настройки.\n\n Настройки поиска\n1. Есть избранные номера в меню /num, можете добавлять свои.\n2. Можете указать сколько максимум одинаковых цифр в вашем номере может быть.\n Если вы указали цифру 1 - все цифры в номере будут одинаковые.\n Если вы указали цифру 2 - в номере будут только 2 одинаковые цифры, пример 111222, 554544\nТак же если вы указали цифру 2, то и цифра 1 тоже будет считаться за совпадение, и поиск номера остановится.', 'Выбрать', 'Назад', 0) + return false + end + end, +} + +function main() + if not isSampLoaded() or not isSampfuncsLoaded() then return end + while not isSampAvailable() do wait(100) end + while true do + wait(0) + local caption = sampGetDialogCaption() + local result, button, list, input = sampHasDialogRespond(55524) + if caption == 'Поиск номера для Samp-RP' and dialogLine ~= nil then + if result then + if func[dialogLine[list + 1]](button, list + 1) then + ShowDialog() + end + end + end + if caption == 'Избранные номера для поиска' and dialogLine ~= nil then + if result then + if button == 1 then + if list == 0 then + sampShowDialog(55524, 'Добавление номера для поиска', '{FFFFFF}Введите номер для добавления в список.', 'Добавить', 'Назад', 1) + else + if dialogLine[list] ~= nil then + local file = io.open("moonloader\\SRP-Number.txt", "r") + local fileText = "" + if file ~= nil then + for line in file:lines() do + if line ~= dialogLine[list] then + fileText = fileText..line.."\n" + end + end + io.close(file) + end + file = io.open("moonloader\\SRP-Number.txt", "w") + file:write(fileText) + file:flush() + io.close(file) + FileRead() + end + func['Избранные номера'](1) + end + else + ShowDialog() + end + end + end + if caption == 'Добавление номера для поиска' and dialogLine ~= nil then + if result then + if button == 1 then + if input:find('(%d+)') then + local file = io.open("moonloader\\SRP-Number.txt", "a") + file:write(input:match('(%d+)')..'\n') + file:flush() + io.close(file) + FileRead() + func['Избранные номера'](1) + end + else + func['Избранные номера'](1) + end + end + end + if caption == 'Описание скрипта для поиска номера' and dialogLine ~= nil then + if result then + ShowDialog() + end + end + end +end + +function sampev.onServerMessage(color, message) + if string.find(message, " Ваш новый номер мобильного .+") and mode[1].run then + local str = string.match(message, " Ваш новый номер мобильного (.+)") + local MyNumber, text = isMyNumber(str) + if number[str] ~= nil or tonumber(MyNumber) <= mode[2].run then + sampAddChatMessage(" > Найдены повторы цифр: "..text..". > Enter - искать дальше." , -1) + else + lua_thread.create(function() + repeat wait(10) until sampIsDialogActive() and string.find(sampGetDialogCaption(), "Магазин") + wait(30) + sampSetCurrentDialogListItem(0) + sampCloseCurrentDialogWithButton(1) + end) + end + end +end + +function sampev.onSendCommand(cmd) + if cmd:lower() == "/num" then + ShowDialog() + return false + end +end + +function sampev.onSendDialogResponse(dialogId, button, listboxId, input) + if button ~= 1 and string.find(sampGetDialogCaption(), "Магазин") and mode[1].run then + sampAddChatMessage(" > Поиск номера отключен", -1) + mode[1].run = false + end +end + +function FileRead() + number = {} + if doesFileExist("moonloader\\SRP-Number.txt") then + local f = io.open("moonloader\\SRP-Number.txt", 'r') + if f then + for line in f:lines() do + number[line] = true + end + f:close() + end + else + local file = io.open("moonloader\\SRP-Number.txt", "w") + file:write('777\n') + number['777'] = true + file:flush() + io.close(file) + end +end + +function isMyNumber(n) + local search, text = 0, '' + for i = 1, 10 do + numbers = i - 1 + if string.find(n, tostring(numbers)) then + string.gsub(n, tostring(numbers), '') + if text == '' then + text = numbers + else + text = text..', '..numbers + end + search = search + 1 + end + end + return search, text +end + + +function ShowDialog() + dialogLine = {} + local text = "" + for i = 1, #mode do + local modes = mode[i].run + if type(mode[i].run) == 'boolean' then + modes = mode[i].run and '{06940f}ON' or '{d10000}OFF' + end + text = string.format('%s%s\t%s\n', text, mode[i].title, modes) + dialogLine[i] = mode[i].title + end + sampShowDialog(55524, 'Поиск номера для Samp-RP', text, "Выбрать", "Закрыть", 4) +end \ No newline at end of file