Простая привязка для скрипта

Статус
В этой теме нельзя размещать новые ответы.

Jason2222

Известный
Автор темы
180
3
Привет, друзья! У меня вопрос. Можно же как-то сделать простую привязку.
К примеру, сайт.ру/users.txt. И брать данные с документа, и если там содержится ник человека, то ему дается доступ к скрипту, если нет его ника в документе - "ошибка доступа".

p.s. не предлагайте гайд от "ufdhbi", видел, нет такой возможности
Буду благодарен за любую помощь!
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,482
Зачем всё так сложно? Заливаешь на дропбокс json-файл с никами и всё.
Скачиваешь через скрипт этот файл, читаешь его и если там есть тебе нужная строка - запускай.
 
  • Нравится
Реакции: shrei9 и Jason2222

Jason2222

Известный
Автор темы
180
3
Зачем всё так сложно? Заливаешь на дропбокс json-файл с никами и всё.
Скачиваешь через скрипт этот файл, читаешь его и если там есть тебе нужная строка - запускай.
Огромное спасибо за помощь, но как это можно реализовать по части кода?)
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,482
  • Нравится
Реакции: AnWu и Jason2222

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
Lua:
-- bool, users = getTableUsersByUrl(url) - получить таблицу пользователей по ссылке на .txt файл списка.
-- * url - ссылка на .txt файл списка.
-- * users - таблица пользователей.
-- * bool - загрузка списка удалась (true/false)
-- * users[номер пользователя].name - имя пользователя; users[номер пользователя].date - окончательная дата работы скрипта (чтобы узнать, когда наступил окончательный..
-- ..срок, нужна функция isAvailableUser).
-- availabled = isAvailableUser(users, name) - узнать, находится ли пользователь в списке и узнать, не закончился ли срок.
-- * users - таблица пользователей.
-- * name - имя пользователя.
-- * availabled - доступность (true/false).

function getTableUsersByUrl(url)
    local n_file, bool, users = os.getenv('TEMP')..os.time(), false, {}
    downloadUrlToFile(url, n_file, function(id, status)
        if status == 6 then bool = true end
    end)
    while not doesFileExist(n_file) do wait(0) end
    if bool then
        local file = io.open(n_file, 'r')
        for w in file:lines() do
            local n, d = w:match('(.*): (.*)')
            users[#users+1] = { name = n, date = d }
        end
        file:close()
        os.remove(n_file)
    end
    return bool, users
end

function isAvailableUser(users, name)
    for i, k in pairs(users) do
        if k.name == name then
            local d, m, y = k.date:match('(%d+)%.(%d+)%.(%d+)')
            local time = {
                day = tonumber(d),
                isdst = true,
                wday = 0,
                yday = 0,
                year = tonumber(y),
                month = tonumber(m),
                hour = 0
            }
            if os.time(time) >= os.time() then return true end
        end
    end
    return false
end
Пример:
Lua:
-- Ссылка на список игроков с датами.
site = 'https://pastebin.com/raw/ZiJ9Xi3e'

function main()
    while not isSampAvailable() do wait(0) end
    while sampGetCurrentServerName() == 'SA-MP' do wait(0) end
    local bool, users = getTableUsersByUrl(site) -- узнаём таблицу списка.
    assert(bool, 'Downloading list users failed.') -- Если bool = false.
    local _, myid = sampGetPlayerIdByCharHandle(playerPed) -- Узнаём свой ид.
    assert(isAvailableUser(users, sampGetPlayerNickname(myid)), 'The term is ended or your name is not in the list.') -- Если пользователя нету в списке или срок уже пройден.
    wait(-1)
end
 
Последнее редактирование:

Jason2222

Известный
Автор темы
180
3
Lua:
-- users = getTableUsersByUrl(url) - получить таблицу пользователей по ссылке на .txt файл списка.
-- * url - ссылка на .txt файл списка.
-- * users - таблица пользователей.
-- * users[номер пользователя].name - имя пользователя; users[номер пользователя].date - окончательная дата работы скрипта (чтобы узнать, когда наступил окончательный..
-- ..срок, нужна функция isAvailableUser).
-- availabled = isAvailableUser(users, name)
-- * users - таблица пользователей.
-- * name - имя пользователя.
-- * availabled - доступность (true/false).

function getTableUsersByUrl(url)
    local n_file, bool, users = os.getenv('TEMP')..os.time(), false, {}
    downloadUrlToFile(url, n_file, function(id, status)
        if status == 6 then bool = true end
    end)
    while not doesFileExist(n_file) do wait(0) end
    if bool then
        local file = io.open(n_file, 'r')
        for w in file:lines() do
            local n, d = w:match('(.*): (.*)')
            users[#users+1] = { name = n, date = d }
        end
        file:close()
        os.remove(n_file)
    end
    return users
end

function isAvailableUser(users, name)
    for i, k in pairs(users) do
        if k.name == name then
            local d, m, y = k.date:match('(%d+)%.(%d+)%.(%d+)')
            local time = {
                day = tonumber(d),
                isdst = true,
                wday = 0,
                yday = 0,
                year = tonumber(y),
                month = tonumber(m),
                hour = 0
            }
            if os.time(time) >= os.time() then return true end
        end
    end
    return false
end
Пример:
Lua:
-- Ссылка на список игроков с датами.
site = 'https://pastebin.com/raw/ZiJ9Xi3e'

function main()
    while not isSampAvailable() do wait(0) end
    while sampGetCurrentServerName() == 'SA-MP' do wait(0) end
    local users = getTableUsersByUrl(site) -- узнаём таблицу списка.
    local _, myid = sampGetPlayerIdByCharHandle(playerPed) -- Узнаём свой ид.
    if not isAvailableUser(users, sampGetPlayerNickname(myid)) then -- Если срок уже прошёл или в списке нету моего ника, то..
        print('The term is ended or your name is not in the list.')
        thisScript():unload() -- Выгружаем скрипт.
    end
    wait(-1)
end
Охренеть, конечно, как ты помог..
Но, моя криворукость не имеет границ, что-то неправильно вставил? Строго не суди, пожалуйста))
Скрытое содержимое для пользователя(ей): imring
 

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
  • Нравится
Реакции: Jason2222
Статус
В этой теме нельзя размещать новые ответы.