Zum Hauptinhalt springen

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 durch screen.init initialisierten 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.

NegativPositiv
0x45 - 0x12 = 0x330x45 + 0x12 = 0x57
0x67 - 0x34 = 0x330x67 + 0x34 = 0x9B
0x89 - 0x56 = 0x330x89 + 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