按键精灵制作手游捡垃圾自动售卖装备药水功能脚本

这次还是在上次脚本的基础功能上,增加了自动售卖装备和清理药水的功能,需要角色是至尊账户,因为是开启的随身商店,要有至尊角色有这个功能,使用教程可以查看上次那个笔记: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
			},
		},
	},
}

最后效果如下:

微信截图_20240628110027.png

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/993.html