这次还是在上次脚本的基础功能上,增加了自动售卖装备和清理药水的功能,需要角色是至尊账户,因为是开启的随身商店,要有至尊角色有这个功能,使用教程可以查看上次那个笔记:https://sulao.cn/post/995.html
相对于:https://sulao.cn/post/765.html这个版本,少了自动识别装备和自动跑位的功能,但是其他功能均对于之前进行了优化,占用系统资源更少,识别更快,同时也兼容已经购买月卡的用户,能够在月卡的挂机、加血、捡装备的基础功能上叠加装备售卖、保存、药水清理这几个功能。
使用脚本的前提要求是分辨率使用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 }, }, }, }
最后效果如下: