|  | 
	
	
	
	
	 |  Цикл for в цикле for |  |  |  
	
		| Naprasno | 
				  31.1.2019, 22:08 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(cirus @ 31.1.2019, 19:00)  Код set %rune[1] 1075168369 //set %rune[2] 1074830230 //
 set %rune[3] 1074843396 //
 set %rune[4] 1074000392 //
 set %rune[5] 1074801159 //
 set %rune[6] 1074920757 //
 set %rune[7] 1074525574 //
 set %rune[8] 1074633397 //
 set %image [1] mob13 // имя изображения
 set %image [2] mob1 // имя второго изображения
 set %image [3] mob14 // третьего
 
 log clear
 log mode compact
 
 for #i 1 size(%rune)  // цикл для всех рун
 log      %rune[#i]
 for #j 1 size(%image)  // цикл для всех мобов
 log %image[#j]
 end_for
 end_for
 end_script
Если поймёте принцип, то не составит проблем исправить ваш код.Кажется я понял. При полёте по рунам нужно прерывать цикл. Прошёл по одной, прервал, сделал что нужно и потом продолжил. Верно? Цитата(Naprasno @ 31.1.2019, 22:04)  Кажется я понял. При полёте по рунам нужно прерывать цикл. Прошёл по одной, прервал, сделал что нужно и потом продолжил. Верно?
 
 То что вы написали ещё круче. Спасибо. Почему то не пришло это в голову. С прерыванием Геморой. |  
		|  |  |  
	|  |  
	
		| Naprasno | 
				  1.2.2019, 9:27 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(Naprasno @ 31.1.2019, 22:08)  Кажется я понял. При полёте по рунам нужно прерывать цикл. Прошёл по одной, прервал, сделал что нужно и потом продолжил. Верно?
 То что вы написали ещё круче. Спасибо. Почему то не пришло это в голову. С прерыванием Геморой.
 
 А почему у меня вот здесь циклится на долго? У меня там всего 1 секунда есть на проверку имён. Почему он по кругу гоняет?  for #i 1 size(%rune)  // цикл для всех рун     log      %rune[#i]     set lasttargetid %rune[#i] send b wait 3000     for #j 1 size($path%image)  // цикл для всех мобов         log %image[#j]    set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp)  %arr 2)    if #d > 0           // если есть    wait 50    send f1    wait 100    move %arr[1 1] %arr[1 2]    wait 200    left %arr[1 1] %arr[1 2]  // кликнули    wait 1500    end_if    send \     if (lastmsg your target) or (lastmsg away from you) or (lastmsg you can't)         goto xogdenie         else wait 19000     end_if |  
		|  |  |  
	|  |  
	
		| FREEON | 
				  1.2.2019, 9:46 |  
		| 
 
      
 Journeyman
 Сообщений: 365
 Регистрация: 14.2.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.346
 Возраст: 25
 
 
 
  
 | Цитата(Naprasno @ 1.2.2019, 9:27)  А почему у меня вот здесь циклится на долго? У меня там всего 1 секунда есть на проверку имён. Почему он по кругу гоняет?
 
 for #i 1 size(%rune)  // цикл для всех рун
 log      %rune[#i]
 set lasttargetid %rune[#i]
 send b
 wait 3000
 for #j 1 size($path%image)  // цикл для всех мобов
 log %image[#j]
 set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp)  %arr 2)
 if #d > 0           // если есть
 wait 50
 send f1
 wait 100
 move %arr[1 1] %arr[1 2]
 wait 200
 left %arr[1 1] %arr[1 2]  // кликнули
 wait 1500
 end_if
 send \
 if (lastmsg your target) or (lastmsg away from you) or (lastmsg you can't)
 goto xogdenie
 else wait 19000
 end_if
 
 во первых у тебя нет в этом скрипте end_for конца цикла что не будет работать(да и собственно не дает представления о том где заканчивается цикл), а если смотреть скрипт выше и сопоставить с этим то у тебя в цикле wait 3000(ожидание по 3 секунды) что соответвено долго пока переберет весь массив из переменных есчо не понятно что за данные и для чего нужны? Код set %rune[1] 1075168369 //
 set %rune[2] 1074830230 //
 set %rune[3] 1074843396 //
 set %rune[4] 1074000392 //
 set %rune[5] 1074801159 //
 set %rune[6] 1074920757 //
 set %rune[7] 1074525574 //
 set %rune[8] 1074633397 //
Если это цвет в вашем скрипте он никак не используется... Код set %rune[1] 16710906
 set %rune[2] 6857136
 for #i 1 size(%rune)
 if color (1021, 188 ) = %rune[#i]  //определить цвет в координатах 1021, 188, если он равен одному из значений то выполнить действие
 log Цвет совпал  %rune[#i]               //показать сообщение
 end_if
 end_for
 end_script
 
Для улучшения ожидания лучше использовать цикл while Код while_not 329, 289 14386954 or 517, 834 8582073    // цикл будет ожидать пока не появился 1 из цветов или оба
 wait 100
 end_while
 log появился нужный цвет
 
 |  
		|  |  |  
	|  |  
	
		| Naprasno | 
				  1.2.2019, 11:05 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(FREEON @ 1.2.2019, 9:46)  во первых у тебя нет в этом скрипте end_for конца цикла что не будет работать(да и собственно не дает представления о том где заканчивается цикл), а если смотреть скрипт выше и сопоставить с этим то у тебя в цикле wait 3000(ожидание по 3 секунды) что соответвено долго пока переберет весь массив из переменных есчо не понятно что за данные и для чего нужны? Код set %rune[1] 1075168369 //
 set %rune[2] 1074830230 //
 set %rune[3] 1074843396 //
 set %rune[4] 1074000392 //
 set %rune[5] 1074801159 //
 set %rune[6] 1074920757 //
 set %rune[7] 1074525574 //
 set %rune[8] 1074633397 //
Если это цвет в вашем скрипте он никак не используется... Код set %rune[1] 16710906
 for #i 1 size(%rune)
 if color (1021, 188 ) = %rune[#i]  //определить цвет в координатах 1021, 188, если он равен одному из значений то выполнить действие
 log Цвет совпал  %rune[#i]               //показать сообщение
 end_if
 end_for
 end_script
 
Для улучшения ожидания лучше использовать цикл while Код while_not 329, 289 14386954 or 517, 834 8582073    // цикл будет ожидать пока не появился 1 из цветов или оба
 wait 100
 end_while
 log появился нужный цвет
 
Я кусок вырезал, поэтому там нет окончания. Это не цвета, а ID рун по покоторым летает чар. Летает всё норм. Задержка 3 секунды на рекол - время каста. Как раз подходит с моим пингом. Проблема здесь (правильно ли я понимаю, что по циклу фор он должен прогнать два раза (две картинки)?): "for #j 1 size($path%image)  // цикл для всех мобов log %image[#j]    set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp)  %arr 2)    if #d > 0           // если есть    wait 50    send f1    wait 100    move %arr[1 1] %arr[1 2]    wait 200    left %arr[1 1] %arr[1 2]  // кликнули    wait 1500    end_if :start    send \     if (lastmsg your target) or (lastmsg away from you)         goto xogdenie         else wait 19000     end_if     if (lastmsg your can't)         continue     end_if     end_for end_for" А он гоняет раз 20, когда не находит... А мне нужно чтобы он за секунду эти две картинки сравнил и продолжил главный цикл фор облёт по рунам...  Цитата(Naprasno @ 1.2.2019, 11:03)  Я кусок вырезал, поэтому там нет окончания. Это не цвета, а ID рун по покоторым летает чар. Летает всё норм. Задержка 3 секунды на рекол - время каста. Как раз подходит с моим пингом. Проблема здесь (правильно ли я понимаю, что по циклу фор он должен прогнать два раза (две картинки)?):
 "for #j 1 size($path%image)  // цикл для всех мобов
 log %image[#j]
 set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp)  %arr 2)
 if #d > 0           // если есть
 wait 50
 send f1
 wait 100
 move %arr[1 1] %arr[1 2]
 wait 200
 left %arr[1 1] %arr[1 2]  // кликнули
 wait 1500
 end_if
 :start
 send \
 if (lastmsg your target) or (lastmsg away from you)
 goto xogdenie
 else wait 19000
 end_if
 if (lastmsg your can't)
 continue
 end_if
 end_for
 end_for"
 
 А он гоняет раз 20, когда не находит... А мне нужно чтобы он за секунду эти две картинки сравнил и продолжил главный цикл фор облёт по рунам...
 
 while не подходит, т.к. этих мобов может и не быть на этом месте и он должен в этом случае дальше лететь... |  
		|  |  |  
	|  |  
	
		| Naprasno | 
				  1.2.2019, 13:03 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(cirus @ 1.2.2019, 12:32)  $path лишнее. Код for #j 1 size(%image) // цикл для всех мобовубрал и заработало как должно, но теперь не видит картинок. пилот похоже не может найти где эти картинки лежат... я через path прописывал папку вот так: set $path "C:\Users\Desktop\"      // путь к картинкам Цитата(FREEON @ 1.2.2019, 11:29)  интересные у вас условия...для чего они? Код if (lastmsg your target) or (lastmsg away from you)
 
 end_if
 if (lastmsg your can't)
 
 end_if
 
какой код находится в метках :start и метке :xogdenie? Возможно тут скрипт уходит в бесконечный циклусловия для того, чтобы можно было подойти к мобу, если он далеко или таргет перекрыт структурой...  старт - там начало таминга, он не зациклен и с ним всё норм.  хождение - это просто подходим к координатам которые нашли, если цель далека или перекрыта Цитата(cirus @ 31.1.2019, 19:00)  Код set %rune[1] 1075168369 //set %rune[2] 1074830230 //
 set %rune[3] 1074843396 //
 set %rune[4] 1074000392 //
 set %rune[5] 1074801159 //
 set %rune[6] 1074920757 //
 set %rune[7] 1074525574 //
 set %rune[8] 1074633397 //
 set %image [1] mob13 // имя изображения
 set %image [2] mob1 // имя второго изображения
 set %image [3] mob14 // третьего
 
 log clear
 log mode compact
 
 for #i 1 size(%rune)  // цикл для всех рун
 log      %rune[#i]
 for #j 1 size(%image)  // цикл для всех мобов
 log %image[#j]
 end_for
 end_for
 end_script
Если поймёте принцип, то не составит проблем исправить ваш код.наверное вот здесь можно прописать путь к картинке?  set %image [1] mob13 // имя изображения set %image [2] mob1 // имя второго изображения set %image [3] mob14 // третьего |  
		|  |  |  
	|  |  
	
		| Naprasno | 
				  1.2.2019, 13:29 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(Naprasno @ 1.2.2019, 13:03)  убрал и заработало как должно, но теперь не видит картинок. пилот похоже не может найти где эти картинки лежат... я через path прописывал папку вот так:
 set $path "C:\Users\Desktop\"      // путь к картинкам
 условия для того, чтобы можно было подойти к мобу, если он далеко или таргет перекрыт структурой...
 
 старт - там начало таминга, он не зациклен и с ним всё норм.
 
 хождение - это просто подходим к координатам которые нашли, если цель далека или перекрыта
 наверное вот здесь можно прописать путь к картинке?
 
 set %image [1] mob13 // имя изображения
 set %image [2] mob1 // имя второго изображения
 set %image [3] mob14 // третьего
 
 Прописал путь и теперь всё пашет супер.  Может знаете что за ошибка: 13:24:28 2 (autosaved_2.txt, 2): move - (2): Ошибка! Проверьте правильность скрипта! EConvertError '' is not a valid integer value move %arr[1 1] %arr[1 2] Где список ошибок посмотреть? |  
		|  |  |  
	|  |  
	
		| Naprasno | 
				  1.2.2019, 13:58 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(Naprasno @ 1.2.2019, 13:29)  Прописал путь и теперь всё пашет супер.
 Может знаете что за ошибка:
 13:24:28 2 (autosaved_2.txt, 2): move - (2): Ошибка! Проверьте правильность скрипта! EConvertError '' is not a valid integer value
 move %arr[1 1] %arr[1 2]
 Где список ошибок посмотреть?
 
 С этой разобрался. Я переменную не проверял на соответствие. Теперь вот такая: "end_for - (63): Немогу найти имя переменной for" "end_for - (64): Немогу найти имя переменной for" вот здесь: for #i 1 size(%rune)  // цикл для всех рун     log      %rune[#i]     set lasttargetid %rune[#i] send b wait 2500    for #j 1 size(%image)  // цикл для всех мобов    log %image[#j]    set #d findimage (0, 0 1021, 760 (%image[#j].bmp)  %arr 2)    if #d > 0           // если есть    wait 50    send f1    wait 100    move %arr[1 1] %arr[1 2]    wait 200    left %arr[1 1] %arr[1 2]  // кликнули    wait 1500    goto start    else continue    end_if    goto end :start    send \    wait 300     if (lastmsg your target) or (lastmsg away from you) or (lastmsg you can't)         goto xogdenie     end_if                     if (lastmsg this creature) or (lastmsg from the) or (lastmsg it seems)                     wait 1500                     send esc                     wait 500                     move %arr[1 1] %arr[1 2]                     wait 100                     double_left %arr[1 1] %arr[1 2]                     wait 1500                     send 4                     wait 3500                     send n                     wait 500                     drag 379, 188 398, 266 2                     wait 500                     drag 390, 289 330, 235 1                     wait 500                     end_if            if (lastmsg I always) or (lastmsg here) or (lastmsg I won't)                wait 19000            end_if :end     end_for end_for |  
		|  |  |  
	|  |  
	
		| FREEON | 
				  1.2.2019, 14:22 |  
		| 
 
      
 Journeyman
 Сообщений: 365
 Регистрация: 14.2.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.346
 Возраст: 25
 
 
 
  
 | Цитата(Naprasno @ 1.2.2019, 13:58)  С этой разобрался. Я переменную не проверял на соответствие. Теперь вот такая:
 "end_for - (63): Немогу найти имя переменной for"
 "end_for - (64): Немогу найти имя переменной for"
 
 вот здесь:
 for #i 1 size(%rune)  // цикл для всех рун
 log      %rune[#i]
 set lasttargetid %rune[#i]
 send b
 wait 2500
 for #j 1 size(%image)  // цикл для всех мобов
 log %image[#j]
 set #d findimage (0, 0 1021, 760 (%image[#j].bmp)  %arr 2)
 if #d > 0           // если есть
 wait 50
 send f1
 wait 100
 move %arr[1 1] %arr[1 2]
 wait 200
 left %arr[1 1] %arr[1 2]  // кликнули
 wait 1500
 goto start
 else continue
 end_if
 goto end
 :start
 send \
 wait 300
 if (lastmsg your target) or (lastmsg away from you) or (lastmsg you can't)
 goto xogdenie
 end_if
 if (lastmsg this creature) or (lastmsg from the) or (lastmsg it seems)
 wait 1500
 send esc
 wait 500
 move %arr[1 1] %arr[1 2]
 wait 100
 double_left %arr[1 1] %arr[1 2]
 wait 1500
 send 4
 wait 3500
 send n
 wait 500
 drag 379, 188 398, 266 2
 wait 500
 drag 390, 289 330, 235 1
 wait 500
 end_if
 if (lastmsg I always) or (lastmsg here) or (lastmsg I won't)
 wait 19000
 end_if
 :end
 end_for
 end_for
 
 Код Сообщение отредактировал FREEON - 1.2.2019, 14:34for #i 1 size(%rune)  // цикл для всех рун
 log      %rune[#i]
 set lasttargetid %rune[#i]
 send b
 wait 2500
 for #j 1 size(%image)  // цикл для всех мобов
 log %image[#j]
 set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp) %arr 2)
 if #d > 0 // если есть
 wait 50
 send f1
 wait 100
 set #x (%arr [1 1] + %arr [1 3]) / 2
 set #y (%arr [1 2] + %arr [1 4]) / 2
 kleft #x #y //навели мышь и кликнули
 wait 1500
 end_if
 goto start
 else
 continue
 end_if
 goto end
 :start
 send \
 wait 300
 if (lastmsg your target) or (lastmsg away from you) or (lastmsg you can't)
 goto xogdenie
 end_if
 if (lastmsg this creature) or (lastmsg from the) or (lastmsg it seems)
 wait 1500
 send {Esc} // код для клавиши {Esc}  иначе может писать e+s+c
 wait 500
 set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp) %arr 2)
 if #d > 0 // если есть
 set #x (%arr [1 1] + %arr [1 3]) / 2
 set #y (%arr [1 2] + %arr [1 4]) / 2
 move #x #y //навели
 wait 1500
 double_left #x #y //сделали двойной клик
 wait 1500
 end_if
 wait 100
 send 4
 wait 3500
 send n
 wait 500
 drag 379, 188 398, 266 2
 wait 500
 drag 390, 289 330, 235 1
 wait 500
 end_if
 if (lastmsg I always) or (lastmsg here) or (lastmsg I won't)
 wait 19000
 end_if
 :end
 end_for
 end_for
 |  
		|  |  |  
	|  |  
	
		| Naprasno | 
				  1.2.2019, 14:48 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(FREEON @ 1.2.2019, 14:22)  Код for #i 1 size(%rune)  // цикл для всех рун
 log      %rune[#i]
 set lasttargetid %rune[#i]
 send b
 wait 2500
 for #j 1 size(%image)  // цикл для всех мобов
 log %image[#j]
 set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp) %arr 2)
 if #d > 0 // если есть
 wait 50
 send f1
 wait 100
 set #x (%arr [1 1] + %arr [1 3]) / 2
 set #y (%arr [1 2] + %arr [1 4]) / 2
 kleft #x #y //навели мышь и кликнули
 wait 1500
 end_if
 goto start
 else
 continue
 end_if
 goto end
 :start
 send \
 wait 300
 if (lastmsg your target) or (lastmsg away from you) or (lastmsg you can't)
 goto xogdenie
 end_if
 if (lastmsg this creature) or (lastmsg from the) or (lastmsg it seems)
 wait 1500
 send {Esc} // код для клавиши {Esc}  иначе может писать e+s+c
 wait 500
 set #d findimage (0, 0 1021, 760 ($path%image[#j].bmp) %arr 2)
 if #d > 0 // если есть
 set #x (%arr [1 1] + %arr [1 3]) / 2
 set #y (%arr [1 2] + %arr [1 4]) / 2
 move #x #y //навели
 wait 1500
 double_left #x #y //сделали двойной клик
 wait 1500
 end_if
 wait 100
 send 4
 wait 3500
 send n
 wait 500
 drag 379, 188 398, 266 2
 wait 500
 drag 390, 289 330, 235 1
 wait 500
 end_if
 if (lastmsg I always) or (lastmsg here) or (lastmsg I won't)
 wait 19000
 end_if
 :end
 end_for
 end_for
Те мои ошибки из-за неправильной пунктуации? Не могу пока что проверить. |  
		|  |  |  
	|  |  
	
		| Naprasno | 
				  4.2.2019, 18:07 |  
		| 
 
   
 Neophyte
 Сообщений: 24
 Регистрация: 11.3.2017
 Группа: Пользователи
 Наличность: 0
 Пользователь №: 18.376
 Возраст: 30
 
 
 
  
 | Цитата(FREEON @ 1.2.2019, 15:22)  да, с фор такое бывает иногда не может найти конец блока(не видит дальше носа), и ошибка с  координатами move(и д.р.) так как не было привязки к изображению, первый цикл он проходит на ура а вот в последующие заходы может выбивать ошибку и к тому же разные if-ы. Строка move %arr[1 1] %arr[1 2]  и double_left %arr[1 1] %arr[1 2] никчему не привязывалась
 
 Огромное спасибо!  А есть ли в пилоте оператор, который ждёт определённого действия, последнего сообщения? Каждый раз разное время...  While у меня почему то дальше продолжает скрипт фигачить, а мне нужно чтобы ждал пока не закончится действие... |  
		|  |  |  
	|  |  
	1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0) Пользователей: 0  |  |