Quote:
Originally Posted by Dayrion
I tried something similar and it didn't works. I sent a RPC with a invalid animation to the player. The player crash and the RPC dosn't reach pawn callbacks (using Pawn.RakNet plugin).
Maybe, I've done something wrong.
PHP код:
public OnIncomingPacket(playerid, packetid, BitStream:bs)
{
if(packetid == 0xCF)
{
new read_data[PR_OnFootSync];
BS_ReadOnFootSync(bs, read_data);
printf("[Inc. Packet 0xCF] Animation id: %i - Flags: %b (%i)", read_data[PR_animationId], read_data[PR_animationFlags], read_data[PR_animationFlags]);
}
return 1;
}
CMD:testrpcv(playerid)
{
new BitStream:bs = BS_New();
BS_WriteValue(bs,
PR_UINT16, playerid,
PR_UINT8, strlen(" "),
PR_STRING, " ",
PR_UINT8, strlen(" "),
PR_STRING, " ",
PR_FLOAT, 4.1,
PR_BOOL, 0,
PR_BOOL, 0,
PR_BOOL, 0,
PR_BOOL, 0,
PR_UINT32, 1000);
BS_RPC(bs, playerid, 0x56);
BS_Delete(bs);
}
|
Why would that RPC reach the server? It gets sent to the player which then cannot further distribute it since they crashed.
You'll need to send an invalid animation from the client to the server. Or, to test, apply an animation to the player that is valid. If it can be intercepted, it should also work for invalid ones.
Otherwise just use the exploit which should be the best way to test anyway.
Also I think you must ignore the first 8 bits for the info to be correct, since the packet identifier is not part of the enum.