короче прабла следующая: как и 99% сервов, у меня установлена система, чтобы можно было мутить игрока и он не мог писать в чат. система работает, но недавно стал замечать, что server_log.txt иногда нереально разрастается, т.е. вместо нескольких метров за день, набирает 100 и более... заглянув туда увидел, что подключается перец, делает чтобы его мутили и потом запускает флудер и он наматывает server_log.txt до охеренных размеров. И происходит это потому, что моя глушилка не дает писать в общий чат, а в server_log.txt почему то сообщение фиксируется
у меня такая стоит проверка на заглушенность игрока:
Code
if(mutetime[playerid] > 3) { SendClientMessage(playerid, TEAM_CYAN_COLOR, " Вы не можете говорить, вас заткнули (/timem)"); return 0; }
ну и вопрос, как сделать, чтобы и в server_log.txt не логировалось сообщение?
а где отнимается число от Flood[playerid]? тоесть игрок зашёл, дали ему молчанку, он пока проверял есть ли она у него вводя что то в чат раз 10 и его кикнуло, не обязательно флудом, дали например на 40 минут, а он каждые 5 минут писал в чат чтоб проверить если у него молчанка, после 10 раза он улетает в кик
Не в возрасте дело,а в культуре общения и уровне интеллектуального развития
Если вам лижут жопу, не обольщайтесь, возможно это для смазки.
что именно тебя не строило? переместить то что я сказал выше и полностью рабочий код!
Quote (DANGER1979)
проверка должна быть в начале паблика и там же должна быть проверка на НПС, и там же должна быть проверка на флуд, т.е. ограничение по времени.
зачем на НПС проверять?
Quote (Matt_Tuck)
а где отнимается число от Flood[playerid]? тоесть игрок зашёл, дали ему молчанку, он пока проверял есть ли она у него вводя что то в чат раз 10 и его кикнуло, не обязательно флудом, дали например на 40 минут, а он каждые 5 минут писал в чат чтоб проверить если у него молчанка, после 10 раза он улетает в кик
это основа кода... а так там еще несколько вещей нужно добавлять... ну как минимум сброс Flood[playerid] при коннекте или дисконнекте, чтобы чужой счетчик не перешел другому игроку на этом же ид. В том числе можно поставить и периодическое скидывание этого параметра для избежания описанной тобой ситуации, а можно и проще поступить... этому параметру установить значение не 10, а 100 и даже больше, т.к. за 1 секунду этот флудер нафлуживает... внимание: 6555 строк!!! Удивляюсь, как при этом еще серв ухитряется работать )))
Добавлено (22.10.2011, 20:55) --------------------------------------------- конкретно код, который сделал я себе new Flood[MAX_PLAYERS];
в коннект Flood[playerid] = 0;
в минутный таймер засунул сброс счетчика for(new i; i < MAXPLAYERS; i++) { if(IsPlayerConnected(i)) { Flood[i] = 0; } }
в самый верх public OnPlayerText(playerid, text[]) { if(Flood[playerid] > 10) { Kick(playerid); } и тут же ниже в проверке на муте добавил Flood[playerid]++;
при проверке на компе - срабатывает на серве еще пока сработки не было... я там лог еще добавил, чтобы увидеть когда сработает... но так мой серв атакуют не каждый день а пару раз в неделю, так что пока подождем... как сработает отпишусь.
Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
исходя из твоего последнего поста, думаю ты думашь что Flood[playerid]++; прибавляет после отправки сообщения - это не так, прибавляет только тем, у кого муте, т.е. if(mutetime[playerid] > 3) { MuteChat(playerid); Flood[playerid]++; return 0; }
где MuteChat это: public MuteChat(playerid) //сообщение если замутен игрок { new string[256]; format(string, sizeof(string), " Вы не можете говорить, вас заткнули {FFFF00}(осталось %d мин %d сек)", mutetime[playerid]/60, mutetime[playerid]-mutetime[playerid]/60*60); SendClientMessage(playerid, COLOR_LIGHTRED, string); SendClientMessage(playerid, COLOR_LIGHTRED," Если ты не понимаешь как и за что тебя заткнули обращайся на форум, адрес можно"); SendClientMessage(playerid, COLOR_LIGHTRED," увидеть в чате или узнать у администрации /admins или просто у других игроков (/pm)"); }
еще вопросы?
П.С. уже второй день стоит на серве и пока не жаловались, что кикает налево и направо П.П.С. как я уже писал у меня лог пока стоит, чтобы видеть если на ком то сработает эта штука и пока только одного кикнуло... он рекламил левый серв, мой серв его заткнул, но он продалжал спамить и его кикнуло. Только он спамил обычным способом, тупо вводил повторно сообщение, хз, че он не видел, что сообщения не выводятся... короче это не тот клиент, ради которого эта заплатка разрабатывалась.
Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.