多点色偏模式找色 (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}, ...}
}) -- 不写区域参数表示全屏找

results matching ""

    No results matching ""