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

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

MyDC.ru _ Kорзина _ Sconnection

Автор: 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


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