Quote:
Originally Posted by Electr000999
i compiled this plugin for sm 1.7.1 and Dhooks 2.0 but, on linux i have issue, player who use voice - freezes..(for example if player jump and use voice he slowly falls on ground), and in console spam:
Code:
clc_VoiceData >> h{...................7.. 687bc7f6 00000000 d8c4060d a0989113 c0010000 e537c9f6
clc_VoiceData >> ........p...I.........a. 00000000 80030000 70000000 49000000 0a000000 c096610a
clc_VoiceData >> ..a.p.a................. e096610a 7096610a 00000000 00000000 ffffffff 00000000
clc_VoiceData >> ................ 00010000 00000000 00000000 00000000
RAW(clc_VoiceData) end
.....
failed processing
without plug-course all good. with old dhooks issue not observed.
on windows works fine, may be signatures for L4D2 outdate, but callback works correct.
|
Quote:
Originally Posted by Noodl
With the offsets I found for tf, nothing happens. No error logs, no functions fire, and in turn, clients do not freeze.
The old offsets, which, for tf, do not resemble anything anymore, cause the bizarre lag issues.
|
For the people noticing that players move in slow motion/lag when speaking on the microphone while using this plugin. The reason is because the hook calling convention on the
PHP Code:
bool CGameClient::ProcessVoiceData( CLC_VoiceData *msg )
function is incorrect inside the
PHP Code:
voiceannounce_ex.sp
file. The call return type is defined as
PHP Code:
ReturnType_Void
when it should be
PHP Code:
ReturnType_Bool
.
Change this line:
PHP Code:
g_hProcessVoice = DHookCreate(offset, HookType_Raw, ReturnType_Void, ThisPointer_Address, Hook_ProcessVoiceData);
to this:
PHP Code:
g_hProcessVoice = DHookCreate(offset, HookType_Raw, ReturnType_Bool, ThisPointer_Address, Hook_ProcessVoiceData);
The reason this bug makes the players move in slow motion is because it always returns false on this function. When the function returns false it will exit the loop that parses the remote network messages from the client since it wont know how to continue to parse the rest of the messages if the current bitstream is not encoded correctly. Clients move by sending CLC_Move network messages that end up being placed after the CLC_VoiceData. This leads to the messages not being parsed and the server receiving less clc_move commands. CLC_VoiceData aren't sent with every single packet, so half of the clc_move messages get dropped while the other half wont.
__________________