Ejemplo n.º 1
0
        /// <summary>
        /// Apply game mode to a given set of clients.
        /// </summary>
        public void Apply(IEnumerable <ClientObject> clients)
        {
            List <BaseMessage> messages = new List <BaseMessage>();

            // Add paylaod
            messages.AddRange(RT_MSG_SERVER_MEMORY_POKE.FromPayload(address, File.ReadAllBytes(BinPath)));

            // Add module
            byte[] moduleEntry = new byte[16];
            Array.Copy(BitConverter.GetBytes((int)1), 0, moduleEntry, 0, 4);
            Array.Copy(BitConverter.GetBytes(address), 0, moduleEntry, 4, 4);

            //
            messages.Add(new RT_MSG_SERVER_MEMORY_POKE()
            {
                Address = 0x000CF000 + (0 * 16),
                Payload = moduleEntry
            });

            // Send each
            foreach (var target in clients)
            {
                if (target != null && target.IsConnected)
                {
                    target.AddLobbyMessages(messages);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Disables the gamemode module.
        /// </summary>
        public static void Disable(IEnumerable <ClientObject> clients)
        {
            // reset
            var modulePokes = RT_MSG_SERVER_MEMORY_POKE.FromPayload(0x000CF000 + (0 * 16), new byte[16]);

            foreach (var player in clients)
            {
                player.AddLobbyMessages(modulePokes);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Turns patch into a collection of pokes.
        /// </summary>
        public List <BaseMessage> Serialize()
        {
            List <BaseMessage> results = new List <BaseMessage>();

            if (File.Exists(BinPath))
            {
                // Add payload
                results.AddRange(RT_MSG_SERVER_MEMORY_POKE.FromPayload(address, File.ReadAllBytes(BinPath)));

                // Add hook
                if (HookEnabled)
                {
                    results.Add(new RT_MSG_SERVER_MEMORY_POKE()
                    {
                        Address = hookAddress,
                        Payload = BitConverter.GetBytes(hookValue)
                    });
                }
            }

            return(results);
        }