Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: StarControl on November 13, 2018, 11:13:04 AM

Title: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 11:13:04 AM
Помогите разобраться со скриптом распознавание цифр
http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571
Кликер последняя версия, скрипт версия 1.5

вопрос:  (переменную не знаю, а сам не разберусь)
   1) Как сделать что бы не учитывал у цифр при поиске задний фон. (Это на будущее)
   2) Как задать расстояние между цифрами ( и для отдельной цифры можно это сделать? А то цифра 1 на 1 клетку в ширину меньше, так как из за этого вместо 01 кликер выдает 081)

Использую Колор мод 6

В результате кликер выдает 081.38.47 или 081.836.24 или 081.836.804
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Oraven on November 13, 2018, 12:57:51 PM
С задним фоном, в плане универсальности, не получится. Двоеточие начинает находить в некоторых цифрах, отсюда ошибки распознавания.

Вот мой более компактный скрипт основанный на методе сортировки массива.
Скрипт сам определяет количество и имена картинок из папки Letters. Первый символ в имени картинки является символом распознавания. Двоеточия конечно в именах файлов недопустимы, поэтому использовал точку.

Проверено, с образцом из архива все распознает верно.
Code: (clickermann) [Select]
SUB(recognize, $x1,$y1, $x2,$y2, $c_ignor, $prc)
   GETFILELIST($Letters_arr, "Letters\*.bmp")
   FOR($Let_num=0,$Let_num<ARRSIZE($Letters_arr))
      SCANPICTURE($ARR_SCAN, $x1,$y1, $x2,$y2, STRCONCAT("Letters\", $Letters_arr[$Let_num]), $c_ignor, $prc)
      FOR($arr_num=0,$arr_num<ARRSIZE($ARR_SCAN),2)
         ARRPUSH($ARR_OUT, $ARR_SCAN[$arr_num])
         ARRPUSH($ARR_OUT, STRCUT($Letters_arr[$Let_num], 1, 1))
      END_CYC
      UNDEFINE($ARR_SCAN)
   END_CYC
   
   $siz = ARRSIZE($ARR_OUT)
   $srtcheck = 0
   $srt = 0
   FOR($a=$siz-2,($a>0)&($srt=0),-2)
      FOR($b=0,$b<$a,2)
         IF($ARR_OUT[$b] > $ARR_OUT[$b+2])
            $srtcheck = 1
            $tmp = $ARR_OUT[$b]
            $tmp2 = $ARR_OUT[$b+1]
            $ARR_OUT[$b] = $ARR_OUT[$b+2]
            $ARR_OUT[$b+1] = $ARR_OUT[$b+3]
            $ARR_OUT[$b+2] = $tmp
            $ARR_OUT[$b+3] = $tmp2
         END_IF
      END_CYC
      IF($srtcheck = 0)
         $srt = 1
      END_IF
   END_CYC
   
   $str = ""
   FOR($a=0,$a<ARRSIZE($ARR_OUT),2)
     
      IF(STRLEN($str) > 0)
         IF($ARR_OUT[$a]-$ARR_OUT[$a-2] > 10) // обпределение пробела
            $str = STRCONCAT($str, " ")
         END_IF
         $str = STRCONCAT($str, $ARR_OUT[$a+1])
      ELSE
         $str = $ARR_OUT[$a+1]
      END_IF
     
   END_CYC
   UNDEFINE($ARR_OUT)
END_SUB

GETSCREEN
recognize(147,783, 219,809, -1, 100) // область распознавания, цвет прозрачности, процент совпадения
LOGWRITE ($str) // в переменную $str выводятся распознанные символы

HALT
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Oraven on November 13, 2018, 01:10:40 PM
У винта там в скрипте много чего накручено.
Например вот здесь задается процент совпадения для каждого числа.
Code: (clickermann) [Select]
   FOR ($i=0, $i < 11)
      SWITCH($i)
      CASE(0)
         $pr = 95
      CASE(1)
         $pr = 99
         //      CASE(2)
         //         $pr = 95
      CASE(3)
         $pr = 93
      CASE(4)
         $pr = 95
      CASE(5)
         $pr = 95
      CASE(6)
         $pr = 95
      CASE(7)
         $pr = 95
      CASE(8)
         $pr = 94
         //      CASE(9)
         //         $pr = 95
      DEFAULT
         $pr = 100
      END_SWITCH

То есть оказывается мы ищем картинки с не 100% совпадением!

А вот здесь число 16744447 это число прозрачности. Не понятно только где этот цвет...
Code: (clickermann) [Select]
SCANPICTURE($a_scan, $f_x1,$f_y1,$f_x2,$f_y2, STRCONCAT($pref,$i,".bmp"), 16744447, $pr)
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 01:29:15 PM
У винта там в скрипте много чего накручено.
Например вот здесь задается процент совпадения для каждого числа.
Code: (clickermann) [Select]
   FOR ($i=0, $i < 11)
      SWITCH($i)
      CASE(0)
         $pr = 95
      CASE(1)
         $pr = 99
         //      CASE(2)
         //         $pr = 95
      CASE(3)
         $pr = 93
      CASE(4)
         $pr = 95
      CASE(5)
         $pr = 95
      CASE(6)
         $pr = 95
      CASE(7)
         $pr = 95
      CASE(8)
         $pr = 94
         //      CASE(9)
         //         $pr = 95
      DEFAULT
         $pr = 100
      END_SWITCH

То есть оказывается мы ищем картинки с не 100% совпадением!

А вот здесь число 16744447 это число прозрачности. Не понятно только где этот цвет...
Code: (clickermann) [Select]
SCANPICTURE($a_scan, $f_x1,$f_y1,$f_x2,$f_y2, STRCONCAT($pref,$i,".bmp"), 16744447, $pr)


1 вот как раз если бы он искал точные значения таких траблов не было бы, не мог бы он спутать точные скобки и цифры, а полу слепой найдет что хочешь. (да ты вроде убил что его можно уневерсально яко бы спользовать, но ... ) P.S. Считаю что всегда надо искать точное значение, исключение если прозрачный фон, тогда шаманить или есть динамическое освещение, решить капчу, в других случаях картинка будет одна и таже.
2 Я как раз глядел эту строку и тоже в замешательство ввели эти цифры (для меня еще многое не понятно, иногда приходится очень долго тупить что бы дочего-то дойти (понять как это работает, даже в банальном примере, так как уровень пещерного человека)
3 Хотел вроде тот скрипт использовать, так как вроде универсальный и этим привлек, но автор к первой версии много описаний сделал, а к 1.5 почти ни чего, я пол дня убил что бы он начал показывать а результат ... 


С задним фоном, в плане универсальности, не получится. Двоеточие начинает находить в некоторых цифрах, отсюда ошибки распознавания.


С задним фоном? Это про прозрачность или расстояние между цифрами? (Так как в цифре 1 на 1 пиксель меньше?). Считаю что прозачный задний фон  должна быть возможность включать такую возможность.
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 01:51:47 PM
...приходится очень долго тупить ..., так как уровень пещерного человека
 я пол дня убил что бы он начал показывать а результат ...
нужно не  тупить убийствами заниматься, а хоть немного, логически думать, когда программируешь.
не с вашим подходом замахиваться на динамическое освещение и капчу.



так как уровень пещерного человека).
P.P.S Круто брать из текста фразу, а не текст целиком.

Я посмотрю как ты не будешь тупить, в вопросе, который ты знаешь на уровне пещерного человека а я буду в этом профи и буду еще тебе с наездами говорить, "А ты чего тупишь это же элементарно ватсан!!!" . Для меня большенство кода пока вообще не понятно. И с такими обьяснениями я его точно не пойму.

Извини если обидил как то, но бесит такой подход.

P.S.  я тоже задний фон закрашиваю обычно в черный, когда можно, так как его просто указать значение 0...
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Vint on November 13, 2018, 01:57:47 PM
"Там" накручено, потому что сделано для сложных случаев. Для этого и процент отдельный из-за сложности поиска.

В примере из этого поста ничего этого не нужно. Здесь всё просто, как дважды два. Сглаживания нет, размеры стабильные, перерендера нет.
Тупой поиск всех 10 цифр и сортировка массива по возрастанию X. Даже двоеточие искать не нужно, у нас стабильно по 2 позиции на поле.
Просто в результат вставить свой разделитель после 2 и 4 цифры.

А число прозрачности... ну не затёр из рабочего скрипта, забыл. 1.5 от 1.4 отличалось только индивидуальными условиями поиска для каждой цифры.
Код старый как говно мамонта  :D.
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 02:01:45 PM
"Там" накручено, потому что сделано для сложных случаев. Для этого и процент отдельный из-за сложности поиска.

В примере из этого поста ничего этого не нужно. Здесь всё просто, как дважды два. Сглаживания нет, размеры стабильные, перерендера нет.
Тупой поиск всех 10 цифр в один массив и сортировка массива по возрастанию X. Даже двоеточие искать не нужно, у нас стабильно по 2 позиции на поле.
Просто в результат вставить свой разделитель после 2 и 4 цифры.

А число прозрачности... ну не затёр из рабочего скрипта, забыл. 1.5 от 1.4 отличалось только индивидуальными условиями поиска для каждой цифры.
Код старый как говно мамонта  :D.


О да винт, но без твоих пояснений я не пойму чего крутить, так как я многих поманд не знаю и не смогу номально разобраться в ней без твоей помощи. Мне нужны подсказки. Буду очень благодарен.

Мне он и понравился, что там много чего можно крутить и он может быть очень гибким, из-за этого не хочу брать менее компактный, т.к. разобравшись с ним смогу в многих местах его применять (этим нравися он).
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Vint on November 13, 2018, 02:12:31 PM
Да вон Oraven написал, проще этот код использовать. Для твоего случая за глаза.

Для других случаев там нельзя снижать процент меньше 100, это не предусмотрено.
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 02:16:52 PM


1.В скрипте надо задавать расстояние между цифр, или он сам определяет?

2. Где задавать, что бы не искал определенный цвет?
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Vint on November 13, 2018, 03:20:34 PM
1. $m = $dead_size + 10, здесь число 10. Обычно ставлю половину ширины цифры. Например, нуля. Если единица уже, то не больше ширины единицы. Всё от шрифта зависит и его размеров/размытости.
2. Число 16744447 заменить на -1
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 03:35:21 PM
С задним фоном, в плане универсальности, не получится. Двоеточие начинает находить в некоторых цифрах, отсюда ошибки распознавания.

Вот мой более компактный скрипт основанный на методе сортировки массива.
Скрипт сам определяет количество и имена картинок из папки Letters. Первый символ в имени картинки является символом распознавания. Двоеточия конечно в именах файлов недопустимы, поэтому использовал точку.

Проверено, с образцом из архива все распознает верно.
Code: (clickermann) [Select]
SUB(recognize, $x1,$y1, $x2,$y2, $c_ignor, $prc)
   GETFILELIST($Letters_arr, "Letters\*.bmp")
   FOR($Let_num=0,$Let_num<ARRSIZE($Letters_arr))
      SCANPICTURE($ARR_SCAN, $x1,$y1, $x2,$y2, STRCONCAT("Letters\", $Letters_arr[$Let_num]), $c_ignor, $prc)
      FOR($arr_num=0,$arr_num<ARRSIZE($ARR_SCAN),2)
         ARRPUSH($ARR_OUT, $ARR_SCAN[$arr_num])
         ARRPUSH($ARR_OUT, STRCUT($Letters_arr[$Let_num], 1, 1))
      END_CYC
      UNDEFINE($ARR_SCAN)
   END_CYC
   
   $siz = ARRSIZE($ARR_OUT)
   $srtcheck = 0
   $srt = 0
   FOR($a=$siz-2,($a>0)&($srt=0),-2)
      FOR($b=0,$b<$a,2)
         IF($ARR_OUT[$b] > $ARR_OUT[$b+2])
            $srtcheck = 1
            $tmp = $ARR_OUT[$b]
            $tmp2 = $ARR_OUT[$b+1]
            $ARR_OUT[$b] = $ARR_OUT[$b+2]
            $ARR_OUT[$b+1] = $ARR_OUT[$b+3]
            $ARR_OUT[$b+2] = $tmp
            $ARR_OUT[$b+3] = $tmp2
         END_IF
      END_CYC
      IF($srtcheck = 0)
         $srt = 1
      END_IF
   END_CYC
   
   $str = ""
   FOR($a=0,$a<ARRSIZE($ARR_OUT),2)
     
      IF(STRLEN($str) > 0)
         IF($ARR_OUT[$a]-$ARR_OUT[$a-2] > 10) // обпределение пробела
            $str = STRCONCAT($str, " ")
         END_IF
         $str = STRCONCAT($str, $ARR_OUT[$a+1])
      ELSE
         $str = $ARR_OUT[$a+1]
      END_IF
     
   END_CYC
   UNDEFINE($ARR_OUT)
END_SUB

GETSCREEN
recognize(147,783, 219,809, -1, 100) // область распознавания, цвет прозрачности, процент совпадения
LOGWRITE ($str) // в переменную $str выводятся распознанные символы

HALT


Хм... А где крутить колормод? В упор не вижу :-( ...
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Oraven on November 13, 2018, 03:43:02 PM
Хм... А где крутить колормод? В упор не вижу :-( ...

Снимок и возможная цветокоррекция делается непосредственно перед вызовом подпрограммы
Code: (clickermann) [Select]
GETSCREEN
recognize(147,783, 219,809, -1, 100)
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 03:55:20 PM
С задним фоном, в плане универсальности, не получится. Двоеточие начинает находить в некоторых цифрах, отсюда ошибки распознавания.

Вот мой более компактный скрипт основанный на методе сортировки массива.
Скрипт сам определяет количество и имена картинок из папки Letters. Первый символ в имени картинки является символом распознавания. Двоеточия конечно в именах файлов недопустимы, поэтому использовал точку.

Проверено, с образцом из архива все распознает верно.
Code: (clickermann) [Select]
SUB(recognize, $x1,$y1, $x2,$y2, $c_ignor, $prc)
   GETFILELIST($Letters_arr, "Letters\*.bmp")
   FOR($Let_num=0,$Let_num<ARRSIZE($Letters_arr))
      SCANPICTURE($ARR_SCAN, $x1,$y1, $x2,$y2, STRCONCAT("Letters\", $Letters_arr[$Let_num]), $c_ignor, $prc)
      FOR($arr_num=0,$arr_num<ARRSIZE($ARR_SCAN),2)
         ARRPUSH($ARR_OUT, $ARR_SCAN[$arr_num])
         ARRPUSH($ARR_OUT, STRCUT($Letters_arr[$Let_num], 1, 1))
      END_CYC
      UNDEFINE($ARR_SCAN)
   END_CYC
   
   $siz = ARRSIZE($ARR_OUT)
   $srtcheck = 0
   $srt = 0
   FOR($a=$siz-2,($a>0)&($srt=0),-2)
      FOR($b=0,$b<$a,2)
         IF($ARR_OUT[$b] > $ARR_OUT[$b+2])
            $srtcheck = 1
            $tmp = $ARR_OUT[$b]
            $tmp2 = $ARR_OUT[$b+1]
            $ARR_OUT[$b] = $ARR_OUT[$b+2]
            $ARR_OUT[$b+1] = $ARR_OUT[$b+3]
            $ARR_OUT[$b+2] = $tmp
            $ARR_OUT[$b+3] = $tmp2
         END_IF
      END_CYC
      IF($srtcheck = 0)
         $srt = 1
      END_IF
   END_CYC
   
   $str = ""
   FOR($a=0,$a<ARRSIZE($ARR_OUT),2)
     
      IF(STRLEN($str) > 0)
         IF($ARR_OUT[$a]-$ARR_OUT[$a-2] > 10) // обпределение пробела
            $str = STRCONCAT($str, " ")
         END_IF
         $str = STRCONCAT($str, $ARR_OUT[$a+1])
      ELSE
         $str = $ARR_OUT[$a+1]
      END_IF
     
   END_CYC
   UNDEFINE($ARR_OUT)
END_SUB

GETSCREEN
recognize(147,783, 219,809, -1, 100) // область распознавания, цвет прозрачности, процент совпадения
LOGWRITE ($str) // в переменную $str выводятся распознанные символы

HALT


Хм... А где крутить колормод? В упор не вижу :-( ...

Все отлично работает, но из 11 раз выпадает последняя цифра, как заметил не одна и таже, куда копать? ( Тут секунды без разницы, но такая ситуация может повторица где последняя цифра важна, по этому надо разобраться)
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 03:57:41 PM

Хм... А где крутить колормод? В упор не вижу :-( ...


Снимок и возможная цветокоррекция делается непосредственно перед вызовом подпрограммы
Code: (clickermann) [Select]
GETSCREEN
recognize(147,783, 219,809, -1, 100)



Хм... А где крутить колормод? В упор не вижу :-( ...


Спасибо понял, я думал что колор мод уже встроин в программу (скрипт)...

Оперативно отвечаешь, как и твои скрипты минимальны и быстры ).
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Vint on November 13, 2018, 04:24:22 PM
И у меня невольно получилась сортировка выбором
https://habr.com/post/422085/
А у Андрея пузырьком
https://habr.com/post/414653/
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 05:02:08 PM
И у меня невольно получилась сортировка выбором
https://habr.com/post/422085/
А у Андрея пузырьком
https://habr.com/post/414653/

Статью обезательно прочитаю (думаю половину не пойму, но для общего развития), но проподает последняя цифра не из-за этого? (с права, если на конце 22 или 33 или 44 и т.д то одна из цифр не отображается, видно решает что одну и туже нашел)
Еще сейчас статью где сам скрипт гляну, так как была там похожая проблема.


Все работает как надо, настроин... Спасибо.
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 05:30:25 PM

Хм... А где крутить колормод? В упор не вижу :-( ...


Снимок и возможная цветокоррекция делается непосредственно перед вызовом подпрограммы
Code: (clickermann) [Select]
GETSCREEN
recognize(147,783, 219,809, -1, 100)



Хм... А где крутить колормод? В упор не вижу :-( ...


Спасибо понял, я думал что колор мод уже встроин в программу (скрипт)...

Оперативно отвечаешь, как и твои скрипты минимальны и быстры ).


Работает тоже на ура, но забавный трабл :-) откуда буква на конце??? 17:28:01 01.45.57d    (не дописывал, появляется когда 7 в конце, в друхих случаях её нет)

Спасибо за оперативный отзив и помощь.

(еще вопрос, 1) как менять размер цифр, 2) можно использовать 2 вида картинок, для разных цифр? как это делать?)
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Qwerry on November 13, 2018, 06:29:14 PM
Если навскидку, то вероятно что-то не так с координатами, выбранными для анализа (вариант - добавить в конце подпрограммы перед "END_SUB" строчку "SCREENSHOTEX($x1,$y1, $x2,$y2, "Image_", 0)". Увидите, полностью ли в область анализа попало число (иначе, почему пропадает последняя цифра?), а также не попало ли что-то лишнее.

Судя по коду скрипта, букве взяться неоткуда, кроме как из образца "Letters\d.bmp" . Возможно, полное имя файла другое, но начинается определенно на "D". Если важны для анализа только цифры, то можете просто убрать это файл оттуда (первопричиной, вероятно, служит то, что 7 узкая, и анализируется также следующий знак, вместе с ней образующий эту картинку - например "7." читается как "7 Двоеточие").
Вообще, если формат строки известен заранее (где точки, где двоеточия в числе/дате предугадать не  сложно) - можно оставить только 10 образцов (цифры 0-9), а двоеточия и точки расставлять вместо пробелов программно. Такой вариант позволит справляться с изменяющимся фоном (заменяем "-1" в "recognize(147,783, 219,809, -1, 100)" на цвет фона у картинок-образцов).
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on November 13, 2018, 07:03:40 PM

Хм... А где крутить колормод? В упор не вижу :-( ...


Снимок и возможная цветокоррекция делается непосредственно перед вызовом подпрограммы
Code: (clickermann) [Select]
GETSCREEN
recognize(147,783, 219,809, -1, 100)



Хм... А где крутить колормод? В упор не вижу :-( ...


Спасибо понял, я думал что колор мод уже встроин в программу (скрипт)...

Оперативно отвечаешь, как и твои скрипты минимальны и быстры ).


Работает тоже на ура, но забавный трабл :-) откуда буква на конце??? 17:28:01 01.45.57d    (не дописывал, появляется когда 7 в конце, в друхих случаях её нет)

Спасибо за оперативный отзив и помощь.

Спасибо что пытаетесь разобраться в чужом скрипте, первый сделал, даже сообщение отредактировал ( есть в скрипте защита, что бы соседние числа автоматом не зацепил, подрегулировал уменьшил слепую зону  $SHIFT_X = 10            // смещение (кол-во игнор пикселов вокруг найденного)
   $SHIFT_Y = 15)

А насчет буквы буду автора ждать.
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: dramster on November 14, 2018, 01:53:55 PM
Полностью тему не читал, но так, ради интереса, можешь попробовать еще один вариант распознавания. На настройку для твоего примера из первого поста у меня ушло пару сек.

Взял скрипт из этого сообщения http://crapware.aidf.org/forum/index.php?topic=88.msg23101#msg23101

Далее видео по настройке и обучению : видео на youtube (https://youtu.be/TeoS8NK4FHg)
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: StarControl on December 06, 2018, 03:13:59 AM
Помогите с усоловием, не знаю как составить.

$a="1.bmp" // если а равна картинке (*.bmp любой) выполняется, если $a=0 скрипт не выолняется

IF(0,$a=0) // Так не работает, как правильно написать не знаю.

ELSE
  // Скрипт
END_IF

Заранее благодарен.
Title: Re: По ходу освоения Clickermann'а буду задавать вопросы
Post by: Oraven on December 06, 2018, 07:19:24 AM
Помогите с усоловием, не знаю как составить.

$a="1.bmp" // если а равна картинке (*.bmp любой) выполняется, если $a=0 скрипт не выолняется

IF(0,$a=0) // Так не работает, как правильно написать не знаю.

ELSE
  // Скрипт
END_IF

Заранее благодарен.

Конечно можно было бы просто написать так
Code: (clickermann) [Select]
$a="1.bmp"

IF($a!0) // если $a не равно 0
   LOGWRITE ("да")
ELSE
   LOGWRITE ("нет")   
END_IF

HALT

Однако при сравнении чисел с текстом выдает не верный результат.
Поэтому мы переводим числа и текст в md5 хеш и сравниваем уже хеши.
Code: (clickermann) [Select]
$a="1.bmp"

IF(STRMD5($a)!STRMD5(0)) // если хеши $a и 0 не равны
   LOGWRITE ("да")
ELSE
   LOGWRITE ("нет")   
END_IF

HALT

Твой скрипт:
Code: (clickermann) [Select]
$a="1.bmp"
IF(STRMD5($a)!STRMD5(0)) // если $a не равно 0
// Скрипт   
END_IF