学习怎么用按键精灵制作游戏辅助——脚本源代码干货分享
一、按键精灵确定人物朝向以剑灵自动寻路为例)的代码
  在剑灵右上角的小地图里/图,箭头坐标存储在(x1,y1),箭尾坐标存储在(x2,y2)
FindColor1200,0,1920,300,"箭头颜",x1,y1
If x1 > 0 And y1> 0 Then
End If
FindColor1200,0,1920,300,"箭尾颜",x2,y2
If x1 > 0 And y1> 0 Then
End If
          '计算斜率/正切值
斜率 = (y1 - y2) / (x1 -x2)
          '计算角度
角度 =      Atn(斜率)
二、用按键精灵解决用户密码泄露问题的代码
Function 加解密(源文件, 秘钥)
    Dim Z, i
    Dim A, B, C
    加解密 = ""
    If Len(源文件) = 0 Then’如果密码为空,则初始化为空
        加解密 = ""
        Exit Function
    End If
    '调用Rnd函数使以后Rnd函数所产生的Rnd为相同的伪随机数列
    Z = Rnd(-秘钥)
    For i = 1 To Len(源文件)’将密码字符串一个一个字符通过加密,转换成另一个字符
        C = Mid(源文件, i, 1)
        A = Asc(C)
        B = Int(126 * Rnd) And&H7F’这里的&H7F,是指生成的伪随机代码,只取7位,以免数据溢出
        A = A Xor B’Xor是可逆的,第一次运行时是得到加密后的数据,再运行一次是得到解密后的数据
        C = Chr(A)
        加解密 = 加解密 + C
    Next
End Function
举个例子吧~
Function 加解密(源文件, 秘钥)
    Dim Z, i
    Dim A, B, C
    加解密 = ""
    If Len(源文件) = 0 Then
        加解密 = ""
        Exit Function
    End If
澳大利亚留学
    '调用Rnd函数使以后Rnd函数所产生的Rnd为相同的伪随机数列
    Z = Rnd(-密钥)
    For i = 1 To Len(源文件)
        C = Mid(源文件, i, 1)
        A = Asc(C)
        B = Int(126 * Rnd) And&H7F
        A = A Xor B
        C = Chr(A)
        加解密 = 加解密 + C
    Next
End Function
          Event Form1.Load       
    //获取小节名(如"e1df741f-d5ec-4ad7-969d-adb139c6a24f"),同一个Q文件生成的小节名不变
    a = GetMacroID()//获取到当前脚本/小精灵de ID加密文件=Plugin.File.ReadINI("e1df741f-d5ec-4ad7-969d-adb139c6a24f","Form1.InputBox2.Text", ".\uservar.ini")
    解密文件 = 加解密(加密文件, 1234567890)'这里的1234567890是假使的密钥,可以修改,注意保密
    Form1.InputBox2.Text = 解密文件
421事件内容
End Event
//写入密码信息
源文件 = Form1.InputBox2.Text   
加密文件 = 加解密(源文件, 1234567890)   
CallPlugin.File.WriteINI("e1df741f-d5ec-4ad7-969d-adb139c6a24f","Form1.InputBox2.Text", 加密文件, ".\uservar.ini")
          //输出信息
RunApp ""
SayString Form1.InputBox1.Text
奚梦瑶个人资产KeyPress "Enter", 1
SayString 源文件
三、按键精灵快速排序的代码
su = "6|1|2|7|9|3|4|5|10|8"
su=Split(su, "|")
L = UBound(su)
Call ks(0, L)
Function ks(L, B)
    If L > B Then 姚晨天价月子餐
        Exit Function   
    End If            //判断数组上标下标是否超出范围
    i = L
    j = B
    key =int( su(L) )    //数组第一位提取作为基数
    While j>i
        While int ( su(j)) >= key and j > i   //要先从最右边开始 到第一个小于key的数  这里添加的j>i的判断是为了防止j的值不断递减导致下标越界
            j = j - 1
        Wend
        While int (su(i)) <= key and j > i   //从最左边开始 到第一个大于key的数   (这里的字符串数组需要转换为数值型)
            i = i + 1
        Wend
            If j>i then            // 将和基数key对比得到的两个数对换 将大于key的值往右边放 小于key的值往左边放
            T = su(i)
            su(i) = su(j)
            su(j) = T
        End If
    Wend    // 这个 While 循环当i=j 第一轮比较完退出 
    su(L) = su(i) // 重新设置数组第一个元素为基数
    su(i) = key// 基数归位 (排完一轮之后  左边的数<基数<右边的数 那么基数就到了排序中它该在的位置。) 
    Call ks(L, i - 1)//继续处理左边的数
    Call ks(i + 1, B)//继续处理右边的数
End Function
For i = 0 To UBound(su)
    TracePrint su(i)
Next
四、应对游戏分辨率改变,图标大小不变,坐标动态变化的代码
 hwnd =Plugin.Window.MousePoint()//获取鼠标指定窗口的窗口句柄
sRect =Plugin.Window.GetClientRect(Hwnd)//获取窗口客户区大小一路向西 演员表
  s=split(sRect,"|")
qx=s(0):qy=s(1):zx=s(2):zy=s(3)//qx,qy是左上角的 xy坐标; zx是窗口的宽,zy是窗口的高
黄奕离婚  CallFindPic(260,186,zx*0.5,zy*0.5,"游戏图片.bmp",0.9,mx,my)
   这里的qx,qy两个原始坐标(例子中的qx,qy原始坐标为 (0,0)),用实际坐标  260,186代替,因为不管按键窗口怎么缩小,我们要的图标最终的位置是在260,186,分辨率变大图标则往右边移动。