function Main() bNewApi=false if not sBot then sBot=frmHub:GetHubBotName() end end
function OnStartup() if not sBot then sBot=(SetMan.GetString(21) or "Hub-Security") end end
function NewUserConnected(tUser) sMsg=string.gsub(sMsg,"%[HUBNAME%]",frmHub:GetHubName()) sMsg=string.gsub(sMsg,"%[OWNER%]",sOwner) sMsg=string.gsub(sMsg,"%[BOTNAME%]",frmHub:GetHubBotName()) sMsg=string.gsub(sMsg,"%[ONLINE%]",TimeOnline(frmHub:GetUpTime())) sMsg=string.gsub(sMsg,"%[SHARE%]",GetNormalShare(frmHub:GetCurrentShareAmount()+tUser.iShareSize)) sMsg=string.gsub(sMsg,"%[NICK%]",tUser.sName) sMsg=string.gsub(sMsg,"%[IP%]",tUser.sIP) sMsg=string.gsub(sMsg,"%[SHARESIZE%]",GetNormalShare(tUser.iShareSize)) sMsg=string.gsub(sMsg,"%[PERCENT%]",SharePerc(tUser,frmHub:GetCurrentShareAmount())) sMsg=string.gsub(sMsg,"%[PROFILE%]",profiles[tUser.iProfile]) sMsg=string.gsub(sMsg,"%[TAG%]",tUser.sTag) sMsg=string.gsub(sMsg,"%[DESC%]",tUser.sDescription~="" and tUser.sDescription or "не выбрано") sMsg=string.gsub(sMsg,"%[EMAIL%]",tUser.sEmail~="" and tUser.sEmail~=" " and tUser.sEmail or "не выбран") sMsg=string.gsub(sMsg,"%[CONNECTION%]",tUser.sConnection) tUser:SendData(sMsg) end
function UserConnected(tUser) Core.GetUserAllData(tUser) sMsg=string.gsub(sMsg,"%[HUBNAME%]",SetMan.GetString(0)) sMsg=string.gsub(sMsg,"%[OWNER%]",sOwner) sMsg=string.gsub(sMsg,"%[BOTNAME%]",SetMan.GetString(21)) sMsg=string.gsub(sMsg,"%[ONLINE%]",TimeOnline(Core.GetUpTime())) sMsg=string.gsub(sMsg,"%[SHARE%]",GetNormalShare(Core.GetCurrentSharedSize()+tUser.iShareSize)) sMsg=string.gsub(sMsg,"%[NICK%]",tUser.sNick) sMsg=string.gsub(sMsg,"%[IP%]",tUser.sIP) sMsg=string.gsub(sMsg,"%[SHARESIZE%]",GetNormalShare(tUser.iShareSize)) sMsg=string.gsub(sMsg,"%[PERCENT%]",SharePerc(tUser,Core.GetCurrentSharedSize())) sMsg=string.gsub(sMsg,"%[PROFILE%]",profiles[tUser.iProfile]) sMsg=string.gsub(sMsg,"%[TAG%]",tUser.sTag) sMsg=string.gsub(sMsg,"%[DESC%]",tUser.sDescription~="" and tUser.sDescription or "не выбрано") sMsg=string.gsub(sMsg,"%[EMAIL%]",tUser.sEmail~="" and tUser.sEmail~=" " and tUser.sEmail or "не выбран") sMsg=string.gsub(sMsg,"%[CONNECTION%]",tUser.sConnection) Core.SendToUser(tUser,sMsg) end
function TimeOnline(iSec) local iCount, iTime, sResult, sSumb = 0, 0, "", "" if tonumber(iSec) then iCount = tonumber(iSec) else iCount = 0 end if iCount >= 60 then iTime = math.floor(iCount / 60) if iTime <= 20 then if iTime == 1 then return tostring(iTime).." минуту" elseif iTime > 1 and iTime < 5 then return tostring(iTime).." минуты" else return tostring(iTime).." минут" end else local iTmp = tonumber(string.sub(tostring(iTime), string.len(tostring(iTime)), -1)) if iTmp == 1 then return tostring(iTime).." минуту" elseif iTmp > 1 and iTmp < 5 then return tostring(iTime).." минуты" else return tostring(iTime).." минут" end end else return "1 минуту" end end
function SharePerc(tUser,s) local iSharePerc=100 if (tUser.iShareSize+s)~=0 then iSharePerc=math.floor(100*tUser.iShareSize/(tUser.iShareSize+s)) end if tUser.iShareSize==0 then return "0%%" else if iSharePerc < 1 then return "<1%%" else return tostring(iSharePerc).."%%" end end end
function GetNormalShare(iShare) local iCount = 0 if tonumber(iShare) then iCount = tonumber(iShare) else iCount = 0 end if iCount >= 1099511627776 then return tostring(math.floor(1000 * iCount / 1099511627776) / 1000).." TБ" elseif iCount >= 1073741824 then return tostring(math.floor(1000 * iCount / 1073741824) / 1000).." ГБ" elseif iCount >= 1048576 then return tostring(math.floor(1000 * iCount / 1048576) / 1000).." МБ" elseif iCount >= 1024 then return tostring(math.floor(1000 * iCount / 1024) / 1000).." КБ" else return tostring(iCount).." Б" end end
RegConnected=UserConnected
function OpConnected(tUser) if bNewApi then UserConnected(tUser) else NewUserConnected(tUser) end end
Автор: Sephiroth_Lukaw 8.12.2008, 6:12
Код
function UserConnected(tUser) local Profile = (ProfMan.GetProfile(tUser.iProfile) and ProfMan.GetProfile(tUser.iProfile).sProfileName) or "Unreg" Core.SendToUser(tUser,"\n[::] Your info: \n[::] Nick: "..tUser.sNick.." \n[::] Class: "..Profile.." ("..tUser.iProfile..") \n[::] IP: "..tUser.sIP.." \n[::] Country Code: "..tostring(IP2Country.GetCountryCode(tUser.sIP))) end RegConnected = UserConnected OpConnected = UserConnected
Автор: West 8.12.2008, 9:55
Вау!!! Спасибо. а можно еще [::] IP: 77.244.36.184 [::] Country Code: ??
Что бы в место *??* было UA ну и у людей с разных стран отображалась своя страна ?
Автор: Sephiroth_Lukaw 8.12.2008, 11:30
Код
function UserConnected(tUser) local Profile = (ProfMan.GetProfile(tUser.iProfile) and ProfMan.GetProfile(tUser.iProfile).sProfileName) or "Unreg" Core.SendToUser(tUser,"\n[::] Your info: \n[::] Nick: "..tUser.sNick.." \n[::] Class: "..Profile.." ("..tUser.iProfile..") \n[::] IP: "..tUser.sIP.." \n[::] Country Code: "..tostring(IP2Country.GetCountryName(tUser))) end RegConnected = UserConnected OpConnected = UserConnected
Цитата
было UA ну и у людей с разных стран отображалась своя страна ?
По идее так, но как работает GetCountryName, не знаю.
Автор: West 8.12.2008, 19:55
GetCountryName, а это куда надо встовлять?
После переустановки скрипта,вобще пишет [::] Country Code: Unknown :(
Автор: Sephiroth_Lukaw 8.12.2008, 20:04
Он во втором коде вставлен, для [::] Country Code:, но будет ли он возвращать US и т.п. я не знаю.
Автор: Setuper 8.12.2008, 20:46
хехе. Неужели не понятно, что для того, чтобы определялась страна нужна база стран и ip адресов.
Установка базы ip-to-country: 1). Качаем архив отсюда: http://mydc.ru/r/?http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip или отсюда ip_to_country.csv.zip ( 712.33 килобайт )
: 66 2). Распаковываем его содержимое в папку PtokaX/cfg
Автор: West 8.12.2008, 21:10
А былоб прикольно,а может просто в папку с птохой залить GetCountryName и оно будет читать?
Автор: Setuper 8.12.2008, 21:17
Я всё написал что и как делать. Не ужели непонятно?
Автор: West 8.12.2008, 21:44
Всё зделал всёравно
[::] Country Code: Unknown .
Значит не получеться скрипт зделать :(
Автор: Setuper 8.12.2008, 21:51
Я что не по русски написал? Что-то не пойму, что тут не понятного. Качаем архив по любой из представленных ссылок. Распаковываем этот архив и получаем файл ip-to-country.csv. После этого открываем папку с PtokaX, далее открываем папку cfg и копируем туда этой файл.
<Lelik> вот что мне написало твою инфу - [::] Your info: - [::] Nick: data_trevel - [::] IP: 10.224.80.223 - [::] Class: Unreg
Автор: Sephiroth_Lukaw 14.12.2008, 15:38
http://mydc.ru/topic851.html?view=findpost&p=6212
Автор: data_trevel 14.12.2008, 22:48
все заработало!!!
Автор: Lpein 16.12.2008, 13:39
у меня локальный адрес, начинается он 172.20... Будет Country Code работать?
Автор: sphinx 18.12.2008, 12:05
Цитата(Lpein @ 16.12.2008, 13:39)
у меня локальный адрес, начинается он 172.20... Будет Country Code работать?
Не будет.
Автор: Lpein 20.12.2008, 14:20
А можно как нибуть добавить в таблицу свои диапазоны адресов?
Автор: sphinx 21.12.2008, 1:01
Почему бы и нет? попробуй
Автор: Lpein 27.12.2008, 13:20
А как правильно это зделать? например мой локальный ип 172.20.21.41 и мне надо внести в базу 172202141?
Автор: Артём 27.12.2008, 13:45
у меня почемуто эта база вообще не хочет работать
Автор: West 6.1.2009, 14:19
что пишет ?
Автор: Nickolya 6.1.2009, 14:30
Цитата(Lpein @ 27.12.2008, 13:20)
А как правильно это зделать? например мой локальный ип 172.20.21.41 и мне надо внести в базу 172202141?
Нет, формула расчета ипа видна в некоторых функциях скриптов(s1, s2, s3, s4 - 1-4 цифры ip соответственно): s1*(256^3) + s2*(256^2) + s3*256 + s4 = s1*16777216 + s2*65536 + s3*256 + s4
Код
function CountIP(sIP) local _,_, IP1, IP2, IP3, IP4 = string.find(sIP, "^(%d+)%.(%d+)%.(%d+)%.(%d+)") if IP1 and IP2 and IP3 and IP4 then local IP1, IP2, IP3, IP4 = tonumber(IP1), tonumber(IP2), tonumber(IP3), tonumber(IP4) local Count = (IP1 * 16777216) + (IP2 * 65536) + (IP3 * 256) + (IP4) return Count end end
Автор: Setuper 7.1.2009, 2:31
или вот: http://mydc.ru/ipb.html?s=&showtopic=334&view=findpost&p=2543
Автор: Tamerlan 19.1.2009, 14:36
Народ поставил этот скрипт Всё работает,но только что мне дописать в скрипте,что бы после строчки [:::] Country Code: Russian Federation был пропуск,а то когда пишут в чате всё получается вместе..ЗАРАНЕЕ СПАСИБО!!!
Автор: Sephiroth_Lukaw 19.1.2009, 20:07
Какой пропуск? Так:
Код
function UserConnected(tUser) local Profile = (ProfMan.GetProfile(tUser.iProfile) and ProfMan.GetProfile(tUser.iProfile).sProfileName) or "Unreg" Core.SendToUser(tUser,"\n[::] Your info: \n[::] Nick: "..tUser.sNick.." \n[::] Class: "..Profile.." ("..tUser.iProfile..") \n[::] IP: "..tUser.sIP.." \n[::] Country Code: "..tostring(IP2Country.GetCountryName(tUser)).."\n") end RegConnected = UserConnected OpConnected = UserConnected
?(\n в конце добавил)
Автор: Tamerlan 19.1.2009, 20:24
Опа дружище спасибо огромное!!!а то я всё перепробывал!!!!!
Автор: Артём 2.2.2009, 23:05
Цитата(Setuper @ 8.12.2008, 20:46)
хехе. Неужели не понятно, что для того, чтобы определялась страна нужна база стран и ip адресов.
Установка базы ip-to-country: 1). Качаем архив отсюда: http://mydc.ru/r/?http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip или отсюда ip_to_country.csv.zip ( 712.33 килобайт )
: 66 2). Распаковываем его содержимое в папку PtokaX/cfg
всё сделал как тут написано....и нечего ...а в чём дело немогу понять
Автор: Tamerlan 12.2.2009, 16:54
а не могли бы пожалуйста дописать в этот скрипт,что бы показывало ещё: сколько Хаб в онлайне,Общая шара хаба и Сколько посетителей на хабе???? Если конечно это можно!
Автор: Setuper 12.2.2009, 16:56
Это есть в других скриптах. Смотри в разделе готовые скрипты.
Автор: Tamerlan 12.2.2009, 17:02
я пробывал прописать в этот скрипт мне пишет при коннекте Статистика.lua:3: attempt to index global 'user' (a nil value) ??????
Автор: ForZ 25.2.2009, 4:52
Зделайте плиз чтобы показыволо
- [::] Your info: - [::] Nick: West - [::] Class: Operator (3) - [::] IP: 77.244.36.184 - [::] Country Code: -- UA иле у Руссово RU плиз
Автор: Setuper 25.2.2009, 12:02
Всю тему полностью прочитать лень? http://mydc.ru/ipb.html?s=&showtopic=851&view=findpost&p=6212