script_author('SRP-Number') local sampev = require 'lib.samp.events' local number = {} local mode = { [1] = { run = false, title = 'Поиск номера' }, [2] = { run = 30, title = 'Задержка'}, [3] = { run = 3, title = 'Совпадающие цифры' }, [4] = { run = '', title = 'Избранные номера' }, [5] = { 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 sampShowDialog(55524, 'Задержка для поиска номера', text, 'Выбрать', 'Назад', 1) return false 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[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 if button == 1 then if input:find('(%d+)') then mode[2]["run"] = tonumber(input:match('(%d+)')) end end ShowDialog() 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[3].run then sampAddChatMessage(" > Найдены повторы цифр: "..text..". > Enter - искать дальше." , -1) else lua_thread.create(function() repeat wait(10) until sampIsDialogActive() and string.find(sampGetDialogCaption(), "Магазин") wait(mode[2]["run"]) if mode[1]["run"] then local dialogId = sampGetCurrentDialogId() sampSendDialogResponse(dialogId,1,2,"") end 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