/// <summary> /// 寻路call /// </summary> /// <param name="em"></param> public static void way(mhxy.EventMsg em) { IntPtr pid = IntPtr.Zero; LoadDll.GetWindowThreadProcessId(em.hwnd, out pid); int map = Global.addr.GetMapY(em.hwnd.ToInt32()); //================== em.posX = em.posX * 20; em.posY = map - em.posY * 20 - 10; //======================= int wayPos = Global.addr.way; long dwTempAddr = 0x11000900 - wayPos; dwTempAddr = 0xFFFFFFFF - dwTempAddr - 0x20; string szHookString = "85 C9 0F 95 C0 0F B6 C0 50 6A 01 51 55 FF B6 14 01 00 00 8B CF FF B6 10 01 00 00"; szHookString = szHookString + "B8"; szHookString = szHookString + StringUtil.FormatIntToHex(Global.addr.GetPeopleID(em.hwnd.ToInt32())); szHookString = szHookString + " 39 46 0C 75 12 3E C7 44 24 08 "; szHookString = szHookString + StringUtil.FormatIntToHex(em.posX); szHookString = szHookString + " 3E C7 44 24 0C "; szHookString = szHookString + StringUtil.FormatIntToHex(em.posY); szHookString = szHookString + " E9 "; szHookString = szHookString + StringUtil.FormatIntToHex((int)dwTempAddr); szHookString = szHookString + " 00 00 00 00"; szHookString = szHookString.Replace(" ", ""); //================================================== byte[] data = StringUtil.strToToHexByte(szHookString); bool success = LoadDll.WriteMemoryValue(pid.ToInt32(), 0x11000900, data); //================================================== szHookString = "E9 "; dwTempAddr = 0x11000900 - wayPos - 0x5; szHookString = szHookString + StringUtil.FormatIntToHex((int)dwTempAddr); szHookString = szHookString.Replace(" ", ""); data = StringUtil.strToToHexByte(szHookString); success = LoadDll.WriteMemoryValue(pid.ToInt32(), wayPos, data); //=================================================================== //隐藏UI //UIShowStatus(em.hwnd.ToInt32(), false); ////隐藏玩家和摊位 //HidePlayer(em.hwnd.ToInt32()); //HideShop(em.hwnd.ToInt32()); //CloseDia(em.hwnd.ToInt32()); //System.Threading.Thread.Sleep(100); ////调用鼠标触发call //clickWin(em.hwnd.ToInt32(), em.mX, em.mY); //System.Threading.Thread.Sleep(300); //UIShowStatus(em.hwnd.ToInt32(), true); System.Threading.Thread.Sleep(5000); //================================================================== //复位call代码 data = StringUtil.strToToHexByte("85D20F95C0"); success = LoadDll.WriteMemoryValue(pid.ToInt32(), wayPos, data); }