Автор: skonda 3.8.2009, 23:56
Помогите упростить этот скрипт. Нужно чтобы он абсолютно всем пользователям какие на хабе добовлял в описание "Локальные сети".
В этом случае функции расчета IP и другие ненужные в данном случае ф-ции необходимо убрать, чтобы они не создавали лишнюю нагрузку на хаб. Мне надо подчеркнуть этим скриптом что хаб у меня полностью внутрисетевой, вот что ...
Автор: Jaska 4.8.2009, 2:16
расчет необходим для установления принадлежности к диапазону .. выкладываю код, при входе почему то не меняется описание хотя вроде все правильно, черт его знает мозг в 5 утра варит плохо, попробуй пока это
CODE
local _G = _G
local tScript = {}
tScript.iTimer = 60 -- время в секундах
tScript.tProfileTag = {
[1] = "[Оператор]",
[2] = "[VIP]",
[3] = "",
[0] = "[Мастер]",
[-1] = "",
}
tScript.RangeDesc = { "192.168.0.0-192.168.255.255-[Локальные Сети]" }
function OnStartup()
TmrMan.AddTimer(tScript.iTimer * 1000, "OnTimer")
end
function OnTimer()
for id,tUser in pairs(Core.GetOnlineUsers(true)) do
if tUser.sMyInfoString ~= nil then
local userip = tScript.calcip(tUser.sIP)
if userip ~= 0 then
for index,descIP in pairs(tScript.RangeDesc) do
local _,_,startRange,endRange,RangeDescript = string.find(descIP, "(.*)-(.*)-(.*)")
local startRange = tScript.calcip(startRange)
local endRange = tScript.calcip(endRange)
if userip >= startRange and userip <= endRange then
descript = RangeDescript
end
end
if descript == nil then
descript = "[Внешние сети]"
end
end
local s,e,name,desc,speed,email,share = string.find(tUser.sMyInfoString, "$MyINFO $ALL (%S+)%s+([^$]*)$ $([^$]*)$([^$]*)$([^$]+)")
Core.SendToAll("$MyINFO $ALL "..name.." "..tScript.tProfileTag[tUser.iProfile].." "..descript.." "..desc.."$ $"..speed.."$"..email.."$"..share.."$")
end
end
end
function UserConnected(tUser, sData)
Core.GetUserAllData(tUser)
if tUser.sMyInfoString ~= nil then
local userip = tScript.calcip(tUser.sIP)
if userip ~= 0 then
for index,descIP in pairs(tScript.RangeDesc) do
local _,_,startRange,endRange,RangeDescript = string.find(descIP, "(.*)-(.*)-(.*)")
local startRange = tScript.calcip(startRange)
local endRange = tScript.calcip(endRange)
if userip >= startRange and userip <= endRange then
descript = RangeDescript
end
end
if descript == nil then
descript = "[Внешние сети]"
end
end
Core.SendToAll(descript)
local s,e,name,desc,speed,email,share = string.find(tUser.sMyInfoString, "$MyINFO $ALL (%S+)%s+([^$]*)$ $([^$]*)$([^$]*)$([^$]+)")
Core.SendToAll("$MyINFO $ALL "..name.." "..tScript.tProfileTag[tUser.iProfile].." "..descript.." "..desc.."$ $"..speed.."$"..email.."$"..share.."$|")
end
end
OpConnected = UserConnected
RegConnected = UserConnected
function tScript.calcip(ipcalc)
local _,_,a,b,c,d = string.find(ipcalc, "(%d+).(%d+).(%d+).(%d+)")
local calc = 0
if (tonumber(a) and tonumber(b) and tonumber© and tonumber(d)) then
calc = a*16777216 + b*65536 + c*256 + d
return calc
else
return 0
end
end
Автор: skonda 4.8.2009, 12:26
да нет все меняеться, просто надо немного подождать. А функции рассчета IP и тд в моем случае лишние т к у меня на хабе только 1 сеть других никаких нет. Надеюсь этот вариант скрипта упрощен в этом плане и будет меньше грузить хаб.
Заметил щас такой косяк. Почему то описание сети хреначит в чат
[13:23:38] [Локальные сети]
[13:23:44] [Локальные сети]
[13:23:45] [Локальные сети]
Автор: Jaska 4.8.2009, 13:05
Прошу прощения, для дебага выводил это сообщение, убрать забыл. Если вариант "немного подождать" устраивает то вот.
1.lua ( 1.51 килобайт )
: 28
Автор: skonda 4.8.2009, 13:25
Цитата(Jaska @ 4.8.2009, 14:05)
Прошу прощения, для дебага выводил это сообщение, убрать забыл. Если вариант "немного подождать" устраивает то вот.
1.lua ( 1.51 килобайт )
: 28спасибо, пока норм работает.