这次还是在上次脚本的基础功能上,增加了自动售卖装备和清理药水的功能,需要角色是至尊账户,因为是开启的随身商店,要有至尊角色有这个功能,使用教程可以查看上次那个笔记:https://sulao.cn/post/992
相对于:https://sulao.cn/post/762这个版本,少了自动识别装备和自动跑位的功能,但是其他功能均对于之前进行了优化,占用系统资源更少,识别更快,同时也兼容已经购买月卡的用户,能够在月卡的挂机、加血、捡装备的基础功能上叠加装备售卖、保存、药水清理这几个功能。
使用脚本的前提要求是分辨率使用1280*720,dpi 240,不要开启模拟器的极致多开模式,这样屏幕取色会不准确,我本地调试代码测试的都是雷电模拟器,模拟器推荐最低配置1核2G,此次也对上次的血条和灵力条取色进行了调整,开启脚本最开始会采样当前的血条灵力条的初始颜色,所以开启脚本之前确保自己的血条和灵力条已回满(高于70%即可)
下面是脚本内容如下,目前橙装保留还没写完,后面有空写完还是更新这里的代码:
//分辨率使用1280*720,dpi 240,不要开启模拟器的极致多开模式
SetControlBarPos 0.6,0 // 设置悬浮窗停靠位置
Dim bloodPixelColor = GetPixelColor(230, 60)
Dim bluePixelColor = GetPixelColor(150, 80)
Dim cdTimeArray = Array(10, 15, 30, 60, 300) // 第一技能CD时间
//以下所有取色可能不同模拟器或者不同显卡需要进行重新取色
Dim autoButtoColor = "94DFF7" //挂机按钮位置颜色(GetPixelColor(930, 260))
Dim itemColorArray = Array("3155DE", "000029", "EF7531", "522000", "FFFFFF") //随身商店窗口药水颜色+卷轴颜色
Dim dianjinColor = "63AAAD" //点金手弩颜色
Dim zhanshenColor = "42758C" //战神宝铠颜色
Dim hushaColor = "B5A2A5" // 虎煞魔凯颜色
//加血
Function AddBlood(bloodPixelColor)
Dim bloodColor
bloodColor = GetPixelColor(230, 60)
If bloodColor <> bloodPixelColor Then
Tap 880, 575
TracePrint GetNetworkTime()&" 当前血量不足,正在加血!"
Delay 800
End If
End Function
//加魔
Function AddBlue(bluePixelColor)
Dim blueColor
blueColor = GetPixelColor(150, 80)
If blueColor <> bluePixelColor Then
Tap 880, 665
TracePrint GetNetworkTime()&" 当前魔力不足,正在加魔!"
Delay 800
End If
End Function
//售卖装备药水(需要至尊角色)
Function sellItem(pointX, pointY)
Tap pointX, pointY // 点击药水
Delay 200
Tap 850, 500 //点击数量
Delay 200
Tap 600, 240 //数量9
Delay 100
Tap 600, 240 //数量9
Delay 100
Tap 710, 470 //确认
Delay 100
Tap 840, 640 //点击售卖
Delay 200
End Function
//卖装备,清理药水(需要至尊角色)
Function checkInventory(itemColorArray, retainCount)
Dim curEquipColor, result
Dim package_x = 200 // 背包第一格初始x轴坐标
Dim package_y = 200 // 背包第一格初始y轴坐标
Tap 1160, 270 //打开背包
Delay 600
Tap 950, 650 //整理背包
Delay 2000
Tap 660, 650 //打开商店
Delay 400
Tap 1090, 270 //切换到售卖标签
Delay 200
TracePrint GetNetworkTime()&" 开始循环检测售卖背包物品..."
For i = 0 To 50
curEquipColor = GetPixelColor(package_x, package_y) // 获取第一格物品颜色
result = CmpColor(package_x, package_y, Join(itemColorArray, "|"), 1.0)
TracePrint GetNetworkTime()&" 当前第一格物品颜色:"&curEquipColor&", 比对颜色组为: "&Join(itemColorArray, "|")
If result > -1 Then
TracePrint GetNetworkTime()&" 检测到药水,当前装备已售完,跳出循环..."
Exit For // 找到药水颜色,跳出循环
End If
Tap package_x, package_y //售卖第一格准备
Delay 200
Tap 840, 640 //点击售卖
Delay 200
Next
TracePrint GetNetworkTime()&" 售卖装备完成!"
If retainCount > 0 Then //检测药水,多余的药水进行售卖
Dim x, y, distances_x, distances_y, itemColor
Dim packagend_x = 564
Dim packagend_y = 572
Dim blood = 0
Dim blue = 0
For y = 0 To 4
distances_y = y * 93 // 背包y轴偏移
For x = 0 To 4
distances_x = x * 91 // 背包x轴偏移
itemColor = GetPixelColor(packagend_x - distances_x, packagend_y - distances_y)
TracePrint GetNetworkTime()&" 当前物品颜色为: "&itemColor
Select Case itemColor
Case itemColorArray(1),itemColorArray(3)
TracePrint GetNetworkTime()&" 找到高级药水,开始进行售卖"
Call sellItem(packagend_x - distances_x, packagend_y - distances_y)
Case itemColorArray(0)
blood = blood + 1
If blood > retainCount Then
TracePrint GetNetworkTime()&" 找到超过保留顶级生命药水,开始进行售卖"
Call sellItem(packagend_x - distances_x, packagend_y - distances_y)
End If
Case itemColorArray(2)
blue = blue + 1
If blue > 1 Then
TracePrint GetNetworkTime()&" 找到超过保留顶级灵力药水,开始进行售卖"
Call sellItem(packagend_x - distances_x, packagend_y - distances_y)
End If
End Select
Next
Next
TracePrint GetNetworkTime()&" 售卖多余药水完成,准备退出商店!"
End If
Tap 70, 470 //点击任意空白区域退出
End Function
//保留指定物品(需要至尊角色)
Function saveItem()
Dim result
Dim package_x = 195 // 背包第一格初始x轴坐标
Dim package_y = 200 // 背包第一格初始y轴坐标
//拼接需要保存装备颜色值
Dim colors = "ff0000"
If ReadUIConfig("dianjin") Then
colors = colors&"|"&dianjinColor
End If
If ReadUIConfig("zhanshen") Then
colors = colors&"|"&zhanshenColor
End If
If ReadUIConfig("husha") Then
colors = colors&"|"&hushaColor
End If
Tap 1160, 270 //打开背包
Delay 600
Tap 950, 650 //整理背包
Delay 2000
Tap 755, 650 //打开仓库
Delay 400
TracePrint GetNetworkTime()&" 开始循环检测背包物品颜色是否为保留物品..."
Dim n, x, y, distances_x, distances_y, itemColor
For y = 0 To 4
distances_y = y * 92 // 背包y轴偏移
For x = 0 To 4
distances_x = x * 97 // 背包x轴偏移
result = CmpColor(package_x + distances_x, package_y + distances_y, colors, 1.0) // 比对当前背包坐标物品颜色
TracePrint GetNetworkTime()&" 当前物品坐标为: "&package_x + distances_x, package_y + distances_y&", 当前比对颜色组为: "&colors
If result > -1 Then
TracePrint GetNetworkTime()&" 找到保留物品,准备存入仓库..."
Tap package_x + distances_x, package_y + distances_y // 点击装备
Delay 400
Tap 890, 630 // 点击保存 ?保存按钮坐标是一个上下范围,不固定
Delay 200
End If
Next
Next
TracePrint GetNetworkTime()&" 检测装备完毕,退出仓库窗口!"
Tap 70, 470 //点击任意空白区域退出
// Delay 200
// Tap 70, 470 //防止卡顿或者意外出错,连点两次空白,确保退出
End Function
ShowMessage GetNetworkTime()&" 开始脚本挂机..."
Dim num = 1
Do While true
// 如果是月卡用户直接点击挂机按钮
If CInt(ReadUIConfig("isMonthCard")) = 1 Then
If autoButtoColor <> GetPixelColor(930, 260) Then
Tap 1245, 350
ShowMessage GetNetworkTime()&" 开始月卡挂机..."
// Else
// ShowMessage GetNetworkTime()&" 已经在挂机中..."
End If
Delay 4500
Else
Tap 1075, 460 //第二技能
TracePrint GetNetworkTime()&" 正在使用第2技能!"
Delay 600
Call AddBlood(bloodPixelColor)
If (num Mod 6) = 0 Then
Tap 1000, 550 // 第三技能
TracePrint GetNetworkTime()&" 正在使用第3技能!"
Delay 600
Call AddBlood(bloodPixelColor)
Tap 1020, 660 // 第四技能
TracePrint GetNetworkTime()&" 正在使用第4技能!"
Delay 800
Call AddBlood(bloodPixelColor)
If CInt(ReadUIConfig("isPick")) = 1 Then //捡取物品
Tap 1240, 685 //捡东西
TracePrint GetNetworkTime()&" 正在捡取物品!"
Delay 600
End If
End If
If (num Mod cdTimeArray(CInt(ReadUIConfig("cdTime")))) = 0 Then
Tap 1190, 440 //第一技能
TracePrint GetNetworkTime()&" 正在使用第1技能!"
Delay 800
Call AddBlood(bloodPixelColor)
Tap 1115, 685 //怪物目标定位
End If
Call AddBlue(bluePixelColor)
End If
If (num Mod 400) = 0 Then
If CInt(ReadUIConfig("isSave")) = 1 Then // 保留指定物品到仓库
Call saveItem()
Delay 300
Call AddBlood(bloodPixelColor)
End If
If CInt(ReadUIConfig("isSell")) = 1 Then // 检测药水和装备售卖
Call checkInventory(itemColorArray, CInt(ReadUIConfig("isCheck")))
Delay 300
Call AddBlood(bloodPixelColor)
End If
End If
num = num + 1
Loop同时也写了简单的UI配合手工去根据自己的需求进行选择
界面1:
{
游戏挂机设置:
{
水平布局:
{
文字框:
{
名称:"notice",
显示内容:"请使用雷电模拟器,分辨率使用1280*720(dpi240),且请勿开启极致多开模式! ",
文字大小:18,
高度:40,
宽度:0
},
},
水平布局:
{
文字框:
{
名称:"isMonthCardtips",
显示内容:"是否月卡用户 ",
文字大小:16,
高度:40,
宽度:0
},
下拉框:
{
名称:"isMonthCard",
选项:
[
"否",
"是",
],
初始选项:0
},
文字框:
{
名称:"isMonthCardtips1",
显示内容:" 如果是月卡用户将使用月卡用户的挂机功能",
文字大小:14,
高度:40,
宽度:0
},
},
水平布局:
{
文字框:
{
名称:"isPicktips",
显示内容:"是否捡取物品 ",
文字大小:16,
高度:40,
宽度:0
},
下拉框:
{
名称:"isPick",
选项:
[
"否",
"是",
],
初始选项:0
},
文字框:
{
名称:"isPicktips1",
显示内容:" 如果配置是月卡用户使用月卡用户捡取配置",
文字大小:14,
高度:40,
宽度:0
},
},
水平布局:
{
文字框:
{
名称:"isSellTips",
显示内容:"是否售卖物品 ",
文字大小:16,
高度:40,
宽度:0
},
下拉框:
{
名称:"isSell",
选项:
[
"否",
"是",
],
初始选项:0
},
文字框:
{
名称:"isSellTips1",
显示内容:" 每15分钟售卖一次垃圾,需要至尊角色",
文字大小:14,
高度:40,
宽度:0
},
},
水平布局:
{
文字框:
{
名称:"isCheckTips",
显示内容:"---- 清理生命药水 ",
文字大小:16,
高度:40,
宽度:0
},
下拉框:
{
名称:"isCheck",
选项:
[
"不清理",
"保留1格",
"保留2格",
"保留3格",
"保留4格",
"保留5格",
],
初始选项:0
},
文字框:
{
名称:"isCheckTips1",
显示内容:" 清除保留数以外的药水,灵力药水保留1格",
文字大小:14,
高度:40,
宽度:0
},
},
水平布局:
{
文字框:
{
名称:"isSaveTips",
显示内容:"是否保存特殊装备 ",
文字大小:16,
高度:40,
宽度:0
},
下拉框:
{
名称:"isSave",
选项:
[
"否",
"是",
],
初始选项:0
},
},
水平布局:
{
文字框:
{
名称:"isSave2",
显示内容:"---- 选择保留的装备 ",
文字大小:16,
高度:40,
宽度:0
},
多选框:
{
注释:"点金",
名称:"dianjin",
提示内容:"点金手弩",
选中:false,
文字大小:14,
高度:0,
宽度:0
},
多选框:
{
注释:"战神",
名称:"zhanshen",
提示内容:"战神宝铠",
选中:false,
文字大小:14,
高度:0,
宽度:0
},
多选框:
{
注释:"虎煞",
名称:"husha",
提示内容:"虎煞魔铠",
选中:false,
文字大小:14,
高度:0,
宽度:0
},
多选框:
{
注释:"橙装",
名称:"chengzhuang",
提示内容:"橙色装备",
选中:false,
文字大小:14,
高度:0,
宽度:0
},
},
水平布局:
{
文字框:
{
名称:"cdTimeTips",
显示内容:"技能冷却时间 ",
文字大小:16,
高度:40,
宽度:0
},
下拉框:
{
名称:"cdTime",
选项:
[
"10秒施展一次",
"15秒施展一次",
"30秒施展一次",
"60秒施展一次",
"300秒施展一次",
],
初始选项:0
},
文字框:
{
名称:"cdTimeTips1",
显示内容:" 第一技能栏冷却时间,根据自身技能选择",
文字大小:14,
高度:40,
宽度:0
},
},
},
}最后效果如下:

内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/990
评论列表