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

> Цикл 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
сообщение 1.2.2019, 12:32
Сообщение #2


**********

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



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

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


**

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
Сообщение #4


**

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


**

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
Сообщение #6


*****

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

Код

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
Сообщение #7


**

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


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Naprasno
сообщение 4.2.2019, 18:07
Сообщение #9


**

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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Naprasno   Цикл for в цикле for   31.1.2019, 16:06
cirus   set %rune[1] 1075168369 // set %rune[2...   31.1.2019, 19:00
Naprasno   [code]set %rune[1] 1075168369 // set %run...   31.1.2019, 22:08
Naprasno   Кажется я понял. При полёте по рунам нужно прерыв...   1.2.2019, 9:27
FREEON   А почему у меня вот здесь циклится на долго? У ме...   1.2.2019, 9:46
Naprasno   во первых у тебя нет в этом скрипте end_for конца...   1.2.2019, 11:05
FREEON   интересные у вас условия...для чего они? if ...   1.2.2019, 11:29
FREEON   Прописал путь и теперь всё пашет супер. Может зн...   1.2.2019, 13:52
cirus   Код надо выкладывать. Это ошибка при обращении к ...   1.2.2019, 13:47
cirus   В одной строке, должно быть 1 действие.   1.2.2019, 14:53
DarkMaster   В целом я бы не рекомендовал использовать goto для...   2.2.2019, 10:16
DarkMaster   while lastmsg != "сообщение" wait 10 ...   4.2.2019, 18:39
Naprasno   while lastmsg != "сообщение" wait 10...   5.2.2019, 15:27


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

 

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