Пример #1
0
        public unsafe void Run(MemoryReader reader, IpcChannel channel)
        {
            var o = reader.FindOffset(_patterns).Cast <int?>().FirstOrDefault();

            if (o == null)
            {
                channel.LogError("Could not find game message name function");
                return;
            }

            var func = reader.GetDelegate <GetMessageNameFunc>((int)o);
            var arr  = Enumerable.Range(0, ushort.MaxValue).Select(x => Tuple.Create((ushort)x,
                                                                                     Marshal.PtrToStringAnsi(func(x)))).Where(x => x.Item2 != string.Empty).ToArray();

            channel.LogBasic("Found {0} game messages", arr.Length);

            channel.WriteGameMessages(arr);
        }
Пример #2
0
        public void Run(MemoryReader reader, IpcChannel channel)
        {
            var o = reader.FindOffset(_pattern).Cast <int?>().FirstOrDefault();

            if (o == null)
            {
                channel.LogError("Could not find system message table");
                return;
            }

            var count = reader.Read <uint>((int)o + _pattern.TakeWhile(x => x != null).Count());
            var func  = reader.GetDelegate <GetMessageNameFunc>((int)o);
            var arr   = Enumerable.Range(0, (int)count).Select(x => (ushort)x).Select(
                x => Tuple.Create(x, Marshal.PtrToStringUni(func(x)))).ToArray();

            channel.LogBasic("Found {0} system messages", arr.Length);

            channel.WriteSystemMessages(arr);
        }