Farbe im Mehrpunkt-Farbabweichungsmodus suchen (screen.find_color)
Deklaration
x, y = screen.find_color({
[find_all = Mehrere_Ergebnisse_suchen,]
[max_results = Maximale_Ergebnisanzahl,]
[max_miss = Maximal_erlaubte_Nichttreffer,]
{X_Startpunkt, Y_Startpunkt, {Startpunktfarbe[, Startpunktabweichung]}},
{X_Versatzpunkt*, Y_Versatzpunkt*, {Versatzpunktfarbe*, Versatzpunktabweichung*}},
{X_Versatzpunkt*, Y_Versatzpunkt*, {Versatzpunktfarbe*, Versatzpunktabweichung*}},
...
} [, links, oben, rechts, unten])
Parameter
- Mehrere Ergebnisse suchen
Boolescher Wert; optional. Bei true wird eine Tabelle mit allen passenden Positionen im Bereich im Format {{x1, y1}, {x2, y2}, ...} zurückgegeben, standardmäßig false - Maximale Ergebnisanzahl
Ganzzahl; optional. Wenn find_all (Mehrere Ergebnisse suchen) auf true gesetzt ist, gibt dies die maximale Anzahl der Ergebnisse an; höchstens 1000, standardmäßig 100 - Maximal erlaubte Nichttreffer
Ganzzahl; optional. Gibt die maximal zulässige Anzahl nicht übereinstimmender Punkte an, standardmäßig 0, sodass nur ein vollständiger Treffer gefunden wird - X-Startpunkt, Y-Startpunkt
Ganzzahlen; Ausgangskoordinaten. Dies schränkt die Farbsuche nicht auf diesen Punkt ein, sondern liefert nur die relativen Koordinaten für Versatzpunkte. Wenn kein Versatz benötigt wird, 0, 0 angeben - Startpunktfarbe
Ganzzahl; Farbe des zu suchenden Punkts - Startpunktabweichung
Ganzzahl; maximale Farbabweichung (oder Farbtoleranz) der zu suchenden Farbe. Werte größer als 0xff000000 aktivieren den umgekehrten Abgleichmodus - X-Versatzpunkt*, Y-Versatzpunkt*
Ganzzahlen; Koordinaten eines Versatzpunkts - Versatzpunktfarbe*
Ganzzahl; Farbe, mit der die Versatzposition übereinstimmen muss - Versatzpunktabweichung*
Ganzzahl; Farbabweichung (oder Farbtoleranz) an der Versatzposition. Werte größer als 0xff000000 aktivieren den umgekehrten Abgleichmodus - Links, oben, rechts, unten
Ganzzahlen; optional, Suchbereich, standardmäßig der gesamte Bildschirm
Rückgabewert
- X- und Y-Koordinate
Ganzzahlen; Koordinaten der ersten passenden Farbe, bei fehlgeschlagener Suche -1, -1
Beschreibung
Sucht im Farbabweichungsmodus (oder Farbtoleranzmodus) die Position der ersten vollständig passenden Mehrpunkt-Farbstruktur im Bereich.
Die Koordinatenparameter und Rückgabewerte dieser Funktion werden vom durchscreen.initinitialisierten Koordinatensystem beeinflusst.
Farbabweichung (oder Farbtoleranz) bezeichnet normalerweise einen Farbbereich. Eine Farbe mit Farbabweichung (oder Farbtoleranz) umfasst alle Farben innerhalb der Rot-, Grün- und Blauabweichungsbereiche dieser Farbe.
Wenn die Farbabweichung von 0x456789 gleich 0x123456 ist, bedeutet dies positive und negative Abweichungsbereiche von 0x12 für Rot, 0x34 für Grün und 0x56 für Blau.
Das heißt, der Rotbereich ist 0x45 ± 0x12, der Grünbereich 0x67 ± 0x34 und der Blaubereich 0x89 ± 0x56, wie in der folgenden Tabelle dargestellt.
| Negativ | Positiv |
|---|---|
| 0x45 - 0x12 = 0x33 | 0x45 + 0x12 = 0x57 |
| 0x67 - 0x34 = 0x33 | 0x67 + 0x34 = 0x9B |
| 0x89 - 0x56 = 0x33 | 0x89 + 0x56 = 0xDF |
Das oben beschriebene {0x456789, 0x123456} steht für alle Farben im Bereich von 0x333333 bis 0x579BDF.
Zahlen mit dem Präfix 0x sind Hexadezimalzahlen (Was sind Hexadezimalzahlen?)
Beispiel
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)
--
--[[
Im Bereich von 0, 0 (oben links) bis 100, 100 (unten rechts) den ersten Punkt finden, der exakt 0xec1c23 entspricht (Abweichung 0),
dessen Farbe an den relativen Koordinaten (12, -3) eine Abweichung zu 0xffffff von weniger als 0x101010 hat,
dessen Farbe an den relativen Koordinaten (5, -18) eine Abweichung zu 0x00adee von weniger als 0x123456 hat
und bei dem auch alle folgenden Bedingungen (entsprechend) erfüllt sind.
--]]
--
-- Äquivalenter Code:
--
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)
--
--[[
Im Bereich von 0, 0 (oben links) bis 100, 100 (unten rechts) den ersten Punkt finden, der exakt 0xec1c23 entspricht (Abweichung 0),
dessen Farbe an den relativen Koordinaten (521-509, 485-488) eine Abweichung zu 0xffffff von weniger als 0x101010 hat,
dessen Farbe an den relativen Koordinaten (514-509, 470-488) eine Abweichung zu 0x00adee von weniger als 0x123456 hat
und bei dem auch alle folgenden Bedingungen (entsprechend) erfüllt sind.
--]]
--
-- Ohne Zeilenumbrüche und Einrückung ergibt sich dieser Effekt:
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({ -- Demonstration des umgekehrten Abgleichs; auf dem 5C-Hauptbildschirm ausführen
{ 516, 288, {0xffffff, 0x101010} },
{ 519, 286, {0xffffff, 0x101010} },
{ 521, 289, {0xffffff, 0x101010} },
{ 516, 296, {0xffffff, 0x101010} },
{ 522, 297, {0xffffff, 0x101010} },
{ 520, 295, {0xffffff, 0xff101010} }, -- Dieser Punkt passt nur bei einer Farbabweichung über 0x101010 zu 0xffffff; ebenso unten
{ 515, 291, {0xffffff, 0xff101010} },
{ 518, 284, {0xffffff, 0xff101010} },
{ 523, 298, {0xffffff, 0xff101010} },
{ 514, 298, {0xffffff, 0xff101010} },
{ 514, 296, {0xffffff, 0xff101010} },
}) -- Ohne Bereichsparameter wird der gesamte Bildschirm durchsucht
--
results = screen.find_color({ -- Demonstration der Ausgabe aller Treffer im Bereich
{ 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, -- Mit diesem Feld wird eine Tabelle aller passenden Positionen im Bereich im Format { {x1, y1}, {x2, y2}, ...} zurückgegeben
}) -- Ohne Bereichsparameter wird der gesamte Bildschirm durchsucht