Pewien skrypt i SCAR Divi

Witam…

W grę SEAFIGHT grałem równe dwa lata, –co do jednego dnia gdyż konta pozbyłem się po równych dwóch latach. Pływałem pod pseudonimem AJOT74 a więc wielu graczy mnie na pewno zna i pamięta.

Aktualnie nie gram już w tą grę, ale w czasach, gdy grałem nauczyłem się programować w programie SCAR Divi i nie ukrywam, że napisałem niejeden skrypt, który po prostu grał za mnie. Były to skrypty między innymi na Słoneczko, Behemoth, Błyski, Pergaminy jak i również skrypty eventowe.

W związku z tym, że jeżeli chodzi o komputery to najbardziej interesuje mnie ich programowanie a więc na pamiątkę tamtych czasów opiszę Wam jak się pisze takie skrypty i jak się je uruchamia, dokładniej mówiąc opiszę skrypt do pergaminów.

SCAR Divi pobieramy ze strony wydawcy tegoż programu: http://www.scar-divi.com/ -niestety aktualnie tam jest prezentowana wersja powyżej wersji 3.30 a na takiej wersji będę właśnie opisywał mój skrypt, dlatego proponuję poszukać go na http://www.google.pl/#q=scar+divi+3.30. Gdy już go znajdziemy to przystępujemy do instalacji –i tutaj proszę uważać, bo niektóre wersje instalacyjne lubią sobie zainstalować inny śmietnik.

Powiększ...Po instalacji uruchamia się nam okno, które można wyrzucić na cały ekran, pierwsze, co należałoby zrobić w celu lepszego uruchomienia i zatrzymania skryptu to ustawić klawisz startujący i zatrzymujący skrypt, robimy to poprzez wybranie w menu TOOLS a następnie REDEFINE HOTKEYS i po otwarciu okienka ustawiamy sobie RUN SCRIPT na przykład na klawisz funkcyjny nr 2 (F2) i ustawiamy STOP SCRIPT na przykład na klawisz funkcyjny nr 3 (F3). Upewniamy się również czy mamy wyświetlone okienko DEBUG w dolnej części programu, gdy go nie mamy to w menu wywołujemy VIEW a następnie SHOW DEBUG, dodatkowo w menu po wywołaniu VIEW można wywołać SHOW FUNCTION LIST, które przyda nam się do szybkiego poruszania po procedurach i funkcjach naszego skryptu.

Zanim zaczniemy tworzyć skrypt to parę słów o programie SCAR Divi. Program ten jest edytorem służącym do tworzenia skryptów w języku PASCAL z tą różnicą, że ma wbudowane dodatkowe funkcje między innymi do rozpoznawania aktualnie wyświetlanych obrazów i ich fragmentów. A skoro program posiada możliwość rozpoznawania fragmentów obrazu to na przykład za pomocą tego programu można by odnaleźć moment, w którym wchodzimy do pergaminów, (czyli symbol kociołka), gdy to już mamy to program pozwala nam na ustawienie myszki w tym miejscu i wywołanie kliknięcia.

Łałłł… -SCAR Divi patrzy za nas i klika –bajer…

Niestety pierwszy moment myślowy jest super, ale niestety, co z tego, że nam coś kliknie, ale co dalej? –Niestety sam SCAR Divi nie pomoże nam zrobić pergaminu gdyż sam program potrafi rozpoznać, kiedy mamy zbyt mało HP, ale sam SCAR Divi nie zmusi statku do cofnięcia się statku, a skoro nie cofnie statku to i nie włączy naprawy i topeczka murowana, do tego, aby było śmieszniej sam SCAR Divi nie zmieni ataku na inny BOOT i nie zacznie do niego strzelać.

No i po skrypcie i radości…

Gdyby tak było to, po co i ten artykuł??? –SCAR Divi prócz klikania może jeszcze pisać na klawiaturze za nas…

Powiększ...Pomyśleć można, że przecież podczas robienia pergaminu nic się nie pisze i faktycznie nic się nie pisze, ale za to na pewno można by wykorzystać niektóre ustawienia klawiatury, które są dostępne do obsługi gry SEAFIGHT. W tym celu należałoby w nawigacji gry ustawić zaznaczone skróty klawiszowe:

Atak –klawisz „F”;

Zmień przeciwnika –klawisz „N”;

Ustaw kurs – klawisz „V”;

Na statek – klawisz „SPACE”;

Napraw – klawisz „Q”;

W momencie tworzenia opisu do tego skryptu okazało się, że należy dołączyć jeszcze jedno ustawienie, mianowicie należy ustawić „Przerwij atak” –ja wybrałem dla tej funkcji literę „G” (po prostu ktoś chyba wypatrzył tą lukę podczas działania tego skryptu).

Podczas ustawiania należy uważać czy wymienione klawisze nie są zajęte innymi funkcjami, –jeżeli są to należy tam zmienić te klawisze.

Mając ustawienia klawiatury należy pamiętać, że SCAR Divi będzie patrzył za nas na ekran a więc będzie patrzył i rozpoznawał niektóre fragmenty obrazów a już na pewno nie będzie myślał i na pewno nie wymyśli, że jakieś wywołania znajdują się pod innymi obrazkami lub innymi elementami, które gdy się wyłączy ukażą nam całość danej ikony lub funkcji.

Powiększ...W tym celu należy zwrócić uwagę na niektóre elementy:

- mini mapa morza nie może być niczym zasłonięta;

- PŻ nie mogą być niczym innym zasłonięte;

- Naprawa statku jak i cały pasek tego menu musi być rozwinięty i niczym niezasłonięty;

- ustawić amunicję pustak lub inną, jeżeli możesz sobie na to pozwolić;

- naprawić statek na max lub pozostawić nienaprawiony a już na pewno nie uruchamiać skryptu podczas naprawiania statku;

- Znaczek rozpoczęcia i zakończenia strzelania nie może zasłaniać na przykład „Status”, „Twój cel” czy też „Atakują Cię”;

- Kociołek symbolujący wywołanie pergaminów też nie może być zasłonięty.

Mapę można włączyć na cały ekran lub i też nie, ale nie mniej wymienione elementy muszą być widoczne.

I w ten sposób mamy wykonane wszystkie ustawienia dotyczące gry i programu. A więc czas zacząć pisać skrypt do pergaminów. Tak poza tym przedstawione ustawienia na pewno nie wystarczą do wykonania skryptu na błyski, behemotha czy słoneczko i inne.

No i jeszcze bardzo istotna sprawa, skrypt opisuje działanie dla majtka poz. 5 i innej, ale z tą inną to powiem tyle, że minimum to majtek poz., 4 przy którym bez konta premium i tak nigdy nie ukończymy pergaminu strzelca. Dlatego polecam zainwestować w majtka poz. 5 oraz konto premium lub po prostu można to wyciągnąć ze skrzynek za pomocą kluczy.

Byłby czas coś zacząć pisać, jak widzimy program SCAR Divi zaraz po otwarciu zaproponował nam sam pierwsze 3 linijki kodu:

program New;
begin
end.

W pierwszej z tych linii widzimy napis "program" a zanim napis "New", który to właśnie napis możemy zmienić na własną nazwę np. "Pergamin_AJOT74".

Kolejne linie to napis "begin" który oznacza początek skryptu oraz napis "end.", który wskazuje koniec skryptu.

Język PASCAL ma to do siebie, że potrzebuje mieć wszystkie zmienne zdefiniowane na początku skryptu lub procedury czy funkcji a więc zaczniemy je definiować.

Pierwszym słowem, które należy użyć do definiowania zmiennych jest "var", po tym słowie wpisujemy nazwy zmiennych, które sobie wymyślimy, ja zrobiłem to w następujący sposób:

program Pergamin_AJOT74;
var Globus, Zamknij, Grupa, Bonus, HPmax, Atak, LiveON, LiveFull :Integer;
var Panna0, Panna1, Panna2, Koza0, Koza1, Koza2 :Integer;
var Strzelec0, Strzelec1, Strzelec2, Rak0, Rak1, Rak2, Kociol, Usterka, LogOFF, Topka, PoAbord, aClose :Integer;
var a, b, x, y, HPx, HPy, OknoX1, OknoX2, OknoY1, OknoY2, AJxx, AJyy :Integer;
var Kierunek, Kadlub, AJliczba, Awaria, awX, awY :Integer;
var bylatopka, mapa, brakmapy :Integer;
var Kolejnosc, Panna, Koza, Strzelec, Rak :boolean;

 

Pierwsze dwie linijki zmiennych są stałymi zmiennymi, do których przypisałem fragmenty obrazu zgodnie z tabelą poniżej:

 

Globus – do tej zmiennej wczytamy fragment bitmapy wyświetlanej na mapie morza i umiejscowiony nad okienkiem mini mapy przedstawiającej globus, który po kliknięciu wyświetla nam mapę morza.
Zamknij – w tej zmiennej wpakujemy fragment okienka "Zamknij", które wyświetla się na przykład przy ataku na wyspę bractwa, informacjach o restartach itp.
Grupa – będzie zawierać fragment okienka, które będziemy zamykać zawsze, gdy ktoś wywoła grupę.
Bonus – umieścimy w tej zmiennej fragment paska informującego nas o tym, że można opuścić mapę bonusową.
HPmax - umieścimy w tej zmiennej fragment paska, na którym widoczne jest PŻ, kopię tego fragmentu należy wykonać w momencie, kiedy statek jest naprawiony na full.
Atak - w tej zmiennej znajdować się będzie fragment przycisku rozpoczynający strzelanie.
LiveON – należy do tej zmiennej umieścić fragment przycisku do naprawy statku w momencie, kiedy jest jego możliwość użycia.
LiveFull – w tej zmiennej mamy fragment przycisku do naprawy statku w momencie, gdy statek jest naprawiony na full.
Panna0 – należy umieścić fragment przycisku wywołujący mapę bonusową Panny, który widoczny jest po wywołaniu map bonusowych.
Panna1 – zawierać będzie niewielki pionowy fragment lewej części mini mapy morza skopiowany w momencie pobytu na pergaminie Panny, podczas kopiowania statek powinien znajdować się wraz z botami po prawej stronie mapy morza.
Panna2 – zawierać będzie niewielki pionowy fragment prawej części mini mapy morza skopiowany w momencie pobytu na pergaminie Panny, podczas kopiowania statek powinien znajdować się wraz z botami po lewej stronie mapy morza.
Koza0 - należy umieścić fragment przycisku wywołujący mapę bonusową Koziorożca, który widoczny jest po wywołaniu map bonusowych.
Koza1 - zawierać będzie niewielki pionowy fragment lewej części mini mapy morza skopiowany w momencie pobytu na pergaminie Koziorożca, podczas kopiowania statek powinien znajdować się wraz z botami po prawej stronie mapy morza.
Koza2 - zawierać będzie niewielki pionowy fragment prawej części mini mapy morza skopiowany w momencie pobytu na pergaminie Koziorożca, podczas kopiowania statek powinien znajdować się wraz z botami po lewej stronie mapy morza.
Strzelec0 - należy umieścić fragment przycisku wywołujący mapę bonusową Strzelca, który widoczny jest po wywołaniu map bonusowych.
Strzelec1 - zawierać będzie niewielki pionowy fragment lewej części mini mapy morza skopiowany w momencie pobytu na pergaminie Strzelca, podczas kopiowania statek powinien znajdować się wraz z botami po prawej stronie mapy morza.
Strzelec2 - zawierać będzie niewielki pionowy fragment prawej części mini mapy morza skopiowany w momencie pobytu na pergaminie Strzelca, podczas kopiowania statek powinien znajdować się wraz z botami po lewej stronie mapy morza.
Rak0 - należy umieścić fragment przycisku wywołujący mapę bonusową Raka, który widoczny jest po wywołaniu map bonusowych.
Rak1 - zawierać będzie niewielki pionowy fragment lewej części mini mapy morza skopiowany w momencie pobytu na pergaminie Raka, podczas kopiowania statek powinien znajdować się wraz z botami po prawej stronie mapy morza.
Rak2 - zawierać będzie niewielki pionowy fragment prawej części mini mapy morza skopiowany w momencie pobytu na pergaminie Raka, podczas kopiowania statek powinien znajdować się wraz z botami po lewej stronie mapy morza.
Kociol - należy umieścić fragment przycisku wywołujący mapy bonusowe.
Usterka – najtrudniejszy fragment bitmapy do wychwycenia, ten obrazek pojawia się w wyniku lagów i innych błędów podczas włączenia naprawy statku, niby naprawa włączona, ale statek się nie naprawia.
LogOFF – należy umieścić fragment przycisku wylogowania.
Topka – należy zatopić własny statek i następnie pobrać fragment obrazka pozwalający na powrót na mapę morza.
PoAbord – kawałek szabelek, które spadają po dokonaniu abordażu.
aClose – przycisk zamykający okno informacji abordażowej.

 

Kolejne dwie linijki to mieszanka stałych i zmiennych, które będę tłumaczył podczas tworzenia skryptu.

Ostatnia linia zawiera zmienne typu BOOLEAN, do których przypisujemy TRUE (prawda) lub FALSE (fałsz). W ten sposób będzie tutaj dosyć ciekawe rozwiązanie dotyczące działania naszego skryptu czyli:

Kolejnosc – zrobimy tak, że jeżeli wpiszemy do tej zmiennej TRUE to skrypt najpierw zrobi wszystkie Panny, potem Koziorożce następnie Strzelce i Raka, jeżeli wpiszemy FALSE to kolejność będzie odwrotna, czyli Rak, Strzelec, Koziorożec i Panna.

Panna – jeżeli wpiszemy TRUE to będzie to oznaczało, że skrypt ma wykonywać pergamin Panny, jeżeli wpiszemy FALSE to znaczy, że skrypt ma nie robić pergaminu Panny.

Koza – jeżeli TRUE to skrypt robi Koziorożca, jeżeli FALSE to nie robi.

StrzelecTRUE oznacza robić Strzelca, FALSE oznacza nie robić.

Rak – identycznie jak powyższe ustawienia tyle, że dotyczą pergaminu Raka.

MajtekTRUE oznacza posiadanie majtka do napraw poz. 5, FALSE – oznacza innego majtka niż poz. 5 (przy tym ustawieniu zwracam jednak uwagę na powyższy opis dotycząc majtka).

W ten sposób bez problemu możemy nakazać skryptowi zrobienie wszystkich Strzelców a następnie skrypt zakończy działanie.

Wiedząc jak korzystać z tych zmiennych możemy do naszego skryptu dopisać pierwszą procedurę, która będzie znajdowała się na początku naszego skryptu i będzie można bez zbędnego szukania po uruchomieniu SCAR Divi zmienić opisane wartości.

procedure wartosciStale;
begin
 Kolejnosc:=True;  //chcemy robić tylko STRZELCA a więc kolejność dowolna
 Panna:=False;     //FALSE dla PANNY bo nie chcemy jej robić
 Koza:=False;      //FALSE dla KOZIOROŻCA bo nie chcemy go robić
 Strzelec:=True;   //TRUE dla STRZELCA bo chcemy go robić
 Rak:=False;       //FALSE dla RAKA bo nie chcemy go robić
 Majtek:=True;     //TRUE w posiadaniu majtek poz. 5, gdy FALSE -inny majtek
end;

W zamieszczonym kodzie pojawiła nam się komenda "procedure" –komenda ta dla PASCAL’a to nic innego jak oznaczenie, że w tym miejscu będzie znajdować się procedura, którą będziemy wywoływać raz lub kilka razy, następnie jest "wartosciStale", co jest po prostu nazwą procedury. Tutaj warto zwrócić uwagę, że choć nazwa procedury mówi nam o tym, że są w niej umieszczone wartości stałe to wcale z punktu widzenia programisty nie są to wartości stałe, nazwałem tą grupę zmiennych w ten sposób gdyż do zmiennych tych zostaną wpisane pewne wartości i podczas pracy skryptu nie ulegną one zmianie. Następna komenda "begin" to nic innego jak znacznik rozpoczęcia procedury, na której końcu znajduje się komenda "end;", tutaj zwracam uwagę na średnik postawiony po wyrazie "end", –gdy nie postawimy średnika to wystąpi błąd podczas kompilacji, natomiast gdybyśmy postawili kropkę to skrypt uzna, że to jest jego koniec. Pozostałe komendy to nic innego jak przypisanie wartości do zmiennych, zwracam uwagę, że po nazwie zmiennej jest dwukropek, następnie znak równości i na końcu wartość, którą wpisujemy do zmiennej a po niej średnik. Gdybyśmy nie wstawili dwukropek to kompilator pomyślałby, że chcemy coś porównać.

Powiększ...To skoro mamy już ustalone podstawowe zasady działania naszego skryptu to teraz wrzucimy do następnej procedury zmienne, które będą zawierały fragmenty obrazów zgodnie z tabelą powyżej. W tym celu należy sobie przygotować opisane screeny najlepiej każdy w oddzielnym pliku i w menu wywołujemy „Tools” a następnie „Picture To String…”, otworzy się nam okienko, w którym widzimy następne wywołanie „Open”, klikamy na nie i podajemy lokalizację naszych plików. Po otwarciu w części „debug” pojawi nam się kod zakodowanego obrazka, którego należy skopiować i wstawić do edytora, operację powtarzamy tyle razy ile mamy plików. Podczas otwierania i kopiowania należy szczególną uwagę zwrócić na nazwę pliku w stosunku do nazwy zmiennej, jeżeli jest inna to bez problemu można ją zmienić na wymaganą w skrypcie. Przygotowywane screeny proponuję zapisywać w pliku typu „BMP” z użyciem pełnego „RGB”.

Dla bardziej odważnych polecam funkcję „Pick Bitmap”, która to pozwala wycinanie fragmentów obrazu z aktualnie wyświetlanego obrazu, przydatne jest to podczas tworzenia skryptów na błyski i eventowych.

Wspomnę również o funkcji „String To Picture”, która pozwala nam podejrzeć zakodowany obrazek, aby tego dokonać należy najpierw skopiować kod ze skryptu pomijając jego nazwę, określenie oraz szerokość i wysokość a następnie po wywołaniu wpisać szerokość oraz wysokość a dane ze schowka skopiować do okna, klikamy „OK” i już nam się wyświetla podgląd. Funkcja bardzo przydatna przy podglądaniu czyiś skryptów.

Bardzo ważną funkcją jest też „Pick Color”, która pozwala nam określić kod koloru umieszczonego w danym pikselu na obrazie, będzie to potrzebne choćby po to, aby na mini mapie rozpoznać gdzie znajdują się boty jak i zarazem nasz statek oraz ile jeszcze pozostało punktów życia.

procedure loadBMP;
begin
 SetDesktopAsClient;

  Globus := BitmapFromString(19, 12, 'beNoBrAJT/QwAS0g4Mz' +
    'AcY15Gd3JYnZd6v7mc6+m+2NarZmI43tmyjIdgmpRv9O7Lt7CRtr' +
    'CThn9mbmhTWlRDOjYmKiYWPzwouLObsq2SeHJVkYtu0tCkTEgdUU' +
    '0jzcmfW1YvPTcSlI5rsaqJa2RHlI10vraihoBvNzMjOi8AwrVq1c' +
    'V3zbhw176B8Nahv6qiqpl4rJ9m+uy6v6yWxa2mwq+a7t+xuq10sq' +
    'V2vK+H2dGdhX88iX5EnZBHYVEDOygAa1QXu6FsWEQ2Lx8AYVUWuq' +
    'x2SjgbaVVHYU80dGYyrqJlal4rQTUILCQAw8B5vrN+YFUQJBYAJR' +
    'EAqZJXeF8tHAoAJxkAKiAArKFdPy8INCIJNCQAPTEAxbx3KyAAPj' +
    'IBLicAe3gu0caTm49OnpBKuqhmzLZ/vKVykINWrqVgtq5Y08l8pp' +
    'hkpJRtt6l3tapl29OIjoVFqp9oqqRltbJoqqFzOS4AYVUUYFASoY' +
    '1WeWQ0VEkOdGweaWQEurRbSkAAhXdDfXI3koo9vbZlIRkAg3xBa2' +
    'clvLlxVU0knpNgVUoQXE8WfWw5tqN0QjoATEUATkoAtrFTY1oSWk' +
    '8UaV8dmJBCmZNCPzcATkcMdXAzlZRRKyUCOjIGtal4mY1abl8vnY' +
    '5ik4tFiIItgHwbw75jbWYbl41Pp55c0st+dW4jRkABsat2n5xmRk' +
    'MLHRYALykENi4EnJJnp5pwcGM5mpRRcGwdXlkCuLJfS0MAZVsgyL' +
    '+BjYVAdG4tnJZffXVLRD8VJyMAHhgDJiADODIPGhEAUkohg3lRmp' +
    'JasatopJ9WxcB5n5hcsKh0s6t1pZ1lTkYSUUkfR0AhGBEAGxYAIx' +
    '8RHRoENjEWVU8uLScENjALSEAUKCEAW1MbhHxGMyoAd21CjoRZJh' +
    'wATkYdOTITKB8LJh4OEzKFD5w=');

  Zamknij := BitmapFromString(30, 20, 'beNpLCwz2duyvS6cF6' +
    'qlOlRbmjAp0Ton2zIz3yU70pRbqKE+UFuGODrKdPbF88YzqZXNqq' +
    'YVaimOlRblNdcV8nZTCvNWjA7SoheryIuXEeW2MpYDGJobppkcbU' +
    'AtVZATLS/Lam0kDbQFycxONqYWKkvxoZHJOjAeNTE4Nc6KRyXEBt' +
    'jQyOcLLnEYmB7kY0chkX3tdGpnsYa1JI5NdzNVoZLKjiTKNcreDs' +
    'SKNSiR7I0VhfnZpMR4FaT4VOQE1BUFqoWBXI24OFn5uNiE+dmEBD' +
    'ioiF1uj0rRA6iMA/ggy+g==');

  Grupa := BitmapFromString(36, 18, 'beNq9lGtIU1EAxz13D6v' +
    'NR27Nx0WbIq3CkUtSJM3SSnxNZ7aZK23V5mxqDisrl4oVRQkqogV' +
    'qVoYl2JP1JtIiil4Q9PhSEFSi9CUC6UPB6b8Gl+vdKPJDlz+Xc8' +
    '5/87/3PNqtrc1WtubKv9JQGZA1Ts2gWIVs8sMWdvMOVUV+Q5LgVc' +
    '1W/V4u5y53k80wQAbzN4sv5RAAupwg4VVyszF6b2dDYMnGof69kN' +
    '33Mfv3Tz87avtxd0N53vyUIMmGGCDGYhfylcCqtW5kZ0nW6ZVFWT' +
    'GGfM05qLFDkvaxPj9+wPEWqK0lYjvDYjXrmDRBANsMAPxpfxKQLk' +
    'cxpjwoLSkKNRbjNpKc+LpI+Ejx4hi7myJhFmTrk5OjHxwipgNHhA' +
    '2mIFwlMWk+/D+FqWTb6+Sg041cOjCub2UVmO0nXsUfGqXtWh+ZFB' +
    'GMothwFZjSarbqstfpZRKRCh7dbOHIBcG2GAGwqd2WDTPhhlKj7m' +
    '7yboc9dGWIkp/Phki9WUeShOn4Kja8lxBFrS9XGcqWITCTnsapZe' +
    'aqmL4WUAEVFN19NNzhI4vuXs+9suk+80Vsqc8IFgmipgn51M202r' +
    'fLE6vL5NTLSRELspIieYoIL7UIaeCfkygtANBvY0kJpzBKmxer+V' +
    'TFYZ0PkXpG0pd318qOb27Lr3YJq4oSeAoIALKO7DPn4yU6rG49mI' +
    'GS1BauAhNfKo0N2V6lot6nqOcXl2UtG5h+HMIREAh6Pa1Rsz282H' +
    'yaJC4u0hxVhAq+VlAilfr+BR+BP1PjEnZiCAIhds94prCaXsDiID' +
    'q766k9MdoPzGtZboaCPbkSBspN7D8LCD5KxL8ZnmnxW8WED51yKW' +
    'fmrrx+CypNRJMXUGmcvQkeXiGdO1mNujj+VR26kJ+FlYHk+bp/3c' +
    'WCr37RNbsaVlAOMpp046dDrzaQQ5YA1RhokiVHFSLQ9XnIu11AfV' +
    'm0fo8DUdlJcfzzzK2AVYHP8IJQaXLAyRihjuVQPgUegsL9Rx8+Rx' +
    'pWeFi73FOXRqFGlBRKjlHrUyKE9w2MPhKLGa42waIL/XXOwpIxtJ' +
    'YRUggq5Kr2eD4mNAF6rl+hSYYYIMZyMyo/AytbJY4RCYNCw5UhM7' +
    '6g2CADWYgM6M6mu3/Sb8AH1JQsw==');

  Bonus:= BitmapFromString(11, 11, 'beNoBawGU/jgjdWQuaFkWT' +
    'DwAn49Bl4U9b10fcVwtb1s2aVY4alpBbV5HcV8fTj8Amosu4tRzl' +
    '4Ysa1gLZE4Sc1wweGFBbFg/Z1U/TTsAoZE57d92691wrpw2WUUAV' +
    'kIAW0UTcFg2b1lBZlE8noxC4tN29+l89Od1+ul/8+CC79uSkXxFd' +
    'l44Z1I3X0o18eGW9eiM7eF19Oh48OJ5++qO++eeh3I7blgxa1g6W' +
    '0kz//ax+u6Y9+uJ8OR+/vCP//Gc/+6okYBKZlQsXU4vTD0mjoND8' +
    '+qd+e+Y9uyT7eGNxbltyLp7iXxIXlEnTUIiQDQcbWQrlY1M7+ef' +
    'PSrubBrcWgncmcvYVcmVUwjRD4cMSkSaGIwbWgwkYtR9O6ypJ1mX' +
    '1giUkoZUEkdSEMbMy8MFREAYFwvYl4vaWMzioRUraZ6V1MmUEshR' +
    '0QbLy0GGxsAFBQAZmI9X1s2WFQvUk4rVE8vRkMkOjcYKCcIExIAE' +
    'BAANv8BnKk=');

  LiveFull := BitmapFromString(30, 15, 'beNpVk1l32joQgP+OF1mWZ' +
    'cmS5QXH7A4QSAihhD2EUEq2nt6e5twGKCGQ1b/5mqQvV2eepKNvR' +
    'p9mLEax5juWRSHnhi0wt5EQOOVbKYdkPFZIOVHKKfriIB0c5J1SR' +
    'lTyfiHjUwwJRo36UbNebx7Wxr2uTwmWJAso9ahQTPlIkoRjMY4Jg' +
    'YztmK5LghTzHeLaOO3x0GWhx8vFTDol9rM8F9DqfliO0gelAlAk1' +
    'xaNo3qpEA07HY8xQ5UpBLosYU0W1Fi9rtev67f4+eV5Fb88xi+be' +
    'LOK3zZx/BS/b15e1+/x83a7ymfDfJpXoiDK+fuFkGCoypIsSdlM9' +
    'rB2WNovfb2YEGwokpQc7QwwtHx/XMWb9etDgp0e1xeD4aI/vBv0z' +
    '1r1t3jz+PawfU+yvIS+k3IpoxoEUnI9iQT7sZRypVquHFSq1Va7p' +
    'QCJMJ3ZyPXJ7+1yEz+tH+fxatER7plpT7jXd/xD331+XKy289Vmu' +
    'VreY0VOmKryF/sZH0uWVFCuVsN8rtFuBrkUosBydDcwlw/z9cP8f' +
    'fk7vp9fh7mvhj3F9tgSF7l8/GeR5Nys5m9Pj0j5pPyP/LdsWXaCo' +
    'HxU2ytmas0qcQxkydxH28X9rNmc94eL4+bPdOHScqaYXWB2m87/q' +
    'jd+9foXzZPtcv5ZoSJLycdpsgQVCQFZUz92d1vAz4RhMZct5aqNC' +
    'rGh8PHT3V3DEhMv7OvmhImhYX6zxRjTK+GfYT5wUoeO+/D7TlETF' +
    'QpUVQQUEyrChB7DnOgIfuRUd/CwkM/tF2rH1Vxxz6Ta5sePJhMj7' +
    'o6INRFibPMxZyNMxqY1YU6fu3XHnf/4DqGMICQIcRP5DOd9HoViT' +
    'xBTT94haTqUAcQWi8rlbC5brZY9h/+5vWkI0aLWkPMBJWPBzhgZc' +
    '2to0ZHjtoU48tz7mysCFWZih5GAk4xDS4FdSYuAI12RQOJDVRUAN' +
    'WhQyy7tV5IOP67V7mbTnKEXgVxHWhOqI0bOrYTPO9SMJCkPlKyhL' +
    '26vXQNygj1GA26muVFwzaJPPFOBSQPvjMgmsXa2FD0dZArpfC2qn' +
    'M/Gs+vpP5ezfy8mDSL6lt8xnYGfjYj1c/bt9uby6vbyfHKOCXYp9' +
    'Jnhc3PPtfc8h2KUiNCADHXFwJpharoBNF3Vke56XtLh7WGn3WuNB' +
    '91fCVn4XZ5Kou2nK653NR51u612t9XptTFGDtFcqnvMTNlMWBRpi' +
    'QIJQgUhYGCQkA0TQqSqmmpxXoiiZqfZaNVPvxzPBr2IsowMCkB3J' +
    'SmkZDIadHunX1qNVuuEEyJMYGPNoYawTAyButMr6bqKDLALU8OJF' +
    '7QbUR2hYC88OT05aTeOjqvjYW/a7XwfDq97vctBfzoang27x43D1' +
    'mmz1ahjADgGFlJtoltYBx+TAoHyWfOO/FF2IkRWkqEE9D+te28X');

  LiveOn:= BitmapFromString(30, 15, 'beNotkntMU3cUx399cNvS9' +
    '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' +
    '+Vz70/t5v0Dhj1kPA==');

  Atak:= BitmapFromString(20, 20, 'beNoVU1tsUwUY/tquPb2fr' +
    'uf0tKftaU9vp+tp13u3ru26iy2MjVYYbHNMxgaD4HAsBMbFiQw6c' +
    'BsjzEU0mZvMIIohBmJAiBJMRA3P+mRi4uXJJ3ww8fZSD8n/8L18' +
    '5d8F7u7/vdv9T++r6/216+0f7MyDBKgtLQMI5Pvn1l4dGzungQmj' +
    't88fuGzw6c/3DG+0L17JrFlTChUhc6e+rNf6j9/VV8bqm9UV+Z6I' +
    'NHMjc1AZXBhfHL97KWH55a+PDl/b27l8WvLD8ZPrI3OvF0ePRXvf' +
    'Vks76w/vvPfzVr9g0P1pwu31qdhlkOl9UCRLhxIFPYPTSwdmd088' +
    'vqNU0t3py/eGp5enZq/MXR0sTg4lewZqa/MPLs0+vu7B/99svpo8' +
    '7xBBQIEBVMkv8uT6s30jHcPHdt5uDZ2+trA1HL/5GL14Hz/ofmBQ' +
    '7VdY7P1CyP/XN7749qrP9xZ+Pb6RT/AQKUDq+OjbLw92LnTm680b' +
    '9kb3z7h7xju3nOqMlEbPrI8Onl5957ZN66fF7eUNKBzjtznd76w+' +
    'Cx6IAE00HZOTLjDaS6YEBPFYCQfDLXlCtXStj09ldFSZSRX7vdxe' +
    'iiVBIx2MC3u6Mfr7zQZIKmDMGoZjnR4KS7oFlKcN+H0xEPRjoCY9' +
    'za1ecNtTalOBuiMRL+7/YCFhoTsyf27R3dsC0hchQYqUmNiGa7JH' +
    'Uja+WaLPSQdL2SsXITmwlwobQS28q6fNj7xAMoGLL23vL5UW60OK' +
    'pQGQA2ZWq2zkBaeYgWT1a8hXZRTNLFBsyPEBuKEHPvCwp/XNpOSl' +
    'ALg1fv7K09PvDkyNJZJ5EgD8/wDtDLCrKV5Ne1WmjgjK9B8mHaJO' +
    'V6/OLD1r431xdaWNppwWBqswDEhM7x9cLBvd1+p2p4vJdMFXojJ9' +
    'QwURmgtBO3WWb1qs/PeldkzL3X/envtarn963Mnr47uisrhA2LuY' +
    'Km12NXSEQ+lEvG2WKYoxLPeWBaaRiiNaDBAadLJkEo2PlirhYFWY' +
    'OlApXawV1SBgqor1tJXLOeSuVy2M1PoDqXy4WwHG0oQNPecrmqEH' +
    't4w8enCjAiwgIvFlZnt+3xyaRNhhmM1pNfmSieznkDYHhBd4Zg31' +
    'sI3p60+UYpAq0QxYLw/PVmUfJI2BJwtc9eCOolrhlwPGQGZQWsUI' +
    'wkx2eoKRS1egQ1E7P4I7fDPpYT5lsR6oeus3Xncb7vcKWymHQ995' +
    'h2F4rZs24svlHiGlUNmt3MOt492egw2zsx5bbxgcwd6gQFgs9Alg' +
    'arUE2Bej4/0Skop10jZSP0CSI1OCAguj4+2ORnOa+F8ZjtvZJxxo' +
    'AC81ZrMAgLgkWE2xZ9TPA/VbTXReoIxGUJ+n8fFWxmWNNKUxWlmn' +
    'HrKpjJShBYRPV7hDZLJagV8eXNX1JaTOga0Z+OZeJPPzbrtrFGtp' +
    'Rsp1uZQyNUqNakxUGqThefRzGIqRpWBbkEXTVpFnpZMs1kNoSYX7' +
    '6QpUmM1kyxlYUyUydBooVjWxlsdHvP/4CIKWg==');

  HPmax := BitmapFromString(30, 5, 'beNorZmAoHkVDGQEAo2xD' +
    'Yw==');

  Usterka:= BitmapFromString(22, 22, 'beNoVlMlvGwUchX/jmfHsM' +
    '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' +
    'hMW');

  LogOFF:= BitmapFromString(16, 18, 'beNqlkT1Lw1AUhu9HYmubV' +
    'Lo6FJx0cBAcnKQgBUHFX6FO6aaTc3CqOHYR/AgoVvoDLLQgiKMQd' +
    'RIsOjr1H9Sn99IQQsGCcIb3vO+Tc++5cZ059781GDTf4nBKuORoy' +
    'yOm4T3Dv8ah9xffvguii4Oi1u8PO53rDQQt5kT48nzv++u0tr5Y1' +
    'KoTiuhQwNNiEmUnt4Lh8Kp9Xy9oVRjzVmOOolaQXhCn329U5stpv' +
    'mg0JhFAsj57/XwevzzVc0qiuYYjpSslghaTCCBZH/+ju9u7qTGNI' +
    'ZbJKYWgxSQCAEv4OFp4bFa21/ySYTxTVmMSAaT5rVXx3BBn+yLzj' +
    '2gxiQDSPLetLgvWvD0S1SVVntEUghaTyK5jed/ReaXYcXNFMipTm' +
    'EQA/vhoe2Ec1zwLA3sno0JYJz/ePX1PnFk9+kRLkRQtZgZOPvHN6' +
    '8E4phC0/iQ4cxCr2Z81gfwF02yAkg==');

  Topka:= BitmapFromString(30, 30, 'beNoBjApz9TAY5uXL6OXN4' +
    'd/E5eXL7/LbtKZ6yr2g1cuxwbKSuqyKtaaFvrGN0sWl1sinzMCgg' +
    '3VSSkIedWw/2sqnyL6d0tC51NS61NKy29zB5unM4+XJ29zC4ODE4' +
    'Ny04Nit9vjn5+bO2NO32NK20MmtopFnzL+jv7KVoJBmpZVqqZpzv' +
    'a2NloJeWkwnGhUNPzMTo5RuyLmVyryYysKk1tfA0s+w2NW14uHI5' +
    'OrJ4ePF3eDF3+PE0te2zsmi7evT39i9ybuYwLKPtKV7saJ/39a+z' +
    'sCiwK+LtqaEg3ZRZlo4V0opYlMwlohk3Myr1MSkxbmbyr6f1M+z1' +
    'de8z86s2tq93+HH4eTH2uDD4OXI3+TDu8KktLKO7eG89fPm9vbm' +
    '//18+nN8OPG5+TTv7ebeW9SOi8NRjobf29MhXVNuaqL1sepwLaUu' +
    'q2NwbWVzsOh2tWy0s2m1tax4uPK3uLD4OLB3eHD4uXF3uO/vsGgt' +
    'bCJp5Fb8+3W8erf3da/pp6Gc29cOC4THRUAQTklkYFfxbOTr6F/u' +
    '6uHxbWRrp54xLSXwbWXxLiez8qt0caf08ul5ObM4+bK39684uXC4' +
    'eXE3+G44uW/zMymvrqSTjoQe2o/U0UyKiMMAAAAAAAAUUEwpJZ27' +
    't/A1MCem4ppv7SczrudrZpwybuf39K20MWmzMWr1dCyybyT1NCx5' +
    'OrV3N/A39+93+LC3uO+29yx3N+4yMqjw8afKyYMDQoABwEAMCcXh' +
    'ntourSU5da09+jMt6iFf25HvK+U4NjEy7qcyrqc18uwzcGkzsGh0' +
    'MOk1MmoxbuT0Mmn3t7E1tWy4OLB4ufE3Nyz1dGm1dixysmf19iwG' +
    'Q8AHAwAKhgAel0w//ra//nmu66ZmIdnemdFsKOI39TByLylx7icu' +
    '6uKsaF9uamDy7uZ0sKi1cqmz8Oby7yV0sqm0smi1tWu4OK83Nmyz' +
    'saY2dizzMuf6ezFTkgsclo4JhoHMSUIsplh0byfr6KLi31cnIloz' +
    '8GpyLmfw7abx7mexrWUzb2d1MWk1sem18mo2c+s08qj0MSc0cif0' +
    'cif0cme1dGo3du0xbuNzsmf19Oq5Oa/aIaCcGpPIxYBGB4OfGYvm' +
    '3xKuKqO0MKky7yk2suy0cCi1cOmy7iayLSSyLSQybaSzrqUy7mTy' +
    'LePyLiQyryTzMCWzMGXx7uRzcac4eG+y8SZuKx819Kp0M2kWXh0V' +
    '11KQCoGKCEGNSoPmHtBTT4Zo45oxLeg0sat2MOmzrWYwKmMvaSAo' +
    '5Brf21HiHZKpZFjw65/yriIx7eIyLmKy72MzL6Oy76O3Naq1c2lt' +
    'ah2yb+R0MmjYXxzYm1dWUAgMyYLIRwIi3A+emQ8clgyp5Bnk4hvd' +
    'mxTVVpGTWFSRlM/RVpHVWZTV2tdZGJJlJSEfXxiem5EjoZijYVcm' +
    'JFnsaV1xLeCzsCOxLmFyLqH18yfZHhta4J9bmlUPS0QIBwHSTkat' +
    '5VZe2M7nH5Kw6t/bX13b42JY3txQlNGT21hXmhQaIV4c3tnfYh6Y' +
    '2ZSb1wwppdzfG1KUltLM0E9QUY1opRsko1koZpsxrqLaH10XHZwV' +
    'XVrWkwvTTUYIBsJZVEs2bR4clUrp4A2mn1RfIJ4emlMe3BUeX5sf' +
    'W1JgX5Xh39Xg4JjhoFgqpBUwqBht5dTrpZanI1hfHlewLSRfHZZX' +
    'FxGTU06Y3x0YXtyUXdwWWNQb0slLiILBwUArpFg1MWuWEQdvppUq' +
    'pNtY1M2e2VCeF06aEsrZlIskYZRUkYgJhkAKiIHGRgALysKaVspZ' +
    'lcejHlAsJ1mtZhSqIhFopJlVmRRYH1yWIB2VHVqblYwSy4QDg0EL' +
    'icb/fXWk5B6SjwazKlvoo1ibWE6cF04fGBCpYxjz8OMyLqQf2Q+T' +
    'T4bW1EtjYFbwLmLdHRNlpBnc3BEfnlGfG0ying7X3JhYWFLan1rT' +
    'X13U2NSYkIfIhwNCQcAkXZI3sSRT0YrQTofcGI+hHpWh31We2pEt' +
    'JlksZtmu6t8vqp/intPno9ftKJx3smQ48+R//m68d+i3c6YzMKTe' +
    '3A+ZoZ0WmNQZFtBWndpZ3VmX0YpNCMMPCAHc1AgtYtJwptdPjsjA' +
    'wsAVlIyZWNAOjoiFxkLMTIedWxHfnpjUk5JMi4rV1FDVFA8PzowU' +
    'U4wZ2U1tqhx/+62yLJqYXxtZ4d2WHJjT1xJoYNXXk4yLygVLhcCo' +
    '4td4dertIpLxaNkUE46Pj8uNDUZOzkjV0w2d2RAcmM6gHJJfHZUj' +
    '4BcmIhbbWdAS0gyOjQjTE4xt6t6q5xv2dCgZ4FscYt3Zop8XHVmV' +
    'jweblUuUEQtFAsBf2xE/vW6qIRSuJNXxat3XVpLLzUiJSULoYVXc' +
    '2E+bWE/dWg8Skclr51wp49cjX1KZF4zTUUdpJxpu7qKiH1T/Pvyj' +
    '6SJi5+DiKWJdYNoNCUSTEEmTUYnHBwKYE8v5bl1wZxgs5drpohUu' +
    'p1nk4NfdWdEeWA5V083opNuXVg7V0gomYZdeW1LZVo1PTsXdG1Hs' +
    'qFtRD4ZZFctybF1pLeeorGZqMKsam1ZNiQRUkUuOzsqFBkKOjMe3' +
    '7R1p4dR0LWDtJdsh2k5yaJg1LiFXUwtZlo7y7+VMSoer5VwpophO' +
    'DQZSkgmmpRn///Ps7J8ODcSp5dnrp1wnKmPjJeAjZyHRz0pNyYTS' +
    '0IpSUI2HyIVGxsOpYBPyKVvYVU1ln9TnoZaXk0ol31MpIZSmnhEs' +
    'JFiaVc3vKZ6vKd4in9Wu6l04dujo5doOToXX1Mo4tOh///ovdW6n' +
    'K2TY2NQW1lCOy4YPjcgREAyHyAWEhgLVj4h5tCezceaMy4YjHdKr' +
    '41WX1EtTUMnYVEveGQ5mYBUq5Ziu6d02MKOq5lrNTwZNTwdcGdAm' +
    'YZUx7R/5dSm0uLFy9u6tMGhhY13MicRMSoaLywjIiIVGRwNPzIcq' +
    'ZNs9tmZq41gMDAjcV43sY1Sn39KUUUpQjwjRj0mRzwhPTgdRUIeK' +
    'y4TaWI9oZNonY1gtJxtwK19sp1sa3dvcHxxe46CWl5ULyMRKCQZL' +
    'CwbLSsbHBwTIh8Uim9Jx6Jvs45ac2RHQkU1WlI3fmg+k3VKjHFFd' +
    'F02hm5LnIxlopFmo45lxqh4eWxIem1GyrWDybSDzrJ+KTlAKjg/K' +
    'TlDJjU7NzEqNS0gMS4VNjQoNTEoDA4PX1E60a9/dGNAcGNAbmNJb' +
    '2VPYlpEdmA+lXZFfGM5iW9Fl31Sk3dQwKt6jYFUWk4tm4RamYxk6' +
    'tCf/NeWNEJDOEtQOk1TNUlSMzEoMCoRLiwdPTkuPDgpIB8ZQDson' +
    'oJXkHRPXlM7a2BHZVpBaV5DW0osZFAudl88ZEQdoYte29uvyLeGf' +
    'GxFYVAzX1o9Pz8kU04xX1s8U19ZVGJcVGFdTFtdNDIhMSkTMy4mN' +
    'zYqRT4wLSoiLCoeV0sumHlOloZgbmNLW1I3XlI1hGhMfWVIopVua' +
    'FUvkY1r6vrKycmTv8egblw7VUkuOTsiPTwnNDQfOUhGPk5MPUpJN' +
    'UVHMDc2MCUZKiUWIiofSEA0PTYtAgUDLioWmH9TrZxyf3FVWEcsS' +
    'zkeuqmE///k///18vne+Pvv9v/p+//w////zc2nLCABMCoPLioRM' +
    'nsoPAc=');

  PoAbord:= BitmapFromString(15, 15, 'beNo1kWtr03AUxl+ou7Rpk' +
    'ubyT/9JmqZp0rSNWdf7Ze1qb1nXpnNbs7GtKx2um6Jz841uE2QoC' +
    'BOG4l4oTNGvoaAgfgWHThCFgX4OAyKcF4fD83t4zjlbqy9enUx1F' +
    'n0hLRyWGcLpIRFAOHGGoQgkpsJSTDDSYjMrGAk4EXHLyRxUIpl8r' +
    'jlVLZUmKMxhI0cvT3hR0AIgp/OVhFBLsOUonVExDuAQwsliodU0N' +
    'jbWel1rBEWtzW2WRiWOiKmevA6LOsiH3VFh2MdRXo8bdTmsjnX4+' +
    'GBlpTPX7QMWcgDzUK6gl4jKZCyA6cKIxg8LkLDntl7kSFYORQrV3' +
    'YODdx/ecxxgSISlnH6PU2KGLgtIKgQkLyVylOzzBP2sjSi5yu17e' +
    'z/Pf52efVWDIuEaotBLfugak0FG8+bjampMCQX4oAjn12+SlJsi0' +
    'c27+x8/f/r+40wNB4HbwQFUFihVIDvNYn0yHlEEryS1ewOBJVmA0' +
    'bgDh9zxm7e//5zXjaodnsJGSQj7C4ZZy8Q0SUlkGS9v57etSHTYP' +
    'qAbR1qrg9NvX4zp+tDFCw+fHA2WG7NGNqkHBC2OEyjtdtD4KKRcd' +
    'tk9iY0SDHj07PnO7n693R4sGXNGOqVLCAkIUQX/nvgfsVf2sQThC' +
    'x2fvF4c3LhmlWcqsWTEywNkvNKWxjO4ywlp1MeSEk/zPJuamjW7a' +
    '7LIUzSx3ErX0oGYQis8bntOtqztnZ3F/np34/r2/oP7h0/Xtu5Ew' +
    '1JyPNQoZ8yCUtCZQpQrxqVsVIprfknkeCVUNdvJ0hVVlbJxzZYtm' +
    'OVex6gluPmK1m2luzOFJbMw18ibtWyjkpmuZs36xGyjaLVKvU79V' +
    'v/q3l8XOY1I');

  aClose := BitmapFromString(17, 17, 'beNqNkO1vEncAx3+uRQ' +
    'oc3EF5uOOOAnfIATIoBxzHw3EFetCWJ9sCUh5qaSmU2Wrnw7Lonp' +
    'oY3xi3F0szs6VGjTVLlv1Js1oTzVoaEzvdGzfGn7Dk+/aTfD8fqf' +
    'yHb7r/f/e/bu/cbN39rkPoRpolsXXRf7NTvN5qbdazX3Rjq61mt9' +
    'vcbiR2eo3eRm6jw29XZperSQyR7dxuoeozq9Xckwc39n/66tnuvd' +
    '8ffvt479b+3ubjB1d/fXTv4Y87v/1899H3d/Z3d0sF1oqqv7xWpX' +
    'CV32lZKrpr+fPLF4JzcXl+Nn0pi9XT+FzWmVtElufgtRy1WEVDPg' +
    'yFx25cKbmsaMjtaCx4awV7nJHPCIBxSRoJLkE7eE7FhUCOdbbEer' +
    'kQjwZNNlyz2SlgiJRn3Ov1UG5KH5s8e/zql8Hfm6RGYkcV7/7cfn' +
    '+yHQ5A+XSgXbLEWII0wkPERqjFKFPJ2/MJg8jp+odP/zpYUQCASM' +
    'DH/vW3z6+FOWhaxDtlRIiYrJhqaZEntFKBpZsl5/qSP+LWuExgcH' +
    'rr5PDKm5e9D0d3GBLEvFC7xtbz9iiLmQ1Qs5KymZRRxtIs04tpqp' +
    'IJcC6pBoDByeV/+23kDPBZPcspppa0V0rRWMhoI+BCLojrZGk+UL' +
    'ngnp+hFzI+zjuqGiL9yx+Pu6oR4LEy9elAJelcKMWEkIXCkGKWoc' +
    '2ayKStOk+v1fzJAHYOB4N3t48Pt14ffDY85qNA1KdqN7h6keZZgs' +
    'LgrPgpZVQIfmq96REjUCas7b94+uH5inKoPwL+Ofr87R9Xh/qZtH' +
    'GjjPCskUShjOCwG+Vxn6V3yZMVlNNB6Ohgb3Das6gArZOevtl639' +
    '+K+eWFlG99nhAiw8jKOGu24RDvoyrZidWyIxmAxTDw0aMNITRNOx' +
    'MRhA+DYuj8WrpRyceFsNmCKiNBM6GVJTlvMUMtFTyNPFeeM2XEmV' +
    'qGuJiamMl6cgv6xqx6ZZYulox+D4procSUG5J9guvH7aSUImRWPe' +
    'I9JydJuZ0CpAk4bNiEAXZZtKR23EHYrbhCp1RMpSZlY6OIAlarAK' +
    'qWGiCNHgYTKBiDDXKNVi0B5Dii0klgPTCOndVAAPkP3kH0bA==');

  Panna1 := BitmapFromString(3, 60, 'beNolkMtr1FAUxvetjjO' +
    '5jyQ3SSeT133f3GRih3YEi0O1FHQhFhwsaGkLighuxp3gyo0rN4L' +
    '/rSfj5vBx7nfP7zvn3NYC1xwVVQCVS8I1KYogL2dcYqEJF2QUikh' +
    'DtA25GqvxUVGheRE0glyc+4unIkAHf36++3a3IujhalValbJsOl9' +
    'MK0GUiaSlQtGyRm0fSxNqGykbGTf2gatdqAyFyTXHpo2sj20XgbO' +
    'RWGoQTGpqfDwKE4JHWQp/ywZzSRflrKhwIwmhEymSMJzcX5/tbk8' +
    'JevD+av315uTVRiD8KEmwFOzD647iw+ns4MeX9bFLAzTZ3Z7UOQ7' +
    'QoVFZwqYsmywKJHQoVCg0ZA61Y22fuC4xLm6XiWkZ5ISEkMS2sWl' +
    'joSLXsZqToxyOhq63zzZPzGZd/v119/v75ae33e7z5cftMS+pNnN' +
    'jKwf3VlFVw+KUi7AWwIIdUy6BFdt2j/P/oWk3pMYxP6TOJ8YnQIQ' +
    '+mIGoLbMenInQUT9k3eMM9LA62jtj6MAvO85Ju2UGTqVjmO8BpOD' +
    'ybL8R88vxtRtyqVjZkOcvTrM57n3e9sX2zdnLf2vNV14=');

  Panna2 := BitmapFromString(3, 60, 'beNolj9lyo0AMRV/nKeU' +
    'ADY2xjTG90RurjdmcpCpfMfP//zGX5EWllo6O1Dz07am/F9PGuyF' +
    '/LuW08n4s2v46Lqxuz5VN57XqH7nStHtcrT82fT4t7P68LZtAHGe' +
    'GEeTziy8vsX0pdLcvuX0qVODULn0ubJzLcSqXD7F+KGxcX8J3526' +
    '4uCbr7lcM3sfixyCntZw3AXIYr+seC98ex7n4/LZKx8Mzxy7tksd' +
    'UjEv5W7F1Bqfb47F/XDBoXGrqBM7K0pIHtk6No1IT3wDIs9O7a87' +
    'aplnyds5DJuLb6ZBdgsqkaOVFcONhyaNSBEoT7OISeWhcAqesiGt' +
    'TWydcRUIR42PsurEAdd9lYLiCMNI+rgxhMhJVBFLbROoIjDREGTh' +
    'jJkJE65PKxq6mwHa/j8HschkBcw3limgbo84lgQcS44EluAE8SLR' +
    '8S92eUDyFDv/9/YYN/nmVQu0HiP1mCnO1n0EgaYcL/D/XRr+/Q51' +
    'mh6IMmAy9pG+HP+w/7rZTxg==');

  Koza1 := BitmapFromString(3, 60, 'beNodUFFSgzAUPINKoQkJ' +
    'BEdHbW2hoUCgWm1pKSAl2Oqf9z+HG34yO2/37e7L5noTRDf38vZh' +
    'ffeYWk/Knr1bT7n1XDiLvfWysWfbaXhwFrvJ3ACw9nxrv+4mALOt' +
    'Nd8D2/MPKmt7sYPAjVuy3FPZuElHwnK6LHlydkYKQwOiCpppWDph' +
    'SWQNAeZ03TnLEiss1VSepuGRyBZiOLO1Aa48saSj0cFPO55puqo4' +
    'gDLAjRuuBgB0wEuiIwyhYXHN4sbLNCaurPxRTFYVkye+bnjSekmL' +
    'iZeenbBCDSKb+89fuKHea/sHiqV9UAwkKl1Zu4kmyx2TtZ8PPDZB' +
    'orjAloZ7kSPr5KVtkGs4+1kfbK4ADKFZ76WdUBpZHBqwqgcW+QAN' +
    'qKD4DoorQw1UimuOFQw3VxqVIuuF6mlY4gqUN86g3n4g88dFtjrC' +
    'ymTJCh3Mz8SVcYYYQKH8xWQpLUxoI4oB54zpGhTqGZydUcxPv0Q2' +
    'riuND4eV8fkHlJNqDg==');

  Koza2 := BitmapFromString(3, 60, 'beNoljttymnAQxh+jHQX+' +
    'QlRUAlGjkYP8kUC0BJGCBwTkoPGQVJtOHyEXbaev0CfodWf6EL3o' +
    'TZ+oazuzs7Oz+33fb0Wf7o2reMaIDtU2mJ5dVf0i3y9LTn0wR22j' +
    'Kk84Y1nDUyjhTX5lb7m7pDk+XFoPdTPlRmvojOLXjBVv72EW7nct' +
    '77k+zAX7PPD3W956aHvvm85TY5h3Zh8Fe99yj43R5mry7tr/0HRP' +
    'l/ZBGD+2veeKvqqZGWfttfTUwpgepD9+/fx80jn7uHn58u1ryhpJ' +
    'xcwbZsCaKXuXs2bGjx95+wDJteEaEiCH0ULBeeKsLWftWBBbu6qZ' +
    'XegJEOvDdeU2udCWYAQW0XXKRg50sFBqyI52ZX1Fin5JXTJaBMsS' +
    'DuujLSXPKMmjcYjkaUWPaLiqQXkQI8kDGYhfd11SCZAaHj+9kGrc' +
    '9E+//3xHOKIHsRZtGD1BOH517ZLStNAZFzoOpcwJ0aP7CxKS+0tG' +
    'zyhlARQQkP86IfpQ8BLSVqQ0K964lBLAnrpxSjgqtC3UD+jbnOh5' +
    'lPj27AU6jtBZH8MeBvCCkZTnMBS7E6CUBgmklfQMKXMkzyDnTOy5' +
    'CE7aCgSQcObCD8rifwLxF4hrjCc=');

  Strzelec1 := BitmapFromString(3, 60, 'beNotkcmO00AURVds' +
    'IuJ22TU1BAkhJCRGCXXS6bLjsTyU48RDPLSjJr1H/AJ8AFJ/QG/Z' +
    's+Yf2LDif3gFSLV4errn3vtUU27IpSFX5iGA4ay4Ql00Ty+NwjHV' +
    'lVkIq/I/39/NS/HiVP/6/dPI19be+/j1y1khjK0w9y4qN6j2Ueka' +
    'oN/D7KHKMxvfVAI1PmoDq/KQEubOsQ/R7N1zu3DsNnz8dPFQvEXZ' +
    '2nrCZ8uXhv/+wbPFXLwx4+V8/RrFS1Q6KF4hudKGpYvbkIyJrQTu' +
    'ItZGqBCkiy2lS1rZWgvgFQ4eJW5CsnXZlKNqgyv//2aU9pjgQ0gG' +
    'ifsYOgOOd54F1CEi2tABDT8qSwnWSwbLymeDhCyg2JiSIcaaiviY' +
    '0l7SyieFQ6uAtiGfco1MGb9RbEzYlJI6xJX3z4E2IT/m56eSdjHr' +
    'Yj5l0ArSeS9JG2rqOoU4UIIz0W4Z/6BYn9AmgI3u8JcCPbtOIEv7' +
    'tBEgHLIG+eh2p9PH1BoiWgesDmbRBakDSPE/3cKwGLNvP75TuL2L' +
    'X532pHABh1+AenCFDt1uWBOeHxWIYYAl3Xkcsv4ADvt3rA==');

  Strzelec2 := BitmapFromString(3, 60, 'beNoVj7lv02AYxicG' +
    'oEl8hdTN5ThuiygFoVZJSWnJ4SQ+Y+z4Suw4rp04F41SxDGUP4AB' +
    'ITY2JKSywAICCTZUpoqhExNSkVhYGJBYGcqH9A6Pfu/xPK8vEo5I' +
    'DTXC4pOeRPhypifjFpvyJHKkp/pydmwszuz0QAViaWaTEwNware1' +
    'OG2ng+byPTe7a4KBS/t9aq+zdN9dvuOkJzo5MTNDNd1XyLFOTS1i' +
    'pILjVIuLD1Xz8cPDw9cXXOHd8efT05PUUNt7/uTjhxeJgRJ3hKRa' +
    'zYyNVE8mgubSXYectpKBTM4scJMY6/FATgQKqHlfSg0UkAr3Grgv' +
    'LQyUBU9CDRrv8MRtY94VYztifKLj/VtRV8BsJuYKiFWPGtXksJkc' +
    'aZiwFetwIEN+OwdvXYsw118+2w8ncGbq/vr2tlxc5zzz+/HBpzdP' +
    'L1+9+PPrqz8/3vct/u/vo5MvBxv51fGjB01fm1vJnmU35thCqLKO' +
    '6DRm12G1jHQYzG/ggYxZDGJWo10BadcQg4a0MtrlUV+E5JuAYDv' +
    'eVSjsS6HtOuYy2M9CXH5qFlD7TrmiajNAA624GYJUkuwUjq/eSVc' +
    'y0caN86skKHyWoTfPLdKhehchCtAxbUwX4DlYriag6RtSK/AWgU2' +
    'afAybNCgkC6HOhysV9AOi3RZoEELARZWHQXWegWkBY6Yw2G+CAhi' +
    '0qjDov8AB1eb8g==');

  Rak1 := BitmapFromString(3, 60, 'beNolUFtuwzAMO0G7xO+0W' +
    'eO3/GgGBCh2kd1knzv96BQwBIqmSNnNLOvltl6X+2W5XwEedlof1' +
    '81Om58/Hx82zNYxkC4wn5h1s4tzKmJzE04qHEowVOXmp5iESyxEn' +
    'or8fkUf5+MV/35/YJKLPg7rwuwjw3hIPBJHBRMyD5nFLMCgjSRyA' +
    'RYjMbPS1Lp9hCjqbnwUiQSYRDIXiX0yQJWl60CCmuq7GZ6R5RGBq' +
    'upTYwotFrCBQYMg65mLHCDgJEldwS1k2Z4mEE9ZQgZn2CJr+DfVh' +
    'rMAA09MUR3ARw6m74sLvDSdQZICQ9VQVbWbXBEnc4PGUNeJsDmc4' +
    'amRRefsftygRDv4cuqLoqJr1/vXjRp20EjHk088PCEuGK9Dg6w3A' +
    '6syEnXFbTcQ48cAhvm+oIV+kB3k6dz1eWXe+7xfNCpwGbX8A1FpR' +
    'cY=');

  Rak2 := BitmapFromString(3, 60, 'beNoVUGtr1FAQ/QeWrpub5' +
    'Gbz2k02yX3f3HuT7IbVaikVX+0nKfpBsIWCBUVBRRalX0QQH/0Dg' +
    'j/VWRiGYc7MmXOGeoRjwnBRIcqw1HFDQyYwE5HQMeOYy8h2c9Ol0' +
    'LFD7oZ569J+Xaw2he3zYVy4PucKczVbNl5RebrNGpqN6/rP9nE/0' +
    'Ot3x3+/P7n5cnqzPfr2/vDfj6dfrw5aljw/HY42RZaHZRXhaJ/LR' +
    'LVJw0Iu4261kDrRNrVdTlhobMZkbFzmhkU2R6AW0IZh1aayjavGp' +
    'wLqRJpZa1NlEm3iflwMY0FF0A15t8pdnykzMy7VdiYUbl3S2sT0C' +
    'eWhtvEObWEg4jp6/eqQCgSLnz+8qIm3bKa22/FAAENNEHjkMqwpE' +
    'irWLpZ6ZvqUSwxsUkeE+0KHsAUzQgeE+YQjJnwmAy4DgCAz5TcMN' +
    'cxrKKrIdFl7NfWXtX/3jsxS7+SBqsqIs2zQ+WS6d3X+8O1LRwoU4' +
    'snvT/cUCUdXnp8NF8/M9ZvN2ha/to9+fjw4OeaXZ+b+WCbpfoD3k' +
    'H9rSaZldXteTqjw4Qp4YRKuTIlAXAVQCxXUIIPC93yws4O4D9ooh' +
    'w4iDNXMq/8DEz5iVQ==');

  Kociol:= BitmapFromString(20, 20, 'beNolUlloG1cUlWKrcqzNW' +
    'mzJ2m0tI41mRhprNCNpRqPVkiVZ22ixYzl4iR3sIOPGdpTUdew6B' +
    'JKUli60UGibQmhC+91QGshHPkwKLYFS8tF0gRJCm/qjC/kJ7U9v6' +
    '8fhct995553LlyttvAq17yR69ybvfTj5puH++/+ce2DZ2/d+uf9r' +
    '5/c++X5Tz8//e7wt8d//n749Nnj7//+5vO/Prnx/O2LTzqzB4X0h' +
    'xRXisZr3PrlzrnXN177+NqnB7feu/3OFw9v3/3q7oMfHjz69dHBt' +
    'wf3H96/8+Wdm5/d3H9jf+3ltZXuSqqaojO0SCaSGiRirUiDqEYiV' +
    'nwcLZ6eqHXKy5vLW5e2tq9ub+5vQtLZ7sytzQnzQmOxkREy0MjmW' +
    'SKCOchRH+dFOcSfxPg6Oz6TKs5PnFw5ObM8A7Hari6uLTbnm+3Tb' +
    'ajAtTZbK7aKTIpBKa/dZ40VOX4ylhTi06ut2mJlaqVZma6e6izNr' +
    'cyvX3hxan76xCIopvNCIZFPshmOjjM6y+CwzQDtCOmm+GAoEQzyZ' +
    'LGVT5US9RON1ER6UiiFWBoil4ql8xmXz01QfqvTBoCKddTqxb1hL' +
    'uwjUX+IYGI0NuaLxMMRjvX40FK1guJYkA453C6h2eCTCagn0ilJn' +
    'xSi0WjU6/WFQsHj8fA8v7CwAEmz2Wy32+l0OhgM7u7uwuvOzk6lU' +
    'kEQRBAE4FgsFoIgtBqtzWrDfJh6QI1jeCKWNOpNbJhjo6zX453IT' +
    'bRn2sfEx8QisfQFKUQAXKORaC6bS8QTwQBFkaFCrphN53g2/l8Sz' +
    '62urHbPdculMrTI+mWOUUcmneFYLuAPzLZne3t6QSREhWJRPsqwD' +
    'BUOhyKT46VStjxiHN04uwF8hVxBBkjggAHoBTNmkxnsnVk9ExwLu' +
    'pyuAE6GxugIHQXAp/VqA5zQIVqlVIWZcKvZqlVrQk2Yak3VhfrSq' +
    'SX9kB4+hSQ7ngUCgRMMzfAxHvTz2YLbgVzc2cF8Ph+KEjh+9cqV7' +
    'Pj4GEkqFYpWswl1/dCQ2WTqP97vJ/xHgyNuZIwcA/HSZCnGcfA6q' +
    'NOJRaLz3e5ap/PR9euv7O3t7e6GKMqDIAMqVSAQQFEUw7BoNBr+' +
    '8D0To+zNdVwOEdcbodQr3bPb8V4lgmHaIaaaU/L5Md1gxppn8Tr9' +
    'ZpMJtgQWA8qTKEEGolFAGA9keTdiNNoMsgV/YjHJRKLlCp5NpeB5' +
    'OzG+oBa6XK5sACGk7gbdesMOovDDKtFUDhO+IqTeS+KANNmt1x4q' +
    'as3DKYzSRBUKGXhCD0yajsyBrKozwOAj6BothhJkoTNkUgkfr+/X' +
    'C6LRLAW4uHhYYPB0NPTI5VK5XI50ABWm/lIBzDqsNtHrHa7nWGYv' +
    'r4+6MJxHKQgQq7VakFQrVbDpFqdWqMdAMD44AqmM5mHQa23txdeH' +
    'Q4HLDwwoUuj0YAHuMpkMqVSqf0XoAcqtQ==');

  Panna0:= BitmapFromString(20, 20, 'beNplk11I02EUxt9Zy5WFl' +
    'URrlCltUBsTFrN5EeTGaCRstRIkwi5MMSloEaKBhheRjYiRQjEMg' +
    '276YHTjCmJXEfR5UUIfFwleBV3VXUXQx+/lkRchOLycPf/zPOc55' +
    '31X6TqXNsTEwaVzetBUL/muDJl485rJvrXlfouAk4CTnzriGT5U9' +
    '6LUSPTFjejE1WPm/UxTT3qV8RgCLogjHkitEA792lgr4YjUzI15b' +
    'oxu5CtNvz8M8xMQOsmzsh8c+qfKbrieFiuyvCk2pDw+4CUHIWj6+' +
    'e6OO5dD4Ch8qTTi7ffr9luzna4pNTT1b7Xn7fO2FwiByK+XndKEC' +
    'xHkz9P4wEgMljPGgOODm78+boPOgCDOreMyCzamL7R19HeIePNsE' +
    '4LMgjfthKEowyE7b494T5/cvrrB++FRErcimnxSE0HURNqV4u/Hv' +
    'ahRScJpooFqpas+GyMQwbbc4nPLeg/1P77llRDcAuemUB3g/ly9B' +
    'aOBo2f2wP05nxGX2dHnU3ODLcOka00gS99ScSc5LNyuXNeMAbi6g' +
    'rlygk+sF4RwRMZkQAbHpMll4IYOB822Xb3FDIIYdlcAS3eXSPiE4' +
    'E2LtTX5pEklYZlwhJxP4LWpmBYLS3cnIo8HcdTeTFkRU8hBmXzQb' +
    'emp5PC9XleJMjrich0gvBypQQe0lEIO28/nj1sPhZwmPZHxoax/x' +
    '5JaNCBXIO9mgjivzUayoym4C6+yi4s9jE9Zi9+HPuJ6SNRzEWhSL' +
    'zW4gESptA86d8Ge4abDdkXSF5dE+4FCzjsUF7Whi2nuiP3wVADpu' +
    'Jwormv3f7wtbqhMBDXFwv1W6atYCYsl+CSrPA8mgqUgB8Ttk+tBQ' +
    'n8uEh4YgpwgopNzBcjWRqygOvJUqv8Ach3BpA==');

  Koza0:= BitmapFromString(20, 20, 'beNpdk1tIlFEUhc9JM2mIT' +
    'LCBICapiWr466ESphmYAaGLIWEoNPQgZBhEdMNIJoqwCScI/upFq' +
    'SiFgumCMYGl6EtQmT5kkI9Cl4GQXgIfZnrI7DutEAk2h/2fs9faa' +
    '+1z/kjg2+jefHZ9JmX6z68sjTU3hCtsuSFOxQ1Hg9fWTD6Jsx+1p' +
    'sraizEzX0rPvj/89nFDf72ZysVvtC8lelKm0FdLjYCwgR25t2N+u' +
    'u1uo2m25sQSt7L5e+b02LN6On4Z2A55Prv1TW8EfjUlcmeDfAKcv' +
    'OmtrbB8kgDvqjT0LYwfAX4ptQKqF71RBJAgTNiZwd3ws25aZkEhF' +
    'SoEIPV1u+Ho88sWyhBMU4DAwSJMvijAgmcsDPQinJJS+kOmeqLDc' +
    'pr0ytEMFnmQqOnJg+ZXsQt58BQexDmClkZgB+rM8BZzyzhhtGOSH' +
    'MGDPGHxAjPupJwCTIGd+3SGpsJCwrgICBcGJdkaKcVAuBFp+/HuK' +
    'DtT3SGwMAOkKS7ONf2bMFMFiDtdJSMFQs1Qupqh/XyeIGgKXE0p0' +
    '4SZDEAMskMLAr8wAEc5GsiZc26VGT/k3gaVehIASTBIUMxKAfxUC' +
    'j77tZPA7/eEmdjoTMkpUgFK//TDhKyBImg0V/SZPEewgXLYDksx3' +
    'plw9O986OUu+lETWPQsxgIkAauVHQfvDvFa8KU34NhycWlGHiEG5' +
    'kMl40I2GljJKdPTlSkGQpBQADMQRMo1n85L0Qeo61PlwiqzrG7OR' +
    'V+5JPGpHc1t9IqnyIQNNpUredWT5D1wvxovWEgg55QEwU+vxhQqV' +
    'k7iX9jFf6fNxQGQ9eNQK8ntyzvvdHqs/0WdF8weD8Nz//oewj8WU' +
    'i5ynne+70Dt6rLN6wLEtg2BaCSwP1bTGFtOwo2z2ZIsa91Xw2awq' +
    'pJVwY4r/gMfiiwx');

  Strzelec0:= BitmapFromString(20, 20, 'beNpdk01IVGEUhs9lZoQpo' +
    'lULk6k25SoKM+3XwIooCGUW08+IumwWWS0kpsikEF0oLipoIEIGQ' +
    '0miRS4yUmgRSTIilkvTEKZEMGKkFmPgc+fFj0vwcjj33Pc9f9/3Z' +
    'S70t1oQmZQHhtuj+dEzc4O1jxLllWHv7N6ymaenIxEPJOu84e6ar' +
    '69OgPRFe5gIgaAc1eiNPSKDXSGvycx9gkx6/5v7x4MqgaLTTyodr' +
    'S1ufalYe2s001UFiFw5sgXh80v7IAfrquF33TH4qGisuJD8u5haL' +
    '3YA17kgoSSy0i4NnWRkGgAruTj+f22zh2ctBpMBATR84DKoLnGY8' +
    'KtDBlhg1gwQR/X2wQEwNVBH/u8T9URQ0SroiZgrROlv7xvW/73+X' +
    'b0NLbT0QQvukyNgNFSs+pbZec/DgoGGrRr8V/7mmNmnsK8dvLe77' +
    'VgYDvK7FYacbJBVCNpk8w6/XLGD/rH53sPzZoChaFvBqfEEZJokj' +
    '5wPp6LFH538KixfW5lpVga0ayWtThMtmLweg58t1VJXq2MtTAd/e' +
    'a4JISADnRPnINg/QKXVwZ/ftGslsBZKFwpdyqDqSLDIs6X2JAQ/H' +
    '5+DRmZpNRrOn5GrbElazgIHFfh8qAwwCBFGIz+W3uCD1TtHkWPRq' +
    'nlOkNLSfrldQ2PESai5AJ+Q6RbQBml95OJ6RPylSW6pv8bNoIM2A' +
    'wfQA58cqC4qDkH6ROjuklMFoYpO6w+bi5NNfeo+axA+c0M7seJIq' +
    'NcUdLCQVVGHJUir5BoZH4fkDMjs3HwcLPcWq+fAX+yLzu2KQPjY3' +
    'zj78rJ8HJ48Ed7++AYCqjE5');

  Rak0:= BitmapFromString(20, 20, 'beNpdk09Ik2Ecx5/39U13k' +
    'NACW1Y76MwUrfXHIlgwBdvaqEzHQKXNqLX0UAmyENsodmgXFbxMb' +
    'B0qb9oh2qG6VCMPQYnhwd00hIwugRdBpvR5/clLBD/G8z77fX7P9' +
    '/t9n7cQvnxyD3X8gDHYuTfcWnbBaSSD6k67YhFylbDT7Tb3U9EjN' +
    'Ax0OZpqa1iwyfq+Txu9ZfbzK4sXw5UsxoOKepk4ls96qdcT/uxjP' +
    '4vvM573mSZ6ptPVNP9bUOy/Gj60MF2/NOmYetgScB/mLKNUpzS9Q' +
    'jdOMGRrLbT5xfsfmEvvX8udm8+eR5L0Bz0VNGvKLqxZRiSdHvnx+' +
    'bZFyVlMo1OoJ/2VzOdx8IYX9lRzNYc2nO2GVVq8pPGZpZPj8FJj0' +
    'wVEMCA2WaNhq+C36tNsRBkTRu0bCyQWocA339XBokFEFgthGogIR' +
    '2jb3vBOzmSU7Rsgj8ynB7ClvozJuQeK+v02wE60z40AEoAVnMl/f' +
    'iWVWgZEqpxIccTPj1fxPjdUyllmPsouqTJKfDH861wcVhqkoKSNT' +
    'YazJhz0rCwObBdvquZH2ORfNMeSY/jlAgjIzaFhfT56xeM6aKsai' +
    'Z2BhZJUeSmAZAuINsxi2Qq2uH6XTVlzH+QasAnuuzYEyC/TmO/sy' +
    'pSrDRValebRhINNCYfrypoXgdOeSAc4iBSH5j+kcAp7MZW3nEpKR' +
    'MEETO2aNSKw7FDs4AjZCMYFgVjx8q9cdV4HWYGIU2HJFjHkozUso' +
    'BkjzOe+HXXug6UAhaXTfINanDYQigkYFJviAg18IwRLsd41tdNc5' +
    '4qRDxNYy9sUjzwymWa+Bevl8l4SfT2B1kuUqCUW2I57TwGRyqMpY' +
    'McdIIWA52OnYZXexlnkQ4lae3CWWPAoFMdB4UgKViIlYd/1XlhTq' +
    'hZHLSCXR26UHIdOPhDJnCr+BR2J9F0=');

end;

To zdecydowanie była najdłuższa, ale i zarazem najważniejsza procedura w opisywanym skrypcie. Kolejnym zadaniem będzie przygotowanie drobnych procedur, które później będziemy wywoływać wielokrotnie z głównego mechanizmu skryptu. Na początek procedura, która określi nam dokładne ułożenie mini mapy, aby tego dokonać należy kazać poszukać skryptowi położenie małego globusa, który znajduje się nad mini mapą, robimy to za pomocą komendy "FindBitmaptolerance" dodając do niej nazwę zmiennej w tym przypadku "globus", po przecinkach podajemy kolejne dwie zmienne, do których zostanie wpisane położenie tego fragmentu obrazu na wyświetlanym ekranie, kolejna wartość będzie oznaczała tolerancję odchylenia kolorów wyświetlanych w stosunku do wzorca załadowanego w zmiennej. Zapis będzie wyglądał: "FindBitmaptolerance(Globus,x, y,35)". Można by wpisać bezpośrednio taką komendę, ale przecież należy się liczyć z tym, iż SCAR DIVI nie znajdzie podanego wzorca na ekranie, dlatego też wykorzystamy kod typowy dla języka PASCAL tzn. "If…Then" –bardziej po polsku oznaczać to będzie, że jeżeli warunek jest spełniony to wykonaj kolejny fragment programu, jeżeli warunek nie jest spełniony to kolejny kod programu zostanie ominięty. Przy sprawdzeniu warunku pomoże nam funkcja TRUE lub FALSE, czyli będzie to prawda lub fałsz i w ten sposób mamy pierwszą linijkę procedury: "if (FindBitmaptolerance(Globus,x, y,35)=True) then". Jeżeli wzór obrazka zostanie namierzony to program rozpocznie realizowanie kodu umieszczonego po komendzie "then". Następnym krokiem, gdy w wartościach x i y otrzymamy współrzędne lewego górnego punktu położenia obrazka należy wyliczyć pozostałe współrzędne okna w podany sposób poniżej.

Procedure miniOkno;
begin
 if (FindBitmaptolerance(Globus,x, y,35)=True) then begin
  OknoX1:=x-35;
  OknoX2:=OknoX1+89;
  OknoY1:=y+27;
  OknoY2:=OknoY1+89;
 end;
end;

Teraz opiszemy sobie procedurę klikania myszką, procedura ta posiada własne zmienne a więc dlatego będą one zdefiniowane zaraz po nazwie procedury. Mając na myśli klikanie myszką musimy na początek uwzględnić gdzie ona będzie klikać, czyli musimy ją najpierw ustawić w miejscu gdzie nam kliknie, robimy to komendą "MoveMouse", gdy już mamy ją ustawioną to odczekamy chwilę, aby system ją ustawił nam we wskazanym miejscu, wpisujemy komendę "wait" i dodajemy do niej czas oczekiwania podany w milisekundach a w celu, aby te czasy nie były zawsze takie same dodamy komendę, która wykręci nam kilka milisekund więcej "+random(10)" –maksymalnie 10. Gdy już poczekamy to w końcu klikamy komendą "ClickMouse", po czym znowu chwilę odczekamy i wychodzimy z procedury.

procedure mouse(var x1,y1:Integer);
begin
 MoveMouse(x1, y1);
 wait(100+random(10));
 ClickMouse(x1,y1,True);
 wait(200+random(10));
end;

Następnym etapem będzie opisanie działanie poszczególnych klawiszy, które ustawiliśmy wcześniej w nawigacji, dla ułatwienia każdy potrzebny klawisz będzie miał własną procedurę i będzie ona wyglądała następująco:

procedure klawisz_next;
begin
 KeyDown(78);
 Wait(20 + Random(10));
 KeyUp(78);
 wait(50+random(10));
end;

Pierwsza procedura obsłuży klawisz „N”, czyli „Zmień przeciwnika”. Na początek wciśniemy klawisz komendą "KeyDown", w której w nawiasie określimy kod klawisza z klawiatury później troszkę odczekamy i puszczamy klawisz komendą "KeyUp", po czym ponownie chwilę odczekamy i wychodzimy.

Kolejne procedury o nazwach:

klawisz_Fire – obsługa klawisza „F”, czyli „Atak”;

klawisz_sFire – obsługa klawisza „G”, czyli „Przerwij atak”;

klawisz_V – obsługa klawisz „V”, czyli „Ustaw kurs”;

klawisz_Q – obsługa klawisz „Q”, czyli „Napraw”;

klawisz_SPACE – obsługa klawisza „Space”, czyli „Na statek”.

procedure klawisz_Fire;
begin
 KeyDown(70);
 Wait(20 + Random(10));
 KeyUp(70);
 wait(50+random(10));
end;

procedure klawisz_sFire;
begin
 KeyDown(71);
 Wait(20 + Random(10));
 KeyUp(71);
 wait(50+random(10));
end;

procedure klawisz_V;
begin
 KeyDown(86);
 Wait(20 + Random(10));
 KeyUp(86);
 wait(50+random(10));
end;

procedure klawisz_Q;
begin
 KeyDown(81);
 Wait(20 + Random(10));
 KeyUp(81);
 wait(50+random(10));
end;

procedure klawisz_SPACE;
begin
 KeyDown(32);
 Wait(20 + Random(10));
 KeyUp(32);
 wait(50+random(10));
end;

Obsługę myszki i klawiatury mamy już za sobą. Teraz zajmiemy się kwestią poruszania statku po mapie, będzie to potrzebne w celu odpłynięcia statku do naprawiania się.

Jak wiadomo, gdy robimy pergaminy to, gdy statek ma małą ilość punktów życia należy nim odpłynąć w któryś z rogów mapy z zasady robimy to w ten sposób, że jeżeli stoimy w prawym górnym to odpływamy w prawy dolny lub lewy górny (można po skosie, ale tego wariantu nie będę opisywał). Nasz skrypt będzie działał w ten sposób, że jeżeli będzie stał w prawym górnym to popłynie w prawy dolny, następnie popłynie w lewy dolny itd. zgodnie z ruchem wskazówek na zegarze a tym samym można zauważyć, że będziemy mieli 4 miejsca postojowe. Sam wniosek się nasuwa, że należy podzielić mini mapę na 4 części i określać gdzie statek stoi i gdzie ma popłynąć. Kolejna procedura zajmie się określeniem, w której części statek stoi i w którą stronę powinien popłynąć. Aby określić gdzie statek stoi wystarczy popatrzeć na mini mapę i widzimy tam punkcik, który wskazuje aktualną pozycję naszego statku. Ten punkcik to kolor a więc należy odczytać jego wartość (jak to zrobić opisałem powyżej). Gdy mamy już kod koloru to szukamy tego punktu na mini mapie stosując komendę "Findcolortolerance(x, y, 65280, oknoX1, oknoY1, oknoX2, oknoY2, 30)" gdzie x i y zwróci nam współrzędne położenia szukanego koloru wskazanego po wartości y, należy też wskazać obszar poszukiwania, czyli położenie mini mapy, którą wyliczyła nam procedura wcześniej a na koniec dorzucamy odchylenie koloru i gotowe. Po odczytaniu punktu należałoby wartości te zmniejszyć o odchylenie względem brzegów ekranu, następnie ustalić, w którym z kawałków podzielonej mapy znajduje się statek.

 



Plik do pobrania został przeniesiony na Forum Scar Divi



Trwają pracę nad przygotowaniem działu.




Polstronki

z tego co wiemy od stycznia 2012 oglądano nas: 236948 razy...

opracował AJOT 2007-2019