|
UoPilot в magegame.ru (Войны и маги), Помогите со скриптом |
|
|
kuscheyder |
3.12.2012, 13:58
|
Neophyte
Сообщений: 13
Регистрация: 3.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.535
|
Приветствую форум! Хотел бы уточнить как реализовать функцию цветового поиска в этой игре. Игра представляет собой бродику и в принципе можно ограничиваться left <корды>, но расширившийся функционал программы позволяет сделать еще одну полезную вещь. Интерфейс игры представляет собой квадратное поле 10*10 ячеек, хотелось бы написать скрипт, чтобы можно было искать квесты. В частности: одним скриптом я задаю направление перемещения, а другой бесконечно выполняет команду по проверке рабочего окна 10*10 ячеек на предмет 3 цветов: белого, желтого и красного. Квесты выглядят как знаки вопроса окрашенные в эти цвета. Либо еще вариант реализации - поиск заданных изображений ячейки с квестом. Как только искоме найдено, скрипт 2 останавливает скрипт 1 (а в идеале дает звуковой сигнал). Ну для примера вот скрин: http://s52.radikal.ru/i136/1104/de/5b5fcbe19b8c.jpgПерс стоит рядом с 2-мя квестами. Убедительная просьба объясните как написать такого рода скрипт, поскольку скриптами не владею в принципе. Хотя бы дайте шаблон, значения переменных я сам подобью.
|
|
|
|
kuscheyder |
6.12.2012, 10:44
|
Neophyte
Сообщений: 13
Регистрация: 3.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.535
|
Работаю над таким скриптом для перемещения по заданному маршруту, для изменения направления движения использую findimage. Движение осуществляется путем клика.
set $a 0 set $b 0 set $b1 0 set $c 0 set $d 0 set $d1 0 set $e 0 for #i 1 2 0 wait 300 left 531, 314 wait 300 set $a findimage (782, 108 926, 175 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab1.bmp) %arr 2) if $a > 0 wait 300 left 512, 275 wait 300 left 472, 275 wait 300 end_if set $b findimage (782, 108 926, 175 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab2.bmp) %arr 2) if $b > 0 wait 300 left 533, 316 end_if set $b1 findimage (782, 108 926, 175 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab3.bmp) %arr 2) if $b1 > 0 wait 300 left 533, 316 end_if set $c findimage (782, 108 926, 175 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab4.bmp) %arr 2) if $c > 0 wait 300 left 511, 276 wait 300 left 471, 276 wait 300 end_if
Вопрос: можно ли научить скрипт тому, чтобы каждое предыдущее условие выполнялось до того, как последующее примет значение 1, и далее не выполнялось? Просто столкнулся с проблемой: поначалу все работает, но когда количество условий становится > 7-8, то начинается путаница и за счет wait выполняются ненужные перемещения из предыдущих условий.
|
|
|
|
kuscheyder |
6.12.2012, 11:02
|
Neophyte
Сообщений: 13
Регистрация: 3.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.535
|
Только заметил у себя косяк! (IMG: style_emoticons/default/rolleyes.gif) Теперь понятно почему не срабатывает как надо... Думаю, надо привязать к left количество повторов в заданном напралении, так лучше будет, но все равно ума не приложу как прописать скриптом смысловое выражение "выполнять конкретный left бесконечно до тех пор, пока значение следующего условия не станет равно 1, после чего не выполнять предыдущее условие и выполнять бесконечно новый left". Проблема в том что эта схема сработает в момент когда переменная = 1, а равна она ей однократно и после следующего клика фактически скрипт опять начнет учитывать и предыдущее условие. Все, ложная тревога! (IMG: style_emoticons/default/smile.gif) Придумал.. Делаю 4 мини-скрипта на клики, а в этом делаю отсылки на них в случае выполнения условий, ну типа: set $a 0 set $b 0 set $b1 0 set $c 0 set $d 0 set $d1 0 set $e 0 for #i 1 2 0 start_script 0 set $a findimage (782, 108 926, 175 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab1.bmp) %arr 2) if $a > 0 stop_script 0 start_script 1 end_if end_for
|
|
|
|
kuscheyder |
6.12.2012, 13:08
|
Neophyte
Сообщений: 13
Регистрация: 3.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.535
|
Не совсем понял.. (IMG: style_emoticons/default/mellow.gif) Насчет while я согласен, он зацикливает перемещение, но вот увязать между собой while и findimage не получается. Где set ставить до while или внутри цикла while? For i я убрал - получилась какая-то каша: set $a findimage (789, 116 913, 161 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab1.bmp) %arr 2) while_not $a > 0 wait 1500 left 531, 316 end_while if $a > 0 set $b findimage (789, 116 913, 161 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab2.bmp) %arr 2) while_not $b > 0 wait 1500 left 531, 316 wait 1500 left 531, 316 end_while end_if Работает криво, в свернутом виде вообще работать не хочет, в развернутом цикл while_not $a > 0 wait 1500 left 531, 316 end_while повторяется бесконечно, даже если a => 1
|
|
|
|
kuscheyder |
6.12.2012, 13:48
|
Neophyte
Сообщений: 13
Регистрация: 3.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.535
|
Спасибо за совет, но проблему это не решает.. (IMG: style_emoticons/default/unsure.gif) По-прежнему в нужной точке findimage не срабатывает ничего не происходит, перс бежит дальше. Цель конечная - не бесконечное прямолинейне движние, а изменение направления, как только findimage найдет нужную картинку. Код set $a findimage (778, 111 925, 177 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab1.bmp) %arr 2) while_not $a > 0 left 531, 316 wait 1500 set $a findimage (778, 111 925, 177 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab1.bmp) %arr 2) end_while while 1 = 1 left 513, 271 wait 1500 left 471, 268 wait 1500 end_while Однако, он почему-то ее не находит. (IMG: style_emoticons/default/blink.gif) Когда окно в мини режиме, то и вовсе while_not не работает, а скрипт прыгает сразу исполнять while
|
|
|
|
kuscheyder |
6.12.2012, 14:04
|
Neophyte
Сообщений: 13
Регистрация: 3.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.535
|
4 часа мучаюсь уже чтобы написать скрипт на прохождение локации, по которой 3 часа идти. Кеп подсказывает что за три часа и без всяких while можно было уже скрипт написать и, кроме того, while похоже в данном случае вообще не уместен. (IMG: style_emoticons/default/dry.gif) Вопрос кэпу: зачем нужен форум тогда, если в лучшем случае тут посылают читать мануалы? Я же не прошу за меня 5000 строк писать, я прошу только показать принцип увязки 2 переменных в оговоренном контексте. Ну лень скрипты писать, хоть намекните как заставить findimage работать.
|
|
|
|
kuscheyder |
6.12.2012, 15:19
|
Neophyte
Сообщений: 13
Регистрация: 3.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.535
|
Пишу вот так: Код set $a = 0 set $b = 0 while_not $a > 0 set $a findimage (762, 110 933, 183 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab1.bmp) %arr 2) left 531, 316 wait 1500 set $a findimage (762, 110 933, 183 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab1.bmp) %arr 2) end_while while_not $b > 0 set $b findimage (762, 110 933, 183 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab2.bmp) %arr 2) left 512, 275 wait 1500 left 469, 268 wait 1500 set $b findimage (762, 110 933, 183 (C:\Documents and Settings\VXK.CRAAGER.000\Рабочий стол\Новая папка (4)\image\lab\lab2.bmp) %arr 2) end_while Скрипт запускается, никаких ошибок не всплывает. Но! Команда тоже ни одна не выполняется, просто курсор по окошку Пилота бегает по строчкам 0,1,2,8, а действия никакого. В принципе же должно работать, ведь Код показывает, что действие должно выполняться пока утверждение $a > 0 является ложным, изначально я задал $a = 0, стало быть, противоречия нет. Тем не менее, не работает. Ксли поэкспериментировать со знаками <, >, = то в некоторых случаях работать будет, но картинок все равно не ищет. (IMG: style_emoticons/default/huh.gif)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|