|
|
|
Ошибка get scripts |
|
|
nykep |
5.3.2019, 12:27
|
Apprentice
Сообщений: 233
Регистрация: 1.9.2012 Группа: Пользователи Наличность: 1195
Пользователь №: 15.246
Возраст: 25
|
вот два скрипта в которых было такое Код set #s4et 0 set timer1 0 set #milli 0 :start set timer 0 get scripts %a if (%a[1 3] = stoped) and (%a[3 3] = stoped) and (%a [4 3] = runing) while_not 1003, 893 7845095 and 896, 898 7845095 wait 50 if timer > 20000 goto checkscr end_if end_while :checkscr set timer 0 if #check.3 = 0 start_script 0 end_if end_if get scripts %a if (%a[1 3] = stoped) and (%a[3 3] = runing) while timer < 10000 wait 1s end_while get scripts %a if #loot.2 = 0 and (%a[1 3] = stoped) start_script 0 end_if end_if if timer1 > 600000 log проход дольше 10 минут stop_script 0 stop_script 1 stop_script 2 stop_script 3 wait 50 start_script 0 set timer1 0 end_if if 1003, 893 7845095 and 896, 898 7845095 set #count #count + 1 wait 5s set #mins div(timer1 60000) set #secs mod(div(timer1 1000) 60)
set #milli #milli + timer1 set #tmins div(#milli 60000) set #tsecs mod(div(#milli 1000) 60)
set #avesec (#milli / #count) set #avemins div(#avesec 60000) set #avesecs mod(div(#avesec 1000) 60)
hint (20 clRed 250 900 -1 -1 (ПРОХОЖДЕНИЙ #count; #mins мин #secs сек; всего #tmins мин #tsecs сек; сред. вр. #avemins мин #avesecs сек)) log ПРОХОЖДЕНИЙ #count; #mins мин #secs сек; всего #tmins мин #tsecs сек; сред. вр. #avemins мин #avesecs сек set timer1 0 end_if goto start Код set #rbox 0 set #check 0 set #tupex 0 :start set #exit findcolor (616, 200 988, 700 1 1 (2651609) %exit 2 3 0) //2577100 2580433 if #exit = 3 set #tupex #tupex + 1 if #tupex > 10 move 306, 500 wait 50 sendex qq wait 500 set #tupex 0 end_if hint (20 clRed 800 900 -1 -1 (STOP SCRIPTS EXIT)) stop_script 2 stop_script 0 sendex_up e kleft_up 960, 520 kleft_up 960, 520 move %exit [1 1], %exit [1 2] wait 50 left %exit [1 1], %exit [1 2] wait 1300 :town set #town findcolor (186, 68 1252, 598 1 1 (12759216) %town 2 2 0) //поиск названия выхода 14469320 if #town = 2 hint (20 clRed 800 900 -1 -1 (STOP SCRIPTS TOWN)) stop_script 0 stop_script 2 set #check 1 kleft_up 960, 520 wait 1s kleft_up 960, 520 wait 100 move %town [1 1], %town [1 2] wait 1s left_down %town [1 1], %town [1 2] wait 30 left_up %town [1 1], %town [1 2] set timer 0 while 80, 983 1840259 if timer > 4000 goto town end_if wait 200 end_while while 1003, 893 7845095 and 896, 898 7845095 wait 2s end_while if 739, 477 16711422 and 571, 300 16250871 start_script 1 stop_script end_if end_if goto start end_if goto start
|
|
|
|
cirus |
5.3.2019, 15:07
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26702
Пользователь №: 16.971
Возраст: 29
|
Цитата if (%a[1 3] = stoped) and (%a[3 3] = stoped) and (%a [4 3] = runing) Скобки не нужны. Хотя к ошибкам не приведёт. Попробуйте убрать выход по goto из циклов. Цитата while 80, 983 1840259 if timer > 4000 goto town end_if wait 200 end_while Тоже самое: Код set #flag 0 while 80, 983 1840259 if timer > 4000 set #flag 1 break end_if wait 200 end_while if #flag = 1 goto town end_if Цитата while_not 1003, 893 7845095 and 896, 898 7845095 wait 50 if timer > 20000 goto checkscr end_if end_while :checkscr
Тут вообще goto не имеет смысла, заменить на break.
|
|
|
|
xolost |
5.3.2019, 23:54
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(nykep @ 5.3.2019, 21:16) короче нефига не помогает, в нижнем скрипте кроме goto start в самом конце ничего не происходит когда выдает ошибку. Еще и ошибка get scripts опять появилась (IMG: style_emoticons/default/smile.gif) Попробую убрать все условия после get scripts оставлю только его, если будет ошибка опять значит ничего не поделаешь Во-первых, всегда есть что "поделать". Так что всё решаемо. Дам самый важный совет как поймать 99% ошибок: Делайте логи. Чем больше их будет, тем быстрее поймаете. По ним вы будете вычислять в каком месте ломается, а дальше дело техники. К примеру, лог перед первым goto, потом перед вторым и т.д. Когда выпадет ошибка, в логе посмотрите какой последний гото хотел выполниться, и до какого куска кода дело не доехало. Второй совет: В настройках поставьте "отображать ход выполнения скрипта", в этом случае, когда скрипт выдаст ошибку - курсор останется на строке, которая выдала ошибку. Тогда узнаете месте более чем точно. И вопрос: Цитата if #check.3 = 0 start_script 0 end_if Это что такое за точка? связано с луашкой? у меня например падает ошибка на такой переменной с точкой.
|
|
|
|
nykep |
6.3.2019, 0:45
|
Apprentice
Сообщений: 233
Регистрация: 1.9.2012 Группа: Пользователи Наличность: 1195
Пользователь №: 15.246
Возраст: 25
|
Код if #check.3 = 0 start_script 0 end_if это проверка переменной из скрипта номер 3, эта переменная как индикатор у меня если она равна нулю значит ход выполнения в данный момент вне условия, то есть по сути скрипт ничего не делает тока проверяет условие, когда условие выполнится скрипт присвоит ей значение 1 и начнет нажимать всякое, поэтому я так написал чтоб скрипт 0 не запускался если скрипт 3 начал что то делать. Я пока что убрал goto start совсем он там оказался не сильно нужен (IMG: style_emoticons/default/smile.gif) два часа работало без ошибок. На ночь оставлю посмотрю что будет. Хорошая конечно идея ставить логи как метки хода выполнения, однако как я уже писал в этом скрипте пока не выполняется условие все что происходит это проверка этого условия и goto start 500 раз в секунду:) не думаю что будет хорошо ставить туда пару логов (IMG: style_emoticons/default/smile.gif) А ход выполнения у меня отображается всегда. В случае этой ошибки он никак не помогает. Условия которые нужны чтоб скрипт дошел до goto exit и goto town могут выполнится только в самом конце карты когда он увидит выход, я думаю там не может быть совпадений в одном IF по 3 точкам и внутри него еще IF по двум точкам. Я видел как ошибка вылетает задолго до того как персонаж достигнет выхода, значит дело в goto start который лишь отправляет в начало чтоб не сбросить переменные, но выполняется он настолько часто что происходит глюк похоже.
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|