Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # =============================================================================
- # >> IMPORTS
- # =============================================================================
- # Source.Python
- from colors import Color
- from engines.server import engine_server
- from filters.recipients import RecipientFilter
- from bitbuffers import BitBufferWrite
- from bitbuffers import BitBufferRead
- import memory
- from memory import Convention
- from memory import DataType
- from memory.hooks import PreHook
- from memory.hooks import PostHook
- # =============================================================================
- # >> GLOBAL VARIABLES
- # =============================================================================
- engine_server_ptr = memory.get_object_pointer(engine_server)
- # CVEngineServer::UserMessageBegin(IRecipientFilter *, int)
- UserMessageBegin = engine_server_ptr.make_virtual_function(
- 43,
- Convention.THISCALL,
- [DataType.POINTER, DataType.POINTER, DataType.INT],
- DataType.POINTER
- )
- # CVEngineServer::MessageEnd(void)
- MessageEnd = engine_server_ptr.make_virtual_function(
- 44,
- Convention.THISCALL,
- [DataType.POINTER],
- DataType.VOID
- )
- user_message_data = None
- # =============================================================================
- # >> HOOKS
- # =============================================================================
- @PostHook(UserMessageBegin)
- def post_user_message_begin(args, return_value):
- global user_message_data
- user_message_data = (args[2],
- memory.make_object(BitBufferWrite, return_value))
- @PreHook(MessageEnd)
- def pre_message_end(args):
- # This happens when we initialize our hooks, while a user message is
- # currently being created
- if user_message_data is None:
- return
- message_index, buffer = user_message_data
- on_user_message_created(message_index, BitBufferRead(buffer), buffer)
- # =============================================================================
- # >> TEST
- # =============================================================================
- from messages import get_message_index
- saytext2_index = get_message_index('SayText2')
- def on_user_message_created(message_index, buffer_read, buffer_write):
- if message_index != saytext2_index:
- return
- index = buffer_read.read_byte()
- chat = buffer_read.read_byte()
- message_bits = buffer_read.num_bits_read
- message = buffer_read.read_string()
- param1 = buffer_read.read_string()
- param2 = buffer_read.read_string()
- param3 = buffer_read.read_string()
- param4 = buffer_read.read_string()
- new_message = "\x01{}[ADMIN] {}: {}{}".format(Color(255, 0, 0), param1, Color(255, 255, 255), param2)
- buffer_write.seek_to_bit(message_bits)
- buffer_write.write_string(new_message)
- buffer_write.write_string("")
- buffer_write.write_string("")
- buffer_write.write_string("")
- buffer_write.write_string("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement