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

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

Jason2222

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

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

Jason2222

Известный
Автор темы
180
3

Код:
[0.3d]\moonloader\new 2.lua'...
[22:25:38.176464] (debug)   New script: 0CE5AC94
[22:25:38.177466] (error)   new 2.lua: ...to San Andreas + MultiPlayer [0.3d]\moonloader\new 2.lua:55: ')' expected near ':'
[22:25:38.177466] (error)   new 2.lua: Script died due to an error. (0CE5AC94)
[22:25:38.177466] (system)   Loading script 'D:\Program Files\Grand Theft Auto San Andreas + MultiPlayer
 

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
Код:
[0.3d]\moonloader\new 2.lua'...
[22:25:38.176464] (debug)   New script: 0CE5AC94
[22:25:38.177466] (error)   new 2.lua: ...to San Andreas + MultiPlayer [0.3d]\moonloader\new 2.lua:55: ')' expected near ':'
[22:25:38.177466] (error)   new 2.lua: Script died due to an error. (0CE5AC94)
[22:25:38.177466] (system)   Loading script 'D:\Program Files\Grand Theft Auto San Andreas + MultiPlayer
верни функцию getTableUsersByUrl, которая была изначально.
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
 
  • Нравится
Реакции: Joni Scripts и Jason2222
Статус
В этой теме нельзя размещать новые ответы.