ReHLDS/ReAPI Моментальный краш reapi или криворукость ? :)

Статус
В этой теме нельзя размещать новые ответы.

karaulov

Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
627
Симпатии
226
Код:
RegisterHookChain(RG_PM_Move, "PM_Move", .post=false) //  .post=true crash, too
....
public PM_Move(const id)
{
    if (is_user_connected(id) && is_user_alive(id))
    {
        new cmdx = get_pmove( pm_cmd );
        get_ucmd(cmdx, ucmd_viewangles, tmpViewAngles[id]); <---- CRASH
В общем падает на вызове get_ucmd(cmdx, ucmd_viewangles, tmpViewAngles[id]);

В коде reapi нашел такое

Код:
if (PARAMS_COUNT == 3) {
        dest = getAmxAddr(amx, params[arg_3]);
        element = *getAmxAddr(amx, params[arg_4]);
    }
Я конечно не эксперт, но почему оно пытается читать 4 аргумент, если доступно только 3?

В общем вроде как если заменить на PARAMS_COUNT == 4 краши прекращаются, но может я что-то не то в коде написал? :)
 

karaulov

Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
627
Симпатии
226
Что никто никогда этой функцией не пользовался? ((
 

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
863
Симпатии
532
Предупреждения
15
Пол
Мужской
karaulov, насколько помню там вот такие аргументы
(const PlayerMove:ppmove, const server)

Откуда ты взял id ?
 

karaulov

Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
627
Симпатии
226
Хз где-то скопировал) Наверно из PM_AirMove

Щас проверю будут ли краши)



Vaqtincha, краш остался.

Код:
RegisterHookChain(RG_PM_Move, "PM_Move", .post=false)
...

public PM_Move(const PlayerMove:ppmove, const server)
{
    new const id = get_pmove(pm_player_index) + 1;
    if (is_user_connected(id) && is_user_alive(id))
    {
        new cmdx = get_pmove( pm_cmd );
        get_ucmd(cmdx, ucmd_viewangles, tmpViewAngles[id]);
        new buttons = get_ucmd(cmdx, ucmd_buttons);
        ...
    }
}
Падает там же
get_ucmd(cmdx, ucmd_viewangles, tmpViewAngles[id]);
 
Последнее редактирование:

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
863
Симпатии
532
Предупреждения
15
Пол
Мужской
karaulov, вообще непонятно с get_pmove.
А не должно ли он получить из аргумента ppmove (структура PlayerMove).
Те вместо get_pmove(pm_player_index) может get_pmove(ppmove, pm_player_index)
По логике так я вижу работу натива. Хотя не утверждаю тк не юзал мув функции и нативов
По логике так я вижу работу натива. Хотя не утверждаю тк не юзал мув функции и нативов
 

karaulov

Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
627
Симпатии
226
да вроде как все правильно, вот когда я изменил код reapi, крашить перестало и выдавало верные углы
ну кто-то же должен был проверить нативки перед добавлением, но я не нашел ни одного упоминания о ней нигде(Именно с viewangles)
может кто затестить может я чтото не так сделал просто?
 
Последнее редактирование:

Vaqtincha

aggressive
Разработчик
Скриптер
Регистрация
28 Янв 2018
Сообщения
863
Симпатии
532
Предупреждения
15
Пол
Мужской
karaulov, смотри исходник регейма.
 

karaulov

Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
627
Симпатии
226
Vaqtincha, что это даст если я посмотрю на него?
 

karaulov

Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
627
Симпатии
226
Vaqtincha, ну вот в reapi я посмотрел

Код:
if (PARAMS_COUNT == 3) {
        dest = getAmxAddr(amx, params[arg_3]);
        element = *getAmxAddr(amx, params[arg_4]);
    }
Это же ошибка? Приходит 3 аргумента, но почему-то читается 4тый и функция падает.

Но тогда следующие функции тоже должны падать если в них подать 3 аргумента:

get_ucmd
get_pmtrace
 

karaulov

Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
627
Симпатии
226
Vaqtincha, Да все таки это не моя криворукость а ошибка в reapi, и public PM_Move(const id) верный
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу