Encontrar cores no modo de desvio em vários pontos (screen.find_color)
Declaração
coordenada_x, coordenada_y = screen.find_color({
[find_all = pesquisar_múltiplos_resultados,]
[max_results = número_máximo_de_resultados,]
[max_miss = número_máximo_de_pontos_sem_correspondência,]
{coordenada_x_inicial, coordenada_y_inicial, {cor_inicial[, desvio_de_cor_inicial]}},
{coordenada_x_de_deslocamento*, coordenada_y_de_deslocamento*, {cor_de_deslocamento*, desvio_de_cor*}},
{coordenada_x_de_deslocamento*, coordenada_y_de_deslocamento*, {cor_de_deslocamento*, desvio_de_cor*}},
...
} [, esquerda, topo, direita, baixo ])
Parâmetros
- pesquisar múltiplos resultados
Booleano opcional; quando definido como true, retorna uma tabela com todas as posições correspondentes na área, no formato\{\{x1, y1\}, \{x2, y2\}, ...\}. O padrão é false. - número máximo de resultados
Inteiro opcional; quando a etiquetafind_all(pesquisar múltiplos resultados) é true, indica a quantidade máxima de resultados. O máximo é 1000; o padrão é 100. - número máximo de pontos sem correspondência
Inteiro opcional; quantidade máxima de pontos sem correspondência permitida. O padrão é 0, ou seja, todos os pontos devem corresponder. - coordenada_x_inicial, coordenada_y_inicial
Inteiros que representam as coordenadas iniciais. Elas não restringem a busca a um único ponto; servem apenas como coordenadas relativas dos pontos de deslocamento. Se não for necessário deslocamento, use 0, 0. - cor inicial
Inteiro que representa a cor a ser pesquisada nesse ponto. - desvio de cor inicial
Inteiro que representa o desvio máximo (ou desvio cromático) da cor pesquisada; valores maiores que 0xff000000 ativam o modo de correspondência inversa. - coordenada_x_de_deslocamento*, coordenada_y_de_deslocamento*
Inteiros que representam as coordenadas de uma posição deslocada. - cor_de_deslocamento*
Inteiro que representa a cor a ser correspondida na posição deslocada. - desvio_de_cor*
Inteiro que representa o desvio (ou desvio cromático) da cor na posição deslocada; valores maiores que 0xff000000 ativam o modo de correspondência inversa. - esquerda, topo, direita, baixo
Inteiros opcionais que representam a área de busca; o padrão é a tela inteira.
Valores retornados
- coordenada_x, coordenada_y
Inteiros; retornam as coordenadas da primeira cor correspondente. Em caso de falha, retornam -1, -1.
Observações
Procura no modo de desvio (ou desvio cromático) a posição da primeira estrutura de cores em vários pontos que corresponda completamente na região.
Os parâmetros de coordenadas e os valores retornados por esta função são afetados pelo sistema inicializado porscreen.init.
Desvio (ou desvio cromático) normalmente representa um intervalo de cores: uma cor acompanhada de um desvio inclui todas as cores dentro dos intervalos de deslocamento de vermelho, verde e azul.
Quando a cor 0x456789 tem desvio 0x123456, os intervalos positivos e negativos de vermelho, verde e azul de 0x456789 são 0x12, 0x34 e 0x56, respectivamente.
Assim, o intervalo de vermelho é 0x45 ± 0x12, o de verde é 0x67 ± 0x34 e o de azul é 0x89 ± 0x56, conforme a tabela:
| Negativo | Positivo |
|---|---|
| 0x45 - 0x12 = 0x33 | 0x45 + 0x12 = 0x57 |
| 0x67 - 0x34 = 0x33 | 0x67 + 0x34 = 0x9B |
| 0x89 - 0x56 = 0x33 | 0x89 + 0x56 = 0xDF |
A combinação
{0x456789, 0x123456}descrita acima representa todas as cores no intervalo de 0x333333 a 0x579BDF.
Números iniciados por 0x são hexadecimais (o que são números hexadecimais?).
Exemplo
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)
--
--[[
na região de (0, 0) no canto superior esquerdo a (100, 100) no canto inferior direito, encontra o primeiro ponto totalmente semelhante a 0xec1c23 (desvio 0)
e cuja posição relativa (12, -3) tenha uma cor com desvio menor que 0x101010 em relação a 0xffffff
e cuja posição relativa (5, -18) tenha uma cor com desvio menor que 0x123456 em relação a 0x00adee
e que também corresponda aos demais pontos da mesma maneira
--]]
--
-- Código equivalente:
--
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)
--
--[[
na região de (0, 0) no canto superior esquerdo a (100, 100) no canto inferior direito, encontra o primeiro ponto totalmente semelhante a 0xec1c23 (desvio 0)
e cuja posição relativa (521-509, 485-488) tenha uma cor com desvio menor que 0x101010 em relação a 0xffffff
e cuja posição relativa (514-509, 470-488) tenha uma cor com desvio menor que 0x123456 em relação a 0x00adee
e que também corresponda aos demais pontos da mesma maneira
--]]
--
-- Sem quebras de linha ou indentação, o efeito é:
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({ -- demonstração de correspondência inversa; produz resultado quando executado na tela principal do 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} }, -- só corresponde quando a diferença dessa cor em relação a 0xffffff é maior que 0x101010; idem abaixo
{ 515, 291, {0xffffff, 0xff101010} },
{ 518, 284, {0xffffff, 0xff101010} },
{ 523, 298, {0xffffff, 0xff101010} },
{ 514, 298, {0xffffff, 0xff101010} },
{ 514, 296, {0xffffff, 0xff101010} },
}) -- sem parâmetros de área, procura na tela inteira
--
results = screen.find_color({ -- demonstração de saída de todas as correspondências na área
{ 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, -- esta etiqueta retorna uma tabela com as posições de todas as correspondências na área, no formato { {x1, y1}, {x2, y2}, ...}
}) -- sem parâmetros de área, procura na tela inteira