学习怎么用按键精灵制作游戏辅助——脚本源代码干货分享
一、用按键精灵确定人物朝向(以剑灵自动寻路为例)的代码
在剑灵右上角的小地图里/图,箭头坐标存储在(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,分辨率变大图标则往右边移动。
发布评论