всем привет, столкнулся с такой проблемой, захожу в игру, бегу секунд 10, и резко персонаж идет медленно будто в слоу мо каком-то, а на счетчике ФПС красуется от 90 до 120 кадров в секунду, ниже будет что я сделал..
- Удалил все клео (не помогло)
- Переустанавливал сампфункс и клео (не помогло)
- Ставил gta sa 1.0 (не помогло)
У меня стоит новая зимняя сборка браззерса, и стоит crashes.asi, ниже видео с тем самым пиздецом, прошу помогите мужики, не могу спокойно поиграть
Недавно столкнулся с такой же проблемой, и решил провести анализ, из за чего подобное происходит.
Когда игра начинает замедляться(в первый раз после входа в игру), выскакивает вот такой вот варнинг:
Видим, что опкод у него 0x107, заходим на wiki.blast.hk и ищем опкод 107(
вот он), как мы видим он "Создает объект с указанными параметрами(модель и позиция)", далее смотрим на Exception 0xC0000005 at 0x59F8B4, это обозначает что при попытке что то сделать, возникла ошибка Access violation по адресу 0x59F8B4, перемещаемся в иду.
Как мы видим, мы находимся в функции CObject::Init, в которой вызывается тот самый оффсет 0x59F8B4(подсвечено фиолетовым), у нас тут происходит проверка отвечающая за флаги коллизии обьектов, чуть выше данной проверки идет получение pColModel = CModelInfo::ms_modelInfoPtrs[modelId->physical.entity.m_wModelIndex]->clump.base.pColModel;. Как мы видим, тут инициализируется обращение к глобальному массиву указателей на данные моделей, в качестве индекса тут используется m_wModelIndex, это и есть айди модели который присылается сервером.
Сервер присылает на клиент айди модели(того же педа), из за чего происходит обращение к глобальному массиву указателей на данные моделей, и если клиент не находит индекс на модель, то он просто отдает в ответ NULL 0x0, дальше происходит сама проверка отвечающая за флаги коллизии обьектов, и при попытке прочитать данные колллизии модели происходит чтение данных по неверному(тому самому NULL) адресу. Проверка берет pColModel и прибавляет к нему оффсет в котором лежат флаги коллизии(pColModel + offset), но так как у pColModel адрес нулевой, происходит Access Violation 0xC0000005.
Самый простейший фикс данной проблемы(в моем случае была моделька у скина больше 311) это обработчик пакетов WorldPlayerAdd и SetPlayerSkin:
function sampev.onWorldPlayerAdd(playerId, modelId, position, rotation, color, fightingStyle)
if modelId < 0 or modelId > 311 then
return {playerId, 74, position, rotation, color, fightingStyle}
end
end
function sampev.onSetPlayerSkin(playerId, modelId)
if modelId < 0 or modelId > 311 then
return {playerId, 74}
end
end
(если проблема допустим в типе транспорта а не в модельке скина, под свою проблему дорабатывайте, если мне будет не лень сделаю фикс всех возможных причин этого слоу-мо в формате аси)