|
Нужна помощь с goto и gosub, Uopilot |
|
|
redn |
7.2.2025, 15:29
|

Registred
Сообщений: 3
Регистрация: 5.2.2025 Группа: Пользователи Наличность: 0
Пользователь №: 20.902
Возраст: 19

|
Добрый день ! Впервые пишу на форум, подскажите пожалуйста, возникает проблема в коде - есть две функции if, каждая из которых заканчивается на goto/gosub, при этом, вторая функция, через gosub, всегда успешно находит метку и переходит к ней, а первая не видит метки вне зависимости от её имени или типа функции (не находит ни через goto, ни через gosub), как это можно исправить ?
|
|
|
|
|
  |
Ответов(1 - 5)
redn |
8.2.2025, 4:03
|

Registred
Сообщений: 3
Регистрация: 5.2.2025 Группа: Пользователи Наличность: 0
Пользователь №: 20.902
Возраст: 19

|
Цитата(DarkMaster @ 7.2.2025, 18:30)  Дайте код. Без этого очень сложно. Так же я настоятельно рекомендую переходить на lua синтаксис. Оставаться на старом типа синтаксиса смысле не имеет. Активируется помещением --lua в нулевую строку скрипта.
Код set timer //установление таймера работы скрипта if 897, 762 12429463 //проверка наличия окна награды move_smooth 902, 795 left 902, 795 //закрытие окна награды end_if //проверка наличия окна награды move_smooth 203, 39 //get color #color 1182, 70 //msg #color if 203, 39 6381921 or 203, 39 14571307 or 203, 39 13107400 //проверка наличия второго слота в команде 305924 эпик 13107400 экзо 14571307 рар 33791 лег left 468, 66 //нажатие кнопки My Miscrits wait 1500 drag 787, 412 898, 633 //перенос второго слота в команде в инвентарь wait 1000 left 1266, 860 //нажатие кнопки Save end_if //проверка наличия второго слота в команде move_smooth 154, 63 if 157, 53 12434877 //проверка жив ли Мискрит move_smooth 1672, 81 left 1672, 81 //нажатие кнопки Heal wait 1000 end_if //проверка жив ли Мискрит set #x 962 + random(2) //#x 970//#x 974//#x 961 + random(3)//#x 927 + random(3)// set #y 489 + random(2) //#y 303//#y 373//#y 483 + random(3)// move_smooth #x #y left #x #y //нажатие на объект wait 8000 if 897, 762 12429463 //проверка наличия окна награды move_smooth 902, 795 left 902, 795 //закрытие окна награды end_if //проверка наличия окна награды if 930, 913 1627135 //проверка запуска боя else //повторное нажатие на объект wait 6000 move_smooth #x #y left #x #y //повторное нажатие на объект restart_script end_if //проверка запуска боя if 897, 762 12429463 //проверка наличия окна награды move_smooth 902, 795 left 902, 795 //закрытие окна награды restart_script end_if //проверка наличия окна награды set #x 672 + random(3) set #y 933 + random(3) if 1172, 22 6381921 and 1182, 70 19668 //проверка на Мискрита S+ ранга Обычной редкости move_smooth #x #y left #x #y //нажатие финалки 1 wait 8500 //move_smooth #x #y //left #x #y //нажатие финалки 2 left 877, 954 //нажатие второй дд-кнопки wait 8000 move_smooth 954, 142 left 954, 142 //нажатие кнопки Capture gosub sss wait 6000 end_if if 1172, 22 6381921 and 1181, 69 2634736 //проверка на Мискрита A+ ранга Обычной редкости move_smooth #x #y left #x #y //нажатие финалки 1 wait 8000 move_smooth #x #y //left #x #y //нажатие финалки 2 left 877, 954 //нажатие второй дд-кнопки wait 8500 left 954, 142 //нажатие кнопки Capture wait 6000 gosub capturecheck2 end_if if 1172, 22 6381921 //проверка на Мискрита Обычной редкости move_smooth #x #y left #x #y //нажатие финалки 1 wait 8500 move_smooth #x #y left #x #y //нажатие финалки 1 wait 8500 restart_script end_if move_smooth #x #y left #x #y //нажатие финалки 1 wait 8500 move_smooth #x #y left #x #y //нажатие финалки 2 wait 8000 //move_smooth 877, 954 //left 877, 954 //нажатие второй дд-кнопки //wait 8000 //move_smooth 877, 954 //left 877, 954 //нажатие второй дд-кнопки 2 //move_smooth 1426, 931 //left 1426, 931 //перелистывание меню способностей //wait 200 //move_smooth 1426, 931 //left 1426, 931 //перелистывание меню способностей //wait 8000 //move_smooth 877, 954 //left 877, 954 //нажатие второй дд-кнопки 3 //wait 8000 //move_smooth 1339, 926 //left 1339, 926 //нажатие слабейшей атаки //wait 8000 //move_smooth 1339, 926 //left 1339, 926 //нажатие слабейшей атаки //wait 8000 move_smooth 954, 142 left 954, 142 //нажатие кнопки Capture wait 6000 if 910, 536 867957 //проверка поимки Мискрита move_smooth 926, 584 left 926, 584 //нажатие кнопки Skip wait 4000 else //добивание не пойманного Мискрита wait 6000 move_smooth #x #y left #x #y //нажатие финалки 1 wait 8000 move_smooth #x #y left #x #y //нажатие финалки 2 end_if //проверка поимки Мискрита if 897, 762 12429463 //проверка наличия окна награды move_smooth 902, 795 left 902, 795 //закрытие окна награды end_if //проверка наличия окна награды wait 2000 move_smooth 1019, 598 //нажатие кнопки Keep left 1019, 598 //нажатие кнопки Keep if timer > 20000 //проверка времени работы скрипта restart_script else //добивание не пойманного Мискрита move_smooth #x #y left #x #y //добивание не пойманного Мискрита end_if //проверка времени работы скрипта end_script ///////////////////////////////////////////////////////////// :capturecheck2 if 910, 536 867957 //проверка поимки Мискрита move_smooth 926, 584 left 926, 584 //нажатие кнопки Skip wait 4000 else //добивание не пойманного Мискрита wait 6000 move_smooth #x #y left #x #y //нажатие финалки 1 wait 8000 move_smooth #x #y left #x #y //нажатие финалки 2 end_if //проверка поимки Мискрита if 897, 762 12429463 //проверка наличия окна награды move_smooth 902, 795 left 902, 795 //закрытие окна награды end_if //проверка наличия окна награды wait 2000 set #a findcolor (1014, 452 1048, 481 1 1 (255) %close 2 ) if #a > 1 //проверка красной скорости Мискрита move_smooth 1019, 598 //нажатие кнопки Keep left 1019, 598 //нажатие кнопки Keep restart_script end_if move_smooth 903, 595 left 903, 595 wait 800 move_smooth 1026, 600 left 1026, 600 wait 500 restart_script //////////////////////////////////////////////////////////////// :sss wait 6000 if 910, 536 867957 //проверка поимки Мискрита move_smooth 926, 584 left 926, 584 //нажатие кнопки Skip wait 4000 else //добивание не пойманного Мискрита wait 6000 move_smooth #x #y left #x #y //нажатие финалки 1 wait 8000 move_smooth #x #y left #x #y //нажатие финалки 2 end_if //проверка поимки Мискрита if 897, 762 12429463 //проверка наличия окна награды move_smooth 902, 795 left 902, 795 //закрытие окна награды end_if //проверка наличия окна награды wait 2000 move_smooth 1019, 598 //нажатие кнопки Keep left 1019, 598 //нажатие кнопки Keep if timer > 20000 //проверка времени работы скрипта restart_script else //добивание не пойманного Мискрита move_smooth #x #y left #x #y //добивание не пойманного Мискрита end_if //проверка времени работы скрипта end_script
Цитата(DarkMaster @ 7.2.2025, 18:30)  Дайте код. Без этого очень сложно. Так же я настоятельно рекомендую переходить на lua синтаксис. Оставаться на старом типа синтаксиса смысле не имеет. Активируется помещением --lua в нулевую строку скрипта.
Спасибо за рекомендацию ! А чем lua лучше ? На первый взгляд кажется, что это просто переписывание здорового кода на схожий язык ( Сообщение отредактировал DarkMaster - 8.2.2025, 7:52
|
|
|
|
redn |
8.2.2025, 16:39
|

Registred
Сообщений: 3
Регистрация: 5.2.2025 Группа: Пользователи Наличность: 0
Пользователь №: 20.902
Возраст: 19

|
Цитата(DarkMaster @ 8.2.2025, 9:58)  по коду gosub предполагает return. У вас нет ни одного.
Тем что это полноценный язык который шустрый, имеет кучу либ, и не имеет вагона багов и ограничений стандартного языка. Стандартный язык очень много дал и долго служил верой и правдой, но ему пора на покой.
Спасибо за ваш ответ ! Если правильно понял, согласно информации из открытых источников, gosub работает и при end_script, что подтверждается на практике, ведь вторая функция с gosub работала без сбоев. Первая, кстати, тоже начала работать, судя по всему, но при этом нужно было лишь стереть старые метки и ввести заново...Не понял, в чём была ошибка, но рад, что удалось ликвидировать )
|
|
|
|
DarkMaster |
8.2.2025, 16:50
|
          
Модератор UOPilot
Сообщений: 9.735
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29621
Пользователь №: 11.279

|
Цитата Первая, кстати, тоже начала работать, судя по всему, но при этом нужно было лишь стереть старые метки и ввести заново...Не понял, в чём была ошибка, но рад, что удалось ликвидировать ) вот это самая первая причина чтобы перейти на lua. Чтобы не гадать, что не так и куда копать.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|