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

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

MyDC.ru _ Скрипты с MySQL [PtokaX] _ Информация По Nick&ip

Автор: intlive 15.4.2009, 10:52

Ребят, думаю не у одного меня такая потребность вести базу пользователей (какой ип принадлежит какому нику, сколько раз заходили с того или иного ипа, какие ип использовал данный ник). Много скриптов есть которые могут выполнять эти функции, но дело в том что когда на хабе много побывало народу - база скрипта разрастается и скрипт начинает кушать много помяти и тормозить систему. Можно сделать чтобы вся база хранилась в бд MySQL в виде таблиц, оптимальней же будет? surrender.gif

Автор: Nickolya 15.4.2009, 14:04

Просто взять и переделать http://mydc.ru/topic8.html big_smile.gif

Автор: intlive 15.4.2009, 14:11

Мб. кто возьмётся ? embarrassed.gif А то сам неосилю точно still_dreaming.gif API2

Автор: alex82 15.4.2009, 20:09

Цитата(intlive @ 15.4.2009, 14:11) *
Мб. кто возьмётся ? embarrassed.gif А то сам неосилю точно still_dreaming.gif API2
Около месяца назад начал писать подобный скрипт, но забросил. Когда доделаю - выложу (если вообще доделаю extreme_sexy_girl.gif ).

Автор: Wariner 15.4.2009, 21:45

Цитата(Nickolya @ 15.4.2009, 15:04) *
Просто взять и переделать http://mydc.ru/topic8.html big_smile.gif

думаю, Колюх, его сможет перевести его сможешь либо ты либо Setuper поэтому проще написать с нуля))))

Автор: Wariner 16.4.2009, 22:57

так я и не смог переписать скрипт Nickolya, поэтому начал писать свой. Вот что есть на данный момент:

Цитата
----------------------------------------------------------------------------------------------------
¦ Информация о пользователе: -=Wariner=- ( пользователь на хабе )
----------------------------------------------------------------------------------------------------r
¦ Общая информация:
¦ Ник: -=Wariner=-
¦ IP: 127.0.0.1
¦ Тег: <FlylinkDC++ V r380),M:A,H:0/0/3,S:15>
¦ Описание: [15]
¦ Email: -
¦ Клиент: FlylinkDC++
¦ Версия клиента: (r380)
¦ Активный режим: Да
¦ Оператор: Да
¦ Шара: 32.647 ГБ (35054762857)
¦ Профиль: Администратор (0)
¦ Хабы: 3
¦ Слоты: 15
----------------------------------------------------------------------------------------------------


осталось только прикрутить статистику по ип и будет функциональность как и у Userinfo [ By Nickolya ]

PS: завтра доделаю))))

Автор: Nickolya 17.4.2009, 8:46

Вообще я тоже что-то загорелся идеей и начал делать тоже скрипт, думаю можно будет посмотреть обе версии big_smile.gif тем более что я делаю между делом, так что буду думается мне не первым... nothing.gif

Автор: Wariner 17.4.2009, 19:50

ну вот почти готовый скрипт))) осталось закрыть пару дыр))))

 UserInfo_by_Wariner.lua ( 9.62 килобайт ) : 85
 

Автор: intlive 18.4.2009, 8:28

Цитата(Wariner @ 17.4.2009, 23:50) *
ну вот почти готовый скрипт))) осталось закрыть пару дыр))))

Спасибо большое, то что надо.. secret_smile.gif при 500-700 в базе данных скрипт кушает 126 кб. secret_smile.gif

Автор: OtshelnikFm 18.4.2009, 10:41

Что значит:

Цитата
¦ * Включение или выключение скрипта
- самая последняя строчка при выведении статистики?

и вот это:

Код
local tBoll = {
    ["true"] = "Да",
    ["false"] = "Нет",
}

-что это включает?

Автор: Nickolya 18.4.2009, 13:49

Включение или выключение то и значит, что скрипт отмечает что он выключился, мне думалось что так надо когда делал скрипт, т.к. там записываются и сессии пользователей

да/нет - языковые настройки:

Цитата
¦ Активный режим: Да

Автор: Wariner 18.4.2009, 15:09

если вдруг не понятна эта фраза

Цитата(Nickolya @ 18.4.2009, 14:49) *
Включение или выключение то и значит, что скрипт отмечает что он выключился, мне думалось что так надо когда делал скрипт, т.к. там записываются и сессии пользователей

то своими словами:
при выводе статистики сессии ников и IP указываются во временном диапазоне:
Цитата
10.3.10.3 с: 13:22:13 29-05-08 до: 15:22:13 29-05-08

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

PS: сам завернул, но надеюсь понятно)))

Автор: intlive 20.4.2009, 13:01

А можно добавить чтобы при просмотре ип какие ники использовались юзером?

Автор: Nickolya 20.4.2009, 15:50

Моя версия eyes_droped.gif Попробуйте, получился просто монстр... big_smile.gif
Качаем из поста ниже still_dreaming.gif

Автор: OtshelnikFm 20.4.2009, 19:10

Цитата
[14:50] Синтаксис ...ернет\PtokaX 0.4.1.1\scripts\UserInfo_by_Wariner.lua:68: attempt to index local 'cur' (a nil value)
[18:23] Синтаксис ...ернет\PtokaX 0.4.1.1\scripts\UserInfo_by_Wariner.lua:68: attempt to index local 'cur' (a nil value)
[20:17] Синтаксис ...ернет\PtokaX 0.4.1.1\scripts\UserInfo_by_Wariner.lua:68: attempt to index local 'cur' (a nil value)
[13:11] Синтаксис ...ернет\PtokaX 0.4.1.1\scripts\UserInfo_by_Wariner.lua:68: attempt to index local 'cur' (a nil value)


вот что накопилось за 2 дня

Nickolya:

Цитата
[20:01:11] [command] !getdbstats
- зачем админу в чат выводится?

вот что выдал:
Цитата
[19:56] Нет синтаксических ошибок в файле скрипта UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua
[19:57] Скрипт запущен.
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:341: attempt to index field '?' (a nil value)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:342: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:268: calling 'execute' on bad self (connection is closed)
[20:07] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:07] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!
[20:08] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:08] Синтаксис ...erInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua:317: calling 'execute' on bad self (connection is closed)
[20:08] Критическая ошибка в скрипте UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ! Скрипт остановлен!

Автор: Wariner 20.4.2009, 19:15

Цитата(OtshelnikFm @ 20.4.2009, 20:10) *
вот что накопилось за 2 дня

хм странные ошибки в моей версии... подумаю.

Автор: OtshelnikFm 20.4.2009, 19:44

Wariner - Все эти дни я накапливал в базу данных инфу. И сегодня нажал на пользователя посмотреть статистику, Вот что вышло:

Цитата
[20:32:04]
----------------------------------------------------------------------------------------------------
¦ Информация о пользователе: Max-o ( пользователь на хабе )
----------------------------------------------------------------------------------------------------
¦ Общая информация:
¦ Ник: Max-o
¦ IP: 88.147.227.139
¦ Тег: <ApexDC++ V:s13.4,M:A,H:0/1/0,S:5>
¦ Описание: [5]
¦ Email:
¦ Клиент: ApexDC++
¦ Версия клиента: s13.4
¦ Активный режим: Да
¦ Оператор: Нет
¦ Шара: 23.12 ГБ (24825676662)
¦ Профиль: ViP юзер (2)
¦ Хабы: 1
¦ Слоты: 5
----------------------------------------------------------------------------------------------------
¦ История сессий IP (последние 10 записей):
¦ * Включение или выключение скрипта


всё нормально за исключением пункта ¦ История сессий IP (последние 10 записей): - на всех 10 пользователях что я смотрел выдает последний ip адрес (а наш провайдер дает пользователям динамические ip. Статика за деньги) - скрипт поставил сразу как ты его выложил. 17 апреля. Вот статистика Макса-О с 17 числа (это старый скрипт "LastIP_LUA2_RUS")
Цитата
IP адреса, которые использовал Max-o [ Текущий IP: 78.29.104.223 ]

(17) 88.147.180.182 04/17/09 18:34:15
(18) 88.147.227.139 04/19/09 15:45:07
(19) 78.29.104.223 04/20/09 20:24:18

==================================================

тоесть у макса менялся айпишник..

2. когда на пользователе нажимаешь "По IP (может не работать)" - не работает и вправду big_smile.gif -
Цитата
[20:42:56] <GRAAL> Вы не ввели IP!

Автор: Wariner 20.4.2009, 21:30

возможно я знаю в чём проблема. попробую исправить))) а насчёт этого:

Цитата(OtshelnikFm @ 20.4.2009, 20:44) *
2. когда на пользователе нажимаешь "По IP (может не работать)" - не работает и вправду big_smile.gif -

тут дело в хабе! в любом клиенте написано что эта функция работает если в хабе включена соответственная функция


если есть возможность посмотреть содержимое бд нужно глянуть содержимое таблицы NicksIPs. Есть ли там в верхней части таблицы поле out = "0000-00-00 00:00:00"!

Автор: OtshelnikFm 20.4.2009, 21:47

Посмотрел - column name - out. default value - null - не силен в ерминологии - может не там гляжу
вот скрины

 

Автор: Wariner 20.4.2009, 22:01

у меня такой проги нет, я пользую phpMyAdminом. а надо мне увидеть содержимое этой таблицы:
id____Nick____IP____ent____out
в особенности интересует столбец out!

ЗЫ: возможно начну тестировать скрипты у себя на хабе)))

Автор: Nickolya 20.4.2009, 22:18

Перезалил свой скрипт, таблицы удалить если остались от прежнего скрипта! + добавил в просмотр инфы по нику используемые за все время работы скрипта IP-адреса пользователя, а не только за установленные сессии.

Цитата
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ Информация о пользователе: Nickolya2 ( пользователь на хабе )
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ Общая информация:
¦ Имя в базе данных: nickolya2
¦ Юзер: Nickolya2
¦ IP: 127.0.0.1
¦ Тег: <FlylinkDC++ V r365),M:A,H:2/0/1,S:10>
¦ Описание:
¦ Email: [отсутствует]
¦ Клиент: FlylinkDC++
¦ Версия клиента: (r365)
¦ Активный режим: Да
¦ Оператор: Нет
¦ Шара: 175,35 ГБ (188284275475 Б)
¦ Профиль: Незарегистрированный пользователь (-1)
¦ Хабы: 3
¦ Слоты: 10
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ История сессий пользователя (лимит установлен в 30 записей):
¦_ 1 127.0.0.1 с: 22:52:25 20-04-09* до: 22:52:57 20-04-09*
¦_ 2 127.0.0.1 с: 22:52:57 20-04-09* до: 22:58:43 20-04-09
¦_ 3 127.0.0.1 с: 22:58:44 20-04-09 до: 22:58:45 20-04-09
¦_ 4 127.0.0.1 с: 22:59:58 20-04-09 до: 23:00:53 20-04-09*
¦_ 5 127.0.0.1 с: 23:00:53 20-04-09* до: 23:01:21 20-04-09*
¦_ 6 127.0.0.1 с: 23:01:21 20-04-09* до: текущее время (на хабе)
¦ * Включение или выключение скрипта
------------------------------------------------------------------------------------------------------------------------------------------------------
¦ Использованные ником IP-адреса:
¦_ 127.0.0.1: использовался 6 раз, последнее время входа на хаб - 23:01:21 20-04-09
------------------------------------------------------------------------------------------------------------------------------------------------------

Автор: Setuper 20.4.2009, 22:36

Чтобы просмотреть содержимое таблицы в MySQLAdministrator нужно щёлкнуть по названию правой кнопкой и выбрать "Edit Table Data"
После этого mysql обозреватель автоматически сформирует нужный запрос для просмотра всего содержимого указанной таблицы

Автор: OtshelnikFm 20.4.2009, 22:50

так там пусто - вот и подумал что не там гляжу:

и для сравнения таблица статистики:

 

Автор: Wariner 20.4.2009, 22:53

как так может быть?!

ладно завтра всё проверю)))

Автор: Nickolya 20.4.2009, 23:20

Перезалил еще раз... Думалось мне библиотека сама экранирует одинарную кавычку, угу, размечтался... Поправил в скрипте это, чего и всем советую ;) Тестируйте big_smile.gif

Автор: Setuper 20.4.2009, 23:40

Ага. Проблема с кавычкой существует в программах, использующих базы данных довольно давно. Экранировать её нужно всегда big_smile.gif

Автор: OtshelnikFm 21.4.2009, 0:12

Nickolya - а можно сделать так:

------------------------------------------------------------------------------------------------------------------------------------------------------
¦ История сессий пользователя (лимит установлен в 30 записей):
¦_ 1 10.12.1.3 с: 23:43:35 20-04-09* до: 01:04:29 21-04-09 - 1 час 45 минут
¦_ 2 10.12.1.3 с: 01:04:31 21-04-09 до: текущее время (на хабе)
¦ * Включение или выключение скрипта
------------------------------------------------------------------------------------------------------------------------------------------------------
- 2 дня 37 минут и т.п.
так было бы наглядней

Автор: Nickolya 22.4.2009, 12:41

Можно, все можно big_smile.gif Делается так: строку

Код
        sMsg = sMsg.."¦_ "..sSp..i.."\t"..tCurIPsData[1].."\t\t"..tLang.From..": "..sForm..sOnStartup.."\t"..tLang.To..": "..sTo..sOnExit..sRn
меняем на
Код
        sMsg = sMsg.."¦_ "..sSp..i.."\t"..tCurIPsData[1].."\t\t"..tLang.From..": "..sForm..sOnStartup.."\t"..tLang.To..": "..sTo..sOnExit.."\t - "..GetNormalTime(((tCurIPsData[4] ~= 0 and tCurIPsData[4]) or os.time()) - tCurIPsData[3])..sRn


и в самый конец добавляем вот эту хорошую функцию:
Код
function GetNormalTime(s)
    s=tonumber(s) or 0
    local r=""
    if s>=31104000 then r=math.floor(s/31104000).." г. " s=math.fmod(s,31104000) end
    if s>=2592000 then r=r..math.floor(s/2592000).." мес. " s=math.fmod(s,2592000) end
    if s>=86400 then r=r..math.floor(s/86400).." д. " s=math.fmod(s,86400) end
    if s>=3600 then r=r..math.floor(s/3600).." ч. " s=math.fmod(s,3600) end
    if s>=60 then r=r..math.floor(s/60).." мин. " s=math.fmod(s,60) end
    return r..s.." сек."
end


Получаем:
Цитата
¦ История сессий пользователя (лимит установлен в 30 записей):
¦_ 1 192.168.0.10 с: 12:13:02 22-04-09* до: 12:13:34 22-04-09 - 32 сек.
¦_ 2 192.168.0.10 с: 12:13:35 22-04-09 до: 12:14:40 22-04-09* - 1 мин. 5 сек.
¦_ 3 192.168.0.10 с: 12:14:41 22-04-09* до: 12:15:32 22-04-09* - 51 сек.
¦_ 4 192.168.0.10 с: 12:15:32 22-04-09* до: 12:16:04 22-04-09* - 32 сек.
¦_ 5 192.168.0.10 с: 12:16:04 22-04-09* до: 12:27:24 22-04-09* - 11 мин. 20 сек.
¦_ 6 192.168.0.10 с: 12:27:24 22-04-09* до: 12:28:44 22-04-09* - 1 мин. 20 сек.
¦_ 7 192.168.0.10 с: 12:28:45 22-04-09* до: 12:29:56 22-04-09* - 1 мин. 11 сек.
¦_ 8 192.168.0.10 с: 12:29:56 22-04-09* до: текущее время (на хабе) - 5 сек.
¦ * Включение или выключение скрипта


Для особо ленивых прилагаю файлик, из поста выше его удаляю. И напоминаю что таблицы надо удалить если вы пользовались старой версией, без записей всех ip для ника big_smile.gif
 UserInfo_v0.2___by_Nickolya_____MySQL_____API_2___.lua ( 19.84 килобайт ) : 98


Еще забыл спросить, в скрипте я храню данные в формате TEXT, а потом уже используя конструкцию в духе
Код
    local tNeedUserData = loadstring("return "..row.sData)()
получаю таблицу, получается как бы бд за место текстовых файлов с доп. возможностями выборки и сортировки, как вам такая реализация, в том же сравнении со скриптом Ильи (варинера) и в духе оптимизованности и рациональности?!

Автор: Wariner 22.4.2009, 14:22

если разбить параметры по столбцам, открывается больше возможностей для сортировки используя лишь БД.

Автор: Setuper 22.4.2009, 19:16

Что-то я не уловил ход мысли...
Что мешало написать так:

Код
local tNeedUserData = row.sData
??

Автор: Nickolya 22.4.2009, 19:34

Помешало то, что данные хранятся в виде строки, но это на самом деле таблица переведенная в строку. Для изменения данных таблица извлекается в текстовом виде, приводится к виду таблицы, затем изменяется, переводится опять в текст и записывается... big_smile.gif Конечно не думаю что это самый оптимальный способ работы с бд, но так было проще сделать. Не ругайте строго, если не понятно - посмотри скрипт.

Автор: Setuper 22.4.2009, 19:49

Всё понял, что сделано big_smile.gif
В данном случае ты пытаешься ограничиться использованием базы данных только в качестве хранилища, однако, бд можно использовать и для упрощения программирования и сортировки, то есть отдавать эти задачи базе данных, а не пытаться использовать для этого lua. База данных намного эффективнее будет справляться с этими задачами.

Автор: OtshelnikFm 26.4.2009, 22:57

У нас провайдер дает динамические ип бесплатно (а статические за 58 р в месяц) - можно скрипт инфы по никам добавить строчкой: "Показать статические IP"? . - по этой команде в чат выводился список пользователей с постоянным ip.

Информацию брать основываясь за период времени- например неделю (не знаю сколько сессия одного ip держится) и выводить "постоянные IP". Но если есть юзер с временем меньше недели - но с одним ip - то выводить "вероятно постоянный ip"

Можно? Ну если это еще кому нибудь нужно кроме меня...


Nikolya - скрипт работает хорошо - почему бы не перенести его в готовые mysql?

Автор: OtshelnikFm 1.5.2009, 19:03

неделя работы скрипта от Nikolya v.0.2 - памяти съедает, думаю много: 1311 кб - можно туда добавить автоочистку? и почему такая нагрузка?

и пост выше - можно дополнить этим функционалом?

Автор: TiGRpp 8.1.2011, 6:09

Цитата(OtshelnikFm @ 1.5.2009, 20:03) *
неделя работы скрипта от Nikolya v.0.2 - памяти съедает, думаю много: 1311 кб - можно туда добавить автоочистку?

Всех с Новым Годом и Рождеством.
Скрипт полезный, альтернативы не нашел. Установил его на 2-х хабах.
Через сутки работы:Третьей ошибки пока не было.
Накапливается информация в памяти. Через 34 часа после перезапуска скрипта (обнуления памяти) и 2,5 суток сбора данных:Очистка аккаунтов в скрипте регистраций стирает собранную по ним информацию в БД.

Пока уменьшил iUserVisitsLimit до трех и выключил bUpdateDataOnMyInfo. Однако это полумера…необходима автоочистка памяти по времени или по достижении обусловленного обьема, или по выполнении lua-действий.
То есть используем БД как хранилище, освобождая память и процессор от лишней нагрузки.

Автор: Saymon 9.1.2011, 22:51

ну и сразу при запуске скрипта
<[BOT]HubSecurity> *** В скипте UserInfo_v0.2__byNickolya____MySQL___API2___.lua произошла ошибка: ...erInfo_v0.2__byNickolya____MySQL___API2___.lua:270: attempt to index local 'cur' (a nil value)