oukibt
26.02.2021, 17:41
Приветствую. Как я заметил, с нативными функциями дело обстоит немного не так, как с колбэками.
Функция amx_Exec работает неправильно на нативные функции. Как я понял, она(нативная функция) даже не вызывается, так как в аргумент
cell *retval возвращается мусорное значение.
У меня примерно такой код
if(amx_FindNative(this->info.amx, funcname, &idx) != AMX_ERR_NONE) return 0; // funcname = CreateDynamicObject
float value = 0.0;
amx_Push(this->info.amx, amx_ftoc(value)); // rz
amx_Push(this->info.amx, amx_ftoc(value)); // ry
amx_Push(this->info.amx, amx_ftoc(value)); // rx
amx_Push(this->info.amx, amx_ftoc(value)); // z
amx_Push(this->info.amx, amx_ftoc(value)); // y
amx_Push(this->info.amx, amx_ftoc(value)); // x
amx_Push(this->info.amx, static_cast<cell>(522)); // objectid
amx_Exec(this->info.amx, &ret_val, idx); // В ret_val возвращается мусорное значение.
Стример само собой подключен, функция используется 1 раз в OnGameModeInit() для того, чтобы плагин, соответственно, нашёл её.
Также есть второй вопрос. Какое предназначение имеет функция amx_Cleanup?
Функция amx_Exec работает неправильно на нативные функции. Как я понял, она(нативная функция) даже не вызывается, так как в аргумент
cell *retval возвращается мусорное значение.
У меня примерно такой код
if(amx_FindNative(this->info.amx, funcname, &idx) != AMX_ERR_NONE) return 0; // funcname = CreateDynamicObject
float value = 0.0;
amx_Push(this->info.amx, amx_ftoc(value)); // rz
amx_Push(this->info.amx, amx_ftoc(value)); // ry
amx_Push(this->info.amx, amx_ftoc(value)); // rx
amx_Push(this->info.amx, amx_ftoc(value)); // z
amx_Push(this->info.amx, amx_ftoc(value)); // y
amx_Push(this->info.amx, amx_ftoc(value)); // x
amx_Push(this->info.amx, static_cast<cell>(522)); // objectid
amx_Exec(this->info.amx, &ret_val, idx); // В ret_val возвращается мусорное значение.
Стример само собой подключен, функция используется 1 раз в OnGameModeInit() для того, чтобы плагин, соответственно, нашёл её.
Также есть второй вопрос. Какое предназначение имеет функция amx_Cleanup?