Пример #1
0
        /// <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);
        }