Автор: Derk_B_P 13.4.2009, 0:14
Прочитав эту тему http://mydc.ru/topic1449.html, решил написать мини скрипт. Который, при коннекте, отсеивал пользователей с эти клиентом.
Но, что-то не то. Помогите разобратся.
Код
UserConnected = function(user)
if user.sConnection:find"%W" then
return Core.Kick(user,"Bad_Client","Измените клиент "),true
end
end
Цитата
[00:10] Синтаксис ...++\Server_\PtokaX_0.4.1.1\scripts\Strong_Bug.lua:2: attempt to index field 'sConnection' (a nil value)
Автор: Setuper 13.4.2009, 0:33
Код
if not user.sConnection or user.sConnection:find"%W" then
Автор: Derk_B_P 13.4.2009, 1:14
Цитата(Setuper @ 13.4.2009, 0:33)

Код
if not user.sConnection or user.sConnection:find"%W" then
Теперь скрипт кикает всех подряд.
Автор: Setuper 13.4.2009, 10:44
Код
UserConnected = function(user)
Core.GetUserData(user, 4)
if user.sConnection:find"%W" then
return Core.Kick(user,"Bad_Client","Измените клиент "),true
end
end
Автор: Derk_B_P 13.4.2009, 18:15
Цитата(Setuper @ 13.4.2009, 10:44)

Код
UserConnected = function(user)
Core.GetUserData(user, 4)
if user.sConnection:find"%W" then
return Core.Kick(user,"Bad_Client","Измените клиент "),true
end
end
Захожу клиентом
StrongDC-22-sqlite-r335, пользователь определяется как бот. Но, скрипт не кикает.
Хотя, и ошибок в скрипте нет.
Автор: Setuper 13.4.2009, 18:43
Ну так попробуй строчку: http://mydc.ru/ipb.html?s=&showtopic=1755&view=findpost&p=13728
Пробовать надо разные варианты и смотреть!
Автор: Derk_B_P 14.4.2009, 16:39
В любом, из ниже перечисленых примеров, не кикает.
Код
UserConnected = function(user)
Core.GetUserData(user, 4)
if user.sConnection:find"%W" then
return Core.Kick(user,"Bad_Client","Измените клиент "),true
end
end
Код
UserConnected = function(user)
Core.GetUserData(user, 4)
if not user.sConnection or user.sConnection:find"%W" then
return Core.Kick(user,"Bad_Client","Измените клиент "),true
end
end
Код
UserConnected = function(user)
Core.GetUserData(user, 4)
if not user.sConnection then
return Core.Kick(user,"Bad_Client","Измените клиент "),true
end
end
А тут уже банит всех:
Код
UserConnected = function(user)
Core.GetUserData(user, 4)
if not user.sConnection:find("%w") then
return Core.Kick(user,"Bad_Client","Измените клиент "),true
end
end
Автор: Setuper 14.4.2009, 17:19
Устанавливаешь вот такой простенький скрипт и наблюдаешь, что выводится
Код
local sNick = "Твой_ник"
UserConnected = function(user)
Core.GetUserData(user, 4)
Core.SendToNick(sNick, tosting(user.sConnection)..", "..tostring(user.sConnection and user.sConnection:find"%W" or 0))
end
Автор: Derk_B_P 15.4.2009, 0:43
Цитата(Setuper @ 14.4.2009, 17:19)

Устанавливаешь вот такой простенький скрипт и наблюдаешь, что выводится
При подкл. клиента с багом (StrongDC-22-sqlite-r335) в чат мне выводилось - "
, 0"
Остальные клиенты - "
100, 0", "
1000, 0"
Автор: Setuper 15.4.2009, 15:05
Попробуй:
Код
UserConnected = function(user)
Core.GetUserData(user, 4)
if user.sConnection =='' then
Core.Kick(user, "Bad_Client", "Измените клиент ")
end
end
RegConnected = UserConnected
Вообще говоря, если уж на то пошло, то данный баг должен отлавливать сервер.
Так как сервер не рассоединяет пользователей, то значит нет никаких препятствий в том, чтобы не указывать соединение.