[Scar Divi] Bitmaps

06/27/2012 20:33 ~iceT~#1
Moin, in diesem Tutorial möchte ich euch erklären was Bitmaps sind und wie ihr in der Scriptsprache Scar Divi damit arbeiten könnt....


Was sind Bitmaps ?

Eine Bitmap (Pixelgrafik) ist eine Form der Beschreibung eines Bildes. Bitmaps bestehen aus einer rasterförmigen Anordnung von so genannten Pixeln (Bildpunkten), denen jeweils eine Farbe zugeordnet ist.

Wie erstelle ich eine Bitmap ?

Zunächst benötigt ihr hier ein Programm mit dem ihr das Bild im Windows Bitmap (BMP) Format speichern könnt. Hier empfehle ich das Programm "Screenshot Captor".

[Only registered and activated users can see links. Click Here To Register...]

Damit erstellen wir nun einen Screenshot (bzw. Bild nach dem später gesucht werden soll) und speichern diesen im "Windows Bitmap" Format.

Danach öffnen wir Scar Divi und klicken in der Menüleiste auf "Tools" -> "Picture to String".

[Only registered and activated users can see links. Click Here To Register...]

Nach diesem Schritt öffnet sich ein Fenster in dem ihr nun das Bild in einen String verwandeln könnt, um die Bitmap in eurem Scar Script abzuspeichern.
(Der String wird von Scar anschließend im Debugger angezeigt.)

[Only registered and activated users can see links. Click Here To Register...]

Danach müssen wir eine Variable für unsere Bitmap anlegen, dies funktioniert so:

PHP Code:
program New;

var 
bitmap Integer;

begin

bitmap 
:= BitmapFromString(5829'beNrVltlrlkcUh/+R5n' +
    
'NrtDVNt2xtY2sS4xKjuG9o1KBxN3FfIIIaxSVGbdyjSC2uuRD3JS' +
    
'pqFCSgxnghBkQrYsUlrmBAb/owP97DfO/7pdXLPhcfZ87MO/M7Z8' +
    
'7MfLHYH/8regX0DsDu2bOnPLJFL4/eEfp4FBQU9HUUFhbKKHDI07' +
    
'9//379+slpH9onBQF9A/xvpSQ/P78tPb54NXsnok88CVeUB6mFDm' +
    
'x/sD8mZDDGV5uXlyfBlkYJMIUhkVHNNm3CJPtdksq2Dh8+vCAR9O' +
    
'rbMWPGEJq+0jw9HDk5OQjGyA+wVEcrYe7cuVOnTvU9Ck07G4KR06' +
    
'dPHzlypMXIyEWLFn38+HHixIl+aLZHlvP169fv2bPHDzykFvIcpr' +
    
'xHgELgl7VevXo1YcIEC2rIkCGbN29uamo6ceJEqKLq6urevHnz/P' +
    
'nzlpaWmzdvTpkyZfbs2Uj98OEDSqyE/B2UZ9y4ca9fv3758qVfLS' +
    
'G1CxcuJA80c3NzJRtDTYtl375979+/b21tHTt2bFlZ2YsXL1oDyE' +
    
'ZoI9auXWu9jY2Nw4YNGz9+PMqZoaqqSiPZevzImzFjBqlYvXr1yZ' +
    
'Mn3717p6/8usp1SC2cP3/+3LlzOQ4JVq+Fw+/WrVuJ+tmzZ6NGje' +
    
'KA7969m+Zbx6lTp6yQpOTw4cNvAyhUuo4fP45NwtH8NgL+kAedTK' +
    
'U6+S1Akh4+fEiu7t69W15ezv6SPQpvwYIFy5cv37Bhw65duw4dOn' +
    
'TlyhV2lmG3b99WjM3NzS2O+/fvq1qsbC5evKiup0+fajBhtnwyjx' +
    
'8/JiE2YTfHrwFPEvF3QLSL9Hbv3v3AgQNqPnr0aNKkSXYEONHXr1' +
    
'9X19WrV/GT7SefQ0NDA3WSF/CLR3Z29q1bt/76HDZu3EiM1Jt5qq' +
    
'urVUX8son37t2Tv6amBg/3wL9P+ODBA7/JGcnx+NnxUwA12fw51N' +
    
'fXE6OKQXAtIFXVNWLECPMvXrwYD3HduXOHJmkh2xcuXKCMa2truX' +
    
'5Zes2aNRwcf/7Bgwdr0zWhRGZmZmZlZWGwd00RGiNwF6nr8uXLip' +
    
'd15UEDBa8CW7Jkic3A3YWHbb127RpSi4qKaBJptwCpunHjhq3LMd' +
    
'GO2xjpzAzIyMhgyxo8OPJcU1QjLwuRsrnsCJMcPHiQXhKS5aioqN' +
    
'B4xPAcaBW+lZMQuKPIxtChQ7E5pwMHDiTGbAeDUcLlv3fvXluXXe' +
    
'NYKYdWAOnp6RkOSaWJnjNnztQHsEd8kpaWlu7ByNLSUnoZqc/Jp3' +
    
'3C7aEl2GJ5Ll26RIzMM3/+fJpsRJVjy5YtO3fuZAnOaX08o0ePzv' +
    
'RQTn6M5wcHSs6ePVsXsGnTJq7uQYMGIYm3g+udVLPL6l26dCmx8K' +
    
'2N379/P7miernu5LGg6j6B06dPUzYZASQnzYHxveO7CNyxxzyOHD' +
    
'nCPX/06NFjiWArmWT79u1qMox3h5uNr+TZtm0baxHCsf+CVbgViT' +
    
'0tgOwxudL4TUBqauq3jtSAkpISirP2E+A/AwGScPPwLXVoTQqAAZ' +
    
'S9mjt27Fi5ciW7Q07mzZtH8cu/bt06SkjZk0LZqFJWuzpSUlKkGa' +
    
'NrADbvCE//nxE4rZQcl62a1AbRcV5sAEp4BK1J/TCA1SlRmgSi5G' +
    
'hRMrlixQpeK8ubeqUT25xfOdBmUr92yIOBk+OsE8F9yNmxiPi8xs' +
    
'G9l+IgS/IQI39OZFMhXFz0UslMQlVwc2q85tHSIWzTfWdnB4IlEo' +
    
'Nmly5d5PFt1qIUaXYOwObvBI/XrFmz9DnbWu343SEb5VykTMJtw3' +
    
'asWrWKGrbl2kIZs+yJLx3JyclSBb4edUmY/MkeNCnFyspKBGg8lV' +
    
'MZgV5SxOcDBgygyR2iVdoi1Gv6sTsFaHXpQWQnD4tIXeqVwe5UOK' +
    
'g9mqSiIsKyZcv0Lf/oaM6cOdOP17bJJ5QTE9bB0dEhbRi+0/zWqw' +
    
'HmZ/epB7Kq5pw5c8rjmTx5srq4xmlyb4fyEMXW0hhLYHuHVucXu5' +
    
'0Dw9R28PA9sjmDXFDc5/Kr6cMjq5Fq8jB1jBBNiJ8TSfWVtA9QE8' +
    
'GxWCzU5cdiBjVQ5mBOBvNSlMXDo8BClG6pg2qxaTvEYzp9JT6h1W' +
    
'WrmZSU1M4jFmDjZTM5iZ02bRpJw0+BqSmweY/w04vNO8J5ad8GIV' +
    
'U+GpDkYF0zTFtSPLF4/PGUIo8Xl6qm5S0oCeDhIJk4eTto8qr6Yh' +
    
'Jq9jOTcFFfkq/2C4evNppnYK+Li4tRoiavUnEA/2O16fxjp8mN5+' +
    
'uM1mFo/jj+ATCYnu4=');
end
Nun habe ich meine Bitmap unter der Variable 'bitmap' erfolgreich angelegt.


Wie arbeite ich mit Bitmaps ?

Hier gibt es verschiedene Methoden bzw. Funktionen.

Ich werde euch nun die wichtigsten erklären:


Die einfachste Funktion ist "FindBitmap(bitmap,x,y);"
Diese sucht nach der gewünschten Bitmap und speichert die Koordinaten(falls gefunden) in den letzten beiden Variablen. (In meinem Beispeil x & y)

PHP Code:
FindBitmap(bitmap,x,y); 

Des weiteren gibt es die Funktion "FindBitmapTolerance(bitmap,x,y,tolerance);"
Genauso wie bei der "FindBitmap" Funktion wird hier nach einer Bitmap gesucht und die Koordinaten in x und y gespeichert. Allerdings kann man hier noch die Toleranz einstellen mit der gesucht werden soll. In meinem Beispiel ist diese 25 Groß.

PHP Code:
FindBitmapTolerance(bitmap,x,y,25); 
Die für mich letzte wichtige Funktion ist die "FindBitmapToleranceIn(bitmap,x,y,xs,ys,xe,ye,25); "
Hier wird wieder nach einer Bitmap mit gewünschter Toleranz gesucht. Außerdem kann man hier den Gewünschten Bereich "abgrenzen" in dem gesucht werden soll. Dies geschieht mit den vier Pararmetern xs, ys, xe, ye.

PHP Code:
FindBitmapToleranceIn(bitmap,x,y,xs,ys,xe,ye,25); 
Ich hoffe euch hat mein Tutorial weitergeholfen, wenn ihr noch Fragen zu dem Thema Bitmaps habt benutzt bitte das offizielle Scar Divi Wiki ([Only registered and activated users can see links. Click Here To Register...]).

lg ~iceT~
09/08/2012 10:42 SeaDoc#2
Hallo ,
erstmal danke für das Tut :)

aber ich brauche nochmal deine hilfe ^^


wie mach ich das wen er das bild gefunden hat , das er mit allen sachen abricht und dann wo anders hinfärt also eine andere aktion macht ? hier mein beispiel

Code:
begin
  MoveMouse(1232, 200);
  ClickMouse(1232, 200, true); 
  sleep(3000)
  MoveMouse(393, 522);
  sleep(2000)
  ClickMouse(393, 522, true); 
  sleep(3000);
  Wait(91600);
  SendKeysWait('Q', 393, 522); 
  
// wenn er jz hier in 91600 Millisekunden  angeschossen wird soll er wo anders hin fahren ..//
end.
09/14/2012 19:35 ~iceT~#3
hier würde ich repeat - until empfehlen.

PHP Code:
procedure waitfornext;
begin
writeln
('waitfornext started');
repeat
wait
(1000);
until (FindBitmapTolerance(bmpbauauftragxy25)=false);
wait(ladezeit+random(500));
end
Habe dir mal ne Funktion kopiert.

Hier wird einfach gewartet bis er die Bitmap "bmpbauauftrag" nicht mehr Finden kann, bzw bis die Bedingung erfüllt ist