Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Orotund

Pages: [1]
1
Здравствуйте.
Значит вот код:
Code: (clickermann) [Select]
$n = 0
FOR($n,$n<TFCOUNT ("items.txt"))
   ARRPUSH($links, TFREAD ("items.txt", $n+1))
END_CYC
ARRPUSH($links, "End")
$i = 0
print( arrsize($links) )
FOR($i,$i < arrsize($links))
LOGWRITE ("  ",$links[$i])
INC($i,1)   
END_CYC
HALT

Содержание файла "items.txt":
Code: (clickermann) [Select]
Spore
Jelopy
Pantie
Steel
End

По задумке, в файле "items.txt" лежит перечень предметов, который должен загрузится в массив для дальнейшего использования.
Но при выводе в лог происходит что-то странное:
Лог:
Code: (clickermann) [Select]
21:03:21 6
21:03:21   Spore
21:03:21   Pantie
21:03:21   End

Помогите найти ошибку  :(

2
Здравствуйте! Необходим совет опытных людей.
Есть сценарий:
Code: (clickermann) [Select]
#include "Search_Mob.cms"

Start:
Search_Mob_LowRange()
IF($SearchDetected = 1)
                $SearchDetected = 0
GOTO(Start)
END_If
Search_Mob_MidRange()
IF($SearchDetected = 1)
                $SearchDetected = 0
GOTO(Start)
END_If
Search_Mob_LongRange()
$SearchDetected = 0
GOTO(Start)

Можно ли заменить на это:
Code: (clickermann) [Select]
#include "Search_Mob.cms"

SUB(Breack)
IF($SearchDetected = 1)
                $SearchDetected = 0
GOTO(Start)
END_If
END_SUB

Start:
Search_Mob_LowRange()
Breack()
Search_Mob_MidRange()
Breack()
Search_Mob_LongRange()
$SearchDetected = 0
GOTO(Start)
Я не знаю будет ли работать корректно GOTO внутри SUB.
Можно ли это реализовать с помощью цикла? :(

3
Ох спасибо, наверно моя ошибка в том что я не ознакомился с изменениями в 11й версии.
Не зря сценарий заработал когда я откатил программу до 10й версии = /

4
Пользуюсь Кликермунам довольно давно, но что-то не могу найти ошибку самостоятельно.

Code: (clickermann) [Select]
#ps2_mouse
#ps2_keyboard
#name "AA autoposadka"
#logfile

DEFINE($X, 0)
DEFINE($Y, 0)
DEFINE($Plant_Wait, 1600)

SUB (Plant)
KEYPRESS(#1)
WAITMS(100)
LCLICK(690,300)

KEYPRESS(#1)
WAITMS(100)
LCLICK(690,300)

WAITMS($Plant_Wait)
END_SUB

SUB (Move_W)
KEYDOWN(#W)
WAITMS(200)
KEYUP(#W)
END_SUB

SUB (Move_S)
KEYDOWN(#S)
WAITMS(200)
KEYUP(#S)
END_SUB

SUB (Move_D_S)
       KEYDOWN(#D)
       WAITMS(250)
       KEYUP(#D)
       KEYDOWN(#S)
       WAITMS(250)
       KEYUP(#S) 
END_SUB

SUB (Move_D_W)
        KEYDOWN(#D)
        WAITMS(250)
        KEYUP(#D)
        KEYDOWN(#W)
        WAITMS(250)
        KEYUP(#w) 
END_SUB


///сценарий
FOR ($i, $i < 10)
Plant()
Move_W()
END_CYC


Move_D_S()
LOGWRITE ("Переступил")


FOR ($i, $i < 10)
Plant()
Move_S()
END_CYC

Move_D_W()

   Значит проблема вот в чем: сценарий доходит до саба Move_D_S() и выполняет его бесконечное кол-во раз вместе с "LOGWRITE ("Переступил")".

5
Спасибо, именно то что нужно  ;D

6
Саб с параматром это хорошо, но этот скрипт не то что нужно. Наверно я плохо описал суть:
  Значит выполняется следующая задача: из инвентаря выкидываются вещи, которые могут повторятся Происходит это последующему алгоритму:
[Начало]
"Дубина" есть в инвентаре ? Да !---> Выкинуть! и вернутся в [начало]
"Дубина" есть в инвентаре ? Нет !---> Искать следующее!
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и вернутся в [начало]
"Дубина" есть в инвентаре ? Нет !---> Искать следующее!
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и вернутся в [начало]
...

  В итоге скрипт медленный, потому что возвращается к метке для того чтобы попробовать найти картинку еще раз, потому что "дубинок" может оказаться $много, как и "кинжалов", как и всего остального. Планируется 50+ наименований вещей которые  могут оказаться в инвентаре и рационально было бы искать картинку всего лишь один раз если ее нет на экране.
Ваш предложенный скрипт не подойдет, потому что он ищет картинки по одному разу.А алгоритм нужен следующий:
[Начало]
"Дубина" есть в инвентаре ? Да !---> Выкинуть! и проверить еще раз.
"Дубина" есть в инвентаре ? Нет !---> Искать следующее!
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и проверить еще раз.
"Кинжал" есть в инвентаре ? Да !---> Выкинуть! и проверить еще раз.
"Кинжал" есть в инвентаре ? Нет !---> Искать следующее!
"Копье" есть в инвентаре ? Нет !---> Искать следующее!
"Лук" есть в инвентаре ? Нет !---> Искать следующее!
...

Фуф, надеюсь я на этот раз правильно объяснил задачу.
 

7
Сразу к делу:
1) Можно ли записать текущий лог в файл ?(уж оч. надо)
 Скрипт выключает компьютер, а лог оч. важен для меня: в нем много полезной инфы.

2)Нужна помощь:
 Один тип сказал что можно записать путь к файлу в ячейки массива, а затем через цикл прогонять их.
 Вот к примеру часть моего скрипта:

Code: (clickermann) [Select]
Drop_part2:
MOVE($ch_x+730,100)
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\åòê.bmp")
LCLICK($_return1+5, $_return2+10)
LCLICK($_return1+5, $_return2+10)
WAITMS(100)
        END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\ïûëüöà.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\ðîñòîê.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\ïóõ.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\öâåòîê.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,25,$_xmax,625, "ðàçãðóçêà\çåëåíàÿ.bmp")
drop()
enter()
GOTO(Drop_part2)
END_IF
Можно ли эту ерунду представить в виде цикла с массивом? Значит если сценарий не нашел картинку "ресурсы\1.bmp" 2 раза , то он должен искать следующую картинку (например "ресурсы\2.bmp") пока они не закончатся.
Помогите мне в этом деле, это существенно уменьшит количество кода (который уже перевалил за 500 строк), ускорит его работу (сейчас все картинки прогоняются с первой по последнюю) и я научусь пользоваться массивами и циклами ;D

8
Привязать Кликерманн к окну игры никак не удается - злосная защита закрывает
GETSCREEN,все команды мыши и клавиатуры.После некоторых манипуляций (не буду озвучивать каких - секрет), удалось разблокировать мышь, если юзать без  привязки и клацать просто по экрану, то все работает. Но это жуть как неудобно, закрывает возможность параллельно с ботом использовать компьютер и при этом нельзя закрывать нечем окно игры - иначе бот "ослепнет". Попытка юзать виртуальную машину не увенчалась успехом: злосная защита каким-то образом определяет что используется виртуальная  и не позволяет запускат игру.
  И созрела тогда у меня идея, после того как я почитал справку и наткнулся на следующий текст:

Все окна иерархичны. На самом верху расположено окно с рабочим столом, носящее название "Program Manager". Внутри него открываются все остальные окна. Каждое окно состоит из отдельных элементов (кнопки, поля, ..). Некоторые элементы-контейнеры включают в себя группы других элементов. Следовательно, действие совершенное с контейнером, в некотором роде затронет все дочерние элементы.
Древнеримская сила Зевса! Да рабочий стол является окном, да еще действия в нем затрагивают дочерние окна.
Скачал я программу от microsoft, дабы сколотить второй рабочий стол максимально "природно". Создал значит второй рабочий стол, убедился в том что все работает как нужно.
 Теперь вопрос можно ли привязаться к определенному рабочему столу и как это сделать? Если Кликерманн этого не умеет на данном этапе, то как насчет плагина, существует ли такой и как его использовать?

9
Нет функций прерывания, можно написать прыжок ГОТО отправляющий выполнение к метке в конце подпрограммы.
ГОТО нарушит работу потоков?
Мне нужно к основной конструкции программки приделать 2 потока с периодическими действиями с незвисимыми счетчиками... я так понял, что если использовать "прыжки" то будет работать только основная конструкция. :(
 Вот так выглядела программка до того как я ее решил переписать, все работает на прыжках и код сам по себе достаточно кривой:
Code: (clickermann) [Select]
Looting:
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,12993189)
MOVE($return1+10, $_return2+20)   
ldown($_return1+10, $_return2+20)
WAITMS(100)     
lup($_return1+10, $_return2+20)
$foot = 0
$dagger = 0
WAITMS(300)
GOTO(Looting)
//=====================
else
GOTO(Danger)
END_IF
//=============================================
Danger:
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,4334055)
GOTO(Teleport)
ELSE
GOTO(Danger2)
END_IF
Danger2:
GETSCREEN ($ch_x,25,$_xmax,625)
$warp = PXLCOUNT($ch_x,25,$ch_x+800,600,5918286)
IF($warp > $warp_max )
LOGWRITE ("íàéäåí âàðï! Çíà÷åíèå Warp:",$warp)
GOTO (Teleport)
//=====================
else
GOTO(Start)
END_IF
//=============================================
Start:
IF($dagger < $dagger_max )
GOTO (Start1)
ELSE
GOTO (Teleport)
END_IF
//=============================================
Start1:
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+270,180,$ch_x+530,410,16711680)
MOVE($_return1+10, $_return2+25)   
ldown($_return1+10, $_return2+25)
WAITMS(100)     
lup($_return1+10, $_return2+25)
WAITMS(300)
INC($dagger,1)
$foot = 0
GOTO(Looting)
//=====================
else
GOTO(Start2)
END_IF
//=============================================
Start2:
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,16711680 )
MOVE($_return1+10, $_return2+25)   
ldown($_return1+10, $_return2+25)
WAITMS(100)     
lup($_return1+10, $_return2+25)
WAITMS(300)
INC($dagger,1)
$foot = 0
GOTO(Looting)
//=====================
else
GOTO(Start3)
END_IF
//=============================================
Start3:
IF ($long_range = 1)
GOTO(Start4)
ELSE
GOTO(Looting)
END_IF
Start4:
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+35,30,$ch_x+780,580,16711680 )
MOVE($_return1+10, $_return2+20)   
ldown($_return1+10, $_return2+20)
WAITMS(100)     
lup($_return1+10, $_return2+25)
WAITMS(300)
INC($dagger,1)
$foot = 0
GOTO(Looting)
//=====================
else
GOTO(Run)
END_IF
//=============================
Run:
IF ($foot > $foot_max)
$foot = 0
$dagger = 0
GOTO(Teleport)
END_IF
GETSCREEN ($ch_x,25,$_xmax,625)
$count = PXLCOUNT($ch_x+340,390,$ch_x+450,480, 9665660)
IF ($count > 9000)
  LCLICK($ch_x+400,560)
INC($foot,1)
MOVE($ch_x+730,100)
$dagger = 0
WAITMS(300)
GOTO(Looting)
ELSE
GOTO(Teleport)
END_IF
//=============================================
Teleport:
WAITMS(100)
KEYDOWN(#F5)
WAITMS(100)
KEYUP(#F5)
WAITMS(150)
KEYDOWN(#Enter)
WAITMS(100)
KEYUP(#Enter)
Start_analys:
      GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "ñìåðòü.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Ïåðñîíàæ ìåðòâ!")
LOGWRITE ("Ñòîï.")
WAITMS(100)
HALT
ELSE
GOTO(Analys2)
END_IF
Analys2:
IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "ñîåäèíåíèå.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Ïîòåðÿíî ñîåäèíåíèå ñ ñåðâåðîì!")
LOGWRITE ("Ñòîï.")
WAITMS(100)
HALT
HALT
ELSE
GOTO(Analys3)
END_IF
Analys3:
IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "֖.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Ïåðñîíàæ íàõîäèòñÿ â ×Ñ!")
LOGWRITE ("Ñòîï.")
WAITMS(100)
HALT
HALT
ELSE
GOTO(End_analys)
END_IF
End_analys:
$dagger = 0
$foot = 0
WAITMS(300)
GOTO(Looting)
END_IF
//=====================

10
В твоем случае потоки не нужны, используй подпрограммы.
Чему равняется $ch_x или это не весь скрипт?

Ок , попробую заменить потоки подпрограммами. Насчет $ch_x - да, это не весь скрипт, на переменные не обращайте внимания, все работает как часы.
 Код все равно работает не так как нужно :(
 Я понял в чем дело:
1)Есть ли команда которая прерывает и пропускает выполнение текущей подпрограммы?
2)Можно ли управлять потоком с помощью инструкции SETTHREAD из подпрограммы?
 Дело в том что, нужно выполнить несколько условий:
-Если подпрограмма запускает подпрограмму, то текущая подпрограмма должна прекратить работу.
-Если поток "анализа" запустил подпрограмму, то он должен начать свою работу заново, начиная с первой инструкции.
 

11
Подчистил лишние "Else" от которых я избавился в коде. Все потоки по прежнему работают одновременно. Ждем помощи специалистов.  :(
Code: (clickermann) [Select]
Thread(thr_analys,1)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_attack, 0)
//==========================Поиск фиол пикселя
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,12993189)     
SETTHREAD (thr_looting, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Поиск красн пикселя
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,4334055)
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Поиск варп пикселя
GETSCREEN ($ch_x,25,$_xmax,625)
$warp = PXLCOUNT($ch_x,25,$ch_x+800,600,5918286)
IF($warp > $warp_max )
LOGWRITE ("найден варп! Значение Warp:",$warp)
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка величены dagger
IF($dagger > $dagger_max )
SETTHREAD (thr_run, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка типа Start1
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+270,180,$ch_x+530,410,16711680)
SETTHREAD (thr_attack, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка типа Start2
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,16711680 )
SETTHREAD (thr_attack, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка вкл ли long_range
IF ($long_range = 1)
SETTHREAD (thr_run, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка типа Start3
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+35,30,$ch_x+780,580,16711680 )
SETTHREAD (thr_attack, 1)
SETTHREAD (thr_analys, 0)
END_IF
//==========================Окончание проверок
SETTHREAD (thr_run, 1)
SETTHREAD (thr_analys, 0)

//=============================================
End_thread
Thread(thr_looting,0)
SETTHREAD (thr_analys, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_attack, 0)
MOVE($return1+10, $_return2+20)   
ldown($_return1+10, $_return2+20)
WAITMS(100)     
lup($_return1+10, $_return2+20)
$foot = 0
$dagger = 0
WAITMS(300)
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_looting, 0)
//=============================================
End_thread
Thread(thr_run,0)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_analys, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_attack, 0)
IF ($foot > $foot_max)
$foot = 0
$dagger = 0
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_run, 0)
END_IF

GETSCREEN ($ch_x,25,$_xmax,625)
$count = PXLCOUNT($ch_x+340,390,$ch_x+450,480, 9665660)
IF ($count > 9000)
  LCLICK($ch_x+400,560)
INC($foot,1)
MOVE($ch_x+730,100)
$dagger = 0
WAITMS(300)
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_run, 0)
END_IF
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_run, 0)

//=============================================
End_thread
Thread(thr_attack,0)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_analys, 0)
MOVE($_return1+10, $_return2+20)   
ldown($_return1+10, $_return2+20)
WAITMS(100)     
lup($_return1+10, $_return2+25)
WAITMS(300)
INC($dagger,1)
$foot = 0
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_attack, 0)
//=============================================
End_thread
Thread(thr_teleport,0)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_analys, 0)
SETTHREAD (thr_attack, 0)
KEYDOWN(#F5)
WAITMS(100)
KEYUP(#F5)
WAITMS(150)
KEYDOWN(#Enter)
WAITMS(100)
KEYUP(#Enter)
      GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "смерть.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Персонаж мертв!")
LOGWRITE ("Стоп.")
WAITMS(100)
HALT
END_IF

IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "соединение.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Потеряно соединение с сервером!")
LOGWRITE ("Стоп.")
WAITMS(100)
HALT
END_IF

IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "чс.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Персонаж находится в ЧС!")
LOGWRITE ("Стоп.")
WAITMS(100)
HALT
END_IF

$dagger = 0
$foot = 0
WAITMS(300)
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_teleport, 0)
//=============================================
End_thread

12
После каждого объявления потока: Thread
я на всякий случай вписал перечнь потоков которые не должны работать:
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_attack, 0)                  //пример
Я сначала посчитал, что поток не может выключить сам себя. :(

13
Здрасте, писал я себе код и таки написал, и вышел код совершенно кривой и "медленный" но рабочий. И в один ужасный день, решил я переписать его используя "потки" введя тем самым новые функции в мою програмку. И случилась беда, сейчас в програмке имеется 5 потоков:
один анализирует экран и совершает проверки по кругу, если условие выполнено то запускается нужный поток действия, а поток "анализа" выключается. После того как нужный поток "действия" отработал, он выключает себя и вновь запускает поток анализа.
 Беда состоит в том что все потоки работают почему-то одновременно и отказываются выключать друг друга, игнорируя инструкцию SETTHREAD.
Вот эти 5 потоков должны работать по идее поочередно, а следующие потоки будут работать параллельно с этими основными 5тью, но это в будующем.
 Подскажите пожалуйста в чем ошибка и если то что я хочу можно реализовать без потоков, то скажите как. Главное не использовать метки skip: , т.к. они работают прескверно и ломают одновременную работу потоков( поправте если это не так).
 Вот скидываю часть кода в котором случилась беда, здесь без литра не разобраться:
Code: (clickermann) [Select]
Thread(thr_analys,1)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_attack, 0)
//==========================Поиск фиол пикселя
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,12993189)     
SETTHREAD (thr_looting, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Поиск красн пикселя
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,4334055)
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Поиск варп пикселя
GETSCREEN ($ch_x,25,$_xmax,625)
$warp = PXLCOUNT($ch_x,25,$ch_x+800,600,5918286)
IF($warp > $warp_max )
LOGWRITE ("найден варп! Значение Warp:",$warp)
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка величены dagger
IF($dagger > $dagger_max )
SETTHREAD (thr_run, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка типа Start1
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+270,180,$ch_x+530,410,16711680)
SETTHREAD (thr_attack, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка типа Start2
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+180,120,$ch_x+625,490,16711680 )
SETTHREAD (thr_attack, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка вкл ли long_range
IF ($long_range = 1)
SETTHREAD (thr_run, 1)
SETTHREAD (thr_analys, 0)
END_IF

//==========================Проверка типа Start3
GETSCREEN ($ch_x,25,$_xmax,625)
IF_PIXEL_IN($ch_x+35,30,$ch_x+780,580,16711680 )
SETTHREAD (thr_attack, 1)
SETTHREAD (thr_analys, 0)
ELSE
//==========================Окончание проверок
SETTHREAD (thr_run, 1)
SETTHREAD (thr_analys, 0)
END_IF
//=============================================
End_thread
Thread(thr_looting,0)
SETTHREAD (thr_analys, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_attack, 0)
MOVE($return1+10, $_return2+20)   
ldown($_return1+10, $_return2+20)
WAITMS(100)     
lup($_return1+10, $_return2+20)
$foot = 0
$dagger = 0
WAITMS(300)
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_looting, 0)
//=============================================
End_thread
Thread(thr_run,0)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_analys, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_attack, 0)
IF ($foot > $foot_max)
$foot = 0
$dagger = 0
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_run, 0)
END_IF

GETSCREEN ($ch_x,25,$_xmax,625)
$count = PXLCOUNT($ch_x+340,390,$ch_x+450,480, 9665660)
IF ($count > 9000)
  LCLICK($ch_x+400,560)
INC($foot,1)
MOVE($ch_x+730,100)
$dagger = 0
WAITMS(300)
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_run, 0)
ELSE
SETTHREAD (thr_teleport, 1)
SETTHREAD (thr_run, 0)
END_IF
//=============================================
End_thread
Thread(thr_attack,0)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_teleport, 0)
SETTHREAD (thr_analys, 0)
MOVE($_return1+10, $_return2+20)   
ldown($_return1+10, $_return2+20)
WAITMS(100)     
lup($_return1+10, $_return2+25)
WAITMS(300)
INC($dagger,1)
$foot = 0
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_attack, 0)
//=============================================
End_thread
Thread(thr_teleport,0)
SETTHREAD (thr_looting, 0)
SETTHREAD (thr_run, 0)
SETTHREAD (thr_analys, 0)
SETTHREAD (thr_attack, 0)
KEYDOWN(#F5)
WAITMS(100)
KEYUP(#F5)
WAITMS(150)
KEYDOWN(#Enter)
WAITMS(100)
KEYUP(#Enter)
      GETSCREEN ($ch_x,25,$_xmax,625)
IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "смерть.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Персонаж мертв!")
LOGWRITE ("Стоп.")
WAITMS(100)
HALT
END_IF

IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "соединение.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Потеряно соединение с сервером!")
LOGWRITE ("Стоп.")
WAITMS(100)
HALT
END_IF

IF_PICTURE_IN ($ch_x,400,$ch_x+800,600, "чс.bmp")
LOGWRITE ("-----------------------")
LOGWRITE ("Персонаж находится в ЧС!")
LOGWRITE ("Стоп.")
WAITMS(100)
HALT
END_IF

$dagger = 0
$foot = 0
WAITMS(300)
SETTHREAD (thr_analys, 1)
SETTHREAD (thr_teleport, 0)
//=============================================
End_thread

Pages: [1]