private bool GetCameraOffsets() { //Sanity Check if (m.gameFound) { //uint patternAddr = p.FindPattern("\\xA1\\x00\\x00\\x00\\x00\\x83\\xC4\\x14\\x8B\\x00\\x8B\\x0D\\x00\\x00\\x00\\x00\\xD9\\x80\\x00\\x00\\x00\\x00", "x????xxxxxxx????xx????", ref m); uint patternAddr = p.FindPattern("\\xA1\\x00\\x00\\x00\\x00\\x8B\\x48\\x14\\x83\\xC1\\x78", "x????xxxxxx", ref m); if (patternAddr == 0) { return(false); //Pattern is out of date } //Increment Addr by one to get to the location where the pointer is patternAddr++; uint pointerAddr = m.ReadUInt((IntPtr)patternAddr); pointerAddr = m.ReadUInt((IntPtr)pointerAddr); pointerAddr = m.ReadUInt((IntPtr)pointerAddr); if (pointerAddr == 0) { return(false); //Pointer hasn't been setup yet } FoVAddress = (IntPtr)(pointerAddr + 0x130); YawAddress = (IntPtr)(pointerAddr + 0x124); PitchAddress = (IntPtr)(pointerAddr + 0x120); YPositionAddress = (IntPtr)(pointerAddr + 0x10C); XPositionAddress = (IntPtr)(pointerAddr + 0x104); ZoomAddress = (IntPtr)(pointerAddr + 0x1BC); //Desired Zoom, Current Zoom - 0x04 CameraModeAddress = (IntPtr)(pointerAddr + 0x1C0); patternAddr = p.FindPattern("\\xC7\\x87\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xE8\\x00\\x00\\x00\\x00\\x8B\\x87\\x00\\x00\\x00\\x00\\x8D\\x8F\\x00\\x00\\x00\\x00\\x89\\x45\\xCC", "xx????????x????xx????xx????xxx", ref m); if (patternAddr == 0) { return(false); //Pattern is out of date } CameraHeightAddress = (IntPtr)(patternAddr + 0x06); patternAddr = p.FindPattern("\\x68\\x00\\x00\\x00\\x00\\xE8\\x00\\x00\\x00\\x00\\x8B\\x0D\\x00\\x00\\x00\\x00\\x68\\x00\\x00\\x00\\x00\\x68\\x00\\x00\\x00\\x00", "x????x????xx????x????x????", ref m); if (patternAddr == 0) { return(false); //Pattern is out of date } patternAddr += 0x1; pointerAddr = m.ReadUInt((IntPtr)patternAddr); DrawDistanceAddress = (IntPtr)(pointerAddr + 0x10); //Max Zoom Out patternAddr = p.FindPattern("\\xF3\\x0F\\x10\\x0D\\x00\\x00\\x00\\x00\\x0F\\x2F\\xC1\\x77\\x0D\\xF3\\x0F\\x10\\x0D\\x00\\x00\\x00\\x00", "xxxx????xxxxxxxxx????", ref m); if (patternAddr == 0) { return(false); //Pattern is out of date } MaxZoomAddress = (IntPtr)m.ReadUInt((IntPtr)patternAddr + 0x04); //Unprotect the MaxZoom Address m.WriteProtectedMemory(MaxZoomAddress, 0x04, (uint)MemoryEditor.Protection.PAGE_EXECUTE_READWRITE, (uint)MemoryEditor.Protection.PAGE_READONLY); return(true); } return(false); }