|
|
  |
Упростить скрипт |
|
|
| DarkMaster |
22.9.2013, 20:10
|
          
Модератор UOPilot
Сообщений: 9.766
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29997
Пользователь №: 11.279

|
Цитата Единственное, что плохо, что нельзя приоритет задать найденному, то есть нужен урон первыми ставим черепа, нужна манна 1 ставим красный шар. Все это можно задать. Ну раз вывод тебе не нужен, то я пошел тестить. Кстати будет не плохо, если ты выложишь еще пару скринов на всякий случай. Ну и вопрос на дальнейшее развитие. Вот мы нашли 3 изображения, которые можно собрать в линию. Как понять куда искать четверое изображение. Просто подумай, без кода, где будет находиться 4 изображение.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____ Контакт актуален, подпись актуальна.
|
|
|
|
|
|
| DarkMaster |
23.9.2013, 7:12
|
          
Модератор UOPilot
Сообщений: 9.766
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29997
Пользователь №: 11.279

|
Завел, работает. За #c в русской раскладке передаю пламенный привет. скрипт
Код set linedelay 0 log clear set #handleWin findwindow (Небеса: уникальная игра! - Игра - Mozilla Firefox) set #handleWin GetWindow (#handleWin CHILD) set #handleWin GetWindow (#handleWin CHILD) set #handleWin GetWindow (#handleWin CHILD) //set workwindow #handleWin // Координата левого верхнего изображения. // С точностью до пикселя. set #startOffsetX 853 set #startOffsetY 478 // Шаг сетки изображений. // С точностью до пикселя. set #cellOffsetX 41 set #cellOffsetY 41 // Изображения шариков set %image [ 1 ] 241626 // желтые set %image [ 2 ] 102946 // зеленые set %image [ 3 ] 721005 // красные set %image [ 4 ] 9882846 // черепа set %image [ 5 ] 5399404 // жизнь set #countImage size (%image) for #i 1 #countImage set $a findcolor ( #startOffsetX #startOffsetY 1145, 760 41 41 (%image[ #i ]) %arr 2 ) for #n 1 $a 1 set #fieldX ( %arr [ #n 1 ] - #startOffsetX ) / #cellOffsetX + 1 set #fieldY ( %arr [ #n 2 ] - #startOffsetY ) / #cellOffsetY + 1 set %field [ #fieldY #fieldX ] #i end_for end_for
log size (%field) !!! log %field [ 1 ]
/////////////////////////////////// for #xField 1 6 1 // Я хз какого размера у тебя поле. Предположим 10 на 10. for #yField 1 6 1 if #xField < 2 set #xStart 1 else set #xStart #xField - 1 end_if if #xField > 5 set #xEnd 6 else set #xEnd #xField + 1 end_if if #yField < 2 set #yStart 1 else set #yStart #yField - 1 end_if if #yField > 5 set #yEnd 6 else set #yEnd #yField + 1 end_if for #x #xStart #xEnd 1 for #y #yStart #yEnd 1 if %field [ #x #y ] = %field [ #xField #yField ] and ( #x != #xField or #y != #yField ) // log #x #y и #xField #yField set #xDelta #xField - #x set #yDelta #yField - #y set #vector 2 * (#xDelta) * (#yDelta) + 2 + ( abs(#xDelta)) gosub #vector set #n #n + 1 end_if end_for end_for end_for end_for log __________ log timer #n end_script
//10 //02 :5 if #xDelta = -1 set #thridImageX #xField set #thridImageY #yField else set #thridImageX #x set #thridImageY #y end_if set #f 0 if #thridImageX < 6 and #thridImageY != 1 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 1 Set %thridImage[#f 2] #thridImageY - 1 end_if if #thridImageX < 5 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 2 Set %thridImage[#f 2] #thridImageY end_if if #thridImageY < 5 set #f #f + 1 Set %thridImage[#f 1] #thridImageX Set %thridImage[#f 2] #thridImageY + 2 end_if if #thridImageX != 1 and #thridImageY < 6 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 1 Set %thridImage[#f 2] #thridImageY + 1 end_if for #c 1 #f 1 set #tmp1 %thridImage [ #c 1 ] set #tmp2 %thridImage [ #c 2 ] if %field [ #x #y ] = %field [ #tmp1 #tmp2 ] set %field3[ #c 1 ] #x set %field3[ #c 2 ] #y set %field3[ #c 3 ] #xField set %field3[ #c 4 ] #yField set %field3[ #c 5 ] %thridImage[ #c 1 ] set %field3[ #c 6 ] %thridImage[ #c 2 ] //log %field3[ #c 1 ] %field3[ #c 2 ] //log %field3[ #c 3 ] %field3[ #c 4 ] //log %field3[ #c 5 ] %field3[ #c 6 ] end_if end_for return
//01 //20 :1 if #xDelta = -1 set #thridImageX #xField set #thridImageY #yField else set #thridImageX #x set #thridImageY #y end_if set #f 0 if #thridImageX > 1 and #thridImageY > 1 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 1 Set %thridImage[#f 2] #thridImageY - 1 end_if if #thridImageX > 2 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 2 Set %thridImage[#f 2] #thridImageY end_if if #thridImageX < 6 and #thridImageY < 6 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 1 Set %thridImage[#f 2] #thridImageY + 1 end_if if #thridImageY < 5 set #f #f + 1 Set %thridImage[#f 1] #thridImageX Set %thridImage[#f 2] #thridImageY + 2 end_if for #c 1 #f 1 set #tmp1 %thridImage [ #c 1 ] set #tmp2 %thridImage [ #c 2 ] if %field [ #x #y ] = %field [ #tmp1 #tmp2 ] set %field3[ #c 1 ] #x set %field3[ #c 2 ] #y set %field3[ #c 3 ] #xField set %field3[ #c 4 ] #yField set %field3[ #c 5 ] %thridImage[ #c 1 ] set %field3[ #c 6 ] %thridImage[ #c 2 ] end_if end_for return
//12 //00 :2 if #yDelta = -1 set #thridImageX #xField set #thridImageY #yField else set #thridImageX #x set #thridImageY #y end_if set #f 0 if #thridImageX > 1 and #thridImageY > 1 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 1 Set %thridImage[#f 2] #thridImageY - 1 end_if if #thridImageX < 5 and #thridImageY > 1 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 2 Set %thridImage[#f 2] #thridImageY - 1 end_if if #thridImageX > 2 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 2 Set %thridImage[#f 2] #thridImageY end_if if #thridImageX < 4 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 3 Set %thridImage[#f 2] #thridImageY end_if if #thridImageX > 1 and #thridImageY < 6 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 1 Set %thridImage[#f 2] #thridImageY + 1 end_if if #thridImageX < 5 and #thridImageY < 6 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 2 Set %thridImage[#f 2] #thridImageY + 1 end_if for #c 1 #f 1 set #tmp1 %thridImage [ #c 1 ] set #tmp2 %thridImage [ #c 2 ] if %field [ #x #y ] = %field [ #tmp1 #tmp2 ] set %field3[ #c 1 ] #x set %field3[ #c 2 ] #y set %field3[ #c 3 ] #xField set %field3[ #c 4 ] #yField set %field3[ #c 5 ] %thridImage[ #c 1 ] set %field3[ #c 6 ] %thridImage[ #c 2 ] end_if end_for return
//10 //20 :3 if #xDelta = -1 set #thridImageX #xField set #thridImageY #yField else set #thridImageX #x set #thridImageY #y end_if set #f 0 if #thridImageY > 2 set #f #f + 1 Set %thridImage[#f 1] #thridImageX Set %thridImage[#f 2] #thridImageY - 2 end_if if #thridImageX > 1 and #thridImageY > 1 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 1 Set %thridImage[#f 2] #thridImageY - 1 end_if if #thridImageX < 6 and #thridImageY > 1 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 1 Set %thridImage[#f 2] #thridImageY - 1 end_if if #thridImageX > 1 and #thridImageY < 5 set #f #f + 1 Set %thridImage[#f 1] #thridImageX - 1 Set %thridImage[#f 2] #thridImageY + 2 end_if if #thridImageX < 6 and #thridImageY < 5 set #f #f + 1 Set %thridImage[#f 1] #thridImageX + 1 Set %thridImage[#f 2] #thridImageY + 2 end_if if #thridImageY < 4 set #f #f + 1 Set %thridImage[#f 1] #thridImageX Set %thridImage[#f 2] #thridImageY + 3 end_if for #c 1 #f 1 set #tmp1 %thridImage [ #c 1 ] set #tmp2 %thridImage [ #c 2 ] if %field [ #x #y ] = %field [ #tmp1 #tmp2 ] set %field3[ #c 1 ] #x set %field3[ #c 2 ] #y set %field3[ #c 3 ] #xField set %field3[ #c 4 ] #yField set %field3[ #c 5 ] %thridImage[ #c 1 ] set %field3[ #c 6 ] %thridImage[ #c 2 ] end_if end_for return Координаты только поправь под свои. И думай, как отличить, когда искать горизонтальную четверку, а когда вертикальную. Надо будет сравнивать координаты. Это кстати необходимо будет и для перемещения блока. Как надумаешь - получишь первую рабочую версию скрипта. Расчет занимает где-то 700мс. Сообщение отредактировал DarkMaster - 23.9.2013, 15:28
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____ Контакт актуален, подпись актуальна.
|
|
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|