
02.07.2018, 12:30
|
|
Новичок
Регистрация: 14.07.2017
Сообщений: 26
С нами:
4648109
Репутация:
3
|
|
Сообщение от kewa opcode
первую очень легко сделать самостоятельно
а вторую чето не понял
Ну определение функции .
Т.е ее исходник.
|
|
|

02.07.2018, 12:52
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от qwintty
Ну определение функции .
Т.е ее исходник.
Может тебе еще и кошкодевочку найти?
|
|
|

02.07.2018, 13:25
|
|
Новичок
Регистрация: 14.07.2017
Сообщений: 26
С нами:
4648109
Репутация:
3
|
|
Сообщение от Dark_Knight
Может тебе еще и кошкодевочку найти?
Ну желательно.
|
|
|

02.07.2018, 13:27
|
|
Постоянный
Регистрация: 15.04.2017
Сообщений: 602
С нами:
4778331
Репутация:
63
|
|
я бы тоже не отказался
|
|
|

02.07.2018, 14:28
|
|
Новичок
Регистрация: 14.07.2017
Сообщений: 26
С нами:
4648109
Репутация:
3
|
|
Подскажите пожалуйста , где хотя бы найти информацию по этим функциям.
IsInRangeOf(*xpos, *ypos, x, y, radius))
GetfAngleByPos(*xpos, *ypos, x, y);
|
|
|

02.07.2018, 16:59
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Сообщение от qwintty
Подскажите пожалуйста , где хотя бы найти информацию по этим функциям.
IsInRangeOf(*xpos, *ypos, x, y, radius))
GetfAngleByPos(*xpos, *ypos, x, y);
Функция может иметь разные действия, если ты хочешь прям повторить эту функцию, то нужно искать там, где ты её взял.
Могу посоветовать аналог, возможно подойдет - Информация - [SF] Полезные функции(https://blast.hk/threads/10970/#post-124093)
насчет углов, посмотри plugin от SR_team - AsiPlugin(https://git.prime-hack.net/SR_team/AsiPlugin)
И на будущее, не создавай темы по каждому вопросу, достаточно написать вопрос в эту тему.
|
|
|

02.07.2018, 19:14
|
|
Новичок
Регистрация: 12.06.2018
Сообщений: 24
С нами:
4168872
Репутация:
0
|
|
Как получить хп ?
stPassengerData ->byteHealth;
|
|
|

02.07.2018, 20:15
|
|
Познающий
Регистрация: 13.11.2014
Сообщений: 41
С нами:
6050727
Репутация:
58
|
|
Всем хай,использую хук на HandleRPCPacketFunc в двух плагинах и получается,что он работает то в одном плагине,то в другом.
Сообщение от Спойлер
C++:
Код:
#define SAMP_HOOKENTER_HANDLE_RPC 0x3743D
#define SAMP_HOOKENTER_HANDLE_RPC2 0x373C9
#define SAMP_HOOKEXIT_HANDLE_RPC 0x37443
#define SAMP_HOOKEXIT_HANDLE_RPC2 0x37451
void
HandleRPCPacketFunc
(
unsigned
char
id
,
RPCParameters
*
rpcParams
,
void
(
*
callback
)
(
RPCParameters
*
)
)
{
if
(
rpcParams
!=
nullptr
&&
rpcParams
->
numberOfBitsOfData
>=
8
)
{
BitStream
bsData
(
rpcParams
->
input
,
rpcParams
->
numberOfBitsOfData
/
8
,
false
)
;
switch
(
id
)
{
case
RPC_DeathMessage
:
{
pSAMP
->
addMessageToChat
(
-
1
,
"plugin ONE"
)
;
int16_t
plaerid
,
killerid
;
int8_t
resaon
;
bsData
.
ResetReadPointer
(
)
;
bsData
.
Read
(
killerid
)
;
bsData
.
Read
(
plaerid
)
;
bsData
.
Read
(
resaon
)
;
break
;
}
}
}
callback
(
rpcParams
)
;
}
void
_declspec
(
naked
)
hook_handle_rpc_packet
(
void
)
{
static
RPCParameters
*
pRPCParams
=
nullptr
;
static
RPCNode
*
pRPCNode
=
nullptr
;
static
DWORD dwTmp
=
0
;
__asm pushad
;
__asm mov pRPCParams
,
eax
;
__asm mov pRPCNode
,
edi
;
HandleRPCPacketFunc
(
pRPCNode
->
uniqueIdentifier
,
pRPCParams
,
pRPCNode
->
staticFunctionPointer
)
;
dwTmp
=
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKEXIT_HANDLE_RPC
;
__asm popad
;
__asm add esp
,
4
__asm jmp dwTmp
;
}
void
_declspec
(
naked
)
hook_handle_rpc_packet2
(
void
)
{
static
RPCParameters
*
pRPCParams
=
nullptr
;
static
RPCNode
*
pRPCNode
=
nullptr
;
static
DWORD dwTmp
=
0
;
__asm pushad
;
__asm mov pRPCParams
,
ecx
;
__asm mov pRPCNode
,
edi
;
HandleRPCPacketFunc
(
pRPCNode
->
uniqueIdentifier
,
pRPCParams
,
pRPCNode
->
staticFunctionPointer
)
;
dwTmp
=
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKEXIT_HANDLE_RPC2
;
__asm popad
;
__asm jmp dwTmp
;
}
void
InstallAllHooks
(
)
{
static
int
iSAMPHooksInstalled
;
if
(
!
iSAMPHooksInstalled
)
{
if
(
pSAMP
->
getInfo
(
)
==
NULL
)
return
;
/*
https://github.com/sr-tream/UniLib/blob/master/UniLib/CHooks.hpp
*/
HookRPC1
=
new
CHookJmp
(
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKENTER_HANDLE_RPC
,
hook_handle_rpc_packet
,
6
)
;
//
HookRPC2
=
new
CHookJmp
(
pSAMP
->
getSAMPAddr
(
)
+
SAMP_HOOKENTER_HANDLE_RPC2
,
hook_handle_rpc_packet2
,
8
)
;
iSAMPHooksInstalled
=
1
;
}
}
у второго плагина код один и тот же,за исключением другого RPC.
Я понимаю,что идёт конфликт хуков,но как его исправить?
|
|
|

02.07.2018, 20:48
|
|
Постоянный
Регистрация: 15.04.2017
Сообщений: 602
С нами:
4778331
Репутация:
63
|
|
проверять если в месте хука уже есть хук то после выполнения своего выполнять чужой который был до тебя
|
|
|

02.07.2018, 22:39
|
|
Познающий
Регистрация: 13.11.2014
Сообщений: 41
С нами:
6050727
Репутация:
58
|
|
Интересует как сделать это?
Сообщение от kewa opcode
.. после выполнения своего выполнять чужой который был до тебя
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|