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

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

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
357
Пол
Мужской
Код:
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
Сообщения
1.041
Симпатии
357
Пол
Мужской
Что никто никогда этой функцией не пользовался? ((
 

Vaqtincha

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

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

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
357
Пол
Мужской
Хз где-то скопировал) Наверно из 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
Сообщения
959
Симпатии
682
Пол
Мужской
karaulov, вообще непонятно с get_pmove.
А не должно ли он получить из аргумента ppmove (структура PlayerMove).
Те вместо get_pmove(pm_player_index) может get_pmove(ppmove, pm_player_index)
По логике так я вижу работу натива. Хотя не утверждаю тк не юзал мув функции и нативов
По логике так я вижу работу натива. Хотя не утверждаю тк не юзал мув функции и нативов
 

karaulov

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

Vaqtincha

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

karaulov

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

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
357
Пол
Мужской
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
Сообщения
1.041
Симпатии
357
Пол
Мужской
Vaqtincha, Да все таки это не моя криворукость а ошибка в reapi, и public PM_Move(const id) верный
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу