Пролема с RG_PM_Move и HC_SUPERCEDE

Сообщения
90
Реакции
126
Помог
3 раз(а)
Если требуется сделать HC_SUPERCEDE в хуке RG_PM_Move(и не спрашивайте зачем это нужно, просто нужно), то возникает проблема.
Дело в том, что глобальный указатель pmove https://github.com/s1lentq/ReGameDL...1ac0dd1/regamedll/pm_shared/pm_shared.cpp#L12 устанавливается в самой функции PM_Move https://github.com/s1lentq/ReGameDL...c0dd1/regamedll/pm_shared/pm_shared.cpp#L3174 , а значит при хукании ее и возвращении HC_SUPERCEDE указатель не будет устанавливаться, это ломает работу функций set_pmove и get_pmove, они получают данные разыменовывая этот глобальный указатель, таким образом данные становится возможным получить только разыменовывая указатель - аргумент функции, который представлен так const PlayerMove:pmove но как это делать? вариант pmove[pm_myfield] разумеется не работает, ошибка компиляции
16 Сен 2018
Решение проблемы предложил juice
Код:
#include <amxmodx>
#include <reapi>
#include <fakemeta>

new g_pPlayerMove;

public plugin_init() {
    RegisterHookChain(RG_PM_Move, "OnPM_Move_Pre", false);
}

public OnPM_Move_Pre(const PlayerMove:ppmove, const server) {
    g_pPlayerMove = _:ppmove;


    new flags = get_tr2(g_pPlayerMove + (4 * 46), TR_AllSolid);
    client_print(0, print_chat, "%d", flags);
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу