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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Цикл for в цикле for
Naprasno
сообщение 31.1.2019, 16:06
Сообщение #1


**

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



Помогите, пожалуйста, с кодом. Мне нужно, чтобы чар летел по руне проверял по картинке определённых животных/монстров (3-5 видов) и если их нет, то летел по следующей. Не могу понять как реализовать цикл for в for?

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 //
:start0
set lasttargetid %rune[1] // вот здесь сначала перебирать через for но не смог...
send b
wait 3500
set $path "C:\Users\Desktop\" // путь к картинкам
set %image [1] mob13 // имя изображения
set %image [2] mob1 // имя второго изображения
set %image [3] mob14 // третьего
set #size size(%image) // всего картинок
for #i 1 #size 1
send esc // это алл неймс чтобы имена считать
set #d findimage (0, 0 1021, 760 ($path%image[#i].bmp) %arr 2)
if #d > 0 // если есть
wait 100
send f1 // кидаем таргет
wait 500
move %arr[1 1] %arr[1 2]
wait 500
left %arr[1 1] %arr[1 2] // кликнули
wait 1500
goto start
end_if
end_for

как после проверки всех трёх картинок перейти на следующую руну?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.1.2019, 19:00
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
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

Если поймёте принцип, то не составит проблем исправить ваш код.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 31.1.2019, 22:08
Сообщение #3


**

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) *

Кажется я понял. При полёте по рунам нужно прерывать цикл. Прошёл по одной, прервал, сделал что нужно и потом продолжил. Верно?


То что вы написали ещё круче. Спасибо. Почему то не пришло это в голову. С прерыванием Геморой.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 1.2.2019, 9:27
Сообщение #4


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.2.2019, 9:46
Сообщение #5


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 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 появился нужный цвет
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 1.2.2019, 11:05
Сообщение #6


**

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 не подходит, т.к. этих мобов может и не быть на этом месте и он должен в этом случае дальше лететь...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.2.2019, 11:29
Сообщение #7


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



интересные у вас условия...для чего они?
Код

if (lastmsg your target) or (lastmsg away from you)

end_if
if (lastmsg your can't)
    
end_if

какой код находится в метках :start и метке :xogdenie? Возможно тут скрипт уходит в бесконечный цикл

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.2.2019, 12:32
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
for #j 1 size($path%image) // цикл для всех мобов

$path лишнее.
Код
for #j 1 size(%image) // цикл для всех мобов
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 1.2.2019, 13:03
Сообщение #9


**

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 // третьего
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 1.2.2019, 13:29
Сообщение #10


**

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]
Где список ошибок посмотреть?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.2.2019, 13:47
Сообщение #11


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Может знаете что за ошибка:

Код надо выкладывать.
Это ошибка при обращении к пустому массиву.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.2.2019, 13:52
Сообщение #12


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(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]
Где список ошибок посмотреть?

Код

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
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 1.2.2019, 13:58
Сообщение #13


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.2.2019, 14:22
Сообщение #14


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 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

Код

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


Сообщение отредактировал FREEON - 1.2.2019, 14:34
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 1.2.2019, 14:48
Сообщение #15


**

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



Те мои ошибки из-за неправильной пунктуации? Не могу пока что проверить.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.2.2019, 14:53
Сообщение #16


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
else continue

В одной строке, должно быть 1 действие.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 1.2.2019, 15:22
Сообщение #17


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(Naprasno @ 1.2.2019, 14:48) *

Те мои ошибки из-за неправильной пунктуации? Не могу пока что проверить.

да, с фор такое бывает иногда не может найти конец блока(не видит дальше носа), и ошибка с координатами move(и д.р.) так как не было привязки к изображению, первый цикл он проходит на ура а вот в последующие заходы может выбивать ошибку и к тому же разные if-ы. Строка move %arr[1 1] %arr[1 2] и double_left %arr[1 1] %arr[1 2] никчему не привязывалась
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.2.2019, 10:16
Сообщение #18


***********

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



В целом я бы не рекомендовал использовать goto для выхода из циклов. Это не очень хорошо. Так же если используются подобные конструкции будте внимательны к версии пилота - в старых версиях подобные действия не поддерживались и приводили к ошибкам.


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


**

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 у меня почему то дальше продолжает скрипт фигачить, а мне нужно чтобы ждал пока не закончится действие...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.2.2019, 18:39
Сообщение #20


***********

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



Код
while lastmsg != "сообщение"
    wait 10
end_while

Не?


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

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

 

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