Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Поиск Цвета По Слоям., Определяет не тот цвет.
Denker
сообщение 6.1.2011, 0:53
Сообщение #1


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Столкнулся с такой проблеммой:
в углу окна висит хит-бар с показаниями здоровья, делаю проверку цвета по заданым координатам, но проверка не проходит. После использования команд get color и лога, понял, что цвет берётся не из картинки с хит-баром, а с фона на котором она висит.
Как это решается?
Искал по форуму, описания подобных проблемм не нашёл, извините, если плохо искал.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.1.2011, 3:30
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27722
Пользователь №: 11.279



сталкиваолся подобной проблемой в масс эффекте и в рф онлайн. вопрос как раз решался
get color #c
if #c = 123456
...
end_if
а что за приложение?
можешь попробовать findcolor - в нем есть два режима снятия цвета.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 6.1.2011, 5:23
Сообщение #3


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Игра Фантазиум, пытаюсь автоматизировать рыбалку. Там появляются картинки со стрелками и их за время надо нажать на клавиатуре в правильном порядке.
Для начала решил выполнить более простую задачу -- автохил. Но проблемма с определением цвета тоже присутствует.
Пока занимался отладкой написал простенький скрипт:

Код

set #a findwindow (Фантазиум (RU))
set workwindow #a
showwindow #a
set logging open
while #a <> 0
get color #c 123, 456
set logging #c
end_while


из которго и выяснил, что цвет для поверки берётся из фона, а не картинки.

Пользовался командой if #x, #y 123456 . Поскольку проверяется один конкретный пиксель, то не хотел через fincolor делать, но если через иф не будет работать, то придётся.

Можно подробнее про два режима снятия цвета?
Про этот я знаю
set $a findcolor (1, 1 2, 2 1 1 123456 %arr 1) abs // тут будет проверятся только один пиксель (1,1), поэтому не обязательно в цикл вгонять
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 6.1.2011, 10:31
Сообщение #4


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(Denker @ 6.1.2011, 4:23) *

Про этот я знаю
set $a findcolor (1, 1 2, 2 1 1 123456 %arr 1) abs // тут будет проверятся только один пиксель (1,1), поэтому не обязательно в цикл вгонять

Вроде писали, что findcolor не работает, если совпадают x1 с x2 или y1 с y2. Сам не проверял

По поводу второго способа- в конце 2 вместо 1. И abs присутствует/отсутствует


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 6.1.2011, 13:12
Сообщение #5


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Цитата(Zeleax @ 6.1.2011, 9:31) *

Вроде писали, что findcolor не работает, если совпадают x1 с x2 или y1 с y2. Сам не проверял

По поводу второго способа- в конце 2 вместо 1. И abs присутствует/отсутствует


Я проверял, действительно так. Это как в команде random (x) -- получаем случайное целое число в диапазоне [0, х-1]. Поэтому random (0) работать не будет.

А я думал, что %arr 1 или %arr 2 это размерность массива для координат найденого пикселя соответствующего условию проверки. Т.е. если мне нужен второй найденый пиксель заданого цвета, то его координаты %arr [1, 2] и %arr [2, 2], если 13-й то %arr [1, 13] и %arr [2, 13] соответственно, а в команде задаётся %arr 13.

Ещё вопрос: если не получается определить цвет через get color можно ли его узнать сняв скриншёт или идёт искажение?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.1.2011, 20:23
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27722
Пользователь №: 11.279



теоретически, если сохранишь в бмп, то проблем не будет. но пилот сохраняет в джепеге. сжатие джепега можно изменить в uopilot.ini, но тебе все равно нужен бмп. т.е. жмешь кнопку принт скрин, вставаляешь в пэинт и там уже проверяешь. скин можно даже не сохранять.
set $a findcolor (1, 1 2, 2 1 1 123456 %arr 1) abs
тут х и у вообще то не совпадают. в факе вроде писал по совпадении координат в финдколоре.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 7.1.2011, 17:18
Сообщение #7


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Цитата(Denker @ 6.1.2011, 4:23) *

set $a findcolor (1, 1 2, 2 1 1 123456 %arr 1) abs


я дятел. правильное написание такое:

set $a findcolor (1, 1 2, 2 1 1 123456 %arr 1 abs)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 7.1.2011, 17:26
Сообщение #8


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Очень удобно использовать для захвата экрана и определения цвета программу FastStone Capture. Она сразу и абсолютные координаты выбранной точки показывает. И быстро+удобно сохраняет в форматах BMP|PNG (PNG тоже подходит и занимает мало место)

Код
set $a findcolor ( #persLifeX, #lifeYabs  #persLifeXEnd, #y2 1 1 3026483 %arr 2 abs)


abs - в скобках. findcolor умеет искать и в относительных (без abs), и в абсолютных координатах (с abs)


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 7.1.2011, 18:27
Сообщение #9


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Спасибо за помощь, findcolor настроил, но вылезла другая проблемма: ищет слишком долго, уменьшение паузы между строками решения не дало.
Решил узнать координаты найденой точки, но в ответ получил сообщение:

(27): Ошибка! Проверьте правильность скрипта! EExternal
set logging #i %arr [1 1] %arr [1 2]

или

(25): Ошибка! Проверьте правильность скрипта! EExternal
set #x %arr [1 1]

что я не правильно делаю?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 7.1.2011, 19:43
Сообщение #10


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



может быть цвет не был найден, тогда и ошибка появилась в set #x ...

Вообще использование массивов довольно ограничено в выражениях.
Обычно можно только присваивать в выражении set в правой части.
Код
set #y   %arr[1 2] + #lookY1


Использование в set logging не проверял


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 7.1.2011, 20:02
Сообщение #11


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Цитата(Zeleax @ 7.1.2011, 18:43) *

может быть цвет не был найден, тогда и ошибка появилась в set #x ...


тогда почему выходит из цикла, если ничего не нашло?

Код

while ( $c1 = 0 ) and ( $c2 = 0 ) and ( $c3 = 0 ) and ( $c4 = 0 )
set $c1 findcolor (535, 645 565, 680 1 1 12694948 %arr 2 abs)
set $c2 findcolor (535, 645 565, 680 1 1 4276180 %arr 2 abs)
set $c3 findcolor (535, 645 565, 680 1 1 5927549 %arr 2 abs)
set $c4 findcolor (535, 645 565, 680 1 1 10327750 %arr 2 abs)
end_while


проверил -- находит.
на команде move %arr [1 1] %arr [1 2] abs тоже выдаёт ошибку.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.1.2011, 20:21
Сообщение #12


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27722
Пользователь №: 11.279



у тебя все массивы одинаковые. может произойти следующее:
set $c3 findcolor (535, 645 565, 680 1 1 5927549 %arr 2 abs) // Успешно нашел совпадения цвета и записал их в %arr.
set $c4 findcolor (535, 645 565, 680 1 1 10327750 %arr 2 abs) // Ничего не нашел и уничтожил массив %arr в который записались предидущие результаты.

По поводу быстродействия основное решение - уменьшайте области поиска. Ведь if'ами вы не проверяете такие большие области. Насколько я понял у вас есть конкретные координаты в которых надо проверить цвет, так зачем тогда такие большие области?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 7.1.2011, 21:31
Сообщение #13


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Цитата(DarkMaster @ 7.1.2011, 19:21) *

у тебя все массивы одинаковые. может произойти следующее:
set $c3 findcolor (535, 645 565, 680 1 1 5927549 %arr 2 abs) // Успешно нашел совпадения цвета и записал их в %arr.
set $c4 findcolor (535, 645 565, 680 1 1 10327750 %arr 2 abs) // Ничего не нашел и уничтожил массив %arr в который записались предидущие результаты.


Спасибо, об этом я не подумал.

Цитата(DarkMaster @ 7.1.2011, 19:21) *

По поводу быстродействия основное решение - уменьшайте области поиска. Ведь if'ами вы не проверяете такие большие области. Насколько я понял у вас есть конкретные координаты в которых надо проверить цвет, так зачем тогда такие большие области?


Именно это я и хочу сделать, а для этого нужны координаты найденых точек.

Переименовал массивы, всё равно на любую команду с их использованием выдаёт ошибку.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 8.1.2011, 14:30
Сообщение #14


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Я его сделал!
Огромное всем спасибо за помощь. Провозился до утра, но всё же настроил как положено. Вот только сильно раздражало, что findcolor выдаёт координаты точки отрицательные и диаметрально противоположные.
Т.е. результат должен вычисляться по формуле: %arr [1 1] = #x + #delta, где
%arr [1 1] координата Х найденой точки
#x координата Х начала отсчёта
#delta разница координат или прирост.

На практике вычисление происходит по формуле %arr [1 1] = #delta - #x. Для Y координаты аналогично.
Пример: начало отсчёта (100; 100), findcolor находит точку в координатах (113; 140). В %arr будет записано значение (-87; -60).

Огромное спасибо Zeleax за подсказку о программе FastStone Capture. Действительно очень удобная и сохранила много сил и нервов.

P.S. Поэкспериментировал с заданием координат в findcolor через массив, для уменьшения строк скрипта.
set $u findcolor (%xu [#i, 1], 653 %xu [#i, 1] + 1, 654 1 1 7266294 %arr 2 abs) // не работает. Хотя, феномен до конца не изучен.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.1.2011, 17:05
Сообщение #15


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



я ж писал уже, что элементы массивов напрямую обычно не используются. Только через промежуточную переменную

set #x1 %arr[1 1]
...
set $u findcolor (#x1 ....


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.1.2011, 21:25
Сообщение #16


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27722
Пользователь №: 11.279



Цитата
На практике вычисление происходит по формуле %arr [1 1] = #delta - #x. Для Y координаты аналогично.
Пример: начало отсчёта (100; 100), findcolor находит точку в координатах (113; 140). В %arr будет записано значение (-87; -60).

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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 9.1.2011, 0:05
Сообщение #17


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Привожу полный текст скрипта. Правда я его уже причесал как мог и поудалял отладочные вспомагательные команды. Добавил коментарии.

Код

set #a findwindow (Фантазиум (RU))
set workwindow #a
showwindow #a
set %ax [1 1] 549 // начальные координаты по которым идёт поиск
set %ax [2 1] 608
set %ax [3 1] 666
set %ax [4 1] 726
set %ax [1 2] 539
set %ax [2 2] 598
set %ax [3 2] 656
set %ax [4 2] 716
set %ax [1 3] 558
set %ax [2 3] 617
set %ax [3 3] 675
set %ax [4 3] 735
:begin
wait 1500
set $b1 0
set $b2 0
set $b1 findcolor (1062, 754 1063, 755 1 1 1184461 %arr 2 abs)
set $b2 findcolor (547, 616 548, 617 1 1 2397184 %arr 2 abs)
if ($b1 > 0) and ($b2 > 0) // проверка по двум точкам когда начинать выполнение скрипта
for #i 1 4
set $u 0
set $d 0
set $l 0
set $r 0
set #xu1 %ax [#i 1]
set #xu2 %ax [#i 1] + 1
set #xl1 %ax [#i 2]
set #xl2 %ax [#i 2] + 1
set #xr1 %ax [#i 3]
set #xr2 %ax [#i 3] + 1
set $u findcolor (#xu1, 653 #xu2, 654 1 1 7266294 %arr 2 abs) //если тут вместо #xu2 написать #xu1 + 1, то поиск не срабатывает.
set $d findcolor (#xu1, 672 #xu2, 673 1 1 2982898 %arr 2 abs)
set $l findcolor (#xl1, 662 #xl2, 663 1 1 5355252 %arr 2 abs)
set $r findcolor (#xr1, 662 #xr2, 663 1 1 5355252 %arr 2 abs)
if $u > 0
post {Up}
end_if
if $d > 0
post {Down}
end_if
if $l > 0
post {Left}
end_if
if $r > 0
post {Right}
end_if
end_for
wait 4000
end_if
goto begin


На мониторе стоит разрешение 1280х1024, игра запущена в оконном режиме с разрешением 1280х960. При запуске автоматически центрируется, обычными методами двигать нельзя. По ширине получается в притык по экрану. Скрин прилагается.
Если не считать фреймами изображение стрелок, из-за которых и были сложности с определением цвета, то больше в зону поиска ничего не попадает.
Скрипт расчитан на 4-х кнопочную комбинацию, на скрине их 7. Это решается расширением масивов с координатами с их заменой на новые и увеличением цикла for с 4 до 7.

Прикрепленное изображение

откопал промежуточный отладочный сейв, может поможет разобраться

промежуточная отладка

set #a findwindow (Фантазиум (RU))
set workwindow #a
//showwindow #a
set %axu [1 1] 549
set %axu [2 1] 608
set %axu [3 1] 666
set %axu [4 1] 726 //712
set %axd [1 2] 545
set %axd [2 2] 604
set %axd [3 2] 662
set %axd [4 2] 722
set %axl [1 3] 558
set %axl [2 3] 606
set %axl [3 3] 675
set %axl [4 3] 735
set $b1 0
set $b2 0
set $b3 0
set $b1 findcolor (1063, 754 1065, 756 1 1 1184461 %arr 2 abs)
set $b2 findcolor (548, 616 550, 618 1 1 2397184 %arr 2 abs)
set $b3 findcolor (249, 758 250, 759 1 1 9464066 %arr 2 abs)
//if ($b1 > 0) and ($b2 > 0) and ($b3 > 0)
set #i 4
//repeat 4
//set #i #i + 1
set $u 0
set $d 0
set $l 0
set $r 0
set #xu1 %axu [#i 1]
set #xu2 %axu [#i 1] + 1
set #xd1 %axd [#i 2]
set #xd2 %axd [#i 2] + 1
set #xl1 %axl [#i 3]
set #xl2 %axl [#i 3] + 1

while ( $u = 0 ) and ( $d = 0 ) and ( $l = 0 ) and ($r = 0)
set $u findcolor (#xu1, 652 #xu2, 653 1 1 7129819 %arr1 2 abs)
set $d findcolor (#xd1, 653 #xd2, 654 1 1 7397878 %arr2 2 abs)
if #i = 1
set $l findcolor (558, 648 559, 677 1 1 5795961 %arr3 2 abs)
end_if
if #i = 2
set $l findcolor (609, 648 610, 677 1 1 6141658 %arr4 2 abs)
end_if
if (#i = 3) or (#i = 4)
set $l findcolor (#xl1, 648 #xl2, 677 1 1 4939129 %arr5 2 abs)
end_if
if #i = 1
set $r findcolor (539, 648 540, 677 1 1 5796217 %arr6 2 abs)
end_if
if #i = 2
set $r findcolor (597, 648 598, 677 1 1 5519145 %arr7 2 abs)
end_if
if #i = 3
set $r findcolor (663, 648 664, 677 1 1 5452838 %arr8 2 abs)
end_if
if #i = 4
set $r findcolor (716, 648 717, 677 1 1 4939129 %arr9 2 abs)
end_if
end_while
set logging open
if $u > 0
post {Up}
set #z1 %arr1 [1 1]
set #z2 %arr1 [1 2]
set logging arr1 #z1 #z2 #i
goto end
end_if
if $d > 0
post {Down}
set #z1 %arr2 [1 1]
set #z2 %arr2 [1 2]
set logging arr2 #z1 #z2 #i
goto end
end_if
if $l > 0
post {Left}
if #i = 1
set #z1 %arr3 [1 1]
set #z2 %arr3 [1 2]
set logging arr3 #z1 #z2 #i
end_if
if #i = 2
set #z1 %arr4 [1 1]
set #z2 %arr4 [1 2]
set logging arr4 #z1 #z2 #i
end_if
if #i = 3
set #z1 %arr5 [1 1]
set #z2 %arr5 [1 2]
set logging arr5 #z1 #z2 #i
end_if
if #i = 4
set #z1 %arr5 [1 1]
set #z2 %arr5 [1 2]
set logging arr5 #z1 #z2 #i
end_if
goto end
end_if
if $r > 0
post {Right}
if #i = 1
set #z1 %arr6 [1 1]
set #z2 %arr6 [1 2]
set logging arr6 #z1 #z2 #i
end_if
if #i = 2
set #z1 %arr7 [1 1]
set #z2 %arr7 [1 2]
set logging arr7 #z1 #z2 #i
end_if
if #i = 3
set #z1 %arr8 [1 1]
set #z2 %arr8 [1 2]
set logging arr8 #z1 #z2 #i
end_if
if #i = 4
set #z1 %arr9 [1 1]
set #z2 %arr9 [1 2]
set logging arr9 #z1 #z2 #i
end_if
goto end
end_if
:end
//end_repeat
//end_if
end_script


u 5025524
d 5421044
l110325120
l2 10324860
r1 7230537
r2 10325121
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 9.1.2011, 14:58
Сообщение #18


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Ещё немного модифицировал и упростил код. Во время отладки добавил строку

set logging $u $d $l $r #i

Лог

13:33:33 3 (s_fish.txt): 0 0 0 1 1
13:33:33 3 (s_fish.txt): 0 1 0 0 2
13:33:33 3 (s_fish.txt): 0 1 0 0 3
13:33:33 3 (s_fish.txt): 0 0 1 0 4
13:33:33 3 (s_fish.txt): 0 0 1 0 5
13:33:33 3 (s_fish.txt): 0 0 0 1 6
13:33:33 3 (s_fish.txt): 0 0 0 1 7
13:33:39 3 (s_fish.txt): 0 0--- 0 1 1
13:33:39 3 (s_fish.txt): 1 0 0 0 2
13:33:39 3 (s_fish.txt): 0 0 1 0 3
13:33:39 3 (s_fish.txt): 1 0 0 0 4
13:33:39 3 (s_fish.txt): 0 0 0 1 5
13:33:39 3 (s_fish.txt): 0 1 0 0 6
13:33:39 3 (s_fish.txt): 1 0 0 0 7
13:33:45 3 (s_fish.txt): 0--- 1 0 0 1
13:33:45 3 (s_fish.txt): 1 0 0 0 2
13:33:45 3 (s_fish.txt): 0 0 0 1 3
13:33:45 3 (s_fish.txt): 0 0 0--- 1 4
13:33:45 3 (s_fish.txt): 1 0 0 0 5
13:33:45 3 (s_fish.txt): 0 1 0 0 6
13:33:45 3 (s_fish.txt): 0 0 1 0 7


когда появляются эти "минуса" прога работает не правильно, а значит это присутствует в значении переменной. Ранее в таком случае выходило из цикла проверки цвета.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 10.1.2011, 15:09
Сообщение #19


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Непонятно почему так происходит, но обойти можно так:
Код
if $u <> 1
   $u = 0
end_if

и так для всех четырех переменных.

Или просто заменить блоки на:
Код
if $u = 1 // было $u > 0
   post {Up}
end_if


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Denker
сообщение 10.1.2011, 16:33
Сообщение #20


**

Neophyte
Сообщений: 46
Регистрация: 28.10.2010
Группа: Пользователи
Наличность: 0
Пользователь №: 13.148
Возраст: 30



Спасибо за совет, но к этому я уже сам пришёл. А описал ситуацию на случай, если кому-то не известна.
У меня конечный вариант этого блока выглядит так:

Код

if $u = 1
post {Up}
else
if $d = 1
post {Down}
else
if $l = 1
post {Left}
else
post {Right}
end_if
end_if
end_if


Знаю, что такая структура условия немного безграмотна, но в моём случае подходит лучше всего.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 24.4.2024, 13:09
Designed by Nickostyle