多点色偏模式找色 (screen.find_color)
声明
横坐标, 纵坐标 = screen.find_color({
[find_all = 是否搜索多个结果],
[max_results = 最大结果数],
[max_miss = 允许最多未命中数],
{起始点横坐标, 起始点纵坐标, {起始点颜色[, 起始点色偏]}},
{偏移点横坐标*, 偏移点纵坐标*, {偏移点颜色*, 偏移点色偏*}},
{偏移点横坐标*, 偏移点纵坐标*, {偏移点颜色*, 偏移点色偏*}},
...
} [, 左, 上, 右, 下 ])
参数及返回值
- 是否搜索多个结果
- 布尔型,可选参数,这个标签设置为 true 会返回范围内所有匹配位置的一个表,格式为 {{x1, y1}, {x2, y2}, ...},默认 false
- 最大结果数
- 整数型,可选参数,当 find_all (是否搜索多个结果) 标签设置为 true 的时候,这个表示最多返回结果数,最多可以设为 1000,默认 100
- 允许最多未命中数 *1.2-3 新增
- 整数型,可选参数,可以允许最多的不匹配的点的数量,默认为 0,也就是全命中才算找到
- 起始点横坐标, 起始点纵坐标
- 整数型,代表起始坐标,它并不是限制找色的范围为固定这一点,而仅仅是给偏移位置一个相对坐标,不理解就填 0, 0
- 起始点颜色
- 整数型,代表需要搜索的那一点的颜色
- 起始点色偏
- 整数型,需要搜索的颜色的最大色偏 (或偏色) ,大于 0xff000000 则为反匹配模式
- 偏移点横坐标*, 偏移点纵坐标*
- 整数型,代表一个偏移位置坐标
- 偏移点颜色*
- 整数型,代表偏移位置需要匹配的颜色
- 偏移点色偏*
- 整数型,偏移位置的颜色的色偏 (或偏色) ,大于 0xff000000 则为反匹配模式
- 左, 上, 右, 下
- 整数型,可选参数,代表搜索区域,默认 全屏
- 横坐标, 纵坐标
- 整数型,返回匹配色的第一个色的坐标,搜索失败返回 -1, -1
说明
使用色偏 (或偏色) 模式查找,获取区域中第一个完全匹配的多点颜色结构的位置
色偏 (或偏色) 用于表示颜色偏差范围,一个颜色附带色偏 (或偏色) 是指该颜色的红、绿、蓝偏移范围内的所有颜色
当 0x456789 色偏为 0x123456 的时候表示 0x456789 的红正负范围 0x12、绿正负范围 0x34、蓝正负范围 0x56,也就是其红色范围为 0x45 ± 0x12、绿色范围为 0x67 ± 0x34、蓝色的范围为 0x89 ± 0x56
使用 0x 开头的数字为 16 进制数 ( 什么是 16 进制数? )
如下表所述 {0x456789, 0x123456} 实际上就是表示从 0x333333 到 0x579BDF 之间所有的颜色| 0x45 - 0x12 = 0x33 | 0x45 + 0x12 = 0x57 |
| 0x67 - 0x34 = 0x33 | 0x67 + 0x12 = 0x9B |
| 0x89 - 0x56 = 0x33 | 0x89 + 0x12 = 0xDF |
示例
x, y = screen.find_color({
{ 0, 0, {0xec1c23, 0x000000}},
{ 12, -3, {0xffffff, 0x101010}},
{ 5, -18, {0x00adee, 0x123456}},
{ -1, -10, {0xffc823, 0x101001}},
{ 2, -34, {0xa78217, 0x101001}},
{ 12, -55, {0xd0d2d2, 0x101001}},
}, 0, 0, 100, 100)
--
--[[
在左上为 0, 0 右下为 100, 100 的区域找到第一点与 0xec1c23 完全相似 (色偏为 0)
且它的相对坐标 (12, -3) 的位置的颜色与 0xffffff 的色偏小于 0x101010
且它的相对坐标 (5, -18) 的位置的颜色与 0x00adee 色偏小于 0x123456
且…… (后面的同理) 都能匹配的那个点
--]]
--
-- 等效代码如下:
--
x, y = screen.find_color({
{ 509, 488, {0xec1c23, 0x000000}},
{ 521, 485, {0xffffff, 0x101010}},
{ 514, 470, {0x00adee, 0x123456}},
{ 508, 478, {0xffc823, 0x101001}},
{ 511, 454, {0xa78217, 0x101001}},
{ 521, 433, {0xd0d2d2, 0x101001}},
}, 0, 0, 100, 100)
--
--[[
在左上为 0, 0 右下为 100, 100 的区域找到第一点与 0xec1c23 完全相似 (色偏为 0)
且它的相对坐标 (521-509, 485-488) 的位置的颜色与 0xffffff 的色偏小于 0x101010
且它的相对坐标 (514-509, 470-488) 的位置的颜色与 0x00adee 色偏小于 0x123456
且…… (后面的同理) 都能匹配的那个点
--]]
--
-- 不换行无缩进就是这个效果:
x, y = screen.find_color({ {0,0,{0xec1c23,0x000000} },{12,-3, {0xffffff,0x101010} },{5,-18, {0x00adee,0x123456} },{-1,-10,{0xffc823,0x101001} },{2,-34,{0xa78217,0x101001} },{12,-55,{0xd0d2d2,0x101001} }, },0,0,100,100)
--
x, y = screen.find_color({ -- 反匹配演示,在 5C 主屏幕运行可获得结果
{ 516, 288, {0xffffff, 0x101010} },
{ 519, 286, {0xffffff, 0x101010} },
{ 521, 289, {0xffffff, 0x101010} },
{ 516, 296, {0xffffff, 0x101010} },
{ 522, 297, {0xffffff, 0x101010} },
{ 520, 295, {0xffffff, 0xff101010} }, -- 这一点颜色与 0xffffff 色差大于 0x101010 才匹配,下同
{ 515, 291, {0xffffff, 0xff101010} },
{ 518, 284, {0xffffff, 0xff101010} },
{ 523, 298, {0xffffff, 0xff101010} },
{ 514, 298, {0xffffff, 0xff101010} },
{ 514, 296, {0xffffff, 0xff101010} },
}) -- 不写区域参数表示全屏找
--
results = screen.find_color({ -- 范围匹配全输出演示
{ 527, 278, {0xde1d26, 0x101010} },
{ 524, 285, {0x007aff, 0x101010} },
{ 555, 292, {0xe4ddc9, 0x101010} },
{ 536, 314, {0xffde02, 0x101010} },
{ 502, 291, {0xffde02, 0x101010} },
{ 502, 283, {0xe4ddc9, 0x101010} },
find_all = true, -- 带这个标签将返回范围所有匹配的位置的一个表,格式为 { {x1, y1}, {x2, y2}, ...}
}) -- 不写区域参数表示全屏找