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

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

MyDC.ru _ Скрипты для RusHub'а _ Рекорды

Автор: STRELOK 16.1.2010, 14:30

Название: Рекорды
Версия: 1.1
Автор: STRELOK
Описание: Скрипт рекордов хаба
Изменения:


Для работы скрипта нужно скачать модуль files http://mydc.ru/topic2937.html?view=findpost&p=25266

 Records.lua ( 3.52 килобайт ) : 118
 

Автор: Otshelnik-Fm 16.1.2010, 22:56

Спамит рекорд бот. Сделай вывод не чаще раз в 30 минут - так будет удобней

Автор: STRELOK 17.1.2010, 7:09

Если не хочешь чтобы бот писал

Цитата
Новый рекорд...
то перед строками
Код
        Core.SendToAll("Новый рекорд пользователей на хабе: "..sTotalUsers.." !", sBot)
и
Код
        Core.SendToAll("Новый рекорд шары на хабе: "..DoShareUnits(sTotalShare).." !", sBot)
Поставь --

Добавлена Версия 1.1:

Автор: Otshelnik-Fm 17.1.2010, 15:53

Закомментировать то я смог. Но нужно именно чтобы он писал о рекордах, но не так часто! А то как включил скрипт впервые он засрал сообщениями чат. Вот и было предложение чтобы не отключить его, а сделать вывод, ну к примеру, раз в полчаса-раз в час.

Автор: STRELOK 17.1.2010, 16:14

Цитата(Otshelnik-Fm @ 17.1.2010, 17:53) *
Закомментировать то я смог. Но нужно именно чтобы он писал о рекордах, но не так часто! А то как включил скрипт впервые он засрал сообщениями чат. Вот и было предложение чтобы не отключить его, а сделать вывод, ну к примеру, раз в полчаса-раз в час.

Тогда и обновление рекордов будет происходить раз в 1 час или раз 30 минут, т.к. обновление таблицы рекордов происходит по таймеру. После того, как время таймера вышло, запускается функция UpdateHubStats и соответственно происходит обновление таблицы, и выводится сообщение о новом рекорде, если число оказывается больше того, что находится в таблице.

Автор: Serx 17.1.2010, 17:52

А если просто завести ещё 1 таймер для проверки был ли установлен новый рекорд за время его срабатывания?
Т.е. пусть таблица рекордов обновляется как и прежде, а проверка события установления рекорда по таймеру раз в полчаса big_smile.gif

Автор: STRELOK 17.1.2010, 19:13

Цитата(Serx @ 17.1.2010, 19:52) *
А если просто завести ещё 1 таймер для проверки был ли установлен новый рекорд за время его срабатывания?
Т.е. пусть таблица рекордов обновляется как и прежде, а проверка события установления рекорда по таймеру раз в полчаса big_smile.gif

Делать этого не хочу. т.к. не вижу в этом смысла. Кому надо, то вот что надо сделать:

В функцию OnStartup() добавить:
Код
Core.AddTimer(2, 1800000, "ShowHubStats")

Функцию UpdateHubStats() переписать на:
Код
function UpdateHubStats()
    local sTotalUsers = Core.GetUsersCount()
    local sTotalShare = Core.GetTotalShare()
    if sTotalUsers > tHubStat.MaxUsers then
        tHubStat.MaxUsers = sTotalUsers
        tHubStat.MaxUsersTime = os.time(os.date("*t"))
        Files.SaveTable(sFile, tHubStat, "tHubStat")
    end
    if sTotalShare > tHubStat.MaxShare then
        tHubStat.MaxShare = sTotalShare
        tHubStat.MaxShareTime = os.time(os.date("*t"))
        Files.SaveTable(sFile, tHubStat, "tHubStat")
    end
end

В самый конец скрипта добавить функцию:
Код
function ShowHubStats()
    local sTotalUsers = Core.GetUsersCount()
    local sTotalShare = Core.GetTotalShare()
    if sTotalUsers > tHubStat.MaxUsers then
        Core.SendToAll("Новый рекорд пользователей на хабе: "..sTotalUsers.." !", sBot)
            end
    if sTotalShare > tHubStat.MaxShare then
        Core.SendToAll("Новый рекорд шары на хабе: "..DoShareUnits(sTotalShare).." !", sBot)
            end
end


PS: Не проверял.