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

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

MyDC.ru _ Kорзина _ Скрипт "Описание сети"

Автор: skonda 3.8.2009, 23:56

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

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

 описание_сети.lua ( 1.57 килобайт ) : 39
 

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

спасибо, пока норм работает.