|
Упростить скрипт |
|
|
DarkMaster |
31.7.2013, 17:05
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата можно его как-то упростить разве что: set #rx 356 + random (3) set #ry 426 + random (3) set #rm 1 left #rx #ry будет выглядеть, как gosub, но только при условии, что результат будет перезаписываться каждый раз при новом входе в подпрограмму. Цитата будет ли он от этого работать быстрее слышал, что длинные скрипты работают медленнее, но объемы не те. Подпрограммы по идее чуть замедляют, но там такие цифры, что будешь наносекунды мерить, что лучше.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
veiron |
31.7.2013, 17:25
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 0 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(DarkMaster @ 31.7.2013, 17:05) разве что: set #rx 356 + random (3) set #ry 426 + random (3) set #rm 1 left #rx #ry будет выглядеть, как gosub, но только при условии, что результат будет перезаписываться каждый раз при новом входе в подпрограмму. слышал, что длинные скрипты работают медленнее, но объемы не те. Подпрограммы по идее чуть замедляют, но там такие цифры, что будешь наносекунды мерить, что лучше.
А есть ли смысл в gosub ставить, ведь если иф с цветом не найден и так ведь проскакивает быстро или нет ?
|
|
|
|
DarkMaster |
31.7.2013, 19:15
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Можно и фором. Но надо подумать есть ли смысл. Можно создать длиннющий массив с цветами и координатами, и фором подставлять их внутрь ифа. Более структурированно - да. Но с чем будет проще общаться при редактировании большой вопрос. Т.е. будет что-то вроде: Код set %a [ 1 1 ] x1 set %a [ 1 2 ] y1 set %a [ 1 3 ] c1 set %a [ 2 1 ] x2 set %a [ 2 2 ] y2 set %a [ 2 3 ] c2
for #i 1 size (%a) 1 if %a [ #i 1 ] %a [ #i 2 ] %a [ #i 3 ] set #tx 356 + random (3) set #ty 426 + random (3) set #tm 1 left #tx #ty end_if end_for
Тут сейчас еще пробежит Zeleax или Wkight и тыкнут котенка(меня) в то, как правильно объявлять массивы с новым функционалом, а я буду скромно смотреть в пол и объяснять, что больших массивов последнее время я не имел. Ну и учти этот блок переберет все эти циклы сразу. Т.е. адекватно вызывать все это кусками не получится. Можно менять границы for при входах, но это уже будет изврат. Имхо тогда лучше к gosub. Тут немного тяжело советовать, т.к. варианты реализации чуть разные и они не подойдут для всех случаев, а что именно происходит и каков должен быть результат я же не вижу. Ну или полный скрипт тогда надо. Сообщение отредактировал DarkMaster - 31.7.2013, 19:18
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
31.7.2013, 20:25
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Я так понимаю, надо сделать точки выхода с while имено так. Поскольку while спокойно прерывается по goto, то я бы просто сделал goto start, если это начало скрипта. Если это не начало скрипта, то можно все равно выйти по goto, но на мой взгляд это свинство кодинга и от этого надо отходить. В таком случае можно сделать простенькое условие: Код set #break 0
while 1 and #break = 0 left 1 1 end_while
while 1 and #break = 0 ..... if видим главную страницу set #break 1 end_if end_while
while 3 and #break = 0 left 3 3 end_while
кстати вот от этого можно уйти: Код if видим главную страницу set #break 1 end_if Можно просто присваивать значение #break из скрипта, контролирующего браузер. По факту как раз и получим управление из второй вкладки. Я понимаю, что ты бы хотел что-то вроде оператора break.1, но такого пока нет.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
veiron |
31.7.2013, 20:35
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 0 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(DarkMaster @ 31.7.2013, 20:25) кстати вот от этого можно уйти: Код if видим главную страницу set #break 1 end_if Можно просто присваивать значение #break из скрипта, контролирующего браузер. Я с каждого while по goto start выходил, только в игре столько багов, что из 10 строк while становится 30 . Только про присваивать значение из скрипта не понял. И еще вопрос, в игре появились новые мобы, которые как то странно через какое-то время меняют цвет, может 10 раз быть один, а потом уже другой. Не подскажете, если не ифом буду цвет брать, а сделаю поиск через FindImage это избавит от нераспознования мобов.
|
|
|
|
DarkMaster |
1.8.2013, 10:15
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Я с каждого while по goto start выходил, только в игре столько багов, что из 10 строк while становится 30 . Значит ты перешел на новую, правильную стадию скриптописания и стремишься к стабильности. Тут только поздравить могу и посочувствовать. Это самая большая беда для меня до сих пор. Компенсация всех багов у меня определяет до 80% кода... Цитата Не подскажете, если не ифом буду цвет брать, а сделаю поиск через FindImage это избавит от нераспознования мобов. Думаю да, если задать deviation. Ну либо просто найди диапазоны цветов и дальше сидеть на ифах ничего не переписывая. С финдимиджем пока поаккуратнее, утечки памяти все еще убивают пилот при его использовании. Если задача полной автономии или хотя бы на ночь оставлять, то лучше на ифах, если есть возможность. Самого очень сильно замучил этот момент. Цитата Только про присваивать значение из скрипта не понял. Код // Первый скрипт set #break 0
while 1 and #break = 0 left 1 1 end_while
while 1 and #break = 0 left 2 2 end_while
while 3 and #break = 0 left 3 3 end_while
// Второй скрипт
Вкладка 2 // проверяем не слетел или завис браузер while 413, 485 7226929 send f5 wait 10000 set #break.1 1 // УПРАВЛЕНИЕ ПЕРВЫМ СКРИПТОМ end_while
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
veiron |
1.8.2013, 18:28
|
Master
Сообщений: 1.264
Регистрация: 22.5.2012 Группа: Пользователи Наличность: 0 Из: Белоруссии
Пользователь №: 14.972
|
Цитата(DarkMaster @ 1.8.2013, 10:15) Компенсация всех багов у меня определяет до 80% кода...
А я думал, что только у меня так)) Цитата while 1 and #break = 0 set #break.1 1 // УПРАВЛЕНИЕ ПЕРВЫМ СКРИПТОМ
Спасибо, даже и не думал, что так можно сделать. Может еще натолкнете на мысль как выполнить. Есть к примеру точка с цветом 64, 435 12776696, эта точка периодически меняет цвета на другие. И вот иногда браузер, просто тупо виснет и окно браузера становится как будто его заскринили. Чем можно отследить, если цвет не меняется более 5 минут в данной точку, значит выполняем обновление браузера. Понимаю, что надо что то типо таймера сделать, а вот как это будет выглядит даже представить не могу.
|
|
|
|
WKnight |
2.8.2013, 13:49
|
Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006 Группа: Пользователи Наличность: 0
Пользователь №: 4.688
|
Цитата if ( 2838386 = #color ) and ( 2838386 = #color ) Зачем 2 раза одно и тоже проверять? Цитата set #timerAFK timer + 400000 // ВРЕМЯ ПРОСТОЯ Убери коментарий, вплоть до пробелов. Разбей строку на две. Сделай предварительный вывод в лог обоих переменных, чтоб их значения при ошибке проверить.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|