|
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
![]()
Сообщение
#41
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 61 Регистрация: 24.7.2008 Из: Тамбов Пользователь №: 259 Спасибо сказали: 1 раз ![]() |
Wariner: Вот,про шару самый раз,ток щас въехал,сорри,короче скрипт вылетает,если кто то запрашивает статистику с нулевой шарой,или скрытой шарой,значит в этом и есть проблема вылета,но тестил уже с исправлением Setuper! Возможно исправить этот баг?
Вот с исправлением Setuper
Прикрепленные файлы
|
|
|
![]() ![]()
Сообщение
#42
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Сравнивай и смотри где у тебя ошибка)) Сравнишь, отпиши что у тебя было не так!!!
CODE --[[ Statistics v1.0 by Wariner
Возможности скрипта: - Показывает Топ пользователей по шаре - Показывает максимальное колличество юзеров, шары на хабе и даты их установления всё это одной командой Скрипт удобнее смотреть в Notepad++ ]]-- ----------------------------------------------------------------------------- -- Конфигурация ----------------------------------------------------------------------------- gBot = SetMan.GetString(21) gPath = Core.GetPtokaXPath():gsub("/", "\\").."scripts\\Statistics\\" -- основная папка скрипта gStat = gPath.."Statistics.tbl" -- таблица max статистики gMaxShowed = 10 -- максимально выводимое кол-во участников ранжирования byte=1 Kbyte=1024 Mbyte=Kbyte*Kbyte Gbyte=Kbyte*Kbyte*Kbyte Tbyte=Kbyte*Kbyte*Kbyte*Kbyte tStat = {} ----------------------------------------------------------------------------- -- дальше лучше ничего не трогать ----------------------------------------------------------------------------- function OnStartup() -- функции которые выполняются при загрузке скрипта if loadfile(gStat) ~= nil then dofile(gStat) else tStat["tSharatop"] = {} tStat["tMaxtop"] = {} tStat.tMaxtop["MaxUsers"] = 0 tStat.tMaxtop["MaxUsersTime"] = 0 tStat.tMaxtop["MaxShara"] = 0 tStat.tMaxtop["MaxSharaTime"] = 0 WriteFile(tStat, "tStat", gStat) end TmrMan.AddTimer(30*1000,"UpdateHubStats") end function UserConnected(sUser) Core.GetUserAllData(sUser) Core.SendToNick(sUser.sNick,"$UserCommand 1 3 Статистика\\Посмотреть$<%[mynick]> !statistics|") local shara = sUser.iShareSize or 0 if shara ~= 0 then tStat.tSharatop[sUser.sNick] = shara WriteFile(tStat, "tStat", gStat) end end OpConnected = UserConnected RegConnected = UserConnected function ChatArrival(sUser,sData) sData = string.sub(sData,1,-2) local _,_,cmd =string.find(sData, "%b<>%s+(%S+)") if cmd == "!statistics" then Core.SendToNick(sUser.sNick,"<"..gBot.."> "..ShowRanks(sUser, tStat.tSharatop)) return true end end function ShowRanks(sUser, tQWERTY) Core.GetUserAllData(sUser) local shara = sUser.iShareSize or 0 local tTemp = {} local numb = "none" for i,v in pairs(tQWERTY) do table.insert(tTemp,{i,v}) end table.sort(tTemp,function(a,b) return (a[2] > b[2]) end) msg = "\r\n\r\n\t\t\t\tСтатистика хаба\r\n".. "-"..string.rep("«»", 40).."-\r\n".. "\tСейчас юзеров: "..Core.GetUsersCount()..", максимум: ".. tStat.tMaxtop["MaxUsers"]..", был: "..tStat.tMaxtop["MaxUsersTime"].."\r\n".. "\tСейчас общая шара: "..getNormalShare(Core.GetCurrentSharedSize()).. ", максимум: "..getNormalShare(tStat.tMaxtop["MaxShara"])..", был: ".. tStat.tMaxtop["MaxSharaTime"].."\r\n".. "-"..string.rep("«»", 40).."-\r\n".. "\tРейтинг самых больших коллекций хаба:\r\n" --[[for i = 1,gMaxShowed do if tTemp[i] then msg = msg.."\t["..i.."] "..getLenght(tTemp[i][1]).."\t".. getNormalShare(tTemp[i][2]).."\r\n" if tTemp[i][1] == sUser.sNick then numb = i end end end]] for i = 1,#tTemp do if tTemp[i] then if i<=gMaxShowed then msg = msg.."\t["..i.."] "..getLenght(tTemp[i][1]).."\t".. getNormalShare(tTemp[i][2]).."\r\n" end if tTemp[i][1] == sUser.sNick then numb = i end end end msg = msg.."-"..string.rep("«»", 40).."-\r\n".. "\tВы расшарили: "..getNormalShare(shara).. ",\t ваш вклад в общую шару хаба: ".. tostring(math.floor(1000*((shara*100)/Core.GetCurrentSharedSize()))/1000).. "%\r\n".. "\tВаша позиция в рейтинге: "..numb.."\r\n".. "\tПользователи участвуют в рейтинге в течение неограниченного времени\r\n".. "-"..string.rep("«»", 40).."-" return msg end function UpdateHubStats() local sTotalUsers = Core.GetUsersCount() local sTotalShare = Core.GetCurrentSharedSize() if sTotalUsers > tStat.tMaxtop["MaxUsers"] then tStat.tMaxtop["MaxUsers"] = sTotalUsers tStat.tMaxtop["MaxUsersTime"] = os.date("%d.%m.%Y в %H:%M:%S") Core.SendToAll("<"..gBot.."> Установлен новый рекорд по количеству пользователей: "..sTotalUsers.." !") end if sTotalShare > tStat.tMaxtop["MaxShara"] then tStat.tMaxtop["MaxShara"] = sTotalShare tStat.tMaxtop["MaxSharaTime"] = os.date("%d.%m.%Y в %H:%M:%S") Core.SendToAll("<"..gBot.."> Установлен новый рекорд по общему размеру шары: "..getNormalShare(sTotalShare).." !") end WriteFile(tStat, "tStat", gStat) end function getNormalShare(share) -- шара не в байтах local sshare = 0; if tonumber (share) then sshare = tonumber (share) else sshare =0; end local tshare="" if sshare >=Tbyte then tshare = tostring(math.floor(1000*sshare/Tbyte)/1000).." ТБ" elseif sshare >=Gbyte then tshare = tostring(math.floor(1000*sshare/Gbyte)/1000).." ГБ" elseif sshare >=Mbyte then tshare = tostring(math.floor(1000*sshare/Mbyte)/1000).." МБ" elseif sshare >=Kbyte then tshare = tostring(math.floor(1000*sshare/Kbyte)/1000).." КБ" else tshare = tostring(sshare).." Б" end return tshare end function getLenght(Name) -- функция длинны ника local Nick = Name sLength = string.len(Nick) if sLength < 20 then tLength = 20 - sLength end Nick = Nick..string.rep(" ", tLength) return Nick end function WriteFile(table, tablename, file) local handle = io.open(file, "w") Serialize(table, tablename, handle) handle:close() end function Serialize(tTable, sTableName, hFile, sTab) sTab = sTab or ""; hFile:write(sTab..sTableName.." = {\n" ); for key, value in pairs(tTable) do local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); if(type(value) == "table") then Serialize(value, sKey, hFile, sTab.."\t"); else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value); hFile:write(sTab.."\t"..sKey.." = "..sValue); end hFile:write(",\n"); end hFile:write(sTab.."}"); end |
|
|
![]()
Сообщение
#43
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 61 Регистрация: 24.7.2008 Из: Тамбов Пользователь №: 259 Спасибо сказали: 1 раз ![]() |
Я скрипты то не умею писать,если проблема вылета скрипта при запросе стастики была в том,что нулевая шара у меня или у других пользователей,то версия без твоего исправления Setuper тож работает,но всё равно спасибо за помощь,вот только не приколько что из за юзеров с нулевой шарой при запросе статистики,вылетает скрипт...((
|
|
|
![]()
Сообщение
#44
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Первый вариант:
Код local numb = "none" Второй вариант (классный вариант ![]() Код local numb = "очень низкая" Третий вариант: изменить код: Код if shara ~= 0 then tStat.tSharatop[sUser.sNick] = shara WriteFile(tStat, "tStat", gStat) end на код: Код tStat.tSharatop[sUser.sNick] = shara WriteFile(tStat, "tStat", gStat) в последнем случае пользователи с нулевой шарой тоже будут участвовать в топе! |
|
|
![]()
Сообщение
#45
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 61 Регистрация: 24.7.2008 Из: Тамбов Пользователь №: 259 Спасибо сказали: 1 раз ![]() |
Спасибо тебе огромное Setuper , теперь всё норм!!!
![]() Сразу что то до меня не дошло что проблемма вылета скрипта при запросе из за нулевой шары(( Сам пока не соображаю,но всё же по образцам что то исправляю,может когда нить и простые скрипты научусь писать,хотя сложно всё же)) |
|
|
![]()
Сообщение
#46
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 47 Регистрация: 29.7.2008 Из: керчь Пользователь №: 293 Спасибо сказали: 0 раз ![]() |
нежелаете прикрутить топ100 по шаре ато топ 10 тока =(
|
|
|
![]()
Сообщение
#47
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
ну а какие проблемы?
![]() меняй gMaxShowed = 10 на gMaxShowed = 100 |
|
|
![]()
Сообщение
#48
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 47 Регистрация: 29.7.2008 Из: керчь Пользователь №: 293 Спасибо сказали: 0 раз ![]() |
нез аменить а прикрутить дополнительно чтобы мона было ето смотреть и типо Статистика\\шара\\топ100 ето я для примера написал
|
|
|
![]()
Сообщение
#49
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
|
|
|
![]()
Сообщение
#50
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
добавил в скрипт ограничение колличества дней участия в топе
Прикрепленные файлы
|
|
|
![]()
Сообщение
#51
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
хех не совсем понятно для чего в функции очистки строчка:
Код sNick = q Не проще ли было написать просто: Код if (tStat.tSharatop[q].Date + sDay*86400) < os.time() then Зачем вводить какую-то новую переменную sNick, причём глобальную, когда всё тоже самое можно сделать с локальной переменной q? Это к слову оптимизации. Данный факт я наблюдал уже в нескольких твоих скриптах))))
tStat.tSharatop[q] = nil end |
|
|
![]()
Сообщение
#52
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
Как бы это объяснить... Я пишу скрипт, иногда что то не работает, при этом появляется несколько вариаций кода и к моему сожалению моя крайняя не внимательность приводит к лишним строчкам... Наверно так.
PS хорошо что есть человек готовый ткнуть носом)))) |
|
|
![]() ![]()
Сообщение
#53
|
|
![]() lua-паддаван ![]() ![]() ![]() Группа: Пользователи Сообщений: 75 Регистрация: 1.7.2008 Из: www.u-l.ru Пользователь №: 114 Спасибо сказали: 29 раз ![]() |
добавил в скрипт ограничение колличества дней участия в топе при заходе любого юзера на хаб скрипт вылетает с ошибкой Код attempt to index field 'tSharatop' (a nil value) строка Код if tStat.tSharatop[sUser.sNick] == nil then P.S. путём удаления старого файла Statistics.tbl скрипт был запущен и пока прекрасно работает ![]() всем спасибо сам виноват , в папке оказался файл от старой версии скрипта Сообщение отредактировал KauH - 14.11.2008, 0:31 |
|
|
![]()
Сообщение
#54
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
по всей видимости каким-то образом удалились (или ты сам удалил) все данный из файла Statistics.tbl
Открой файл и посмотри если ли там что-то? Если файл отсутствует, то ошибки быть не должно. ![]() Не успел написать)) |
|
|
![]()
Сообщение
#55
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 35 Регистрация: 2.11.2008 Из: Балаково Пользователь №: 971 Спасибо сказали: 0 раз ![]() |
|
|
|
![]()
Сообщение
#56
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
|
|
|
![]()
Сообщение
#57
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 35 Регистрация: 2.11.2008 Из: Балаково Пользователь №: 971 Спасибо сказали: 0 раз ![]() |
CODE dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu") gBot = "-=хХ]ЗлОдЕЙ[Хх=-" gPath = Core.GetPtokaXPath():gsub("/", "\\").."scripts\\Statistics\\" -- основная папка скрипта gStat = gPath.."Statistics.tbl" -- таблица max статистики gMaxShowed = 25 -- максимально выводимое кол-во участников ранжирования byte=1 Kbyte=1024 Mbyte=Kbyte*Kbyte Gbyte=Kbyte*Kbyte*Kbyte Tbyte=Kbyte*Kbyte*Kbyte*Kbyte tStat = {} ------------------------------------------------------------------------------------------------------------------------ -- дальше лучше ничего не трогать ------------------------------------------------------------------------------------------------------------------------ function OnStartup() -- функции которые выполняются при загрузке скрипта if loadfile(gStat) ~= nil then dofile(gStat) else tStat["tSharatop"] = {} tStat["tMaxtop"] = {} tStat.tMaxtop["MaxUsers"] = 0 tStat.tMaxtop["MaxUsersTime"] = 0 tStat.tMaxtop["MaxShara"] = 0 tStat.tMaxtop["MaxSharaTime"] = 0 WriteFile(tStat, "tStat", gStat) end TmrMan.AddTimer(30*1000,"UpdateHubStats") end function UserConnected(sUser) Core.GetUserAllData(sUser) Core.SendToNick(sUser.sNick,"$UserCommand 1 3 -=хХ] ГлаВноЕ МенЮ [Хх=-\\-=[Информация]=-\\Посмотреть статитику$<%[mynick]> !statistics|") local shara = sUser.iShareSize or 0 if shara ~= 0 then tStat.tSharatop[sUser.sNick] = shara WriteFile(tStat, "tStat", gStat) end end OpConnected = UserConnected RegConnected = UserConnected function ChatArrival(sUser,sData) sData = string.sub(sData,1,-2) local _,_,cmd =string.find(sData, "%b<>%s+(%S+)") if cmd == "!statistics" then Core.SendToNick(sUser.sNick,"<"..gBot.."> "..ShowRanks(sUser, tStat.tSharatop)) return true end end function ShowRanks(sUser, tQWERTY) Core.GetUserAllData(sUser) local shara = sUser.iShareSize or 0 local tTemp = {} for i,v in pairs(tQWERTY) do table.insert(tTemp,{i,v}) end table.sort(tTemp,function(a,b) return (a[2] > b[2]) end) msg = "\r\n\r\n\t\t\t\tСтатистика хаба\r\n".. "-"..string.rep("«»", 40).."-\r\n".. "\tСейчас юзеров: "..Core.GetUsersCount()..", максимум: "..tStat.tMaxtop["MaxUsers"]..", был: "..tStat.tMaxtop["MaxUsersTime"].."\r\n".. "\tСейчас общая шара: "..getNormalShare(Core.GetCurrentSharedSize())..", максимум: "..getNormalShare(tStat.tMaxtop["MaxShara"])..", был: "..tStat.tMaxtop["MaxSharaTime"].."\r\n".. "-"..string.rep("«»", 40).."-\r\n".. "\tРейтинг самых больших коллекций хаба:\r\n" for i = 1,gMaxShowed do if tTemp[i] then msg = msg.."\t["..i.."] "..getLenght(tTemp[i][1]).."\t"..getNormalShare(tTemp[i][2]).."\r\n" if tTemp[i][1] == sUser.sNick then numb = i end end end msg = msg.."-"..string.rep("«»", 40).."-\r\n".. "\tВы расшарили: "..getNormalShare(shara)..",\t ваш вклад в общую шару хаба: "..tostring(math.floor(1000*((shara*100)/Core.GetCurrentSharedSize()))/1000).."%\r\n".. "\tВаша позиция в рейтинге: "..numb.."\r\n".. "\tПользователи участвуют врейтинге в течении неограниченного времени\r\n".. "-"..string.rep("«»", 40).."-" return msg end function UpdateHubStats() local sTotalUsers = Core.GetUsersCount() local sTotalShare = Core.GetCurrentSharedSize() if sTotalUsers > tStat.tMaxtop["MaxUsers"] then tStat.tMaxtop["MaxUsers"] = sTotalUsers tStat.tMaxtop["MaxUsersTime"] = os.date("%d.%m.%Y в %H:%M:%S") --"%Y/%m/%d %H:%M:%S" Core.SendToAll("<"..gBot.."> Установлен новый рекорд по количеству пользователей: "..sTotalUsers.." !") end if sTotalShare > tStat.tMaxtop["MaxShara"] then tStat.tMaxtop["MaxShara"] = sTotalShare tStat.tMaxtop["MaxSharaTime"] = os.date("%d.%m.%Y в %H:%M:%S") Core.SendToAll("<"..gBot.."> Установлен новый рекорд по общему размеру шары: "..getNormalShare(sTotalShare).." !") end WriteFile(tStat, "tStat", gStat) end function getNormalShare(share) -- шара не в байтах local sshare = 0; if tonumber (share) then sshare = tonumber (share) else sshare =0; end local tshare="" if sshare >=Tbyte then tshare = tostring(math.floor(1000*sshare/Tbyte)/1000).." ТБ" elseif sshare >=Gbyte then tshare = tostring(math.floor(1000*sshare/Gbyte)/1000).." ГБ" elseif sshare >=Mbyte then tshare = tostring(math.floor(1000*sshare/Mbyte)/1000).." МБ" elseif sshare >=Kbyte then tshare = tostring(math.floor(1000*sshare/Kbyte)/1000).." КБ" else tshare = tostring(sshare).." Б" end return tshare end function getLenght(Name) -- функция длинны ника local Nick = Name sLength = string.len(Nick) if sLength < 20 then tLength = 20 - sLength end Nick = Nick..string.rep(" ", tLength) return Nick end function WriteFile(table, tablename, file) local handle = io.open(file, "w") Serialize(table, tablename, handle) handle:close() end function Serialize(tTable, sTableName, hFile, sTab) sTab = sTab or ""; hFile:write(sTab..sTableName.." = {\n" ); for key, value in pairs(tTable) do local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); if(type(value) == "table") then Serialize(value, sKey, hFile, sTab.."\t"); else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value); hFile:write(sTab.."\t"..sKey.." = "..sValue); end hFile:write(",\n"); end hFile:write(sTab.."}"); end всё равно не работает, пишет следующее Синтакс D\PtokaX 0.3.6.0\scripts\Статистика.lua:38: attempt to index field 'tSharatop' (a nil value) |
|
|
![]()
Сообщение
#58
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
папку для скрипта Statistics создал?
|
|
|
![]()
Сообщение
#59
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 35 Регистрация: 2.11.2008 Из: Балаково Пользователь №: 971 Спасибо сказали: 0 раз ![]() |
|
|
|
![]()
Сообщение
#60
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
удали файл Statistics.tbl в этой папке и перезапусти скрипт - должно всё работать!
Ты вообще читаешь сообщения форума? Человек с такой же ошибкой уже писал тут: http://mydc.ru/ipb.html?s=&showtopic=3...post&p=4576 |
|
|
![]() ![]() |
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
![]() |
Типо игра.... | 5 | random name | 8 645 | 21.3.2010, 17:30 Посл. сообщение: Invisible |
![]() |
От: Типо игра.... От темы с ID: 3238 |
1 | теньь | 5 490 | 18.3.2010, 13:07 Посл. сообщение: Saymon21 |
![]() |
Сейчас: 23.2.2025, 19:21 |