Всем ку. Вторые сутки не могу решить одну проблему с кастомным коллбеком в серверном плагине. Наверняка на бластхаке найдутся шарящие за структуру работы плагинов. Так вот, ближе к сути. Ниже покажу код функции которая должна вызывать коллбек в amx'е и то как я получаю указатель на него. Вероятно проблема как раз-таки с невалидностью указателя AMX*, у меня просто крашит сервер в момент выполнения OnPlayerPressKey. Буду премного благодарен, если кто-то сможет помочь.
CNetGame
*
netgame_ptr
=
PluginPointers
::
GetCNetGamePointer
(
)
;
// я на сто процентов уверен, что получаю валидный глобальный указатель на CNetGame, потому что он прекрасно работает в других местах кода
CGameMode
*
gm_ptrr
=
netgame_ptr
->
m_pGameMode
;
PluginCallbacks
::
OnPlayerPressKey
(
gm_ptrr
,
key
,
playerid
)
;
// параметры key и playerid так же точно валидны, ведь я вижу вывод их в консоль сервера
Использовал когда-нибудь samp-ptl?
Никаких указателей не надо, сделано всё за тебя
Ну я sampgdk юзаю, там всё как в samp-ptl, да и с samp-ptl оригинальным тоже игрался. В общем я принял решение хукать OnGameModeInit и OnFilterscriptInit для получения валидного указателя