ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Как поймать внутриигровое событие в SAMPFUNCS? (https://forum.antichat.xyz/showthread.php?t=1370939)

Ya Zaregalsya 27.11.2020 04:23

Цитата:

Сообщение от ishi

как создать коллбек на событие в игре?
ну, как "хуки" сетевые, только на внутриигровые события (любое действие, совершённое/спровоцированное игроком)


Dark_Knight 27.11.2020 21:51

найти его адресс и поставить на него хук. Плагин SDK в помощь.

Ya Zaregalsya 29.11.2020 07:28

Цитата:

Сообщение от Dark_Knight

найти его адресс и поставить на него хук. Плагин SDK в помощь.

— Как обжарить хлеб в тостере?

— Покупаешь хлеб и жаришь. Сварочный аппарат в помощь.

Dark_Knight 29.11.2020 18:34

так оно и есть. Ты сказал что ты хочешь игровое событие словить, а их херовая туча и хорошо они описаны в плагин SDK

Ya Zaregalsya 29.11.2020 21:19

Цитата:

Сообщение от Dark_Knight

так оно и есть. Ты сказал что ты хочешь игровое событие словить, а их херовая туча и хорошо они описаны в плагин SDK

Нужно обработать попадание пули в конкретный объект. Здесь таких событий нет.

kin4stat 29.11.2020 21:21

Цитата:

Сообщение от Ya Zaregalsya

Нужно обработать попадание пули в конкретный объект. Здесь таких событий нет.

Хук на DoBulletImpact и сравнение объектов приходящих в эту функцию

Ya Zaregalsya 02.12.2020 19:15

Цитата:

Сообщение от KiN4StAt

Хук на DoBulletImpact и сравнение объектов приходящих в эту функцию

=)

А как получить объекты, которые приходят в эту функцию?

Dark_Knight 02.12.2020 23:20

Цитата:

Сообщение от Ya Zaregalsya

=)

А как получить объекты, которые приходят в эту функцию?

Немного уточни этот момент)

Ya Zaregalsya 24.01.2021 10:07

Цитата:

Сообщение от KiN4StAt

Хук на DoBulletImpact и сравнение объектов приходящих в эту функцию

Всё ещё не разобрался с Вашим предложением. Можете объяснить подробнее как реализовать тело такого хука? У меня вообще крайне мало опыта работы с хуками.

Dark_Knight 24.01.2021 11:59

Могу тебе кинуть пример хука на urmem DoBulletImpact. По логике вещей должен код работать, но 100 процентной гарантии не даю ибо пишу не со своего компа и пишу без компилятора. Скажу сам, я сам до сих пор не особо в хуках разбираюсь.

C++:





Код:

#include "urmem.hpp"
urmem
::
hook hook
;
//Определение обьекта нашего хука(вроде правильно сказал по терминологии)
//Определяем тело нашей функции куда мы хотим чтобы шли данные с хука
void
DoBulletImpact
(
void
*
_this
,
CEntity
*
owner
,
CEntity
*
victim
,
CVector
*
startPoint
,
CVector
*
endPoint
,
CColPoint
*
colPoint
,
int
arg5
)
{
hook
.
call

(
_this
,
owner
,
victim
,
startPoint
,
endPoint
,
colPoint
,
arg5
)
;
//Вызываем оригинальную функцию.
}
//В иницилизацию плагина
hook
.
install
(
0x73B550
,
urmem
::
get_func_addr
(
&
DoBulletImpact
)
)
;
//Первый параметр метода - это куда мы ставим хук.
//Второй - это адресс нашего метода или функции. Если это метод класса, то он должен быть статичным.
//В выгрызку плагина
hook
.
disable
(
)
;



Ссылка на urmem

Ссылка на опредление метода DoBulletImpact и его адресс

Скажу от себя еще. Этой либой я лично не ставил хуки на thiscall и все делал исключительно на свой глаз и код может быть не рабочим.


Время: 16:00