|
|
|
Новая Версия Uopilot v.2.32 (16.11.2012), Оффициальный сайт. Скачать. Последняя версия. |
|
|
xolost |
26.12.2012, 14:29
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Я молился что бы эта конструкция сработала: Код set $bmp .bmp set $path35 c:\images\ set %lvl[3] 2lvl set #lvl 3 for #i 1 2 set $vstupit findimage (#startX #startY #endX #endY ($path35%lvl[#lvl]#i$bmp) %crds50 2 100 -1) set logging $vstupit end_for
И она реально работает. Обратите внимание на это: %lvl[#lvl]#i - т.е. к названию файла ещё подставляется #i - т.е. от одного до двух. НО. В первый раз она почему-то выдала на втором параметре код -4. На сколько я понял, -4 означает что название файла не найдено. но последующие запуски такой ошибки не повторили... крайне странно! версия 2.31
|
|
|
|
xolost |
26.12.2012, 16:56
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(Санчес @ 26.12.2012, 16:58) мною замечены такие странности тоже,напишешь скрипт,в первый раз не работает,может и во второй не сработать,разные ошибки выдает,то синтаксис то еще че,но почему то с третьего раза срабатывает и потом работает норм,хотя ничего не меняю а просто запускаю скрипт снова..
Если ошибки в виде окон типа синтаксиса и прочего, то это вина логики вашего скрипта. Недавно писал о том, что присваиваемые данные нужно обязательно проверять, на то, что они существуют, и только тогда присваивать. Пример 1: Код set $test findimage (#startX #startY #endX #endY (c:\test.bmp) %crds 2 100 -1) if $test > 0 set #x %crds[1 1] + 5 set #y %crds[1 2] + 2 kleft #x, #y end_if
Обратите внимание, в этой конструкции говорится, что если тест найден, то только в этом случае, мы присвоим координаты и кликнем в них. Наверняка в Вашем скрипте где-то есть не закрытые места, где присваиваются эти данные, даже если не найдена картинка. А раз данных нету, по скольку не нашли картинку, то будет ошибка. Понимаете? Пример 2: Код :na4alo for #i 1 5 gosub na4alo end_for
Где-то вы уходите из цикла for через gosub, а уже где-то там не возвращаетесь к циклу через return, а идете заново проверять этот цикл фор, не вернувшись - в этом случае будет ошибка интерпретации фор. Старайтесь сразу возвращаться в for returnom, затем используйте break - прекращает текущий цикл(как в фор так и в вайле), а потом уже уходите по гото куда хотите. Пример - Код :na4alo return for #i 1 5 set logging ушли в начало gosub na4alo set logging вернулись и завершаем цикл принудительно break end_for set logging корректно завершили цикл end_script
Ну и т.д. Цитата(Zeleax @ 26.12.2012, 17:51) а почему на последней версии не тестируете?
Я уже где-то отвечал на этот вопрос. Пока боюсь новых ошибок. Хочу доотладить главный скрипт в 2.31, а потом уже смело переходить на 2.32 и в найденных ошибках винить версию 2.32)
|
|
|
|
Санчес |
27.12.2012, 5:31
|
Apprentice
Сообщений: 131
Регистрация: 18.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.578
Возраст: 31
|
Цитата xolost Спасибо за пояснение,в большинстве случаев так и есть,застревает на переменной если значение ей по каким то причинам не присвоено,очень спасает сетлоггинг,с ним все становится понятно,так что все идет в гору (IMG: style_emoticons/default/smile.gif)
|
|
|
|
DarkMaster |
29.12.2012, 20:19
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27737
Пользователь №: 11.279
|
Цитата set #r $total if #r < 1 теоретически несет в себе возможную ошибку присвоения строки числовой переменной. В последних версиях вроде финдколор и финдимидж стали возвращать только числовые значения ошибок, но раньше там мог быть текст. Лучше простое сравнение. Цитата repeat #r не вижу end_repeat Цитата goto 99 // konec ! метка 99 существует?
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Санчес |
29.12.2012, 20:36
|
Apprentice
Сообщений: 131
Регистрация: 18.12.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.578
Возраст: 31
|
существует и то и другое,ща выложу все действующие строки чтобы не было вопросов,а насчет set #r $total if #r < 1 все работает норм,просто скрипт немного решил переделать,в принципе где ошибка я понял,но из за нее скрипт останавливаться не должен,он просто должен делать не совсем то что нужно,но делать.. :start set $total findcolor ( #z,#y #p,#j 41 41 #color %x 2 ) set logging $total set #r $total set #y26 #y + 26 repeat #r set $total findcolor ( #z,#y #p,#j 41 41 #color %x 2 ) set logging $total set #r $total if #r < 1 // set #w #y + 41 // set #y26 #y + 26 goto 99 // konec ! end_if end_repeat goto start :99 закомментинные строки это те которые участвовали в скрипте до переделки,после нее они не нужны,но чтобы не забыть где они были я их не стираю. То есть в начальном виде скрипт работает безупречно,даже не ожидал,правда изредка выскакивает ошибка с памятью,пока не совсем понял причины,но заметил что она чаще выскакивает когда курсор проходит край окна пилота,может в этот момент какой то "лефт" срабатывает,короче это пока терпимо. Цитата . Лучше простое сравнение. Это как?Поясните пжалста.
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|