Aufgrund einer akuten Spamwelle ist das Editieren für nicht angemeldete Benutzer zur Zeit deaktiviert. Wir bitten um Verständnis.

Scripte:RGBa-Werte auslesen

Aus Clonk Wiki

Wechseln zu: Navigation, Suche

Allgemein

Dieses Script kann aus einer Zahl die RGBa-Werte auslesen. In der Praxis ist die Verwendung von GetRGBaValue() (s. System.c4g) jedoch einfacher.

  RGBa-Werte auslesen
Kategorie: Snippet
Autor: Feuermonster
Behandelt: {{{Behandelt}}}
Empfohlenes Vorwissen: {{{Vorwissen}}}
Benötigt Objektpacks: {{{Packs}}}
Stufe: Experte Experte Experte Experte






Code

C4Script
var
 
rgba
 
=
 
RGBa(144,244,184,151);
var
 
r
 
=
 
(rgba
 
&
	
16711680)>>16;
var
 
g
 
=
 
(rgba
 
&
	
65280)>>8;
var
 
b
 
=
 
(rgba
 
&
	
255);
var
 
a
 
=
 
(255
 
-
 
(~(rgba)>>24));


Erklärung

RGBa (Rot, Grün, Blau, alpha) definiert eine Farbe. Dabei kann der Rot-, Grün-, Blau- und Alphaanteil festgelegt werden. Jeder Teil fasst 1 Byte. Ein Byte besteht aus 8 Bits. Bei RGB werden nur 24 Bits benötigt, bei RGBa sind es alle 32. Der alpha-Wert steht entgegen der Schreibweise an vorderster Stelle.
Der Wert RGB(255,255,255) sieht so aus:

00000000 11111111 11111111 11111111


Die Zahl 16711680 entspricht:
00000000 11111111 00000000 00000000

Die Einsen stehen also dort, wo der Rotwert zu finden ist. Dies ist analog zu den anderen Zahlen. Mit dem (rgba & 1611680) sorgen wir dafuer, dass am Schluss nur noch der Rotwert in der Zahl vorhanden ist. Momentan befindet er sich jedoch noch an einer ungünstigen Stelle. Wir verschieben den Rotwert mit >>16 nach Rechts. Wir streichen damit die 16bits davor. Damit erhalten wir den Rotwert. Das Prinzip ist beim Blau- und Grünwert gleich. Clonk verwendet keine vorzeichenlosen Zahlen. D.h der Alphawert befindet sich an einer sehr unguenstigen Stelle.

Die Zahl:
11111111 00000000 00000000 00000000

ist negativ. Um den alpha-Wert zu erhalten, streichen wir einfach die ersten 24 Bits. Danach haben wir den alpha-Wert an der Stelle, an der wir ihn wollen. Leider ist die Zahl negativ, und so nicht gebrauchbar. Deshalb wenden wir den '~'-Operator an und subtrahieren dieses Ergebniss von 255. Damit erhalten wir den alpha-Wert so, wie wir ihn wollen.

Für genauere Details wegen dem alpha-Wert:

Clonk verwendet das Zweierkomplement. Ein paar Beispiele dazu, welche Binärwerte welchen Wert darstellen:

+127(10) = 01111111(2) = 7F(16)
+  4(10) = 00000100(2) = 04(16) 
+  1(10) = 00000001(2) = 01(16)
   0(10) = 00000000(2) = 00(16)  
−  1(10) = 11111111(2) = FF(16) 
−  4(10) = 11111100(2) = FC(16) 
−127(10) = 10000001(2) = 81(16)
−128(10) = 10000000(2) = 80(16)


Scripte des Scripte-Projekts
AnfängerBonbon · Context-Eintrag · EliminateTeam · Flint:Partikelschleuder · Hüpfbonbon · TeamMessage
Fortgeschrittene FortgeschritteneFlint:HitCounter · Flint:Partikelkreis · Flint:Partikelschleuder2 · Is-Funktionen · Menü:Beim Start der Runde · Normaler Flint · Partikel-Linie in den Himmel · Rakete · Random · Relaunch · Return · Sichtweite · Spawn · Startposition
Profi Profi ProfiClantag · Gift-Effekt · Unverwundbarkeit · Scoreboard · Zufallsgespräch
Experte Experte Experte ExperteLebensbalken · Nachrichten bei Sichtkontakt · Object2Overlay · SHA1


Wipfhunt.png Dieser Artikel wurde gemäß der Scriptrichtlinien veröffentlicht.
extern