Skip to main content

rewrite_packet_message

Attribute Macro rewrite_packet_message 

Source
#[rewrite_packet_message]
Expand description

Rewrites an individual message inside a demo packet.

A raw handler can receive packet metadata and payload bytes. A typed handler can receive a protobuf message; the macro infers the packet message id from that protobuf type. Mutable protobuf arguments may return MessageRewrite::Rewrite to re-encode the modified message.

§Parameters

A raw handler can receive ctx: &Context, tick: u32, msg_type: i32, and payload: &[u8]. A typed handler can receive ctx: &Context, tick: u32, and one protobuf message by value, shared reference, or mutable reference. Parameters can appear in any order.

Return Result<MessageRewrite, ParserError>.

§Examples

§Drop a decoded protobuf message

#[rewrite_packet_message]
fn remove_chat(&mut self, _msg: CDotaUserMsgChatMessage) -> Result<MessageRewrite, ParserError> {
    Ok(MessageRewrite::Drop)
}

§Mutate a decoded protobuf message

#[rewrite_packet_message]
fn redact_chat(
    &mut self,
    msg: &mut CDotaUserMsgChatMessage,
) -> Result<MessageRewrite, ParserError> {
    msg.message_text = Some("[redacted]".to_string());
    Ok(MessageRewrite::Rewrite)
}