StatPX Lite, API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
Здравствуйте, гость ( Вход | Регистрация )
StatPX Lite, API2 | Веб-статистика хаба, чат-ранг, статистика местоположения юзеров |
8.9.2010, 5:18
Сообщение
#61
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
StatPX Lite Версия: 1.01 beta Версия API: API2 Системные требования: PtokaX 0.4.x.x, Lua 5.1 Автор: alex82 Описание: Скрипт представляет собой переделанный и дополненный StatPX. Основные отличия от оригинала: * удалена база данных юзеров (со всеми вытекающими отсюда последствиями - топ хабберов и статистика посещаемости также пошли под нож) Возможности скрипта: Статистика хаба:учёт рекордов по размеру шары и количеству пользователей Скачать: StatPX_Lite_1.01_beta.rar ( 36.4 килобайт ) Кол-во скачиваний: 752 Старые версии Флаги стран: flags.rar ( 260.78 килобайт ) Кол-во скачиваний: 350 Смайлы: smiles.rar ( 8.91 килобайт ) Кол-во скачиваний: 299 |
|
|
29.11.2010, 13:40
Сообщение
#62
|
|
Продвинутый участник Группа: Пользователи Сообщений: 177 Регистрация: 20.5.2008 Пользователь №: 5 Спасибо сказали: 26 раз |
нужен модуль
Цитата Библиотека Lua-GD ( http://mydc.ru/topic2356.html )
|
|
|
29.11.2010, 13:42
Сообщение
#63
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
ustas, для никса это не то...
|
|
|
29.11.2010, 13:49
Сообщение
#64
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
В StatPX/config.lua измени значение переменной Graph на n.
Можно ещё коммент после объявления этой переменной почитать... |
|
|
29.11.2010, 15:39
Сообщение
#65
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 26.8.2009 Пользователь №: 4 265 Спасибо сказали: 5 раз |
изменив "Graph на n" помогло, скрипт заработал, но хотелось бы полноценно
может кто поделится информацией как проще скомпилить lua-gd? нашел альтернативу, установил с оверлея, теперь проблема в другом - error loading module 'gd' from file '/home/jackm/PtokaX/libs/gd.so': /home/jackm/PtokaX/libs/gd.so: неправильный класс ELF: ELFCLASS64 есть идеи? Решение найдено. Описал тут |
|
|
30.12.2010, 14:04
Сообщение
#66
|
|
Активный участник Группа: Пользователи Сообщений: 54 Регистрация: 13.9.2010 Из: Быдло сити)) Пользователь №: 7 687 Спасибо сказали: 3 раза |
Нашел глюку.
В стате по "Топ-стран" показывает только локалку, останьное помечает как "Не известно", как исправить? |
|
|
30.12.2010, 14:18
Сообщение
#67
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
поставить iptocountry в директорию птоки. Это такая база данных в которой есть привязка ip-диапазона к стране
|
|
|
30.12.2010, 14:18
Сообщение
#68
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
наверно установить базу IP-to-Country и перезапустить хаб
|
|
|
30.12.2010, 14:46
Сообщение
#69
|
|
Активный участник Группа: Пользователи Сообщений: 54 Регистрация: 13.9.2010 Из: Быдло сити)) Пользователь №: 7 687 Спасибо сказали: 3 раза |
|
|
|
30.12.2010, 14:51
Сообщение
#70
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
закинь в cfg и перезапусти птоку... |
|
|
3.1.2011, 5:22
Сообщение
#71
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 26.7.2010 Пользователь №: 7 338 Спасибо сказали: 0 раз |
Подскажите пожалуйста как вырезать пункт Ограничения???
|
|
|
5.1.2011, 18:54
Сообщение
#72
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
-slava-
Открыть mainstat.tpl, и убрать ненужное. |
|
|
21.1.2011, 18:37
Сообщение
#73
|
|
Начинающий Группа: Пользователи Сообщений: 14 Регистрация: 13.11.2010 Пользователь №: 8 059 Спасибо сказали: 0 раз |
а как его поставить?
|
|
|
30.1.2011, 20:19
Сообщение
#74
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 3 Регистрация: 29.1.2011 Пользователь №: 8 664 Спасибо сказали: 0 раз |
Вопрос: Как заставить работать пункт "Последний зарегистрировавшийся юзер" на главной странице? Ответ: Для этого необходимо добавить в скрипт регистрации код, записывающий ник зарегистрировавшегося юзера в файл lastreg.txt, находящийся в папке StatPX_Lite. Код должен выглядеть примерно так: Код local lastreg = io.open(Core.GetPtokaXPath().."scripts/StatPX_Lite/lastreg.txt","w") К примеру, в скрипт Registrator этот код нужно добавить сразу после строк:if lastreg then lastreg:write(user.sNick) lastreg:close() end Код if tCfg.ShowToAll then ToAll("Поприветствуем нового зарегистрировавшегося участника - "..user.sNick.."!") end извините куда в этом вот скрипте это вставить? Прячем большой код под спойлер или в codebox! Код --[[ RegMe 1.0f LUA 5.11 [Strict][API 2] By Mutor 04/07/07 Саморегистрация\Смена пароля RegMe Command Help Команды Описание !rmhelp Помощь !regme Регистрация !passwd смена пароля перевел и добавил функцию сообщения о новою юзере Mariner. Enjoy... ]] --//-- -- Запретить поиск и передачу файлов для нерегистрированных юзеров? true = да/false = нет local RegOnly = false -- Запретить общий чат нерегистрированным юзерам? true = да/false = нет local RegChat = false -- Запретить приватные сообщения нерегистрированным юзерам? true = да/false = нет [приватные месэйджи операторам не блокируются] local RegPms = false -- Сообщать о входе нерегистрированных юзеров оператору? true = да/false = нет local Report = false -- Кто получает сообщения о нерегистрированных логинах и ошибках [только если report = true] local OpNick = "evoll" --//-- local Bot,Scp,Pfx = SetMan.GetString(21),"RegMe",SetMan.GetString(29):sub(1,1) local Menu,SubMenu = SetMan.GetString(0),"Регистрация" local BlockMsg = "\r\n\r\n\tUnregistered users may not chat, pm, search or transfer files in this hub.\r\n".. "\tYou may pm operators for assistance. You may also self-register by typing.\r\n".. "\t!regme <password> or use context menu commands [right click].\r\n\r\n" UserConnected = function(user) SendCmds(user) if user.iProfile == -1 then if Report then OnError("Незарегестрированный юзер: "..user.sNick.." зашел на "..SetMan.GetString(0)) end if RegOnly then return Core.SendToUser(user,"<"..Bot.."> "..BlockMsg..RegCmds["rmhelp"](user,data,cmd)) end end end OpConnected,RegConnected = UserConnected,UserConnected ChatArrival = function(user,data) local _,_,cmd = data:find("%b<> %p(%w+)") if cmd then cmd = cmd:lower() if cmd and RegCmds[cmd] then return Core.SendPmToUser(user,Bot,RegCmds[cmd](user,data,cmd)), true end else local _,_,to,from = string.find(data,"^$To: (%S+) From: (%S+)") if to and from then if RegPms and user.iProfile == -1 then local prof = Core.GetUser(to) if prof then if not Core.GetUserValue(prof,11) then return Core.SendPmToUser(user,to,"<"..Bot.."> "..BlockMsg),true end else return true end end else if RegChat and user.iProfile == -1 then return Core.SendToUser(user,"<"..Bot.."> "..BlockMsg),true end end end end ToArrival = ChatArrival ConnectToMeArrival = function(user, data) if RegOnly and user.iProfile == -1 then local CtmMsg = "\t*Пожалуйста, удалите этот файл из очереди.*" return Core.SendToNick(user.sNick,"<"..Bot.."> "..BlockMsg.. CtmMsg:gsub(" ",string.char(160)).."\r\n\r\n|"),true end end RevConnectToMeArrival = ConnectToMeArrival SearchArrival = function (user, data) if RegOnly and user.iProfile == -1 then local SrMsg = "\t*Пожалуйста, закроте окно поиска.*" local _,_,search = string.find(data,"([^%?]+)|$") search = search or "" local res = "Незарегистрированный юзер"..string.char(92)..user.sNick..", поиск ".. "отключен для тебя."..string.rep("\t",75)..search return Core.SendToUser(user,"$SR "..SetMan.GetString(21).." "..res.." 0 0/0".. SetMan.GetString(0).." ("..Core.GetHubIP()..":"..SetMan.GetString(4)..")"), Core.SendToUser(user,"<"..Bot.."> "..BlockMsg.. SrMsg:gsub(" ",string.char(160)).."\r\n\r\n|"),true end end OnError = function(msg) local user = Core.GetUser(OpNick) if user then Core.SendToUser(user,"<"..Bot.."> "..msg) end end SendCmds = function(user) local Prof = "Unregistered User" if user.iProfile > -1 then Prof = ProfMan.GetProfile(user.iProfile).sProfileName end for i,v in pairs(RegCmds) do local desc,arg1,arg2 = RegCmds[i]() Core.SendToNick(user.sNick,"$UserCommand 1 1 "..SubMenu.."\\".. desc.."$<%[mynick]> "..Pfx..i..arg1.."|") Core.SendToNick(user.sNick,"$UserCommand 1 2 "..SubMenu.."\\".. desc.."$<%[mynick]> "..Pfx..i..arg2.."|") end Core.SendToUser(user,"<"..Bot.."> "..Prof.."'s "..Scp.." команды ".. "включены. Для регистрации воспользуйтесь меню.") end FormatSize = function(int) local i,u,x = tonumber(int) or 0,{"","K","M","G","T","P"},1 while i > 1024 do i,x = i/1024,x+1 end return string.format("%.2f %sB.",i,u[x]) end RegCmds = { regme = function(user,data,cmd) if user then local nick = user.sNick if user.iProfile ~= -1 then return "Твой ник, "..nick..", уже зарегестрирован." elseif Core.GetUserAllData(user) then local _,_,pwd = data:find("%b<> %p%w+ (%S+)|$") if pwd then if nick:find("[%c\$\|\<\>\:\?\*\"\/\\]") then return "Ник содержит запрещенные символы. ".. "Пожалуйсто, введите другой." end if pwd:find("[%c\$\|\<\>\:\?\*\"\/\\]") then return "Пароль содержит запрещенные символы. ".. "Пожалуйсто, введите другой." end local hub = SetMan.GetString(0) local addy = SetMan.GetString(2)..":"..SetMan.GetString(3) local share,ip = FormatSize(user.iShareSize),user.sIP local slots = user.iSlots or 0 local mode = "Пассив" if user.bActive then mode = "Актив" end if user.sMode and user.sMode == "5" then mode = "Socks5" end local opmsg = "\r\n\r\n\tЗарегистрировался новый юзер\r\n".. "\tвот детали регистрации:\r\n".. "\t"..string.rep("=",22).."\r\n".. "\tНик:\t"..nick.."\r\n".. "\tПароль:\t"..pwd:gsub(".","x").."\r\n".. "\tШара:\t"..share.."\r\n".. "\tIP:\t"..ip.."\r\n".. "\tРежим работы:\t"..mode.."\r\n".. "\tОткрыто слотов:\t"..slots.."\r\n" RegMan.AddReg(nick, pwd, 3) Core.SendToOps("<"..Bot.."> "..opmsg) Core.SendToAll("<"..Bot.."> Поприветствуем нового зарегестрировавшегося пользователя "..nick.."!;)") return "\r\n\r\n\tПриветствую. Вы удачно ".. "зарегистрировались.\r\n\t"..string.rep("=",40).."\r\n".. "\tНазвание хаба:\t"..hub.."\r\n".. "\tАдрес хаба:\t"..addy.."\r\n".. "\tНик:\t"..nick.."\r\n".. "\tПароль:\t"..pwd.."\r\n\r\n".. "\t"..string.rep("=",40).."\r\n".. "\tПожалуйста обратите внимание на эту информацию.\r\n".. "\tПожалуйста перезайдите на хаб, чтобы активизировать ваш статус.\r\n" else return "Ошибка! Использовать: "..Pfx..cmd.." <пароль>" end end else return "Зарегистрироваться"," %[line:Пароль]"," %[line:Пароль]"," <password>>" end end, passwd = function(user,data,cmd) if user then if user.iProfile == -1 then return "Твой ник, "..user.sNick..", не зарегестрирован." elseif Core.GetUserAllData(user) then local _,_,oldpass,newpass = data:find("%b<> %p%w+ (%S+) (.+)|$") if oldpass and newpass then local pwd,prof = RegMan.GetReg(user.sNick).sPassword,user.iProfile if pwd and prof then if oldpass:lower() ~= pwd:lower() then return "Неверный пароль. ".. "Попробуйте снова. [case insensitive]" end if newpass:find("[%c\$\|\<\>\:\?\*\"\/\\]") then return "Пароль содержит запрещенные символы. ".. "Пожалуйста, введите другой." end if newpass:lower() == oldpass:lower() then return "Вы не можете поменять пароль на такой же! ".. "Пожалуйста, введите другой." end RegMan.ChangeReg(user.sNick, newpass, prof) return "Вы успешно сменили пароль с ".. oldpass.." на "..newpass end else return "Ошибка! Использовать: ."..Pfx..cmd.." <старый пароль> <новый пароль>" end end else return "Сменить пароль"," %[line:Текущий пароль] %[line:Новый пароль]", " %[line:Текущий пароль] %[line:Новый пароль]"," <old password> <new password>" end end, rmhelp = function(user,data,cmd) if user then local reply = "\r\n\r\n\t"..Scp.." Help\r\n\r\n\tКоманды\t\tОписание\r\n".. "\t"..string.rep("=",40).."\r\n" for i,v in pairs(RegCmds) do local desc = RegCmds[i]() reply = reply.."\t"..Pfx..string.format("%-15s",i).."\t"..desc.."\r\n" end return reply.."\n\t"..string.rep("=",40).."\r\n\r\n" else return "Справка","","" end end, } |
|
|
30.1.2011, 20:23
Сообщение
#75
|
|
Освоившийся участник Группа: Пользователи Сообщений: 276 Регистрация: 23.3.2010 Из: РФ Смоленск Пользователь №: 6 429 Спасибо сказали: 60 раз |
viento,
А зачем скрипт смены ника в статистеке? |
|
|
31.1.2011, 12:38
Сообщение
#76
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 3 Регистрация: 29.1.2011 Пользователь №: 8 664 Спасибо сказали: 0 раз |
|
|
|
31.1.2011, 22:45
Сообщение
#77
|
|
Активный участник Группа: Пользователи Сообщений: 54 Регистрация: 13.9.2010 Из: Быдло сити)) Пользователь №: 7 687 Спасибо сказали: 3 раза |
добавил новые звания в топ чатеров
звания tRanks = { -- Звания чат-ранга. Звания должны добавляться от меньшего к большему {1, "Новичек"},{20,"Начинающий"},{100,"Участник"},{200,"Бывалый"},{500,"Писака"},{1000,"Житель чата"},{2500, "Наследник"},{5000,"Местная гопота"},{7500,"Мэр чата"},{10000,"Президент чата"},{15000,"Бог чата"}, } теперь при получении кем либо нового звания админам в чат выдает ошибку: Код [**:**:**] <[K.o.S]> Ошибка StatPX Lite: ... ХАБ\PtoKax 0.4.1.1\scripts\StatPX_Lite.lua:206: attempt to call global 'GetChatRank' (a nil value) вот кусок скрипта, где он нашел какуюто неисправность: тык if (tAccess.ChatRank[user.iProfile] and ((tWebCfg.Enable and tWebCfg.ChatRank) or tCfg.ChatRank)) then if tChatRank[user.sNick] then tChatRank[user.sNick] = tChatRank[user.sNick]+1 else tChatRank[user.sNick] = 1 end if tCfg.ShowRecords and tData.ChatRankNum[tChatRank[user.sNick]] then Core.SendToAll("<"..(SetMan.GetBool(18) and SetMan.GetString(21) or "Hub-Security").."> "..user.sNick.." набрал "..tChatRank[user.sNick].." сообщений и получает звание \""..GetChatRank(tChatRank[user.sNick]).."\".") end end if (tWebCfg.Enable and tWebCfg.ChatLog) or MOTDChat then local save = true if #data > tCfg.ChatMax then save = false else local n = 1 for _ in data:gmatch("\n") do возможно понял почему ({2500, "Наследник"} между 2500, и "Наследник" пробел, жду следующего получения звания для проверки нет, дело не в этом, жду помощи |
|
|
31.1.2011, 23:08
Сообщение
#78
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
По всей видимости случайно попутно снесли функцию GetChatRank, о чем и говорит ошибка (попытка вызвать глобальную GetChatRank (нулевое значение)).
Попробуй вставь это в конец скрипта: Код function GetChatRank(num)
for i = #tRanks, 1, -1 do if num >= tRanks[i][1] then return tRanks[i][2] end end return tRanks[1][2] end |
|
|
31.1.2011, 23:13
Сообщение
#79
|
|
Активный участник Группа: Пользователи Сообщений: 54 Регистрация: 13.9.2010 Из: Быдло сити)) Пользователь №: 7 687 Спасибо сказали: 3 раза |
По всей видимости случайно попутно снесли функцию GetChatRank, о чем и говорит ошибка (попытка вызвать глобальную GetChatRank (нулевое значение)). непомогло, в сам скрипт в конец самый втыкнул, 0 результата Код [23:11:45] <[K.o.S]> Ошибка StatPX Lite: ... ХАБ\PtoKax 0.4.1.1\scripts\StatPX_Lite.lua:631: attempt to get length of global 'tChatRanks' (a nil value) даже попробывал обновить скрипт, выдрав его из 1-го поста, ничего не поменялось Код [23:17:22] <[K.o.S]> Ошибка StatPX Lite: ... ХАБ\PtoKax 0.4.1.1\scripts\гStatPX_Lite.lua:206: attempt to call global 'GetChatRank' (a nil value)
|
|
|
1.2.2011, 20:09
Сообщение
#80
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 3 Регистрация: 29.1.2011 Пользователь №: 8 664 Спасибо сказали: 0 раз |
ну а мне кто подскажет куда тот кусок скрипта впихнуть?
|
|
|
1.2.2011, 20:17
Сообщение
#81
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
viento, а тему кто прочитает?
|
|
|
Похожие темы
|
Сейчас: 23.11.2024, 1:44 |