OMG :shok:
Как же оно должно нагружать сервер!
public OnGameFrame()
{
for (new i=1; i<=MaxClients; i++) // сначала делаем цикл по игрокам
...
if(GetConVarBool(g_CvarEnable) && (i_playerTeam > 1)) // и только после этого проверяем включен ли плагин
...
CreateBeam(i);
...
}
public Action:CreateBeam(any:client)
{
...
new color[4]; // каждый тик для каждого валидного игрока создавать массив через new - это признак отличного кода
color[0] = GetConVarInt( g_CvarRed ); // как и узнавать значение квара
color[1] = GetConVarInt( g_CvarGreen );
color[2] = GetConVarInt( g_CvarBlue );
color[3] = GetConVarInt( g_CvarTrans );
...
life = GetConVarFloat( g_CvarLife );
...
width = GetConVarFloat( g_CvarWidth );
...
dotWidth = GetConVarFloat( g_CvarDotWidth );
...
}
оно
каждый тик делает цикл по всем игрокам, потом при наличии валидного игрока
проверяет для него значение квара включения плагина, если плагин таки включён, то запрашивает значения кваров цвета, длительности свечения и размера луча, а также размера точки.
Это не говоря уж о том, что каждую итерацию цикла плагин создает 3 переменных (
2 числовых и одну строковую и даже не через decl!) в самом теле цикла и 9 в вызываемой функции (
из них 4 - массивы тоже через new).
Я бы не хотел юзать такой плагин на своём сервере.
Когда я более 2 лет назад делал
модификацию этого плагина для NMRiH, то избавился от всего этого говнокода ещё в версии 1.5.3 (и в версии 1.5 от 13.04.2015г. добавил возможность игрокам выбирать цвет своего луча и сохранял выбор через
clientprefs).
В версии же 1.4 (от 04.03.2015г.) у меня значения кваров уже сохранялись в файл.
В общем я бы на твоём месте заглянул в код версии 1.6.1 (на новом синтаксисе) или 1.5.3 (на старом синтаксисе, как и у тебя) и глянул как это фиксилось. И сделал бы аналогично.