| Yayachana) |
22.03.2022 11:30 |
Цитата:
Сообщение от Ya Zaregalsya
Пытаюсь задать персонажу анимку путём эмуляции входящего RPC в SAMPFUNCS. Далее код:
C++:
Код:
SF
->
getSAMP
(
)
->
registerChatCommand
(
"applyAnimation"
,
[
]
(
std
::
string param
)
->
void
{
UINT16 wPlayerID
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
;
UINT8 AnimLibLength
=
4
;
char
AnimLib
[
4
]
=
"PED"
;
UINT8 AnimNameLength
=
10
;
char
AnimName
[
10
]
=
"IDLE_HBHB"
;
float
fDelta
=
3.000000
;
bool
loop
=
false
;
bool
lockx
=
true
;
bool
locky
=
true
;
bool
freeze
=
true
;
UINT32 dTime
=
0
;
BitStream bs
;
bs
.
Write
(
wPlayerID
)
;
bs
.
Write
(
AnimLibLength
)
;
bs
.
Write
(
AnimLib
)
;
bs
.
Write
(
AnimNameLength
)
;
bs
.
Write
(
AnimName
)
;
bs
.
Write
(
fDelta
)
;
bs
.
Write
(
loop
)
;
bs
.
Write
(
lockx
)
;
bs
.
Write
(
locky
)
;
bs
.
Write
(
freeze
)
;
bs
.
Write
(
dTime
)
;
SF
->
getRakNet
(
)
->
emulateRecvRPC
(
ScriptRPCEnumeration
::
RPC_ScrApplyAnimation
,
&
bs
)
;
}
)
;
И на выходе он не делает абсолютно ничего. Все данные по пакету получил путём чтения входящих РПС. В чём может быть проблема?
|
Через RPC не пробовал эмулировать, но при помощи перехвата пакета, всё работает
123:
Код:
bool CALLBACK anim(stRakNetHookParams* params)
{
if (params->packetId == PacketEnumeration::ID_PLAYER_SYNC)
{
char buf[128];
stOnFootData data;
memset(&data, 0, sizeof(stOnFootData));
byte packet;
params->bitStream->ResetReadPointer();
params->bitStream->Read(packet);
params->bitStream->Read((PCHAR)&data, sizeof(stOnFootData));
params->bitStream->ResetReadPointer();
data.byteSpecialAction = ;
data.sCurrentAnimationID = ;
data.sAnimFlags = ;
//sprintf_s(buf, "SpecAction: %d || AnimID: %d || AnimFlags: %d", data.byteSpecialAction, data.sCurrentAnimationID, data.sAnimFlags);
//SF->getSAMP()->getChat()->AddChatMessage(-1, buf);
params->bitStream->ResetWritePointer();
params->bitStream->Write(packet);
params->bitStream->Write((PCHAR)&data, sizeof(stOnFootData));
};
return true;
};
В mainloop -> SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKH OOK_TYPE_OUTCOMING_PACKET, anim);
|