看到别人跳一跳搞了很多分。
我也跳一下。最高分才十几分,被别人秒杀。
于是制作这个外挂,能够轻松上千分。
原理很简单,计算出两点距离,测试出按下的时间,就可以了。
现在开始喽
当然是免费!!!
软件开发技术交流:自强不息QQ:1222698
(跳一跳技术交流就算了,我只玩了几分钟而已。)
第零步、看看效果,我几分钟就跳了2000多分。
第一步、下载安装手游助手,腾讯官网:http://syzs.qq.com/
第二步、安装微信、登录、手机验证
第三步、打开游戏,打开辅助工具
第四步、把鼠标放在跳跳人的脚下,按下空格键
第五步、把鼠标放在目标位置,按下空格键
第六步、2018年,元旦快乐!
下载地址:https://files.cnblogs.com/files/bhss/%E8%B7%B3%E5%A4%A7%E7%A5%9E-v0.1.1.rar
源码地址:https://files.cnblogs.com/files/bhss/%E8%B7%B3%E5%A4%A7%E7%A5%9E-v0.1.1.rar
源码是vs2015开发,net2.0,可以用vs2005 2008 2010 2013 版本打开
源代码讲解
第1部分:热键管理
using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace Tyt { public class AppHotKey { [DllImport("kernel32.dll")] public static extern uint GetLastError(); //如果函数执行成功,返回值不为0。 //如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。 [DllImport("user32.dll", SetLastError = true)] public static extern bool RegisterHotKey( IntPtr hWnd, //要定义热键的窗口的句柄 int id, //定义热键ID(不能与其它ID重复) KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 Keys vk //定义热键的内容 ); [DllImport("user32.dll", SetLastError = true)] public static extern bool UnregisterHotKey( IntPtr hWnd, //要取消热键的窗口的句柄 int id //要取消热键的ID ); //定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值) [Flags()] public enum KeyModifiers { None = 0, Alt = 1, Ctrl = 2, Shift = 4, WindowsKey = 8 } /// <summary> /// 注册热键 /// </summary> /// <param name="hwnd">窗口句柄</param> /// <param name="hotKey_id">热键ID</param> /// <param name="keyModifiers">组合键</param> /// <param name="key">热键</param> public static void RegKey(IntPtr hwnd, int hotKey_id, KeyModifiers keyModifiers, Keys key) { try { if (!RegisterHotKey(hwnd, hotKey_id, keyModifiers, key)) { if (Marshal.GetLastWin32Error() == 1409) { MessageBox.Show("热键被占用 !"); } else { MessageBox.Show("注册热键失败!"); } } } catch (Exception) { } } /// <summary> /// 注销热键 /// </summary> /// <param name="hwnd">窗口句柄</param> /// <param name="hotKey_id">热键ID</param> public static void UnRegKey(IntPtr hwnd, int hotKey_id) { //注销Id号为hotKey_id的热键设定 UnregisterHotKey(hwnd, hotKey_id); } } }
第2部分、按键管理
using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; namespace Tyt { public class MouseHelper { [DllImport("user32.dll")] public static extern bool SetCursorPos(int X, int Y); [System.Runtime.InteropServices.DllImport("user32")] static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo); const int MOUSEEVENTF_MOVE = 0x0001; //移动鼠标 const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下 const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起 const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键按下 const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起 const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下 const int MOUSEEVENTF_MIDDLEUP = 0x0040; //模拟鼠标中键抬起 const int MOUSEEVENTF_ABSOLUTE = 0x8000; //标示是否采用绝对坐标 public static void Click() { mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); } public static void Move() { mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 0, 0, 0, 0); } public static void Down() { mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); } public static void Up() { mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); } } }
第3部分、核心代码:跳一跳算法
#region 基本操作 public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { AppHotKey.RegKey(Handle, 1007, AppHotKey.KeyModifiers.None, Keys.Space); } protected override void WndProc(ref Message m) { const int WM_HOTKEY = 0x0312; switch (m.Msg) { case WM_HOTKEY: switch (m.WParam.ToInt32()) { case 1007: Tiao(); break; } break; } base.WndProc(ref m); } #endregion #region 跳一跳 void Tiao() { if (IsTiaoQian) { PointQian = new Point(Control.MousePosition.X, Control.MousePosition.Y); } else { TiaoHou(); } IsTiaoQian = !IsTiaoQian; } void TiaoHou() { PointHou = new Point(Control.MousePosition.X, Control.MousePosition.Y); double len=Math.Sqrt((PointHou.X - PointQian.X) * (PointHou.X - PointQian.X) + (PointHou.Y - PointQian.Y) * (PointHou.Y - PointQian.Y)); int d= (int)(len * XiShu * 1000) ; if (d<=0) { MessageBox.Show("两次点击空格时,鼠标未移动。"); return; } timer1.Interval = (int)(d * 1000); MouseHelper.SetCursorPos(PointHou.X, PointHou.Y);//开始跳 MouseHelper.Down(); timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); MouseHelper.Up(); } #endregion
《完毕》
by 自强不息 qq1222698