- 4,803
- 6,475
- Версия SA-MP
-
- 0.3.7-R3
Плагин оптимизирует работу с пулами сампа, убирая не нужные циклы. Вместо использования циклов для поиска id, плагин расширяет игровые структуры и записывает id в них.
Если вы разработчик, то вы можете оптимизировать свой код, используя поиск id сущностей через функции SAMP'а:
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Адресс функции R1: 0x10420
Адресс функции R3: 0x13570
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Адресс функции R1 и R3: 0x18A0
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Адресс функции R1: 0xF560
Адресс функции R3: 0x126C0
Но оптимизированную функцию можно вызвать с упрощенной сигнатурой
Адресс функции R1: 0x1B0A0
Адресс функции R3: 0x1E440
Плагин экспортирует функции для получения id, без обращения к пулам сампа (см архив dev.zip):
На данный момент оптимизированы поиски id для:
R1, R3
Исходники:
Если вы разработчик, то вы можете оптимизировать свой код, используя поиск id сущностей через функции SAMP'а:
Оригинальная сигнатура:
WORD __thiscall PlayerPool::findByGTAPed(struct PlayerPool *this, struct CPed *gta_ped)
Упрощенная сигнатура:
WORD __stdcall findByGTAPed(struct CPed *gta_ped)
Адресс функции R3: 0x13570
Оригинальная сигнатура:
WORD __thiscall ActorPool::findByGTAPed(struct PlayerPool *this, struct CPed *gta_ped)
Упрощенная сигнатура:
WORD __stdcall findByGTAPed(struct CPed *gta_ped)
Оригинальная сигнатура:
WORD __thiscall ObjectPool::findByGTAObject(struct PlayerPool *this, struct CObject *gta_object)
Упрощенная сигнатура:
WORD __stdcall findByGTAObject(struct CObject *gta_object)
Адресс функции R3: 0x126C0
Оригинальная сигнатура:
WORD __thiscall ObjectPool::getVehicleId(struct PlayerPool *this, struct CVehicle *gta_vehicle)
Упрощенная сигнатура:
WORD __stdcall getVehicleId(struct CVehicle *gta_vehicle)
Адресс функции R3: 0x1E440
Плагин экспортирует функции для получения id, без обращения к пулам сампа (см архив dev.zip):
Для C и lua FFI:
// Типы
typedef int16_t ped_id_t;
typedef int16_t vehicle_id_t;
typedef int16_t object_id_t;
#define INVALID_PED_ID ( ( ped_id_t ) - 1 )
#define INVALID_VEHICLE_ID ( ( vehicle_id_t ) - 1 )
#define INVALID_OBJECT_ID ( ( object_id_t ) - 1 )
// Функции
ped_id_t OptimizeSampPools__get_ped_id( void *ped );
vehicle_id_t OptimizeSampPools__get_vehicle_id( void *vehicle );
object_id_t OptimizeSampPools__get_object_id( void *object );
C++:
namespace OptimizeSampPools {
// Типы
using ped_id_t = int16_t;
using vehicle_id_t = int16_t;
using object_id_t = int16_t;
static constexpr ped_id_t INVALID_PED_ID = -1;
static constexpr vehicle_id_t INVALID_VEHICLE_ID = -1;
static constexpr object_id_t INVALID_OBJECT_ID = -1;
// Функции
ped_id_t get_ped_id( void *ped );
vehicle_id_t get_vehicle_id( void *vehicle );
object_id_t get_object_id( void *object );
} // namespace OptimizeSampPools
На данный момент оптимизированы поиски id для:
- игроков
- актеров
- объектов
- машин
Исходники:
Вложения
Последнее редактирование: