--[[ CheckSharaIp LUA 5.1x [API 2] By Prapor -Запрет скачки и поиска юзерам, у которых шара ниже лимита -Диапазоны IP и профили на которых не действует лимит по шаре ]]-- Bot = SetMan.GetString(21) Limit = 150 -- Лимит шары в ГБ для возможности скачки и поиска tProfiles = { -- 0 - выкл. проверку лимита по шаре профилю 1 - вкл. [0] = 0, -- Мастер [1] = 0, -- ОП [2] = 0, -- VIP [3] = 1, -- Рег [-1] = 1, -- Незарег } tAllowedRanges = { -- диапазоны локальных IP, на которых не действует лимит по шаре ["10.0.0.0"]= "10.255.255.255", ["192.168.0.0"]= "192.168.255.255", } tTemp = {} function OnStartup() for a,b in pairs(tAllowedRanges) do tTemp[(computeIP(a))] = computeIP(b) end end function ConnectToMeArrival(user) Core.GetUserData(user,16) if not checkIP(user.sIP) then if tProfiles[user.iProfile] == 1 and user.iShareSize *** Вы расшарили всего: "..FormatSize(us).." Для скачки и поиска на нашем хабе, Вам необходимо расшарить "..Limit.." ГБ. Такое ограничение связано с маленьким инет каналом на нашем хабе.") end end end OpConnected,RegConnected = UserConnected,UserConnected FormatSize = function(int) local i,u,x = tonumber(int) or 0,{"","К","М","Г","Т","П"},1 while i > 1024 do i,x = i/1024,x+1 end return string.format("%.2f %sБ.",i,u[x]) end function checkIP(sIP) local iIP = computeIP(sIP) if iIP then for startRange,endRange in pairs(tTemp) do if (iIP >= startRange)and (iIP <= endRange) then return true end end end end function computeIP(sIP) local _,_,a,b,c,d = string.find(sIP, "(%d+).(%d+).(%d+).(%d+)") return a*16777216 + b*65536 + c*256 + d end