ASI [WIP] FPSUP: OptimizeSampPools

SR_team

like pancake
Автор темы
BH Team
4,720
6,369
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R3
Плагин оптимизирует работу с пулами сампа, убирая не нужные циклы. Вместо использования циклов для поиска id, плагин расширяет игровые структуры и записывает id в них.

Если вы разработчик, то вы можете оптимизировать свой код, используя поиск id сущностей через функции SAMP'а:
Оригинальная сигнатура:
WORD __thiscall PlayerPool::findByGTAPed(struct PlayerPool *this, struct CPed *gta_ped)
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Упрощенная сигнатура:
WORD __stdcall findByGTAPed(struct CPed *gta_ped)
Адресс функции R1: 0x10420
Адресс функции R3: 0x13570
Оригинальная сигнатура:
WORD __thiscall ActorPool::findByGTAPed(struct PlayerPool *this, struct CPed *gta_ped)
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Упрощенная сигнатура:
WORD __stdcall findByGTAPed(struct CPed *gta_ped)
Адресс функции R1 и R3: 0x18A0
Оригинальная сигнатура:
WORD __thiscall ObjectPool::findByGTAObject(struct PlayerPool *this, struct CObject *gta_object)
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Упрощенная сигнатура:
WORD __stdcall findByGTAObject(struct CObject *gta_object)
Адресс функции R1: 0xF560
Адресс функции R3: 0x126C0
Оригинальная сигнатура:
WORD __thiscall ObjectPool::getVehicleId(struct PlayerPool *this, struct CVehicle *gta_vehicle)
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Упрощенная сигнатура:
WORD __stdcall getVehicleId(struct CVehicle *gta_vehicle)
Адресс функции R1: 0x1B0A0
Адресс функции R3: 0x1E440

На данный момент оптимизированы поиски id для:
  • игроков
  • актеров
  • объектов
  • машин
Поддерживаемые версии сампа: R1, R3

Исходники:
Код пишем на стриме: https://twitch.tv/sr_team_v2 (продолжение хз когда)
 

Вложения

  • OptimizeSampLoops.asi
    567 KB · Просмотры: 3,288
Последнее редактирование:
D

deleted-user-422095

Гость
Обычному человеку это полезно?
 

SR_team

like pancake
Автор темы
BH Team
4,720
6,369

dendy.

Активный
351
66
На монсере дм локация 100 без скрипта: 35-36 иногда 37fps
Со скриптом: 35-41fps при том что открыто 2 гта в одной на цр а в другой на монсере.
Так и не понял что он дает
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,770
11,213
На монсере дм локация 100 без скрипта: 35-36 иногда 37fps
Со скриптом: 35-41fps при том что открыто 2 гта в одной на цр а в другой на монсере.
Так и не понял что он дает
ты ожидал + 100 фпс что ли? это немного не так работает
 

Rei

Известный
Друг
1,589
1,617
есть замеры сколько оригинальная и патченная функция выполняется? и как часто эти функции вызываются
 
  • Нравится
Реакции: Slivshik

SR_team

like pancake
Автор темы
BH Team
4,720
6,369
есть замеры сколько оригинальная и патченная функция выполняется? и как часто эти функции вызываются
Конкретно функция с игроками, которая сейчас оптимизирована вызывается всегда, когда целишься. Самп берет объект в который ты целишься и пытается из него получить id игрока, даже если это не игрок - плагин оптимизирует это. В будущем будет больше оптимизаций - добавим машины, актеров, объекты и начнем переписывать встроенные циклы, что бы вместо кучи циклов самп использовал игровые пуллы
 
D

deleted-user-422095

Гость
Конкретно функция с игроками, которая сейчас оптимизирована вызывается всегда, когда целишься. Самп берет объект в который ты целишься и пытается из него получить id игрока, даже если это не игрок - плагин оптимизирует это. В будущем будет больше оптимизаций - добавим машины, актеров, объекты и начнем переписывать встроенные циклы, что бы вместо кучи циклов самп использовал игровые пуллы
а health = getCharHealth(Ped ped) таким образом заработает?