Median FPS Checker

Median FPS Checker 1.0.1

Нет прав для скачивания
Сообщения
155
Реакции
46
Помог
5 раз(а)
ufame, что-то у меня не взлетело, не кикает за большой fps
серверные настройки:
Код:
hfc_max_fps "100"
hfc_chat_info "1"
клиентские настройки
Код:
fps_override 1
fps_max 1000
ошибка в логах
Код:
[AMXX] Displaying debug trace (plugin "medianfps.amxx", version "1.0.0")
[AMXX] Run time error 4: index out of bounds 
[AMXX]    [0] medianfps.sma::OnPlayerPreThink (line 65)
p.s. на сервере со мной бегал бот - YAPB
 
Сообщения
458
Реакции
81
Помог
4 раз(а)
ufame , почему в kick'е не учитывается id игрока?
14 Янв 2024
14 Янв 2024
Во вкладке "Исходный код" не обновился код =) Ложный вызов)
 
Сообщения
155
Реакции
46
Помог
5 раз(а)
ufame, в чат не пишет ник игрока которого выкинуло, вместо ника пусто (либо большой пробел)
Игрок � кикнут за FPS > 145.
lang файл есть
Код:
[ru]
MedianFps_PlayerKicked = ^1[^4FPS^1] Игрок ^3%s^1 кикнут за FPS > ^4%d^1.

[en]
MedianFps_PlayerKicked = ^1[^4FPS^1] Player ^3%s^1 has been kicked for FPS > ^4%d^1.
 
Сообщения
1
Реакции
0
Зашёл недавно на один HNS, так там каждые 5 секунд меняет fps_override на 0. Это разве не клиентская команда?
 
Сообщения
15
Реакции
0
Здравствуйте.
А можете ли добавить возможность, чтобы по определенному флагу не кикало?
Например вип игроков, админов?
 
Сообщения
155
Реакции
46
Помог
5 раз(а)
ufame, от себя попрошу добавить запись в лог тех кого кикнуло (в формате дата - время - nick - steamid - fps игрока на момент кика)
Код:
/addons/amxmodx/logs/median_fps_checker.log
 
Сообщения
266
Реакции
84
Мне кажется, сама методика расчета не позволит достоверно определить "среднее" значение FPS. Выборка в 10 тиков - это слишком мало, а статистический анализ выборки нужно производить полноценно, в том числе рассчитывать среднеквадратичное отклонение и использовать это значение для оценки не только самой выборки (устанавливая достоверность, например, 0.95), но и "добросовестности" игрока.

Для реализации подобной идеи, без существенной нагрузки на систему, понадобится создать "самосортирующийся" массив, с автоматическим пересчетом среднего при добавлении в него любого значения... Хотя, для этого частного случая, порядок элементов не важен, поэтому можно вести только учет MIN и MAX и отбрасывать "неподходящие" элементы из выборки, учитывая их в среднеквадратичном отклонении.

Если решать задачу "в лоб" получится довольно большой набор данных:
Код:
enum _:STATS_DATA {
    RAW[100],
    RAW_MIN,
    RAW_MAX,
    RAW_MID,
    Float:RAW_STD

}

new player_stats[MAX_PLAYER + 1][STATS_DATA];
Но мне кажется, можно ввести свое "понятие" схожее со среднеквадратичным отклонением и выполнять "поточный" анализ выборки, фиксируя для принятия решения окончательные значения выборки данных, скажем, каждые 100-1000 тиков. Так получится значительно быстрее.

Код:
enum _:STATS_DATA {
    RAW_MIN,
    RAW_MAX,
    RAW_MID,
    Float:RAW_STD

}

new player_stats[MAX_PLAYER + 1][STATS_DATA];
А если подумать еще, в разрезе "ввода своего понятия", схожего со среднеквадратичным отклонением, то можно отказаться от учета RAW_STD, введя контрольный расчет по таймеру (0.1-10 секунд), просто считая количество тиков игрока / период времени => <FPS>, а понятие "среднеквадратичного отклонения" определить как RAW_STD = (RAW_MID - <FPS>)^2.

Под поточной обработкой, я понимаю учет в среднем значении RAW_MID = (RAW_MID + VALUE) / 2 всех величин в диаппазоне MIN < VALUE < MAX, при получении значения за этим пределом, просто обновлять значения MIN или MAX.

Так получится снять лишнюю нагрузку с системы и получить эквивалент "добросовестности" игрока, а замена Think_Pre на Think_Post сделает влияние плагина на игровой процесс еще более незначительным.

Извините, если внес сумбур своими мыслями :crazy:
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу