Краш физики при ноублоке

dvernoff

Добрая душа
Сообщения
638
Реакции
591
Возник вопрос по поводу краша физики связанного с ноублоком который мы устанавливаем через

SetEntData(LR_Player_Prisoner, m_CollisionGroup, 5, 4, true); / SetEntData(LR_Player_Prisoner, m_CollisionGroup, 2, 4, true);

Уже есть 100% информация что крашит переодически именно из за этой функции,
оставляю плагин с этой функцией = краш физики 1-2 раза в день: Throttle,
убираю нет проблем неделю, ну не суть.

Я сделал логи в плагине, чтоб отслеживать на какой строке сработало вкл/выкл ноублока
1611490061146.png

и вот прямо перед крашем, до него за секунд 20 видим что прошла установка ноублока
1611490241493.png

Ну ладно, к сути вопроса, почему может происходить краш физики? Как можно это избежать?



Проверка валидности клиента используемая перед установкой ноублока:
C-подобный:
stock bool EMP_IsValidClient(int client, bool bAllowBots = false, bool bAllowDead = true, int team = -1)
{
    if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || (!bAllowBots && IsFakeClient(client)) || IsClientSourceTV(client) || IsClientReplay(client) || (!bAllowDead && !IsPlayerAlive(client)) || (team != -1 && GetClientTeam(client) != team))
    {
        return false;
    }
    return true;
}
 
Последнее редактирование:

xstage

🏹
Сообщения
726
Реакции
754
А разве индекс клиента не может быть 1?
C-подобный:
    if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || (!bAllowBots && IsFakeClient(client)) || IsClientSourceTV(client) || IsClientReplay(client) || (!bAllowDead && !IsPlayerAlive(client)) || (team != -1 && GetClientTeam(client) != team))
    {
        return false;
    }
    return true;
 

dvernoff

Добрая душа
Сообщения
638
Реакции
591
А разве индекс клиента не может быть 1?
C-подобный:
    if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || (!bAllowBots && IsFakeClient(client)) || IsClientSourceTV(client) || IsClientReplay(client) || (!bAllowDead && !IsPlayerAlive(client)) || (team != -1 && GetClientTeam(client) != team))
    {
        return false;
    }
    return true;
Дак там оператор <= т.е. (меньше или равно)
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,982
как бы уже несколько лет не новость, что из-за игр с коллизией крашится физика
емнип, решения так и не нашли
либо не юзать изменение коллизии, либо рестартить сервер при краше
других рабочих вариантов не знаю
 
Сверху Снизу