Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Помощь по скриптам для PtokaX _ Вопросы по скриптам

Автор: DrakonSP 18.2.2010, 1:24

Раскрывающийся текст
Код
local sPath = Core.GetPtokaXPath().."scripts/TextBot/"

function ChatArrival(tUser, sData)
    local sCmd = sData:match"%b<>%s+%p(%S+).*|"
    if sCmd then
        Core.SendToUser(tUser, OpenTextFile(sCmd))
    return true
    end    
end

function OpenTextFile(sCmd)
    local sMessage = ""
    local bBinary = bBinary or false
    local sFile = io.open(sPath..sCmd..".txt", "r")
    if sFile then
        sMessage = sFile:read("*all")
        sFile:close()
    end
    return sMessage
end

Всё ли правильно в этом скрипте?
Написал. Работает. Но не уверен, что тут всё верно. Гляньте плиз big_smile1.gif

Автор: Setuper 18.2.2010, 2:22

Я бы вот так написал big_smile.gif :

Код
local sPath = Core.GetPtokaXPath().."scripts/TextBot/"

function ChatArrival(tUser, sData)
  local sCmd = sData:match"^%b<>%s+%p(%S+).*|$"
  if sCmd then
    local sMsg = LoadText(sPath..sCmd..".txt")
    if sMsg then
      Core.SendToUser(tUser, sMsg)
      return true
    end
  end
end

function LoadText(sFile)
  local hFile = io.open(sFile)
  if hFile then
    local sMsg = hFile:read"*a"
    sMsg = sMsg:gsub("&#(%d+);", "&#38;#%1;")
    sMsg = sMsg:gsub("|", "&#124;")
    sMsg = sMsg:gsub("^%$", "&#36;")
    hFile:flush()
    hFile:close()
    return sMsg
  end
  return nil, "Не удалось открыть файл "..sFile
end

Автор: DrakonSP 18.2.2010, 6:19

При отображении в клиенте на конце текста прописываеться $

Автор: Setuper 18.2.2010, 11:32

Пардон. В строке:

Код
sMsg = sMsg:gsub("^%$", "&#36;")
знак $ нужно заэкранировать.

Твой скрипт тоже работает. Однако, особенности протокола заставляют нас обходить некоторые знаки.
Например, в твоём скрипте:
1) пользователям не отсылались бы сообщения, начинающиеся со знака $;
2) знак | в сообщении служил бы разделителем команд и не отображался бы в чате, а всё что шло после этого знака отсылалось бы в следующей команде;
3) любые цифры от 1 до 255, перед которыми стояли бы символы &#, и после которых стоял бы символ ;, преобразовывались бы из кодов в некоторые символы перед тем как поступить в чат пользователя.

Автор: DrakonSP 20.2.2010, 10:38

А возможно ли для этого скрипта
 TextBot.lua ( 657 байт ) : 10

Сделать следующую фичу:
Чтобы в текством файле указывать например [views]
А пользователю отображалось количество просмотров данной темы (текстового файла)
Что то вроде как в MOTD в скрипте StatPX, только вместо всяких рекордов пользователей было количество просмотров.

Автор: Setuper 20.2.2010, 11:49

Можно.
Можно сделать показ количества просмотров за время непрерывной работы скрипта, тогда можно просто завести переменную-счётчик, в противном случае (в общем случае) нужно будет сохранение счётчика в файл.

 TextBot.lua ( 1.61 килобайт ) : 22

Автор: DrakonSP 20.2.2010, 12:13

Лучше в файл big_smile1.gif Если не затруднит + ошибка

Цитата
TextBot.lua:10: bad argument count to 'SendToUser' (2 expected, got 3)

Автор: Saymon 20.2.2010, 12:26

У меня тоже маленький вопросик будет big_smile.gif
Как реализовать запись юзеров онлайн и общий объём шары хаба на изображение?
Знаю только что для этого нужна библиотека luagd. big_smile.gif

Автор: Setuper 20.2.2010, 15:33

Исправил. Залил.

Автор: DrakonSP 20.2.2010, 17:02

Плиз плиз сделайте что бы он количество просмотров в файл сохранял.

Автор: Setuper 20.2.2010, 17:15

Минутное дело)) Перезалил.

Автор: DrakonSP 20.2.2010, 17:54

Цитата(Setuper @ 20.2.2010, 17:15) *
Минутное дело)) Перезалил.

Цитата
TextBot2.lua:38: attempt to concatenate local 'sTableName' (a table value)

Автор: Setuper 20.2.2010, 18:01

Пардон.
Вот так нужно:

Код
SaveTable(sFile, tCounts, "tCounts")


Второй параметр в кавычки big_smile.gif

Перезалил

Автор: Saymon 22.2.2010, 13:31

Есть код

Код
function OnStartup()
sFile = Core.GetPtokaXPath().."scripts/HelpFiles/help.txt"
if loadfile(sFile) then dofile(sFile) end
function ChatArrival(user, sData)
local cmd = sData:match"%b<>%s+(%S+).*|"
  if cmd == "!help" or cmd == "!хелп" or cmd == "+help" then
   Core.SendToUser(user, "  ")
  return true
end    
end
end


Как правильно сделать что бы функция Core.SendToUser(user, " ") выводила содержимое файла help.txt ?

Автор: STRELOK_IS74 22.2.2010, 14:12

Код
sBot = SetMan.GetString(21)
sFile = Core.GetPtokaXPath().."scripts/HelpFiles/help.txt"

function ChatArrival(tUser, sData)
    sData = string.sub(sData,1,-2)
    local sCmd = sData:match"%b<>%s+[!+*](%S+)"
    if sCmd == "help" or sCmd == "хелп" then
         Core.SendToUser(tUser, "<"..sBot.."> "..LoadText(sFile))
         return true
    end    
end

function LoadText(filename)
    local message = ""
    local f = io.open( filename, "r" )
    if f then
        message=f:read("*all")
        message=string.gsub(message,"|","")
        f:close()
    end
    return message
end

Автор: Saymon 22.2.2010, 16:20

Что не так тут не пойму?

Код
  local sCmd = sData:match"%b<>%s+[!+](%S+)"
  if sCmd == "команда" or cmd == "команда2" or cmd == "команда3" then

Как правильней будет сделать?

Автор: STRELOK_IS74 22.2.2010, 16:23

Код
  if sCmd == "команда" or sCmd == "команда2" or sCmd == "команда3" then

Автор: Saymon 22.2.2010, 16:29

Хм, всё равно не работает

Код
  local sCmd = sData:match"%b<>%s+[!+](%S+)"
if sCmd == "команда" or sCmd == "команда2" or sCmd == "команда3" then

Автор: STRELOK_IS74 22.2.2010, 16:39

Может дело в латинских символах?

Код
if sCmd == "command" or sCmd == "command2" or sCmd == "command3" then

Автор: Saymon 22.2.2010, 16:45

да нет, вообще что то только так идёт.

Код
local sCmd = sData:match"%b<>%s+(%S+).*|"
-- if cmd == "!command" or cmd == "!команда" or cmd == "!command2" then

Не могу понять почему... И ошибок в птоке нет.

Автор: STRELOK_IS74 22.2.2010, 16:49

Код
local sCmd = sData:match"%b<>%s+[!+*](%S+)"
if sCmd == "команда" or sCmd == "команда2" or sCmd == "команда3" then

Ошибка была в регулярном выражении.

Автор: Saymon 22.2.2010, 17:13

И так тоже никак.

Автор: STRELOK_IS74 22.2.2010, 17:23

Код
function ChatArrival(user, sData)
    local sData = string.sub(sData,1,-2)
    local sCmd = sData:match"%b<>%s+[!+*](%S+)"
    if sCmd == "test" or sCmd == "stats" or sCmd == "команда3" then
        ...
    return true
  end    
end

Автор: Setuper 22.2.2010, 17:52

вместо этого:

Код
local sData = string.sub(sData,1,-2)
local sCmd = sData:match"%b<>%s+[!+*](%S+)"

лучше писать так:
Код
local sCmd = sData:match"%b<>%s+[!+*](%S+)|$"

Автор: Saymon 25.2.2010, 14:32

Вопрос таковой, как сделать сохранение данных - юзеров, шары в txt файл что бы потом вывести на сайт???

Автор: Saymon 28.2.2010, 0:13

Предыдущий вопрос решёл. Спасибо Nickolya.

Сейчас вопрос такой:
В некоторых скриптах видел подобную функцию. Пример. "Отсылать ли сообщение в приват или в главный чат? пишем true Отсылается сообщение в чат
Пишем false - отсылается сообщение в приват."

"Дублировать ли важные сообщения? (Отсылать в лс и в чат) Пишем true - Отсылается и в приват и в гл чат
Пишем false Сообщение идёт только в приват."

Попробовал выдернуть из других скриптов не получилось. Скажите пожалуйста как написать такую функцию.
Зарание спасибо.

Автор: Serx 28.2.2010, 0:32

Код
If bFlag == true then
Core.SendToAll("сообщение всем")
elseif bFlag == false then
Core.SendPmToNick(tUser.sNick, sBot,"сообщение в приват")
end

Ну и аналогично второе...
bFlag - параметр который будет настраиваться и проверяться.
tUser.sNick - адресат (юзер с ником в параметре sNick)
sBot - отправитель

Автор: Saymon 28.2.2010, 1:56

Код
if sCmd == sCmd.MainStat then
Core.SendToUser(user,""..sLine.."\r\n\t\t\tИнформация о вас\r\n\n"..
   "\t[::] Ваш ник: "..user.sNick.."\t [::] Ваш IP: "..user.sIP.."\t \r\n"..
  "\t[::] Ваша шара: "..GetNormalShare(Core.GetUserValue(user,16)).."\t [::] Ваш режим: "..ModeRec(user).."\r\n"..
   "\t[::] Местоположение: "..tostring(IP2Country.GetCountryName(user)).." \r\n"..
   "\t"..sLine.."\r\n")
return true
end

sPrefix = "+"
sCmd = {
    MainStat = "mystat",    
}


Вот как бы сижу рисую, пробую всё и понемногу big_smile.gif
Не пойму в чём у меня тут ошибка?
В птоке ошибка: attempt to index global 'sCmd' (a nil value)

Автор: Serx 28.2.2010, 10:20

А как может таблица быть равна одному из полей таблицы?
По-моему тебе надо изменить название переменной для захвата команды или имя таблицы с набором возможных команд.

Автор: Saymon 28.2.2010, 18:20

что то не то, и не могу понять что... не работают так команды shame.gif

Раскрывающийся текст
Код
if sCmd == "..sCmd.MainStat.." then
Core.SendToUser(user,""..sLine.."\r\n\t\t\tИнформация о вас\r\n\n"..
   "\t[::] Ваш ник: "..user.sNick.."\t [::] Ваш IP: "..user.sIP.."\t \r\n"..
  "\t[::] Ваша шара: "..GetNormalShare(Core.GetUserValue(user,16)).."\t [::] Ваш режим: "..ModeRec(user).."\r\n"..
  "\t[::] Местоположение: "..tostring(IP2Country.GetCountryName(user)).." \r\n"..
  "\t"..sLine.."\r\n")
return true
end
if sCmd == "..sCmd.Hub.." then
Core.SendToUser(user,""..sLine.."\r\n"..
   "\t\t\tО хабе\r\n\n"..
   "\t[::] Местоположение хаба:\r\n\t[::] Страна: "..Country..",\t Регион: "..Republic..",\tГород: "..City..".\r\n"..
   "\t[::] Главный бот хаба: "..sBot..", E-Mail: "..BotMail.."\r\n"..
   "\t[::] Топик хаба: "..sTopic.."\r\n"..
   "\t[::] Описание хаба: "..HubDescription.."\r\n"..
   "\t[::] Время непрерывной работы хаба: "..GetNormalTime(Core.GetUpTime()).."\r\n"..
      "\t"..sLine.."")
return true
end
sPrefix = "+" --Префикс команд
sCmd = {
    MainStat = "mystat",    
    Hub = "hub",    
}

Автор: Serx 28.2.2010, 19:49

не видно функции ChatArrival в которой производился бы захват какой-либо команды.
Ну и ещё перечитай мой предыдущий пост. Ты все ещё пытаешься сравнить таблицу с одним из её полей.

Автор: Saymon 4.3.2010, 0:10

В скрипте написан код

Код
function UserConnected(tUser)
  Core.SendToUser(tUser, "\r\n"..
  "\t\t\tДобро пожаловать, "..tUser.sNick..", на "..HubName.." г. "..City..".\r\n"..
  "\t\t\t\t   "..HubDescription.."\r\n"..
  "\t\t\t\t"..DecText.."\r\n"..
  "\t\t\t"..sLine.."\r\n"..
  "\t\t\tВаш ник: "..tUser.sNick..", IP-Адрес: "..tUser.sIP..", Ваша шара: "..GetNormalShare(Core.GetUserValue(tUser,16)).."")
  end
OpConnected = UserConnected
RegConnected = UserConnected

function GetNormalShare(s)
    s=tonumber(s) or 0
   if s>=1099511627776 then return string.format("%.2f",(math.floor(1000*s/1099511627776)/1000)).." TБ"
    elseif s>=1073741824 then return string.format("%.3f",(math.floor(1000*s/1073741824)/1000)).." ГБ"
    elseif s>=1048576 then return (math.floor(1000*s/1048576)/1000).." МБ"
    elseif s>=1024 then return (math.floor(1000*s/1024)/1000).." КБ"
    else return s.." Б"
     end
end


Шара юзера отображается нормально.

а если заменить function UserConnected(tUser)
на function ValidateNickArrival(tUser, sData)
то шара юзера отображается 0Б. В чём может быть причина и как можно исправить?

Автор: Setuper 4.3.2010, 3:35

Это никак не исправить. На стадии валидации ника определён только ip адрес и ник, больше ничего не определено, так как пользователь ещё не отослал на хаб MyINFO строку.

Автор: Saymon 15.3.2010, 22:27

Подскажите пожалуйста что не так в коде? Ошибка attempt to call global 'Send' (a nil value)

Код
function ChatArrival(user, sData)
  local cmd = sData:match"%b<>%s+(%S+).*|"
  if cmd == "+dcmagnet" then
Send(sData)
    if SendMsg == Pm then
        Core.SendPmToUser(user, sData, "<"..Bot.."> "..msg)
    elseif SendMsg == Main then
        Core.SendToUser(user, sData, "<"..Bot.."> "..msg)
    end
end
     return true
  end    


SendMsg = Pm --Куда отсылать сообщение

Автор: Wariner 15.3.2010, 22:32

вот в этой строчке

Код
Send(sData)

скрипт пытается вызвать глобальную функцию Send которая видимо не определена в скрипте...

Автор: Saymon 15.3.2010, 22:34

А как сделать надо будет?

Автор: Wariner 15.3.2010, 22:36

ты понимаешь что такое функция?

чтобы ошибка пропала достаточно написать

Код
function Send(sData)
end

а вот что делать должна эта функция хз.... думаю надо скрипт приложить тогда можно будет посмотреть)))

Автор: Saymon 15.3.2010, 22:41

А всё сделал, Спасибо Wariner big_smile.gif
щас ещё кое что поправлю

 FeedLogon.lua ( 13.19 килобайт ) : 10
 

Автор: Saymon 20.3.2010, 12:28

Вот на некоторых хабах видел такую функцию
\\история чата\\посылать при входе (да или нет)
Меню сделать не проблема, big_smile.gif
вот как написать функцию которая позволит чтобы юзер сам мог выбирать посылать ли ему сообщение при входе или нет?

Автор: Wariner 20.3.2010, 12:35

1) пишешь меню с командой.
2) отлавливаешь эту команду в чате + ник писавшего и его решение ( типо 1 - посыдать; 0 - не посылать)
3) записываешь в таблицу ник = решение (можно и не в таблицу но я вот как то к ним не ровно дышу)
4) при входе проверяешь условие если 1 посылаешь если нет то нет)))

Автор: Saymon 20.3.2010, 12:38

Wariner, будь добор пожалуйста, приведи пример кода. big_smile.gif
Попробовал вчера это сделать, не получилось ничего. beat_plaster.gif

Автор: Wariner 20.3.2010, 12:46

какой именно пункт тебе не понятен?

Автор: Saymon 20.3.2010, 12:50

Цитата
ник писавшего и его решение ( типо 1 - посыдать; 0 - не посылать)

тут вот что то я сомневаюсь
3) записываешь в таблицу ник = решение (можно и не в таблицу но я вот как то к ним не ровно дышу)
4) при входе проверяешь условие если 1 посылаешь если нет то нет)))
с этим можно сказать я вот не разу не работал

Автор: Wariner 20.3.2010, 12:55

ну таблицу объявляешь в самом начале скрипта

Код
tShow = {}

запись будет в таком виде:
Код
tShow["nick"] = 1 --или 0

проверка осуществляется условием
Код
if tShow["nick"] == 1 then
-- посылаем
end


PS: так же не забывай сохранять файл в таблицу стандартными функциями!
PPS: естественно вместо ника и цифры должны быть именно нужные значения!

Автор: Saymon 20.3.2010, 12:58

а с сохранением в файл как? Ужас, что я совсем уже втупике. beat_brick.gif scorn.gif

Автор: Wariner 20.3.2010, 13:06

мда... вот открыл первый попавшийся свой скрипт:
Пути

Код
local sPath = Core.GetPtokaXPath().."scripts/TopicManager/"                     -- Папка скрипта
local sSettings = sPath.."Settings.tbl"                                         -- Файл с настройками


объявление таблицы
Код
tSettings = {}


загрузка таблицы и сохранение её по тай
Код
function OnStartup()
    if loadfile(sSettings) then
        dofile(sSettings)
    end
    TmrMan.AddTimer(iTime*60000, "OnExit")
end

function OnExit()
    WriteTable(tSettings, "tSettings", sSettings)
end


функции для сохранения

Код
function WriteTable(tTable, tablename, file)
    local handle = io.open(file, "w")
    Serialize(tTable, tablename, handle)
      handle:close()
end

function Serialize(tTable, sTableName, hFile, sTab)
    sTab = sTab or "";
    hFile:write(sTab..sTableName.." = {\n" );
    for key, value in pairs(tTable) do
        local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key);
        if(type(value) == "table") then
            Serialize(value, sKey, hFile, sTab.."\t");
        else
            local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
            hFile:write(sTab.."\t"..sKey.." = "..sValue);
        end
        hFile:write(",\n");
    end
    hFile:write(sTab.."}");
end

Автор: Serx 20.3.2010, 23:14

Если записывать в таблице ник юзера вместе с решением, то там может быть раза в 2 больше чем нужно, которые запишутся от того что юзеры просто "опробуют" функцию.
Недавно допиливал такое... сделал по подобию истории чата: в таблицу сохраняется только ники которым отсылать ничего не нужно - получается таблица исключений. Ну и просто проверяется наличие ника в этой таблице...

Автор: Saymon 20.3.2010, 23:18

Вот сейчас сижу ковыряю что то ничего всё равно не получается unhappy.gif

Автор: Saymon 21.3.2010, 15:13

Вот рабочий пример функции которая позволяет юзеру выбирать отсылать ли ему сообщение при входе или нет.
Автор Nickolya

 Example.lua ( 2.8 килобайт ) : 14


От себя выражаю огромное спасибо Nickolya. big_smile.gif

Автор: Димон1111 22.3.2010, 19:08

А зачем скрипты располагать в каком то определённом порядке? И в каком порядке они должны быть? beat_brick.gif И почему при включении некоторых скриптов не работают другие? Например при включении весёлого чата не работает регистратор.

Автор: FallenAngel 23.3.2010, 9:13

Цитата(Димон1111 @ 22.3.2010, 19:08) *
А зачем скрипты располагать в каком то определённом порядке? И в каком порядке они должны быть? beat_brick.gif

Никто не зставляет ставить в определенном порядке. Как получится-так и будет. у меня когда хаб пару раз слетел, все скрипты по имени упорядочились. Красотаbig_smile.gif Но сейчас они более упорядочены по времени добавления.
Цитата
И почему при включении некоторых скриптов не работают другие? Например при включении весёлого чата не работает регистратор.

Поставь веселый чат в саааамый низ. Или же просто пониже самого регистратора. Но лучше 1ый вариант..
И да, можно в веселом чате дописать команды, которые не будет он затрагивать.

Автор: DrakonSP 24.3.2010, 17:55

Поиогите пожалуйста в 2-х вопросах:

1) Скрипт http://mydc.ru/index.html?showtopic=1648&view=findpost&p=27071
Немного переделал отправку сообщения "*** Послана команда хабу...."
В оригинальном скрипте это сообщение отправляеться тому нику, который указан в переменой "sAdminNick"
и сам код отправки выглядит так:

Код
        if tUser.sNick~=sAdminNick then
            Core.SendToNick(sAdminNick, "<"..sBot.."> *** Послана команда хабу: "..sData)
        end

При этом на команды отправляемые с этого ника скрипт не реагирует, т.е. команды вводимые админом не отображаються ему в чат

Я же сделал так:
Код
        if tUser.sNick~=sAdminNick then
            Core.SendToOps("<"..sBot.."> *** Послана команда хабу: "..sData)
        end

И проблема в том, что операторам ну и мне (Главному админу) отправляеться отчёт, о том что я или же мои операторы воспользовались такой то такой то командой.
Например:
Цитата
[17:48:52] <Hub-Bot> *** Вы уже зарегистрированы!
[17:48:52] <Hub-Bot> *** Послана команда хабу: <DrakonSP> +regme

Предполагаю что дело в строчке:
Код
        if tUser.sNick~=sAdminNick then

Но незнаю, чего прописать в место sAdminNick, что бы админам (опам) не приходил отчёт об отправленных ими же команд.

2) Скрипт http://mydc.ru/index.html?showtopic=1413&view=findpost&p=10214
Тут проблема заключаеться в том, что админы (опы) сидят и дропают сами себя =))
Надо вообщем сделать так, что бы эта команда не распространялась на админов (опов)
Например:
Цитата
[17:48:52] <Hub-Bot> *** Данная команда на этого пользователя не может быть распространена!

Автор: Nickolya 25.3.2010, 12:08

1. Да, дело в этой строке

Код
if tUser.sNick~=sAdminNick then
замени ее на
Код
if not Core.GetUserValue(tUser, 11) then


2. По поводу этого скрипта могу лишь сказать что это скрипт создающий меню в соответствии с правами пользователя, а уже ранговая система это совсем другая область. Так что либо писать скрипт чтобы опы не могли применять команды друг на друга, либо же поговорить с этими раздолбаями и сказать что так делать нельзя.

Автор: Ksan 14.5.2010, 11:12

Цитата(Saymon @ 21.3.2010, 18:13) *
Вот рабочий пример функции которая позволяет юзеру выбирать отсылать ли ему сообщение при входе или нет.
Автор Nickolya

 Example.lua ( 2.8 килобайт ) : 14


От себя выражаю огромное спасибо Nickolya. big_smile.gif


Скрипт работает только до первой перезагрузки (скрипта). Вот более правильный код (сравни со своим):
Раскрывающийся текст
Код
sOurFileWay = Core.GetPtokaXPath().."scripts/somefile.txt"    -- путь к файлу
tTableData = {}

function OnStartup()
    if loadfile(sOurFileWay) then
        dofile(sOurFileWay)
    end
end

function OnExit()
    SaveToFile(sOurFileWay, tTableData, "tTableData")    -- сохраняем при выходе
end

function UserConnected(user)
    -- меню:
    Core.SendToUser(user, "$UserCommand 1 3 Информация\\получать$<%[mynick]> +ИзменитьСтатус on|")
    Core.SendToUser(user, "$UserCommand 1 3 Информация\\не получать$<%[mynick]> +ИзменитьСтатус off|")
    
    if not tTableData[user.sNick] then    -- проверяем на отсутствие ника в таблице и если его там нет то отсылаем ему информацию
        Core.SendToUser(user, "..........")
    end
end
OpConnected = UserConnected
RegConnected = UserConnected

function ChatArrival(user, sData)
    local sCmd, sOption = sData:match"%b<>%s+[!%+%*](%S+)%s*(%S*).*|$"    -- отлавливаем команду и аругмент после нее
    if sCmd == "ИзменитьСтатус" then    -- если наша команда
        if not sOption then    -- если вдруг отсутствует статус в команде
            Core.SendToUser(user, "*** Вы не ввели статус команды!")
        elseif sOption == "on" then    -- если опция после команды on то
            if not tTableData[user.sNick] then    -- если ника нет в таблице то он получает инфу
                Core.SendToUser(user, "*** Вы и так получаете информацию при входе!")
            else
                tTableData[user.sNick] = nil    -- иначе удаляем ник из таблицы
                SaveToFile(sOurFileWay, tTableData, "tTableData")
                Core.SendToUser(user, "*** Теперь вы получаете информацию при входе!")
            end
        elseif sOption == "off" then    -- если опция после команды off то
            if tTableData[user.sNick] then    -- если ник в таблице
                Core.SendToUser(user, "*** Вы и так ничего не получаете при входе!")
            else
                tTableData[user.sNick] = true    -- иначе добавляем ник в таблицу
                SaveToFile(sOurFileWay, tTableData, "tTableData")
                Core.SendToUser(user, "*** Теперь вы не получаете информацию при входе!")
            end
        else    -- если опции нет или она какая-то странная
            Core.SendToUser(user, "*** Неверный статус команды!")
        end
        return true
    end
end