Skip to content

Known incompatibilities

IS4 edited this page Jun 8, 2024 · 5 revisions

Since version 1.4.3, the majority of the source of incompatibilities can be disabled by setting environment variables PAWNPLUS_NO_AMX_HOOKS (disables asynchronous functions and other AMX-related enhancements) and PAWNPLUS_NO_FILE_HOOKS (disables the debug module) to any value other than 0.

SAMPGDK

All public functions are reported as defined

SAMPGDK hooks amx_FindPublic to always report success (and returns a negative index) even for non-existent public functions. Some natives in PawnPlus rely on the existence of public functions being reported correctly, and may not work as expected when it is not the case.

PawnPlus will produce a warning when such a thing occurs. Use pp_public_min_index or pp_use_funcidx to deal with the issue.

YSI

Public function index caching and load order

YSI appears to reorganize the public function table on startup, changing the indices and their associated names. If pawn_register_callback is used prior to this, it remembers the initial index value, resulting in a wrong callback being used.

Crashdetect

Versions 4.20 and 4.21 in Crashdetect changed code related to hooking the fopen C function, causing crashes in some situations. This can be prevented by disabling the fopen hooks by setting PAWNPLUS_NO_FILE_HOOKS=1. This issue is reported here.

Rust SDK

Plugins using samp-rs do not interop correctly with dynamic strings or variants in PawnPlus, as the SDK does not respect the AMX API when reading native arguments and thus cannot read any memory outside the AMX range. This issue is reported here.

Clone this wiki locally