![]() |
Показаны 3 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VBulletin 3.x.x (http://netadmin.ws/forum/forumdisplay.php?forumid=74)
-- Замучал флуд? Хак для борьбы с ним! (http://netadmin.ws/forum/showthread.php?threadid=11274)
Замучал флуд? Хак для борьбы с ним!
Вот суть работы:
Система не реагирует на создание тем
Система не реагирует на сообщения в форумах , в которых не подсчитываются сообщения
Система не реагирует на пользователей, у которых число сообщений меньше установленного вами.
Принцип работы:
Уровень флуда (УФ) разрешенный на форумах, в процентах: 10. Т. е. из 10 сообщений - 1 должно быть оценено (добавлена репутация). (Настраивается) При добавлении 11-ого система срабатывает.
Система подсчитывает количество сообщений (если они есть), превышающих УФ (КС)
Вычисляет процент КС от общего числа сообщений пользователя (ПКС)
Убавляет репутацию пользователю на величину ПКС при создании КАЖДОГО нового поста, не зависимо от его содержания, если число неоцененных постов превышает УФ
Снижение репутации обрабатывайте "продвижением" из админки .
В комментариях к снижению репутации подробно написано за что , сколько снято и что делать
И так, устанавливаем:
Ð_едактируем файл includes/functions_newpost.php
Сразу после
if ($foruminfo['countposts'])
{
$bbuserinfo['posts'] += 1;
Вставте
if ($type!='thread')
{
$knp=100; //Общее количество постов юзера, после которого начинаются наказания
if($bbuserinfo['posts']>$knp)
{
$rep_user=$DB_site->query_first("
SELECT DISTINCT user.username, user.posts, user.reputation, count( reputation.postid ) rep_posta
FROM " . TABLE_PREFIX . "user AS user, " . TABLE_PREFIX . "reputation AS reputation
WHERE user.usergroupid NOT IN (!!!!!!!!!!!!!!!!!!!!!!!!!)
AND user.userid = reputation.userid
AND user.userid =$bbuserinfo[userid]
AND reputation.reputation >=0
GROUP BY reputation.userid
");
$ub=10;//Ð_азрешенный на форумах процент оцененых сообщений от общего кол-ва постов юзера
$rpp=$rep_user['posts']-($rep_user['posts']*$ub/100);//Ð_азрешено пустых постов для этого пользователя
$pp=$rep_user['posts']-$rep_user['rep_posta'];//Кол-во пустых постов пользователя
$lp=$pp-$rpp;//Лишние посты пользователя
if($rep_user['posts']>0)$repa_minus=floor($lp*100/$rep_user['posts']);// Отнимаемая репа за каждый пост
if($repa_minus>0)
{
$lp=ceil($lp);
$bbuserinfo['reputation']-=$repa_minus;
$admin_text="Ð_то антифлуд. С Вас снято $repa_minus очков репутации. Из $rep_user[posts] Ваших сообщений, только $rep_user[rep_posta] оценено положительно. Для отключения антифлуда, удалите $lp наименее важных постов. Ð_епутация: $bbuserinfo[reputation]";
$reputationlevel = $DB_site->query_first("
SELECT reputationlevelid
FROM " . TABLE_PREFIX . "reputationlevel
WHERE $bbuserinfo[reputation] >= minimumreputation
ORDER BY minimumreputation
DESC LIMIT 1
");
$reputationlevelid = intval($reputationlevel['reputationlevelid']);
$DB_site->query("
UPDATE " . TABLE_PREFIX . "user
SET reputation = $bbuserinfo[reputation],
reputationlevelid = $reputationlevelid
WHERE userid = $bbuserinfo[userid]
");
$repa_minus*=-1;
$DB_site->query("
INSERT INTO " . TABLE_PREFIX . "reputation (postid, reputation, userid, whoadded, reason, dateline)
VALUES ($post[postid], $repa_minus, $bbuserinfo[userid], ХХХХХХХХХ, '" . addslashes($admin_text) . "','" . TIMENOW . "')
");
}
}
}
Вместо восклицательных знаков "!!!!!!!!!!!!!!!!!!!!!!!!!" вставте через запятую без пробелов ID групп которые будут игнорироваться системой. Например: (1,2,3)
Вместо "ХХХХХХХХХ" вставте ID юзера, от чьего имени будет снижаться репа. Например: 1
Вот и все
Уймите бурю возмущения флудеров и пусть сами удаляют свои ненужные посты!!
Удачи!
На моем форуме ни один человек за 10 сообщений не получает оценку. Наверно надо делать на сто сообщений.
Хотя я не буду такой хак ставить, но за идею спасибо.
__________________
C уважением, Игорь
cblog.ru
я думаю, что можно просто сделать жесткие правила и наказывать за их невыполнение всех без исключения, в том числе и модераторов/супермодераторов, тогда и не будет необходимости и в хаке. Скажете это не реально? Как раз реально, просто если кого-то не устраивают такие жесткие правила на форуме, то проходит мимо и диет на другой форум.
| Формат времени GMT. Текущее время 22:42. | Показаны 3 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.