Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Новая Версия Uopilot v.2.32 (16.11.2012)

Автор: WKnight 16.11.2012, 15:49

Пожертвовать на дальнейшее развитие:
Изображение
Рубли: R849464451336
Гривны: U145931779718
Доллары: Z353114408274

Изображение
410011422550405


--v.2.32--
Полный вариант из хистори:

Поправил отображение иконки в трэе при запуске пилота.

Переделал меню настроек в формочку.

Добавил новые операторы в подсветку синтаксиса:
CharParam: fireresist
ColorAndCord: desktopheight, desktopwidth, monitor, monitorheight, monitorwidth, screenheight, screenwidth
Function: windowfrompoint
Macros: macro_send
Keyboard: send217
Array: init_arr
Proc: dir, dircreate, dirremove, errorlevel, execandwait, filecopy, filedelete, fileexists, filegetattr, filegetdate, filerename, filesetattr, filesetdate
Msg: log
Other: copy, delete, insert, posex, indexof.

Исправил ошибку в команде 'prompt', из-за которой все, что шло после пустых переменных игнорировалось.

Исправил ошибку повторного вызова команды 'prompt', после остановки скрипта с активным окном промпта.

Добавил логи для каждого скрипта отдельно. По достижении 1000 строк, обрезается до 500. Переключаются при переключении закладок скрипта (при активном главном логе 'M', переключения не происходит), или непосредственно в окне лога.
В связи с этим к команде 'set logging'добавились два параметра:
clear_current - очистить текущий персональный лог
save_current <path> - сохранить текущий персональный лог в указанный файл

Добавил задание диапазона цветов с помощью переменных в команде 'findcolor (725 48 813 123 1 1 (#color2a-#color2b) %Centr2 2)'

Добавил обработку паскалевских коментариев в стиле (* *). Строка должна начинаться с этих символов (пробелы игнорируются).

Исправил падение пилота при удалении закладок, выходе с работающими\остановленными скриптами, работе с процедурами.

Добавил в 'findcolor' погрешность оттенка. Указывается в %. Слегка изменился синтаксис команды.
пример: есть погрешность 3%. точка имеет цвет 100 120 130, 255*3%=7, соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.
Для учета погрешности оттенка, цвет должен быть указан в скобках, иначе погрешность будет проигнорирована.
'set $a FindColor (StartX StartY EndX EndY ShiftX ShiftY (RequiredColor) ResultArray [type [count [deviation]]] [abs])'.

Починил комбинации с шифтом, типа 'sendex ~{end}'.

Добавил немного информативности в таблицу горячих клавиш для скриптов.

Добавил хинт на иконке в трэе со списком запущенных скриптов. Но его длина ограничена 64 символами.

Слегка поправил указание задержки между строк из скрипта, с помощью переменной 'linedelay'. Приостановка скрипта с помощью кнопки 'Pause' больше не сбрасывает ее на значение по-умолчанию.

Добавил в 'prompt' возможность выводить не нажимающиеся строки (без чекбоксов) с помощью восклицательного знака в начале строки
'set #s prompt (!Test ! Passed)'

Исправил вероятную причину порчи файла настроек.

Добавил в 'prompt' возможность выводить свой заголовок с помощью восклицательного знака, указанного в начале первой строки.

Поправил отправку клавиш в конструкциях типа
set $fishing 10
sendex {F$fishing}

Сделал загрузку скриптов не по порядку, а по номерам, по которым они были при закрытии пилота.

Добавил отображение списка работающих скриптов в панели задач и заголовке окна пилота.

Добавил в 'get color' возможность искать цвет в перекрытых окнах, при указании хэндла подопытного окна. Слегка изменился синтаксис 'get color #color #x #y [handle] [abs]'. При указании сразу обоих необязательных параметров 'handle' и 'abs', точка с координатами '#x, #y' должна попадать в заданное окно, иначе цвет не будет определен и команда вернет ошибку.

Добавил несколько ненужных зарезервированных переменных 'mousepos_x', 'mousepos_y', 'mouseposabs_x', 'mouseposabs_y'.

Добавил функцию определения цвета на экране 'color (#x #y [handle] [abs])', по работе полностью идентична команде 'get color'.

Добавил вычисление функций в условных операторах.

Исправил указание цвета с помощью переменных в конструкциях типа 'set $a findcolor (4, 1 13, 38 1 1 (B(#i)) %watch 2)'.

Добавил несколько ненужных функций обработки вещественных чисел и строковых переменных. Десятичным разделителем считается запятая. Почти все функции при ошибках возвращают '-1'.
abs(x) - Возвращает абсолютную величину x.
round(x) - Возвращает x, округлённый до самого близкого целого числа.
floor(x) - Возвращает x округлённый до ближайшего целого числа, которое меньше x.
ceil(x) - Возвращает x округлённый до ближайшего целого числа, которое больше x.
frac(x) - Возвращает дробную часть x, то есть часть, стоящую позади десятичной точки.
sqrt(x) - Возвращает квадратный корень из абсолютного значения x.
power(x n) - Возвращает x в степени n.
exp(x) - Возвращает e в степени x.
ln(x) - Возвращает натуральный логарифм от x.
log(n x) - Возвращает логарифм от x по основанию n.
sin(x) - Возвращает синус x (в радианах).
cos(x) - Возвращает косинус x (в радианах).
tan(x) - Возвращает тангенс x (в радианах).
arcsin(x) - Возвращает арксинус x.
arccos(x) - Возвращает арккосинус x.
arctan(x) - Возвращает арктангенс x.
degtorad(x) - Преобразовывает градусы в радианы.
radtodeg(x) - Преобразовывает радианы в градусы.
trunc(x) - Отбрасывает дробную часть.
minx(val1 val2 val3 ...) - Возвращает минимальную из величин.
maxx(val1 val2 val3 ...) - Возвращает максимальную из величин.
mean(val1 val2 val3 ...) - Возвращает среднее арифметическое.
point_distance(x1 y1 x2 y2) - Возвращает расстояние между точкой (x1,y1) и (x2,y2).
point_direction(x1 y1 x2 y2) - Возвращает угол (в градусах) между осью X и вектором с началом в точке (x1,y1) и окончанием в точке (x2,y2).
lengthdir_x(len dir) - Возвращает горизонтальный x-катет вектора определённый указанной длиной и направлением.
lengthdir_y(len dir) - Возвращает вертикальный y-катет вектора определённый указанной длиной и направлением.
is_real(x) - Возвращает 1, если x число.
is_string(x) - Возвращает 1, если x является строкой (не число).
chr(val) - Возвращает символ с ASCI кодом val.
ord(str) - Возвращает ASCI код первого символа в строке str.
string_replace(str substr newstr [all]) - Возвращает строку str, в которой встречающаяся подстрока substr будет заменена на подстроку newstr.
string_count(substr str) - Возвращает число, показывающее, сколько раз подстрока substr встречается в строке str.
string_lower(str) - Возвращает строку str, записанную маленькими буквами.
string_upper(str) - Возвращает строку str, записанную большими буквами.
string_letters(str) - Возвращает строку str, выбрасывая из неё все числа.
string_digits(str) - Возвращает строку str, выбрасывая из неё все буквенные символы.
Pi - 3,1415926535897932385.

Добавил возможность ожидать завершения запущенного скрипта в команде 'start_script <number> [wait]'. Соответственно слегка изменился синтаксис.

Добавил возможность редактирования скрипта в режиме паузы.

Добавил растягивание по горизонтали таблицы отображения переменных (только последней).

Исправил непропечатывание некоторых символов в начале сообщения команды 'log'.

Добавил возможность запускать\при\останавливать скрипты по названиям (по именам файлов). Сначала ищем по номерам, если не нашли, то обрабатываем первый найденный по имени. Слегка изменился синтаксис.

Добавил горячую клавишу для запуска всех скриптов.

Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива.

Исправил ошибку присваивания переменных существующим, но не запущенным скриптам.

Исправил сползание переменных в таблице отображения переменных, при определенных условиях.

Мелкие визуальные исправления в редакторе хоткеев для скриптов.

Добавил горячую клавишу, позволяющую переключать отображение хода выполнения скрипта "ShowScriptProcessing".

Добавил отображение хендла окна к которому привязан активный скрипт, в правом нижнем углу окна скрипта.

Исправил ошибку при зажатии горячей клавиши запуска скрипта.

Добавил подсказку в скрипте по синтаксису введенной команды. Отображается тамже, где и имена файлов скриптов.

Исправил ошибку появления окна сохранения скрипта под окном пилота.

Добавил вывод в скобках значений переменных после их имен, для команды 'set logging commands'
set #a #a + #b * %arr [ 2 #c ] // set #a(5) #a(5) + #b(8) * %arr [ 2 #c(11) ]

Добавил возмозность выбрать способ вывода сообщений (команды 'msg', об ошибках итд). При выборе варианта 'Hint', почти все сообщения выводятся в виде всплывающей подсказки, вместо диалогового окошечка с кнопкой ОК. При возникновении ошибки, ранее прерывавшей выполнение скрипта, прервется выполнение текущей команды и скрипт продолждится со следующей строки. Третий вариант отличается от второго отсутствием всплывающей подсказки. Имеется также возможность все выводимые сообщения дублировать в лог.

Исправил инфинитный луп, при вычислении выражений, когда значением переменной являлось ее имя.

Подправил малость ошибку в вычислении пути к сохраняемому\загружаемому скрипту.

Добавил функцию вычисление дня недели 'dayofweek (Year Month Day)'.

Если скрипт прикрепили к другому окну, то немедленно (со следующей строки скрипта) будем работать на новое окно. Относится к старым командам типа 'if #x #y #color'.

Добавил несколько ненужных зарезервированных переменных обозначающих цвет: 'clAqua', 'clBlack', 'clBlue', 'clDkGray', 'clFuchsia', 'clGray', 'clGreen', 'clLime', 'clLtGray', 'clMaroon', 'clNavy', 'clOlive', 'clPurple', 'clRed', 'clSilver', 'clTeal', 'clWhite', 'clYellow'.

Добавил несколько зарезервированных переменных для игры UO, позволяющих изменять соответствующие параметры: 'ShowNames', 'Transparency', 'PathFinding', 'CriminalActions'.

Добавил функцию 'eval (some arguments)', собирает всё что в скобках в одну строку и подставляет вместо себя.
Аналогичная команда теперь тоже требует скобок.

В меню "Скрипт" добавил пункт "Запустить\остановить текущий скрипт".

Слегка увеличил и выделил кнопочку с "определенным" цветом на закладке 'Scripts'.

Добавил функции разложения цвета:
'colorToRed (color)' - возвращает значение красного канала указанного цвета
'colorToGreen (color)' - возвращает значение зеленого канала
'colorToBlue (color)' - возвращает значение синего канала
'colorToRGB (color %arr)' - разлаживает цвет на составляющие в первую строку указанного массива
'colorToRGB (color %arr[x])' - то-же, но в конкретную строку // %arr [ 1 1 ] R, %arr [ 1 2 ] G, %arr [ 1 3 ] B

Научил функцию 'minx' и 'maxx' искать минимум и соответственно максимум в массиве.
'minx (%arr [1])' - возвращает минимальное значение конкретной строки массива
'minx (%arr)' - возвращает минимальные значения всех столбцов массива в формате '1|2|3' (для присваивания массива пачкой), т.е. в первую строку нового массива.
То же самое про 'maxx', только наоборот.

Подправил отправку русского текста командой 'sendex'. При активной английской раскладке в пилоте, нифига не печаталось.

Добавил новые операторы в подсветку синтаксиса
Mouse: mousepos_x, mousepos_y, mouseposabs_x, mouseposabs_y
Function: abs, round, floor, ceil, frac, sqrt, power, exp, ln, sin, cos, tan, arcsin, arccos, arctan, degtorad, radtodeg, trunc, pi, minx, maxx, mean, mod, point_distance, point_direction, lengthdir_x, lengthdir_y, is_real, is_string, chr, ord, string_replace, string_count, string_lower, string_upper, string_letters, string_digits, dayofweek, eval
Other: iniwrite, iniread, regwrite, regread, write
ColorAndCord: claqua, clblack, clblue, cldkgray, clfuchsia, clgray, clgreen, cllime, clltgray, clmaroon, clnavy, clolive, clpurple, clred, clsilver, clteal, clwhite, clyellow, colortorgb, colortored, colortogreen, colortoblue
CharParam: shownames, transparency, pathfinding, criminalactions.

Добавил проверку на круглость скобок в команде 'init_arr'. Сообщение выводим, но выполнение не прерываем.

Исправил обязательное наличие пробела перед скобками в команде 'init_arr'.

Добавил вывод в скобках значения элемента массива после его имени, для команды 'set logging commands'.

Добавил вывод значения переменной после присваивания в команде 'set', при включенном 'set logging commands'. Выводится отдельной строкой.

Добавил функции для обрезки пробелов и служебных символов в строке 'ltrim (string)', 'rtrim (string)', 'trim (string)'.


http://uopilot.uokit.com/dl.php


Прикрепленные файлы
Прикрепленный файл  uopilot_232_frost.rar ( 683,93 килобайт ) Кол-во скачиваний: 5164

Автор: Zeleax 16.11.2012, 16:14

Ничего себе! Спасибо! smile.gif

Автор: DarkMaster 16.11.2012, 19:32

апдейт... кхм... хороший... дальше много не цензурных радостных выражений...

Цитата
point_direction(x1 y1 x2 y2) - Возвращает угол (в градусах) между осью X и вектором с началом в точке (x1,y1) и окончанием в точке (x2,y2).

менее недели назад изобретал велосипед... причем такими забавными способами...

Отдельное спасибо за большие буквы в начале строк и почти все знаки препинания). И особенно за точки в конце предложений.

Автор: -AL- 20.11.2012, 10:35

соглашусь с предыдущими ораторами : нигого себе ))
это теперь операции с плавающей точкой имеются ?
а какие минимальные и максимальные значения у движка ?

Автор: WKnight 20.11.2012, 11:51

Имеются функции работающие с плавающей точкой, но движок в 2,32 целочисленный, поэтому обработка результатов функций пока не очень удобна для пользователя. То-же сложение\вычитание пока затруднено.
Следующая версия в настоящий момент в стадии легкого тестирования после переделки с целочисленного на плавающий.
Тип будет Double, поддерживает приблизительно 15 цифр точности в диапазоне от 2.23 x 10**-308 до 1.79 x 10**308.

Автор: Zeleax 20.11.2012, 11:58

Цитата(WKnight @ 20.11.2012, 11:51) *

Следующая версия в настоящий момент в стадии легкого тестирования после переделки с целочисленного на плавающий.
Тип будет Double, поддерживает приблизительно 15 цифр точности в диапазоне от 2.23 x 10**-308 до 1.79 x 10**308.

Не будет проблем со ссылкой на переменные из других скриптов? Там ведь точка используется

Автор: DarkMaster 20.11.2012, 14:21

кстати почему-то думал, что оверлей реализован. Я что-то упустил или куда чего как?

Автор: WKnight 20.11.2012, 15:06

Небудет, потому как запятая. smile.gif


Не, не реализован еще, не могу понять как его просто выводить, обычно он вместо какогото цвета выводится. Видимо пример не удачный попался.

Автор: Zeleax 20.11.2012, 21:08

Цитата(WKnight @ 20.11.2012, 15:06) *

Небудет, потому как запятая. smile.gif

А может всё-таки получится точку без конфликтов прикрутить?
Запятая в вещественных числах в программировании нонсенс, имхо...

Автор: Microsoft 21.11.2012, 23:02

Скрипт на таминг, в 2.31 работает стабильно, 2.32 на строке

while_not (lastmsg skill) or (lastmsg beef) or (lastmsg broke) or (lastmsg can't) or (lastmsg hungry) or (lastmsg fail) or (lastmsg alredy) or (lastmsg away) or (lastmsg master) or (timer > 30000)

выдает ошибку

Изображение

Автор: DarkMaster 21.11.2012, 23:09

попробуйте проставить синтаксис:
while_not (lastmsg <= skill) or (lastmsg <= beef) or
ну и скобки бы я вплотную не лепил.

Автор: Microsoft 21.11.2012, 23:18

Так как вы предложили выдает Syntax Error (Exp1)

Автор: DarkMaster 21.11.2012, 23:26

о как. а если сделать выше
set $message lastmsg
и сравнивать как я предложил, но только уже с $message ?

кстати я бы так же рекомендовал заменить все фразы переменными. Особенно "can't". Использовать одинарную кавычку в сравнении - просить приключений.

Автор: Microsoft 21.11.2012, 23:28

Тогда прийдеться прописать в начало все нужные слова $. а $msg <= текст оно не поймет, только $ <= $
Похоже прийдется остаться на версии 2.31, а я так надеялся что наконец-то закончаться вылеты пилота smile.gif

Цитата
кстати я бы так же рекомендовал заменить все фразы переменными. Особенно "can't". Использовать одинарную кавычку в сравнении - просить приключений.


В 2.31 проблем ни с одним из скриптов в этом плане не замечал, все стабильно.

Автор: DarkMaster 21.11.2012, 23:48

Я вас понимаю. Я лишь предлагал вариант решения. У меня изначально везде в сравнениях переменные, чтобы не ловить потом сюрпризы. И вам на будующее рекомендую.

Автор: Zeleax 22.11.2012, 8:33

deviation в findcolor не работает
https://forum.uokit.com/index.php?s=&showtopic=22116&view=findpost&p=180616

Автор: Zeleax 22.11.2012, 12:53

Цитата
Смею предположить, почему
set $a findcolor (1157 65 1203 112 1 1 (16713215) %ResultArray 2 1 10)

не работает.
В данном случае R-255 G-5 B-255, когда система начинает считать -/+10%, а это примерно 25, то получается R(230-280) G(-20-30) B(230-280). А если я правильно начитался, то диапозон может быть только от 0-255, и когда система видет цифры типо 280 или (-20), то работает не корректно. Я пробовал задавать диапозон более 255 на работающем макросе, он сразу переставал работать корректно, всегда выдавал "0"

Автор: Anwalt 22.11.2012, 13:34

в новом пилоте заметил, что если копировать с ворда подготовленый скрипт, то выдает ошибку и не вставляет, а если с блокнота то все норм. Полазил в настройках, но ни чего по кодировкам не нашел, это у меня только так или можно как то переключить, что бы вставлять скрипт с ворда?

Автор: DarkMaster 22.11.2012, 13:42

тык
Изображение

это че? Нажимаешь - викдывает Access

Автор: Zeleax 22.11.2012, 13:53

Запускаем пилот, в заголовке жмем кнопку "развернуть" - видим левые поля и окошки )

Автор: DarkMaster 22.11.2012, 14:03

Изображение
Что-то мне подсказывает, что выглядеть это должно было не так. Может имеет смысл использовать уже отработанную таблицу:
действие клвиша1 клавиша2?
у нас будет:
название_скрипта start/stop pause
Должно быть и проще с реализацией без миллиона полей. Что-то вроде:
Изображение
Можно сделать еще третий столбец вкл/выкл, но нужно ли? Не нужно - удалил хоткей и все.

Автор: WKnight 22.11.2012, 14:06

Цитата
А может всё-таки получится точку без конфликтов прикрутить?

Согласен что некошерно, но именно с запятой возвращают встроенные дельфийские фуекции, ибо россия... Какой идиот придумал в россии запятую разделителем. Подумаю, может получится в точку переделать.

Автор: WKnight 22.11.2012, 14:20

Цитата
это че? Нажимаешь - викдывает Access

Убирал все лишние формочки, переделывал на рунтайм, это так сказать неучтенные остати smile.gif

Автор: WKnight 22.11.2012, 14:32

Цитата
Что-то мне подсказывает, что выглядеть это должно было не так

Оно и в предыдущих версиях съезжает при изменении размера шрифта, давно не проверял это дело.

Автор: DarkMaster 22.11.2012, 15:09

Изображение
Ну тут хотя бы кусок был виден. Сейчас сетка какая-то странная. Оставь ты 3 колонки: название, старт, пауза. Можно вообще вклдакой сделать отдельную форму, чтобы все нормально влазило.

Автор: WKnight 22.11.2012, 16:43

Включение выключение некощерно будет, оно и так там сечас глючит в текущей версии, а так есть крестик - включено, нету - сответственно. Подправить бы надо...

Автор: Бармалей 25.11.2012, 10:23

У меня постоянно вот такая ошибка вылазиет "access violation at address 00460fcc in module uopilot. Read of address 00000048" Она конечно не особо мешает жмешь ок и программа работает, но хотелось бы знать что это?

Автор: WKnight 25.11.2012, 11:00

Когда проводишь мышкой через нижнюю границу окна пилота? Пикселей на 20 уменьшь или увеличь размеры пилота, перестанет выскакивать. Долго выяснял почему...

Автор: Бармалей 25.11.2012, 11:59

Ага помогло спасибо

Автор: DarkMaster 26.11.2012, 5:24

Пауза скрипта(ручками), потыкать кода не изменяя, прокрутить, вызывает ошибки интерпретации for.

Автор: WKnight 26.11.2012, 12:13

Это вероятно связано с тем, что после паузы выполнение продолжается с той строки в которой стоит курсор.
Подумаем.

Автор: Microsoft 26.11.2012, 18:56

Теперь даже на простой строке if_not lastmsg water вылетает ошибка. Это полный абзац smile.gif

Автор: WKnight 27.11.2012, 13:17

Исправлено. Сломалось из-за функций в условиях, ластмсг вычислялось раньше чем задумано по приведенному синтаксису.

Автор: Microsoft 27.11.2012, 19:59

Но это уже следующую версию ждать?

Автор: WKnight 28.11.2012, 1:57

Дык...
Может получится багфикс сделать из 232, это проще чем в 233 отключать то что сейчас ковыряется.

Автор: DarkMaster 28.11.2012, 3:14

скрипт поставленный на паузу через pause_script не поддается редактированию.

Автор: DarkMaster 28.11.2012, 4:04

при переключении вкладок открываются верхние строки лога, приходится каждый раз мотать.

Автор: DarkMaster 28.11.2012, 19:21

хз как так вышло. Когда пришел увидел в логе:
end_repeat - Ошибка интерпретации скрипта (end_repeat).

Опять были проблемы с кодировкой при вставке лога на форум/аську и т.д. Используется CP1252, надо CP 1251.

Автор: DarkMaster 29.11.2012, 10:52

Сожрал 180 метров памяти и 1.2 гига фала подкачки. Findcolor/findimage НЕ использовались. Самое сомнительное, что использовалось - for, while, gosub из for, логи.

Автор: WKnight 29.11.2012, 15:09

фор, госуб - запись, в смысле структура интегер и строка, вайл вообще без дополнительных примочек, логи - обычный мемо, подчищается, чтоб содержал не белее 1000 строк.
Абсолютно не понятно. Мож массивы? они память с резервированием юзают, и просто так не освобождают.

кстати на форуме чето подковыряли, после того как я сделал нормальную вставку в пилот примеров кода. теперь как минимум много лишних переводов строк при копировании.

Автор: DarkMaster 29.11.2012, 16:16

массивы есть, но они полностью статичные. Используются только как списки, объявляются в шапке скрипта, в теле не изменяются.

По поводу форума баг не понял. Точнее не смог воспроизвести. Копировал из пилота на форум и с форума в пилот. Все копировалось корректно. Уточни в чем проблема, поговорю с Wap'ом.

Автор: WKnight 29.11.2012, 16:35

Лучше воспроизведи баг не с форумом, а со скриптом, оно полезней smile.gif
а с форума стало копироваться так

Код

DarkMaster


Сегодня, 13:16

Сообщение #41|







Модератор UOPilot
Сообщений: 2.394
Регистрация: 1.12.2008
Группа: Супермодераторы
Наличность: 8315
Пользователь №: 11.279

Предупреждения:
(0%)




массивы есть
Раньше было как минимум так
DarkMaster Сегодня, 13:16 Сообщение #41|

Было гораздо удобнее в 2до заносить smile.gif но это по сути не существенно.

Меня больше не это смущает, а "благодарность" за последнюю версию, хоть в ней и багов полно...

Автор: DarkMaster 29.11.2012, 16:53

Воспроизвести баг из скрипта на 600 несколько проблемотично, учитывая полную примитивность конструкций.

А почему не быть благодарными то? Получено очень много очень нужных фишичек. Или тебя огорчает отсутствтвие доната? Двусмысленные кавычки ты поставил)

Автор: Anwalt 30.11.2012, 4:04

Цитата(DarkMaster @ 22.11.2012, 11:42) *

тык
Изображение

это че? Нажимаешь - викдывает Access


как от этого избавиться и для чего оно? Выдает иногда ошибку и останавливает скрипт.

Автор: DarkMaster 30.11.2012, 4:09

Багфикса ждать. Это куски от разработки не убраны.

Автор: DarkMaster 30.11.2012, 7:31

Если в лог отправляется переменная после точки(не в плотную), то она выводится в виде имени. Скорее всего связано с тем, что лог пытается найти скрипт с индексом. Пример строки из лога:

Код
Загружена база логинов. Размер #sizeLogin

Автор: Zeleax 30.11.2012, 8:17

Цитата(WKnight @ 29.11.2012, 16:35) *

Меня больше не это смущает, а "благодарность" за последнюю версию, хоть в ней и багов полно...

Новая версия принесла множество полезных функций. Багов тоже хватает )
В любом случае это как глоток свежего воздуха и всё очень благодарны, но стеснены в эмоциях smile.gif
А вот если будет новая версия с новым предложенным мной функционалом findimage (задание картинки массивом точек) и подлатанными серьезными багами- с меня магар wink.gif

З.Ы.: а если бы благодарные пользователи пилота поднялись и перечислили хоть немного денег разработчику пилота - было бы совсем чудесно.

Автор: volshebnik 1.12.2012, 20:18

А можно узнать у разработчиков, какой алгоритм использует FindImage сейчас?
Я пишу сам себе подобное ПО, не адаптированное под UO, для личного пользования, интерес чисто профессиональный.

Автор: WKnight 2.12.2012, 3:50

Алгоритм, как ни странно, взят с этого форума, гдето пробегал в свое время. Выковыривать его из пилота сейчас нет ни времени ни желания, букаф там много...

Автор: Zeleax 3.12.2012, 0:11

Похоже баг в findcolor:
https://forum.uokit.com/index.php?s=&showtopic=22116&view=findpost&p=180627

Цитата(Andrei777 @ 22.11.2012, 13:40) *

Смею предположить, почему
set $a findcolor (1157 65 1203 112 1 1 (16713215) %ResultArray 2 1 10)

не работает.
В данном случае R-255 G-5 B-255, когда система начинает считать -/+10%, а это примерно 25, то получается R(230-280) G(-20-30) B(230-280). А если я правильно начитался, то диапозон может быть только от 0-255, и когда система видет цифры типо 280 или (-20), то работает не корректно. Я пробовал задавать диапозон более 255 на работающем макросе, он сразу переставал работать корректно, всегда выдавал "0"

Автор: WKnight 3.12.2012, 1:36

Уже исправлено. При задании диапазона вместо конечного значения портилось начальное. При копи\пасте пропустил пару буковок...

Автор: xolost 5.12.2012, 9:07

Ох едрёна кочерышка!!! сколько всего....
Половины даже не понял, о чем вообще речь)))

Цитата(WKnight @ 16.11.2012, 16:49) *

Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива.


Вот за это вообще отдельный мега респект!

А по-поводу пожертвований, лично я ещё пока не жертвовал, но обязательно пожертвую со временем.
А в целом, нужно вывести информацию про пожертвования куда-нибудь на видное место. Наверняка многие даже не знают об этом, и наверняка многие кто не выслал до сих пор, вышлют, если узнают.


ПЫ.СЫ.
Вчера узнал почему при клике на закладку со скриптом с вероятностью ~10% скрипт сам запускался.
Поднимите руки, у кого скрипты так же запускаются сами и он бесится от этого?)))

Так вот, на этой мелкой закладке есть 2 микро кнопочки "зеленая и красная" вот если на них попадать, то такое происходит))))
Казнить эти микро пикселы ! ! !
Зачем они? удобства я не понял в них...

Автор: Zeleax 5.12.2012, 10:44

Цитата(xolost @ 5.12.2012, 10:07) *
Так вот, на этой мелкой закладке есть 2 микро кнопочки "зеленая и красная" вот если на них попадать, то такое происходит))))
Казнить эти микро пикселы ! ! !
Зачем они? удобства я не понял в них...

Помочь разработчику (WKnight) обязательно нужно! Еще бы это все понимали. Такая уж у нас страна- любят все халяву. Обидно, что даже для своих жадничают...

А насчет микрокнопочек - так снимите галку в настройках "Показывать кнопки запуска/остановки скриптов"

Автор: xolost 5.12.2012, 11:02

Цитата(Zeleax @ 5.12.2012, 11:44) *

насчет микрокнопочек - так снимите галку в настройках "Показывать кнопки запуска/остановки скриптов"

Ааааа, Семен Семеныч....
спасибо)

Автор: brn 6.12.2012, 16:19

Яндекс и Мани хорошо, а кошель в киви реганите если не составит труда особого

Автор: DarkMaster 7.12.2012, 10:18

Не смог заставить работать string_replace. Можно привести рабочий пример?

Автор: Zeleax 7.12.2012, 11:44

Цитата(DarkMaster @ 7.12.2012, 11:18) *

Не смог заставить работать string_replace. Можно привести рабочий пример?

да, не работает...
Код
set $s Маша мыла раму
set $f string_replace ( $s мы би )
msg $f
end_script

Автор: WKnight 7.12.2012, 12:00

Ага, бага есть, пробелы в строках не любит. Если без нелегальных символов строки, то нормально работает. Подправим.

Автор: xolost 18.12.2012, 23:38

Абсолютно точно то, что есть утечки.
Пока не знаю где.
Но мой скрипт что в 2.31, что в 2.32 наедает за 20-30 минут 2 гб оперативки и привет прекращение корректной работы findimage, а затем 3315.
И что удивительно, остановка скрипта не сбрасывает наевшую память. Запускаю снова скрипт, память продолжает расти с оставшегося кол-ва после остановки.

Автор: DarkMaster 19.12.2012, 0:57

Очень большая просьба к вам. Максимально уменьшите скрипт с сохранением утечки. Так же приложите скриншот(ы) и изображения для необходимой эмуляции работы скрипта. Чем меньше будет скрипт, тем быстрее и с большим шансом будет найдена причина. За этим багом уже бегаем очень давно, не можем поймать.

Автор: xolost 19.12.2012, 1:34

ааааааааааааааааа, нашееееееееееел!!!!!!!! фантастика!!!!!!!! расскажу - не поверите.

Хотите набрать пилоту за пару секунд 2 гб всего одной командой?))
я научу))

Пишем в скрипте:
set $test1 findimage (0 0 1600 900 (c:\images\test1.bmp) %crds 2 100 -1)
wait 1000 // обязательно добавьте задержку, а то комп взорвется))

Путь и координаты для поиска можно указать любое, но чем больше диапазон поиска, тем сильнее набегает память.

А теперь самое вкусноеsmile.gif)
Берем картинку, например test1.bmp как указано в скрипте.
картинка, например 20 на 10
используем например 3 цвета - 1 фон, второй и третий цвет.

Если от 0 до 19 по иксу и от 0 до 9 по игрику(как в пейнте), то

первый - фон - любой цвет
второй - любой возьмите цвет, отличный от фона и закрасьте пикселы:
[7 0] [7 1] [7 2] [4 3]
третий - ВАЖНЕЙШЕЕ УСЛОВИЕ - нулевой цвет! т.е. черный, именно под номером 0(это самый черный).
закрашиваем им [12 6] [13 6] [14 6]
всё! можно приязывать к любому окну, можно не привязывать вообще, открывайте диспетчер задач и наслаждайтесь!
Если рисовать картинку совсем лениво - качайте - http://zalil.ru/34088314
приятного взрыва!

Цитата(DarkMaster @ 19.12.2012, 1:57) *

Очень большая просьба к вам. Максимально уменьшите скрипт с сохранением утечки. Так же приложите скриншот(ы) и изображения для необходимой эмуляции работы скрипта. Чем меньше будет скрипт, тем быстрее и с большим шансом будет найдена причина. За этим багом уже бегаем очень давно, не можем поймать.

Я уже стал рыцарем-джедаем, учитель?

Автор: WKnight 19.12.2012, 12:31

Нет, рыцарь я, ты просто джедай smile.gif

Автор: xolost 19.12.2012, 14:17

Цитата(WKnight @ 19.12.2012, 13:31) *

Нет, рыцарь я, ты просто джедай smile.gif

А это да, простите Рыцарь)
Просто джедай тоже сойдет)

Автор: DarkMaster 19.12.2012, 15:15

Кстати есть подозрение что из-за этих косяков не работал финдимидж в перекрытых окнах.

Автор: WKnight 20.12.2012, 12:11

Запустил. Пилот честно загреб 2 гига.
Закрыл.
Запустил под отладчиком. Работает как часы, 10 метров +-.
Запустил без отладчика. Работает как часы.
Перезагрузил комп. Работает...
Больше добиться 2х гигового эфекта для анализа не получается...
Мелкий момент выяснить конечно удалось за время первого запуска, но этого очень мало...

Автор: xolost 20.12.2012, 12:15

Цитата(WKnight @ 20.12.2012, 13:11) *

Запустил. Пилот честно загреб 2 гига.
Закрыл.
Запустил под отладчиком. Работает как часы, 10 метров +-.
Запустил без отладчика. Работает как часы.
Перезагрузил комп. Работает...
Больше добиться 2х гигового эфекта для анализа не получается...
Мелкий момент выяснить конечно удалось за время первого запуска, но этого очень мало...


Печально.
Пробуй добавить один пиксел черный(нулевой) , потом добавить второй - потом убрать 3, потом убрать 4. Т.е. просто играйся по плюс минус один черный пиксел - и важно, что бы он был в одну строчку. Когда я добавлял чуть выше или ниже, то переставало баговать.
Там крайне странные зависимости.

Автор: DarkMaster 21.12.2012, 13:48

set #result setwindowtext (#handle $windowName)
не воспринимает массив в качестве #handle

Автор: Zeleax 21.12.2012, 13:58

Цитата(DarkMaster @ 21.12.2012, 14:48) *

set #result setwindowtext (#handle $windowName)
не воспринимает массив в качестве #handle

В смысле- вместо #handle нельзя подставить элемент массива?

Автор: DarkMaster 21.12.2012, 14:02

set $windowName %account [ #windowN 1 ] $formatedTime
set #handle %clientHandle [ #windowN ]
set #result setwindowtext (#handle $windowName)
работает
set $windowName %account [ #windowN 1 ] $formatedTime
set #result setwindowtext ( %clientHandle [ #windowN ] $windowName)
не работает

Автор: DarkMaster 21.12.2012, 16:13

Новая версия не намечается? Замучился писать в 2,32, потом портировать в 2,17. Сейчас нужен send_down, а в 2,17 его нет, запускать два пилота и как-то слеплять их вместе это уже перебор.

Автор: xolost 21.12.2012, 16:18

Цитата(DarkMaster @ 21.12.2012, 17:13) *

Новая версия не намечается? Замучился писать в 2,32, потом портировать в 2,17. Сейчас нужен send_down, а в 2,17 его нет, запускать два пилота и как-то слеплять их вместе это уже перебор.


Но обязательно с исправленным финдимдежом) 2 ошибки..
А то грустно, вчера 2 часа бился пытаясь заставить работать квесты минуя эти баги...

Автор: WKnight 21.12.2012, 16:22

Она давно намечается, но как я понял, точно не в этом году, завалили работой, как обычно под конец года. Плюс к этому я расковырял пилота, а обратно собрать некогда. Ну и еще один довольно неприятный момент, о котором ты вкурсе...

Кстати финдимидж еще откладывает выпуск новой версии, опятьже некогда ковырять...

Автор: Санчес 22.12.2012, 16:12

colorToRGB Неопознанная команда.Что сделать чтобы работала?

Автор: WKnight 22.12.2012, 16:59

Это функция. Она возвращает значение.

Автор: Zeleax 22.12.2012, 17:08

Цитата(WKnight @ 22.12.2012, 17:59) *

Это функция. Она возвращает значение.

а как ей пользоваться? у меня тоже не работает

Автор: Санчес 22.12.2012, 19:04

Цитата
а как ей пользоваться? у меня тоже не работает


Да ладно!Неужели есть еще кроме меня люди(модераторы) которые не всегда понимают ответы типа "Это функция. Она возвращает значение." Удивлен весьма smile.gif

Автор: Destruction 22.12.2012, 19:57

Цитата(Санчес @ 22.12.2012, 20:04) *

Да ладно!Неужели есть еще кроме меня люди(модераторы) которые не всегда понимают ответы типа "Это функция. Она возвращает значение." Удивлен весьма smile.gif

Штука в том что ответ-то понятен, но функция действительно не работает..)

Всегда возвращает пустую строку, или минус единицу, при неправильных аргументах.

Автор: WKnight 23.12.2012, 2:51

Цитата
Всегда возвращает пустую строку, или минус единицу, при неправильных аргументах.

С этого и надо было начинать.
А по первому вопросу мой ответ более чем точен.

set $s colorToRGB (12642802 %arr)
set delimiter ' '
log $s : %arr[1]

Или типа такого
if $s = -1
log error
else
log %arr[1]
end_if

Автор: Zeleax 23.12.2012, 13:04

добавил описание на UOWiki
http://uopilot.tati.pro/index.php?title=ColorToRGB

Автор: DarkMaster 23.12.2012, 13:34

#цвет - числовое значение 24-битного цвета, который нужно разложить на каналы RGB

а почему 24 бита то? У нас же ргб нормально работает в диапазоне 0-255 - 32 бита может все-таки?

Автор: Zeleax 23.12.2012, 14:01

Цитата(DarkMaster @ 23.12.2012, 14:34) *

#цвет - числовое значение 24-битного цвета, который нужно разложить на каналы RGB
а почему 24 бита то? У нас же ргб нормально работает в диапазоне 0-255 - 32 бита может все-таки?

RGB - 3*8 бит, еще 8 бит - прозрачность. Насчет прозрачности не проверял

Автор: WKnight 23.12.2012, 16:33

Анализируются только младшие 3 байта, остальное игнорится. Т.е. по сути 24-32 неважно.

Автор: Санчес 23.12.2012, 22:24

Любопытная штука,если переключение языка ввода поставить левый алт + правый шифт то пилот частенько виснет и не лечится ни чем кроме как "снять задачу" при комбинации же контрол+шифт ни разу не замечал...по моему есть какая то связь.Возможно об этом было написано уже,тогда сорри smile.gif

Автор: Zeleax 23.12.2012, 22:34

Цитата(Санчес @ 23.12.2012, 23:24) *

Любопытная штука,если переключение языка ввода поставить левый алт + правый шифт то пилот частенько виснет и не лечится ни чем кроме как "снять задачу" при комбинации же контрол+шифт ни разу не замечал...по моему есть какая то связь.Возможно об этом было написано уже,тогда сорри smile.gif

Такого не замечали раньше, вроде. Да и комбинация редкая для переключения- первый раз встречаю.

Автор: Санчес 24.12.2012, 2:21

Комбинация левый алт + правый шифт стоит по умолчанию после установки ХРюши,второй вариант на выбор это контрол +шифт.Я уверен почти на сто процентов что она как то влияет потому что как только переставил на контрол+шифт,виснуть перестал.Может гдето в горяих клавишах пилота по умолчанию стоит эта комбинация и конфликтует,но у меня горячие клавиши отключены,только две работают Ф3 стартует/стопарит скрипт и Ф4 останавливает все скрипты.

Автор: xolost 26.12.2012, 14:29

Я молился что бы эта конструкция сработала:

Код

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

Автор: DarkMaster 26.12.2012, 15:57

Советую так не делать. Сделай чуть выше присвоение тестовой переменной и не насилуй функцию. Повышается читаемость, гибкость, стабильность. Цена: лишняя строчка.

Автор: Санчес 26.12.2012, 15:58

мною замечены такие странности тоже,напишешь скрипт,в первый раз не работает,может и во второй не сработать,разные ошибки выдает,то синтаксис то еще че,но почему то с третьего раза срабатывает и потом работает норм,хотя ничего не меняю а просто запускаю скрипт снова..

Автор: xolost 26.12.2012, 16:44

Цитата(DarkMaster @ 26.12.2012, 16:57) *

Советую так не делать. Сделай чуть выше присвоение тестовой переменной и не насилуй функцию. Повышается читаемость, гибкость, стабильность. Цена: лишняя строчка.

да, я помню об этом и так делаю периодически. Но хочется же выжимать максимум, смотреть на сколько подобная конструкция без временной переменной может быть надежной и вообще, в этом ли причина. Ведь может причина совсем в другом. Поэтому, хочу словить такую ошибку в двух вариантах.

Автор: Zeleax 26.12.2012, 16:51

Цитата
крайне странно!
версия 2.31

а почему на последней версии не тестируете?

Автор: xolost 26.12.2012, 16:56

Цитата(Санчес @ 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)

Автор: Zeleax 26.12.2012, 21:11

баг с параметром all:

Код
set $a 1.800.900
set $b ""
set $c "."
set $s string_replace ($a $b $c all )
msg $s // 1all800.900
end_script


не работает
Код
 set $s string_replace ( мама да ма )
msg $s
end_script

Автор: Санчес 27.12.2012, 5:31

Цитата
xolost

Спасибо за пояснение,в большинстве случаев так и есть,застревает на переменной если значение ей по каким то причинам не присвоено,очень спасает сетлоггинг,с ним все становится понятно,так что все идет в гору smile.gif

Автор: Санчес 29.12.2012, 19:32

Скажите пожалуйста кто нибудь что это такое "Ошибка выполнения скрипта 3315" и где искать причину?

Автор: DarkMaster 29.12.2012, 19:37

Неплохо бы увидеть код.

Автор: Санчес 29.12.2012, 20:01

Я не совсем понимаю какой код,эта ошибка вылезает наталкиваясь на файндколор но не регулярно а как получится,в логе ничего не фиксируется,просто под окном пилота выскакивает эта надпись на желтом фоне и скрипт останавливается.


вот кусок скрипта на котором он застревает,на втором файндколоре
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

Автор: DarkMaster 29.12.2012, 20:19

Цитата
set #r $total
if #r < 1

теоретически несет в себе возможную ошибку присвоения строки числовой переменной. В последних версиях вроде финдколор и финдимидж стали возвращать только числовые значения ошибок, но раньше там мог быть текст. Лучше простое сравнение.
Цитата
repeat #r

не вижу end_repeat
Цитата
goto 99 // konec !

метка 99 существует?

Автор: Санчес 29.12.2012, 20:36

существует и то и другое,ща выложу все действующие строки чтобы не было вопросов,а насчет
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

закомментинные строки это те которые участвовали в скрипте до переделки,после нее они не нужны,но чтобы не забыть где они были я их не стираю.
То есть в начальном виде скрипт работает безупречно,даже не ожидал,правда изредка выскакивает ошибка с памятью,пока не совсем понял причины,но заметил что она чаще выскакивает когда курсор проходит край окна пилота,может в этот момент какой то "лефт" срабатывает,короче это пока терпимо.


Цитата
. Лучше простое сравнение.

Это как?Поясните пжалста.

Автор: DarkMaster 29.12.2012, 20:54

Цитата
. Лучше простое сравнение.

Это как?Поясните пжалста.

if $a > 0

Так скрипт заработал или нет?

Автор: Санчес 29.12.2012, 21:39

не заработал,все та же ошибка скрипта,пока не могу понять почему,мне просто хотелось бы знать значение ее,тогда проще было бы найти причину.Где то есть описание ошибок?Или эта цифра от винта??

Автор: DarkMaster 29.12.2012, 21:51

https://forum.uokit.com/index.php?s=&showtopic=24880&view=findpost&p=179393

Автор: Санчес 29.12.2012, 23:42

это я уже читал,понятно,попробую разобраться.

Автор: xolost 6.1.2013, 10:04

Баги с логами.

Код
set %abil_ataka[1 6] test
set #abil_ataka 1
set logging нашли абилку %abil_ataka[#abil_ataka 6] - кастуем

вместо слова "test" в строке лога пустота.

Если стереть двумерность массива, и оставить только так:
Код
set %abil_ataka[1] test
set #abil_ataka 1
set logging нашли абилку %abil_ataka[#abil_ataka] - кастуем

То вообще ошибка интеджера в строке лога, скрипт остановлен.
Притом самое забавное, если имена массива с числовой переменной назвать покрасивее, типа %test #test или %test_a #test_a, то всё всё работает нормально.


Код

set #hp 100
set logging ищем кнопку "вперед"  Наши хп #hp%
end_script

Здесь #hp% не выводится числом, а выводится названием переменной #hp%
Причем, если стереть слова "Наши хп", то всё выводится красиво.


Выяснил.
Если в строке лога кол-во символов больше 17(включая пробелы) ДО самой переменной, то она начинает вот так баговать. Если указать хоть 100500 символов ПОСЛЕ переменной, то всё ок.

Автор: xolost 7.1.2013, 2:17

Нашел ещё несколько багов.
Не знаю что хуже, то что перешел на 2.32, то что в 2.32 присутствуют баги из-за которых не работает часть скрипта или то что не перешел раньше, что бы обнаружить баги раньше, да бы их поскорее исправили(

Вообщем
1) Изображение
Только в версии 2.32


2) Числовая переменная в номере массива не позволяет найти картинку.

Код
set #startX 0 
set #startY 0
set #endX 1280
set #endY 1024
set %bazariki[1] проход
set %bazariki[2] проход2
set %bazariki[3] назад
set %bazariki[4] 3чек
set %bazariki[5] базару_конец

set $bazariki findimage (#startX #startY #endX #endY (c:\images\объекты\охранница\%bazariki[5].bmp) %crds13 2 100 -1)
set logging нашли на $bazariki%       //  всегда 100%
for #baz 1 5
   set $bazariki findimage (#startX #startY #endX #endY (c:\images\объекты\охранница\%bazariki[#baz].bmp) %crds13 2 100 -1)
   set logging нашли на $bazariki%     // - всегда -1
   if $bazariki > 0    // Никогда не найдем
      msg uspeh        
   end_if
end_for


Если ищем отдельно - как выше, то находит, если через переменную в массиве, то -1
Можно и просто добавить к первому:
Код
set #baz 5
set $bazariki findimage (#startX #startY #endX #endY (c:\images\объекты\охранница\%bazariki[#baz].bmp) %crds13 2 100 -1)

результат сразу -1 не смотря ни на что.

Баг повторяется только в 2.32

Автор: Санчес 7.1.2013, 2:32

Скажите пожалуйста,можно ли как то сделать так чтобы при "Скрипт >Открыть" или "...Новый" окно со списом файлов и окно с "Вы уверены тра ля ля.." всегда были поверх всех окон,в том числе и скриптового?Я исковырял все настройки вроде поснимал/поставил галки,но проблема не ушла,сначала вроде норм,но через какое то время при проделывании такой операции эти окошки оказываются за основным и их никак оттуда не достать, а "Снять задачу" очень неудобно потому как все что не сохранено летит в "туда",хотя итак сохраняюсь почти после каждой строки.Второе это имя файла в логе,подумал вроде надо,и поставил галку в "Отображать имена файлов скриптов",правда я думал это несколько другое,но теперь рад бы убрать из лога да вот никак.И третье,когда добавляю новые вкладки то иногда из предыдущей вкладки бывает исчезает либо все,либо последние изменения.

Автор: DarkMaster 7.1.2013, 2:49

версия какая? если я правильно понял о чем вы, то это было исправлено.

Автор: veiron 7.1.2013, 10:01

Цитата(DarkMaster @ 7.1.2013, 3:49) *

версия какая? если я правильно понял о чем вы, то это было исправлено.

у меня 2.32 и окна открыть или новый появляются под пилотом. Но не всегда.

Цитата(Санчес @ 7.1.2013, 3:32) *

Скажите пожалуйста,можно ли как то сделать так чтобы при "Скрипт >Открыть" или "...Новый" окно со списом файлов и окно с "Вы уверены тра ля ля.." всегда были поверх всех окон,в том числе и скриптового?Я исковырял все настройки вроде поснимал/поставил галки,но проблема не ушла,сначала вроде норм,но через какое то время при проделывании такой операции эти окошки оказываются за основным и их никак оттуда не достать, а "Снять задачу" очень неудобно потому как все что не сохранено летит в "туда",хотя итак сохраняюсь почти после каждой строки.

Когда так происходит, зайди в диспетчер задач, но не снимай задачу, а нажми на передний план. та табличка которая весит, появится перед пилотом. закроешь ее, и пилот дальше работает.

Автор: Санчес 7.1.2013, 14:44

Цитата(DarkMaster @ 7.1.2013, 1:49) *

версия какая? если я правильно понял о чем вы, то это было исправлено.

DarkMaster версия последняя судя по about

Андрей спасибо,пока буду так выходить из ситуации wink.gif

Цитата(DarkMaster @ 7.1.2013, 1:49) *

версия какая? если я правильно понял о чем вы, то это было исправлено.

И этот вопрос обсуждался вроде помнится,мне не мешает но глюк есть


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение

Автор: DarkMaster 7.1.2013, 15:19

По второму изображению в курсе. По поводу перекрытия потыкаю, посмотрю. Кажется понял в чем проблема. Я уже просто автоматом ентер прожимаю.

Автор: veiron 7.1.2013, 15:36

Код
Access violation at address 00460FCC in module "uopilot_2.32.exe". Read of address 00000048. 

Еще назойливое оповещение бы убрать. Иногда только закроешь, а оно опять выскочит.

Автор: DarkMaster 7.1.2013, 15:41

Чуть-чуть измените размер окна. Фикс будет в следующей версии.

Автор: veiron 7.1.2013, 15:44

Цитата(DarkMaster @ 7.1.2013, 16:41) *

Чуть-чуть измените размер окна. Фикс будет в следующей версии.

Да, я помню, ваш совет, по поводу изменения окна. Так и делаю, а она все равно выскакивает. Уже начинаю, превыкать,единственное, не удобно, это когда оно выскочит под пилотом. Приходится в диспетчер задач лазить. Буду ждать следующую версию.

Автор: Санчес 7.1.2013, 16:23

Цитата
Я уже просто автоматом ентер прожимаю.

Не совсем понял,это обход данной проблемы?

Автор: WKnight 7.1.2013, 18:02

Цитата
Да, я помню, ваш совет, по поводу изменения окна

Если по прежнему выскакивает, то недостаточно изменили, там нужно по высоте, буквально пикселей 30 изменить.
Выскакивает на одном видимом элементе, которого там быть не должно. Теоретически даже в редакторе ресурсов можно поправить. Хотя не экспериментировал.

Автор: xolost 8.1.2013, 4:53

Хахах.. Вот это прикол блин!

Все баги что я выше написал, это всё один и тот же баг.

Везде фигурирует неопределенное число от 17 до 20 . В данном случае, именно 20 символов допустимое число ПЕРЕД считыванием числовой переменной.
Т.е. вот так всё ок:

Код
set $bazariki findimage (0 0 100 100 (c:\images\объекты\%bazariki[#bak].bmp) %crds13 2 100 -1)


а вот так уже нет:
Код
set $bazariki findimage (0 0 100 100 (c:\images\объекты\охранница\%bazariki[#bak].bmp) %crds13 2 100 -1)

Автор: DarkMaster 8.1.2013, 5:00

видимо и недавний прикол с невосприятием папки рабочего стола из той же песни.

Автор: xolost 8.1.2013, 5:02

Цитата(DarkMaster @ 8.1.2013, 6:00) *

видимо и недавний прикол с невосприятием папки рабочего стола из той же песни.

Ага, так и есть)))

Автор: DarkMaster 8.1.2013, 5:12

не зря у меня мозг стал противиться предложенным версиям. полез откатывать вику.

Автор: xolost 9.1.2013, 16:00

Цитата(WKnight @ 20.12.2012, 13:11) *

Запустил. Пилот честно загреб 2 гига.
Закрыл.
Запустил под отладчиком. Работает как часы, 10 метров +-.
Запустил без отладчика. Работает как часы.
Перезагрузил комп. Работает...
Больше добиться 2х гигового эфекта для анализа не получается...
Мелкий момент выяснить конечно удалось за время первого запуска, но этого очень мало...


Потому что тут фигурирует ещё несколько факторов.
Во-первых, не обязательно, но желательно(чаще повторяется) использовать разрешения для поиска больше чем 1280 на 1024. например 1600 на 900 (не обязательно иметь размер такого раб стола.

Во-вторых, щас заметил ещё новый фактор.

Представим что открыт браузер, в моем случае IE и там время загрузки.
Ищем ошибки, которые в игре у меня нулевого цвета + второй цвет. В самом браузере совпадений в данный момент нету. Там где -1 - это результат найденных картинок с нулевым цветом. В этот момент память наедается.

Вот логи, я лишнее убрал:


Код
16:44:03 : find mistake 3375
16:44:03 : -1
16:44:04 : -1
16:44:06 : find mistake 5703
16:44:06 : -1
16:44:06 : -1
// в этот момент я свернул браузер к которому привязан пилот.
16:44:07 : find mistake 6984
16:44:07 : 0
16:44:07 : 0
16:44:07 : find mistake 7093
16:44:07 : 0
16:44:07 : 0
16:44:08 : find mistake 8375
16:44:08 : 0
16:44:08 : 0
16:44:09 : find mistake 8937
16:44:09 : 0
16:44:09 : 0
16:44:09 : сделали Ф5 в месте

// Послали send {F5}   и браузер по прежнему свернут.
16:44:18 : find mistake 1719
16:44:18 : -1
16:44:18 : -1
16:44:20 : find mistake 3875
16:44:20 : -1
16:44:20 : -1


Вот такое вот забавное поведение. Сначала -1, после сворачивания 0, после f5 снова -1 (при условии, что браузер я не разворачивал!, он по прежнему свернут.)

Такие вот пирожки.

Автор: EL-GReeN 12.1.2013, 23:07

Перестало работать:
if lastmsg mss-hh8
так тоже не работает:
if lastmsg <= $a
Ошибка! проверьте правильность скрипта! EConvertError 'hours' is not a valid integer velue

Автор: xolost 17.1.2013, 17:27

set $tmp GetSelectedText
всё-таки багует.

Не копирует в буфер из ИЕ и Хрома (остальные браузы не смотрел).
Зато успешно работает в блокноте и подобных окнах.

Автор: Zeleax 19.1.2013, 17:54

getwindowpos не возвращает статус выполнения...
https://forum.uokit.com/index.php?s=&showtopic=25454&view=findpost&p=184397

Автор: чебуратор 2 21.1.2013, 16:51

32 тупит

Автор: xolost 24.1.2013, 15:10

Вроде ошибка

Код

set %m[2 1] $s * 5
set $q %m[2 1]
set $s 10
set #q $q
set %m[2 1] #q
msg %m[2 1]  // результат 50


Код

set %m[2 1] $s * 5
set $q %m[2 1]
set $s 10
set #q %m[2 1]   // ошибка - символ не распознан
set %m[2 1] #q
msg %m[2 1]  // до результата не доходим


Чем по сути отличается строковая переменная от ячейки массива в которой точно такая же инфомрация хранится?
Я не настаиваю в данном случае, я больше хочу узнать можно ли считать это ошибкой или нет...

Автор: DarkMaster 24.1.2013, 15:16

Это вообще фича, что первый случай работает. Это получилось когда-то случайно, специально этого не делалось. В массиве информация скорее всего сохранена чуть иначе(самим пилотом).

Автор: xolost 24.1.2013, 15:24

Цитата(DarkMaster @ 24.1.2013, 16:16) *

Это вообще фича, что первый случай работает. Это получилось когда-то случайно, специально этого не делалось. В массиве информация скорее всего сохранена чуть иначе(самим пилотом).

Шикарная фича, спасибо за разъяснения...

Автор: segafoma 24.1.2013, 23:16

народ помогите пожалуйста, мне надо чтоб пилот кликал в 1 место в л2 на офф сервере, можете подсказать как должен выглядеть для этого скрипт если можно то образец напишете например чтоб кликал в центр окна, а то я не хрена не могу понять почему он не кликает

Автор: DarkMaster 24.1.2013, 23:21

на оффе л2 пилот не работает.

Автор: 1dark1 4.2.2013, 17:20

Вопросы:
1) с фростом пилот работает?
2) если нет то зачем тогда обновляется версия ( uopilot_232_frost)?
3)если да то работает полностью или есть какие-то ограничения и какие?
(Все это по RO )

Автор: Rover 5.2.2013, 13:21

зашол в цикл и немогу выйти,
нужно в паузе узнать значение переменной,(найти где напартачил)
ка узнать?

Автор: segafoma 5.2.2013, 15:19

эх жаль что на оффе не работает а то в ручную заколебался сосы крафтить)

Автор: DarkMaster 5.2.2013, 17:18

Цитата
Вопросы:
1) с фростом пилот работает?
2) если нет то зачем тогда обновляется версия ( uopilot_232_frost)?
3)если да то работает полностью или есть какие-то ограничения и какие?
(Все это по RO )

Цитата
эх жаль что на оффе не работает а то в ручную заколебался сосы крафтить)

Вроде как заработал после какого-то апдейта фроста.
Цитата
зашол в цикл и немогу выйти,
нужно в паузе узнать значение переменной,(найти где напартачил)
ка узнать?

log close
log clear
log open
log commands

В шапку скрипта.

Автор: segafoma 5.2.2013, 17:24

а тогда можно выложить самый простой скрип чтоб пилот тыкал левой кнопкой мыши в небольшой квадрат??
зарание спс

Автор: Rover 5.2.2013, 17:43

Цитата(segafoma @ 5.2.2013, 16:24) *

а тогда можно выложить самый простой скрип чтоб пилот тыкал левой кнопкой мыши в небольшой квадрат??
зарание спс

Right 638, 297 abs
wait 1s
kleft 694, 548 abs
wait 3s
я вот так тыкаю

Автор: Rover 7.2.2013, 12:22

как, вывести MSG на определенное время, чтоб оно само закрылось и прогамка пошла дальше?
или выводить в лог не все типа
log close
log clear
log open
log commands
а крнкретную строку

Автор: DarkMaster 7.2.2013, 12:51

не поверите... log строка

Автор: Rover 7.2.2013, 16:02

Цитата(DarkMaster @ 7.2.2013, 11:51) *

не поверите... log строка

сп... очень помогло

Автор: Rover 7.2.2013, 18:05

только осваиваю сие чудо))))
стесняюсь спросить, что значит относительные координаты точки и абсолютные, в чем разница, в одной точке разные показания

случайно заметил одну особенность , обьясню процес чтоб понятней было
UO следит за графикрм в определенном диапозоне и если гравик меняется то в лог выводит куда,
а заметил то что открывая другое окно по верх графика UO всеровно следит за графиком , вижу по логу
что очень понравилось что можно заниматся чем нибудь другим и не боятся что будет сбой,
вопрос, можно сделать так чтоб можно было такженажимало на окошки в этом графике если по верх другое,
тоесть там логика при неком событии графика нужно выполнить некое действие?

Автор: Zeleax 7.2.2013, 20:32

абсолютные\относительные - это координаты экрана\окна.
для клика в неактивном окне следует привязать скрипт к нужному окну (см. set workwindow...) и использовать команду left

Автор: Rover 8.2.2013, 0:15

Цитата(Zeleax @ 7.2.2013, 19:32) *

абсолютные\относительные - это координаты экрана\окна.
для клика в неактивном окне следует привязать скрипт к нужному окну (см. set workwindow...) и использовать команду left

а где взять хендлом, если в выпадающем окне из быквы ( W ) номер, то отуда не работает
и при новом запуске программы там меняется номер, как быть
если можно то покажите пример, так легче усваеваится)))

Автор: Zeleax 8.2.2013, 0:23

Полезые советы, 1-й пост и далее

Автор: Rover 8.2.2013, 9:31

Цитата
Полезые советы

покажите плиз, читал несколько раз и результат ноль

/////////////// пп скан
:skan //353, 417 abs354, 572 abs
set #sk 419 // откуда начинаем сканпикселя по Y
for #sk 424 568
if 352, #sk 255
SET #kr #sk // KR - КООРДИНАТА КРАСНОГО ПИКСЕЛЯ
set #sk 568
end_if
end_for
log #kr // метка лог
return

вот кусок , сначало работало в абсолютных координатах, потом стало в относительных, как привязать окно к скрипту , код меняется с каждым последующим включением ,
пробовал привязывать код к скрипту , клик не работает по относительным координатам , что не так делаю помогите плиз

Автор: DarkMaster 8.2.2013, 16:08

Вообще эта тема скорее баги отписывать. Давайте отсюда переезжать потихоньку. Не бойтесь создать новую тему - не укусит).

Цитата
set с 419 // откуда начинаем сканпикселя по Y
for #sk 424 568

#sk сразу же перезапишется фором и станет 424.
Цитата
привязать окно к скрипту

Это есть в полезных советах "Запуск скрипта(автоматизация привязки, сворачивание)".
Цитата
код меняется с каждым последующим включением

Какой еще код? Скрипт и есть код.

Автор: Rover 8.2.2013, 16:23

Цитата
Какой еще код

хендл имел в виду

Автор: KDbled 9.2.2013, 9:00

Как я понял Pathfinding выдает только что он произошел или нет.
При set #x Pathfinding, #x выдает 0, а когда Pathfinding произошел, выдает 1.
Нельзя ли задавать конкретные перемненые для пазфайнда, чтоб чар бежал в это место, будто я сам кликнул дважды мышью.
Это позволит автоматом обходить любые препятствия, даже дома в полэкрана.
Совсем не сложно из charposx charposy lasttargetx lasttargety вычислить точную координату клика мышью, но кликнуть дальше экрана никак не получается.

Автор: WKnight 9.2.2013, 16:58

Переменная PathFinding только включает\отключает\отображает соответствующую настройку в клиенте, также как и остальные 3 - ShowNames, Transparency CriminalActions.
Т.е. если сделать Set PathFinding 0, то по правому даблклику чар не будет бегать куда попало.

Автор: DarkMaster 15.2.2013, 8:32

Цитата
point_direction(x1 y1 x2 y2) - Возвращает угол (в градусах) между осью X и вектором с началом в точке

а там рядом не к Х, а к У не лежало?)

Автор: Zeleax 15.2.2013, 8:37

Цитата(DarkMaster @ 15.2.2013, 9:32) *

а там рядом не к Х, а к У не лежало?)

а отнять его от 90 градусов лень не позволяет? biggrin.gif

Автор: DarkMaster 15.2.2013, 8:53

не отнять, а прибавить в моем случае. Потом очень удобно считать азимут 420 градусов масштабируя на шкалу от 0 до 6,28(с точкой).

У меня скоро крыша уже поедет... В игре ось Х идет справа налево...

Автор: Zeleax 15.2.2013, 8:55

Цитата(DarkMaster @ 15.2.2013, 9:45) *

не отнять, а прибавить в моем случае. Потом очень удобно считать азимут 420 градусов масштабируя на шкалу от 0 до 6,28(с точкой).

Не вижу проблемы или не осознаю сложности задачи \
set #a point_direction(#x1 #y1 #x2 #y2) + 90
set #a #a - ( #a / 360 * 360 )
насчет масштабирования азимута не понял задачу

Автор: DarkMaster 15.2.2013, 9:12

Короче мне перерыв пора сделать. Уже на ерунде какой-то тупить начинаю.

Автор: Rover 15.2.2013, 13:50

есть координаты 300, 300
как програмно сделать их переменныпи?
суть, есть квадкад определенного цвета, навожу курсор куданить в квадрат, жму гтр/а вставляю эти координаты в шапку и нужно узнать координаты краев квадрата, как сделать?
или лудше чтоб координаты вставлялись по клику пк.мышки

Автор: DarkMaster 15.2.2013, 14:11

Тем не менее я за отсчет от оси Y. Ну везде север/верх это 0.

Автор: KDbled 16.2.2013, 10:45

Такая проблема:

Код

wait 4s
send f6 200
if lastmsg <= have
set #c #c + 1
if #c = 20
pause_script
end_if
move 837, 458
left 837, 458
wait 2s
set #s string_digits (lastmsg)
set #s #s - 1
move 837, 460
drag 837, 460 292, 242 #s
move 370, 228
drag 370, 228 817, 229 500
end_if

Попыток через 20 при несрабатывающих условиях if (f6 wait продолжают меняться) на строке if lastmsg <= have выдает ошибку Syntax Error: Exp1
Делал Have переменной, менял строку на while, то же самое.

Также часто встречал проблему. При многократном обращении к любым числовым переменным (больше 1000 раз) выдает ошибку, что integer value вышла за пределы.

И последнее что нашел:
Что это за 2 окна внизу? Разрешение экрана 1280 на 1024.

Прикрепленное изображение

Автор: KDbled 16.2.2013, 11:14

Пока перечитывал новое по пилоту, выскочил еще один баг.
При закрытии окна пилота бесконечно выскакивает следующая ошибка:
Прикрепленное изображение
Устраняется только килом пилота в диспетчере задач.

Автор: WKnight 16.2.2013, 11:49

Цитата
Have
Это в принципе что такое вообще?
Цитата
При многократном обращении к любым числовым переменным
Для исправления ошибки нужно ее стабильное повторение. Код пожалуйста на котором она воспроизводиться.
Цитата
Что это за 2 окна внизу?
Можно сказать бага, можно не говорить. Остати от последней модернизации.
Исправить можно любым ресурсхаккером, поставив свойство visible = false, тоже кстати касается ошибки чтени по адресу 0048. Сейчас какбы уже немножко поздно выпускать версию со спрятанными этими окнами, уж близится следующий релиз.

Про чтение из адреса 0228 ничего не скажу, первый раз такое.

Автор: Zeleax 16.2.2013, 13:29

Пилот устойчиво вываливается с ошибкой на таком скрипте при попытке послать символ ` в окно Блокнота

Код
wait 1000
send `
end_script


Кстати, с непосылаемым символом ` что-то будет решаться в новой версии?
https://forum.uokit.com/index.php?act=ST&f=87&t=24019&st=0

Автор: WKnight 16.2.2013, 15:11

Ок, уговорили, непосылаемым это одно, а вылет это надо фиксить smile.gif

Автор: KDbled 16.2.2013, 19:33

Сегодня снова выскачила ошибка на integer value, в скрине есть вся информация.
Извиняюсь за качество скриншота. Скрин был сделан с удаленного раб. стола в котором была открыта виртуальная винда.

Прикрепленное изображение

По вопросу, что такое Have, это одно слово из выскакивающей фразы You can't ... much have. Пишет такое, когда кончаются ресурсы для изготвления изделия. Так же я пробовал со словом can. Скрипт также недолго работает и выдает ошибку.

Автор: WKnight 17.2.2013, 4:48

Информации много, но не вся, что в этот момент было в журнале? Точнее текст той самой lastmsg.

Автор: BSW_rama 18.2.2013, 10:23

простите за много строчек но натолкнулся на глюк, и ничего сделать не могу.. привожу скрипт полностью..
при запуске выдаёт ошибку "строка 64 символ не распознан", но стоит прописать на строчке выше "msg 1" как ошибка пропадает... но приходится всё время жать на ок ...
проверял все переменные все они есть, никаких виясков нет, всё чётко...

скрипт
Код
//set #g findcolor (0 0 500 500 1 1 (2443151) %a 2 1)
set %a[1 1] 128
set %a[1 2] 116
set %a[2 1] (%a[1 1] + 37) * 2
set %a[2 2] (%a[1 2] + 51) * 2

:start
gosub getcolor
gosub x6
gosub y6
gosub x4
gosub y4
goto start

end_script

:getcolor
set #af %a[2 1] + 872
set #bf %a[2 2] + 872
for #b %a[2 2] #bf 109
set #y #b / 2
for #a %a[2 1] #af 109
set #x #a / 2
get color #c #x #y
set %m[#a #b] 0
if #c = 2957780 or #c = 3614169 or #c = 2102719 or #c = 3155374
set %m[#a #b] 1
end_if
if #c = 6480639 or #c = 6676990 or #c = 5760767 or #c = 5629182 or #c = 0 or #c = 0
set %m[#a #b] 5
end_if
if #c = 6807532 or #c = 7790574 or #c = 7987695 or #c = 2345699
set %m[#a #b] 20
end_if
if #c = 12320641 or #c = 12776559 or #c = 12254849 or #c = 12189056  or #c = 12320384
set %m[#a #b] 100
end_if
if #c = 9661440 or #c = 8806912 or #c = 11767296 or #c = 11504128 or #c = 0
set %m[#a #b] 500
end_if
if #c = 14388009 or #c = 14519338 or #c = 14453545 or #c = 14255399 or #c = 0 or #c = 0
set %m[#a #b] 1000
end_if
//if %m[#a #b] < 1
//move #x, #y
//msg #c
//end_if
end_for
end_for
return

:x6
set #xm %a[2 1] + 763
set #ym %a[2 2] + 872
for #ly1 %a[2 2] #ym 109
for #lx1 %a[2 1] #xm 109
set #lx2 #lx1 + 109
set #lx3 #lx1 + 218
set #ly2 #ly1 + 109
set #af1 (#lx1 - 109) / 2
set #af2 #lx1 / 2
set #af3 (#lx1 + 109) / 2
set #bf1 (#ly1 - 109) / 2
set #bf2 #ly1 / 2
set #r %m[#lx1 #ly1] + %m[#lx2 #ly2] + %m[#lx3 #ly1]
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af2, #bf2
wait 10
left #af2, #bf1
end_if
set #r %m[#lx1 #ly2] + %m[#lx2 #ly1] + %m[#lx3 #ly2]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af2, #bf1
wait 10
left #af2, #bf2
end_if
set #r %m[#lx1 #ly1] + %m[#lx2 #ly1] + %m[#lx3 #ly2]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af3, #bf2
wait 10
left #af3, #bf1
end_if
set #r %m[#lx1 #ly2] + %m[#lx2 #ly2] + %m[#lx3 #ly1]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af3, #bf1
wait 10
left #af3, #bf2
end_if
set #r %m[#lx1 #ly2] + %m[#lx2 #ly1] + %m[#lx3 #ly1]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf2
wait 10
left #af1, #bf1
end_if
set #r %m[#lx1 #ly1] + %m[#lx2 #ly2] + %m[#lx3 #ly2]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf1
wait 10
left #af1, #bf2
end_if
end_for
end_for
return

:x4
set #xm %a[2 1] + 654
set #ym %a[2 2] + 981
for #ly1 109 #ym 109
for #lx1 109 #xm 109
set #lx2 #lx1 + 109
set #lx3 #lx1 + 218
set #lx4 #lx1 + 327
set #af1 (#lx1 - 109) / 2
set #af2 #lx1 / 2
set #af3 (#lx1 + 109) / 2
set #af4 (#lx1 + 218) / 2
set #bf1 (#ly1 - 109) / 2
set #r %m[#lx1 #ly1] + %m[#lx2 #ly1] + %m[#lx4 #ly1]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af4, #bf1
wait 10
left #af3, #bf1
end_if
set #r %m[#lx1 #ly1] + %m[#lx3 #ly1] + %m[#lx4 #ly1]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf1
wait 10
left #af2, #bf1
wait 100
end_if
end_for
end_for
return

:y4
set #xm %a[2 1] + 981
set #ym %a[2 2] + 654
for #ly1 109 #ym 109
for #lx1 109 #xm 109
set #ly2 #ly1 + 109
set #ly3 #ly1 + 218
set #ly4 #ly1 + 327
set #bf1 (#ly1 - 109) / 2
set #bf2 #ly1 / 2
set #bf3 (#ly1 + 109) / 2
set #bf4 (#ly1 + 218) / 2
set #af1 (#lx1 - 109) / 2
set #r %m[#lx1 #ly1] + %m[#lx1 #ly2] + %m[#lx1 #ly4]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf4
wait 10
left #af1, #bf3
end_if
set #r %m[#lx1 #ly1] + %m[#lx1 #ly3] + %m[#lx1 #ly4]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf1
wait 10
left #af1, #bf2
end_if
end_for
end_for
return

:y6
set #xm %a[2 1] + 872
set #ym %a[2 2] + 763
for #ly1 109 763 109
for #lx1 109 872 109
set #lx2 #lx1 + 109
set #ly2 #ly1 + 109
set #ly3 #ly1 + 218
set #af1 (#lx1 - 109) / 2
set #af2 #lx1 / 2
set #bf3 (#ly1 + 109) / 2
set #bf1 (#ly1 - 109) / 2
set #bf2 #ly1 / 2
set #bf3 (#ly1 + 109) / 2
set #r %m[#lx1, #ly1] + %m[#lx2, #ly2] + %m[#lx1, #ly3]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af2, #bf2
wait 10
left #af1, #bf2
end_if
set #r %m[#lx2, #ly1] + %m[#lx1, #ly2] + %m[#lx2, #ly3]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf2
wait 10
left #af2, #bf2
end_if
set #r %m[#lx1, #ly1] + %m[#lx1, #ly2] + %m[#lx2, #ly3]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af2, #bf3
wait 10
left #af1, #bf3
end_if
set #r %m[#lx2, #ly1] + %m[#lx2, #ly2] + %m[#lx1, #ly3]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf3
wait 10
left #af2, #bf3
end_if
set #r %m[#lx2, #ly1] + %m[#lx1, #ly2] + %m[#lx1, #ly3]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af2, #bf1
wait 10
left #af1, #bf1
end_if
set #r %m[#lx1, #ly1] + %m[#lx2, #ly2] + %m[#lx2, #ly3]  
if #r = 3 or #r = 15 or #r = 60 or #r = 300 or #r = 1500 or #r = 3000
left #af1, #bf1
wait 10
left #af2, #bf1
end_if
end_for
end_for
return

Автор: WKnight 18.2.2013, 11:52

Я так понимаю строка 64 это "set #r %m[#lx......"?
Сделайте #r строковой переменной и посмотрите что в нее попадает.
Сделайте "log commands" и проверьте что падает в лог.

Автор: BSW_rama 19.2.2013, 4:47

можно тупой вопрос? у вас глюк повторился? у меня повторяется стабильно

Автор: Zeleax 19.2.2013, 8:32

Цитата(BSW_rama @ 19.2.2013, 5:47) *

можно тупой вопрос? у вас глюк повторился? у меня повторяется стабильно

если нашли баг, то не нужно выкладывать скрипт на 100500 строк, а постараться его максимально уменьшить (с сохранением бага) и указать в скрипте место бага.
У меня, например, даже желания не было смотреть эту простыню

Автор: Zeleax 19.2.2013, 22:09

msg глючит на длинной строке

Код
set #dist 6 
msg Округлённое расстояние между двумя точками равно #dist // нет числа, только имя переменной
end_script

Автор: Zeleax 19.2.2013, 23:25

WKnight, вроде просил проблемный размер окна (ошибка при пересечении мышкой нижней границы)
Вот: 440x469

Автор: HowL 20.2.2013, 9:07

Как скоро будет багфикс-версия?
Финдимейдж порядочно достал своими багами, а без него никак! =(

Автор: veiron 20.2.2013, 9:34

Цитата(HowL @ 20.2.2013, 9:07) *

Как скоро будет багфикс-версия?
Финдимейдж порядочно достал своими багами, а без него никак! =(

Наверно не скоро.
Цитата
До выхода следующей версии осталось 3857 рублей.

Если бы каждый кто пользуется пилотом закинул хотя бы по 50 руб, наверно не только на багфикс-версию хватило, а еще и на следующю версию хватило)))

Автор: Zeleax 20.2.2013, 9:43

Цитата(veiron @ 20.2.2013, 10:34) *
Если бы каждый кто пользуется пилотом закинул хотя бы по 50 руб, наверно не только на багфикс-версию хватило, а еще и на следующю версию хватило)))

Большинство людей привыкло к халяве. На бутылку водки\пива+чипсы не жалко 5 баксов, а на классную программу жалко.

Автор: BSW_rama 21.2.2013, 6:21

никто не будет платить за недоделку.
вот я хочу х64, и чтобы масивы были трёхмерные и ваще я уже много раз с талкивался с разными лимитами.. вот и щас отработал програмку, вставил в основной код и усё зависон. такое впечатление что существует лимит размера скрипта примерно в 2048 строк или типа того.
вобщем походу мой небесный бот скоро (если не считать уже) достигнет предела...

Автор: veiron 21.2.2013, 8:09

Цитата(BSW_rama @ 21.2.2013, 6:21) *

никто не будет платить за недоделку.
вот я хочу х64, и чтобы масивы были трёхмерные и ваще я уже много раз с талкивался с разными лимитами.. вот и щас отработал програмку, вставил в основной код и усё зависон. такое впечатление что существует лимит размера скрипта примерно в 2048 строк или типа того.
вобщем походу мой небесный бот скоро (если не считать уже) достигнет предела...

Не знаю есть ли лимит,но у меня сейчас небесный бот на 4000 строк и работает исправно.

Автор: Zeleax 21.2.2013, 8:29

Цитата(BSW_rama @ 21.2.2013, 7:21) *

никто не будет платить за недоделку.
вот я хочу х64, и чтобы масивы были трёхмерные и ваще я уже много раз с талкивался с разными лимитами.. вот и щас отработал програмку, вставил в основной код и усё зависон. такое впечатление что существует лимит размера скрипта примерно в 2048 строк или типа того.
вобщем походу мой небесный бот скоро (если не считать уже) достигнет предела...

Так нет проблем, давайте 1-2 месячных з/п программиста в крупном городе (1500$-3000$), разработчик выделит время и вам всё сделает.
Не нравится- не пользуйтесь.
Вот это еще одна черта наших людей: сказать что угодно, лишь бы зажать (но пользоваться будет всё-равно).

Я с вас денег не выбиваю. Тем более, что они всё-равно не мне идут. Просто вы должны понимать, что человек работает бесплатно, до тех пор пока у него есть азарт и интерес. А вы хотите иметь "конфетку", но при этом не потратить ни копейки, да ещё и возмущаться.
Уверен на 100%, что даже если бы программа была идеальна, то всё равно нашли бы к чему докопаться

З.Ы.: вас устроил мой ответ по массивам или что-то непонятно?
https://forum.uokit.com/index.php?s=&showtopic=25718&view=findpost&p=186668

Автор: BSW_rama 21.2.2013, 11:30

да никто ничего не обсирает, у меня лично нет денег, я нищий как незнамо кто, если если кто-то завидует моей нищей жизни, флаг ему в руки. что касается нас, то мы щас как тестеры, сидим тратим своё время юзаем прогу тестируем на баги и т.д. нам как бэ кто-то должен ведь платить ? поэтому это проект чисто на интузиазме ради фана, у кого есть средства тот поделится. у меня лично в жизни подобных проектов было как грязи, пока делал для фана всё было ништяк, как тока пытался поиметь финансы с них так всё летело к чертям. судьба такая. зарабатывать с метлой в руках и писать бесплатные программки для фана.

по масивам я чесно ничего не понял, я тебе конкретно выложил скрипт игры в линии, даже в виде модуля для боя в небеах, вот замени там тройной масив своим способом, тогда я пойму.

Автор: DarkMaster 21.2.2013, 11:48

Цитата
лично в жизни подобных проектов было как грязи

Цитата
вот замени там тройной масив

А вы всегда во всей этой грязи не писали комменты к коду, все переменные делали двухбуквенными и не делали форматирования кода?
Цитата
тестируем на баги

Багрепорт это десяток строк кода при которых происходит воспроизведение бага. Это не N страниц кода для проверки которого необходимо воспроизвести пару десятков координат и цветов.

Автор: Zeleax 21.2.2013, 21:53

Цитата
мы щас как тестеры, сидим тратим своё время юзаем прогу тестируем на баги и т.д. нам как бэ кто-то должен ведь платить ?

понятно, за просмотр пиратских фильмов тоже должны нам платить (как кинокритикам)
Цитата
у меня лично в жизни подобных проектов было как грязи, пока делал для фана всё было ништяк, как тока пытался поиметь финансы с них так всё летело к чертям. судьба такая. зарабатывать с метлой в руках и писать бесплатные программки для фана.

ну так а что вы хотите, если
Цитата
не писали комменты к коду, все переменные делали двухбуквенными и не делали форматирования кода

Цитата
вот замени там тройной масив своим способом

ну вы поняли мой ответ? )

Автор: WKnight 22.2.2013, 10:33

Цитата
если нашли баг, то не нужно выкладывать скрипт на 100500 строк, а
.У меня, например, даже желания не было смотреть эту простыню
Ну там какбы было чтото указано, но суть не в этом. Я задал конкретные уточняющие вопросы. Пару дней небыло инета, щас появился, а воз и ныне там, только тупые вопросы и возмущения.
Цитата
msg глючит на длинной строке
Везде на длинных глючит, не только в мсг. Суть примерно в том, что если строка не изменилась за 32 символа, то она перестает проверяться.
Это вроде исправил уже, правда в анонсе на сайте еще не выложил.
Цитата
WKnight, вроде просил проблемный размер окна (ошибка при пересечении мышкой нижней границы)Вот: 440x469
Та не, не просил, спрашивал конкретно какое у него было окно, потому как по тексту можно было подумать что фулскрин, а в нем не должно быть такой ошибки. Оказалось что размер не фулскрин, а какраз баговый. Размеры могу точнее сказать, смысла нет, достаточно слегка изменить по вертикали. Там элемент остался не спрятанный, и при наведении на него мышкой ругается.

Автор: WKnight 22.2.2013, 10:52

Цитата
Как скоро будет багфикс-версия?Финдимейдж порядочно достал своими багами, а без него никак! =(

На хомепейдж написан минимальный срок smile.gif
Почти шутка... Грустная...

Сейчас занимаюсь багами, очень уж много их скопилось, даже новое почти перестал писать. Но когда именно сказать трудно, свободное время появляется эпизодически и не большими порциями... Стараюсь по возможности.
Цитата
никто не будет платить за недоделку

Вобщем сначало написал ответ, потом стал читать посты дальше. В принципе уже почти все сказано. Добавить особо нечего, но отвечать что-то этому пользователю в будущем, лично для себя, считаю излишним.

Автор: Zeleax 22.2.2013, 21:38

Цитата
даже новое почти перестал писать

а у меня лежит МАГАР на новый findimage для поиска по массиву точек и цветов, как писал ранее )

Автор: WKnight 23.2.2013, 3:26

А это не совсем новое, это скорее фикс старого smile.gif

Автор: Zeleax 23.2.2013, 20:02

не забудь, плз, в findimage поправить баг с черным цветом

Автор: zavas 23.2.2013, 20:54

WKnight, ты делаешь замечательное дело! Благодаря твоей программе и парочке хороших людей с форума, мне удалось понять, как писать сценарии, как читать код, как объяснять и помогать другим. Не денег ради, а просто потому что интересно.
Денежкой отблагодарить не смог, но старался помочь на форуме. Хотел помочь созданием chm-справки, и помогал на вики, пока была возможность.
Конечно баги будут, конечно будут исправляться и добавляться новые фичи в программульку.
BSW_rama: If you're so clever, show me your money...

Автор: Zeleax 24.2.2013, 16:32

Жёсткий вылет пилота:

Код
init_arr %a (2) 4 5 6 7
set #l 3 // хочу 6-ку обработать
call test %a #l
end_script

proc test %b #n
  log %b[2 #n]
  msg Сюда не дойдем
end_proc

Автор: WKnight 25.2.2013, 12:26

Числовая переменная, стоящая после масива, не передается.
Вот в таком виде работает, хотя всеравно фиксить надо.

call test #l %a
proc test #n %b

Автор: WKnight 25.2.2013, 15:46

Цитата
Жёсткий вылет пилота

фиксед

Автор: Zeleax 26.2.2013, 8:41

а массивы присвоить никак?

Код
init_arr %a 10 20 30 40
init_arr %b(2) 50 60
init_arr %d (1 2) %a %b[2]// хотел получить 3 строки по 2 столбца
set delimiter ' '
log %d // %d
end_script

Автор: WKnight 26.2.2013, 12:11

Походу самый легкий способ это в цикле построчно через init_arr.

Автор: Zeleax 26.2.2013, 20:10

Цитата(WKnight @ 26.2.2013, 13:11) *

Походу самый легкий способ это в цикле построчно через init_arr.

так ведь задача была слепить из нескольких массивов один

Автор: WKnight 27.2.2013, 13:06

Да, я именно про нее и говорю.

Автор: WKnight 27.2.2013, 13:20

Чтото типа

Код
set #b size(%b) + 1
set #c size(%c) + 1
set #f size(%a) + size(%b) + size(%c)
set delimiter " "
for #i 1 #f
  if #i <= size(%a)
    init_arr %e (#i) %a [#i]
    continue
  end_if  
  if #i < #b
    init_arr %e (#i) %b [#b-#i]
    continue
  end_if  
  if #i < #c
    init_arr %e (#i) %c [#c-#i]
    continue
  end_if  
end_for

Писалось на пьяной коленке, и соответственно не тестилось, но теоретически должно работать.

Автор: veiron 1.3.2013, 23:52

Изображение
Скажите, что это стал пилот выдавать, скрипт час назад работал, а сейчас вот такое выдает. Если лефт заменить на клефт, тогда работает без ошибки.

Автор: DarkMaster 2.3.2013, 7:12

3771? Чет мне подсказывает, что это обрезать можно ноликом)

Старт/стоп скрипт используется? Пилот памяти обжирается? set logging перед крашем может что-то теоретически подсказать.

Автор: veiron 2.3.2013, 8:35

Цитата(DarkMaster @ 2.3.2013, 7:12) *

3771? Чет мне подсказывает, что это обрезать можно ноликом)

Старт/стоп скрипт используется? Пилот памяти обжирается? set logging перед крашем может что-то теоретически подсказать.

Старт/стоп скрипт НЕ используется. Памяти тоже не много ест. Интересно, сейчас все работает, скрипт после вчерашней ошибки не менял, комп не выключал и не перегружал, а все стало нормально работать. Странно.

Автор: veiron 2.3.2013, 16:23

Интересно, что пилот самостоятельно сохранил в своих настройках такого, что выдавал такую ошибку на left 111, 222 и ошибка выскакивала не каждый раз, а рандомно на любом из 30 лефтов?

Автор: xolost 4.3.2013, 23:47

Какие-то фантастические баги ко мне липнут. Невероятной загадки.

sendex @{F4}
wait 10000
end_script

Сделайте такой скрипт с открытым и активным пилотом(что бы закрыло его самого).
И вылетит целый ряд ошибок, а иногда они выпадают в бесконечном цикле(память не может быть read) и закрыть только через диспетчера возможно.

А теперь, в чем же загадка?
А она в том, что если у Вас не прокатило - пилот просто закрылся, то увеличьте задержку на 20000 или даже 100000
Почему-то после удачных закрытий - задержку нужно тоже увеличивать, что бы повторялся баг. Причем сперва оно у меня росло на 1-2 мс и хватало от 2150 + , что бы баг повторялся, а теперь выше 10000 обязательно надо...
вот такая жесткая жесть.
Отпишись пожалуйста, у кого повторилось.

Автор: WKnight 5.3.2013, 13:47

Не повторилось. Пришли .ini, мож настройки какие влияют.

скрипт в это время единственный с алт+а4 рабоает?

Автор: xolost 5.3.2013, 14:52

Цитата(WKnight @ 5.3.2013, 14:47) *

Не повторилось. Пришли .ini, мож настройки какие влияют.

скрипт в это время единственный с алт+а4 рабоает?

Выслал.
Скрипт единственный в этом время, да.

Автор: WKnight 5.3.2013, 15:06

Ничего не изменилось 2,29-2,33.

Автор: xolost 5.3.2013, 21:11

Так.
Тогда начну с самих ошибок
Изображение
вываливаются по порядку сверху-вниз.
1020 строка на которую он ругается - это и есть wait

Действительно бывает что ни в какую не повторяется. И что бы началось повторение, нужно выносить пилот на второй монитор, оттуда запускать скрип где идет попытка привязки к первому. А после этого уже и на первом мониторе ошибка повторяется.
Вообщем, ищу дальше как повторять на 100%

Автор: DarkMaster 7.3.2013, 9:08

Первое что нужно сделать - посмотреть 1019 строку. Иногда бывает, что ругнется на следующую. Так же обязательно посмотри что там в вэйте и предыдущем операторе в переменных, выведи это в лог.

Автор: xolost 9.3.2013, 12:53

Цитата
Добавил в 'findimage' возврат конечных координат найденной картинки в третьем и четвертом элементе возвращаемого массива.


Не заметил ни по факту, ни в логе...
msg %crds8[1 1] %crds8[1 2] %crds8[1 3] %crds8[1 4]
1-2 есть результат, 3-4 пустота...

Автор: WKnight 9.3.2013, 14:25

Ты какую версию пользуешь?

Автор: xolost 9.3.2013, 14:31

Цитата(WKnight @ 9.3.2013, 15:25) *

Ты какую версию пользуешь?

Безусловно обе проверил
2.31 2.32

Автор: xolost 17.3.2013, 13:52

В "о программе" ссылка на форум неактуальная.

Автор: WKnight 17.3.2013, 16:09

2.32?

Автор: xolost 17.3.2013, 16:18

Цитата(WKnight @ 17.3.2013, 17:09) *

2.32?

ой ой, здесь я извиняюсь... "постучал себя по губам больно в стиле Жорика Вартанова"
2.31...
в 2.32 действительно уже верно...

Автор: xolost 19.3.2013, 16:35

kleft -637, 541 abs
wait 5
kleft -1034, 987 abs
end_script

"-" рисует сам пилот, при клике по кнопке "абсолютные коры" элемента на втором экране.
И теоретически это можно посчитать верным и даже обработать.
Если бы не ошибка "ошибка строки, проверьте правильность скрипта".

Версия 2.31, 2.32

Притом просто left - успешно обрабатывает.

Автор: WKnight 20.3.2013, 4:10

В следующей версии ошибку не выдает, но кликать в минус kleft всеравно не умеет.

Автор: Zeleax 20.3.2013, 8:15

Цитата(WKnight @ 20.3.2013, 5:10) *

В следующей версии ошибку не выдает, но кликать в минус kleft всеравно не умеет.

Т.е. на втором мониторе с помощью kleft кликнуть невозможно?

Автор: DarkMaster 20.3.2013, 8:37

дык раньше же отрицательные нормально работали.

Автор: WKnight 20.3.2013, 14:00

Если работали, то по идее должны продолжить работать в будущем. 2,32 выдает ошибку потому что там несоответствие типов, у функции в параметрах используется беззнаковое целое, а передается ей со знаком. В ранешних версиях контроль соответствия типов был отключен, а 2.32 просочился.
Собственно потому и предположил, что не работает, раз у функции знака нет.

Автор: Zeleax 20.3.2013, 20:25

Ну так может снова отключить контроль типов? Или проверять знак числа и преобразовывать в нужное значение

Автор: WKnight 21.3.2013, 3:06

Там уже сделано чтото вроде принудительного приведения типов. Ошибки такой месяца 3 не появлялось.

Автор: BSW_rama 27.3.2013, 21:11

баги, котрые сильно достали
1) тупит запись в переменную типа %fuf#heh, зато читается на ура.
2) если нажать паузу при использовании команды prompt, то потмо окно запроса фих закроешь и ваще капец пока не перезапустишь программу.
3) тупит/тормозит сам посебе процес паузы/резюмэ часто после резюмэ вываливаются For-ы с ошибками. скрипт продолжается с то с позиции раньше, то с позиции позже.
4) при закрытие скрипта 1, скрипт 0 подгружается с бака непонятно какой давности. приходится постоянно чистить эти баки.
5) тупит не падетски вот такая конструкция, хотя по сути чё такого? я пишу в переменную "текст"#переменная, и уже баг, а конструкция сложнее проканывает.

Код

set #a 1
set #b 1
set #c 2
set %base[1 1] blabla1
set %base[1 2] blabla2
set %base[1 3] blabla3
set %base[1 4] blabla4
set %basescr[#a] "set %baselist[#numunitsbase] "%base[#b 1]  // !!!!-----большой баг-------!!!!!!!
set %basescr[#c] "set %unit"%base[#b 1]"[1] "%base[#b 1]
msg %basescr[#a]
msg %basescr[#c]
end_script

6) попробовал заюзать init_arr , потребовалось так сказать выделить часть строки, ага щассс размечтался!!
Код

set $ugu "set %unit"272728"[1]" 272728
msg $ugu // убедимся что строка полностью записалась
init_arr %figa $ugu // вроде первая строка должна записаться?
msg %figa[1 1], %figa[1 2], %figa[1 3], %figa[1 4], %figa[1 5], // куда делись цифирки?

пока больше не припоминаю, но постоянно приходится обходить различные баги... делать скрипт с более сложной конструкцией, а это быстродействие.

Автор: WKnight 28.3.2013, 13:43

1. Никто никогда не обещал запись в такие конструкции, то, что оно работает при чтении - фича.
2. Не подтверждено. Замечено только, что скрипт продолжает работу с открытым окном, но оно прекрасно закрывается.
3. При снятии с паузы скрипт продолжает работу с той строки, где стоит курсор. Сделано давно по многочисленным просьбам. Об этом сказано и в хистори и на форуме многократно.
4. Есть бага с добавлением скрипта плюсиком, при этом не сохраняются последние изменения в текущем скрипте. Оно уже исправлено. Других багов с откатами незамечено.
5. "большой баг" есть в 2.32, но не воспроизводится в будущей версии. Видимо исправлена его причина.
6. %figa[2].

Автор: BSW_rama 28.3.2013, 14:45

1) жаль, у меня на таких конструкциях целый скрипт для игры небеса построен, а точнее вся база, оч удобно.
2) называется лучше 1 раз увидеть http://youtu.be/7lie0c2fN7c
3) видать на мелких скриптах, ну да ладно, я приспособился, просто перезапускаю скрипт после паузы.
4) вычёркиваем
5) вычёркиваем
6) за целый месяц не смогли оформить в вики.... ладно разобрался, просто на форуме были примеры только в виде
init_arr %masiv 5 67 8 9
init_arr %masiv(2) 5 67 8 9
init_arr %masiv(3) 5 67 8 9
init_arr %masiv(4) 5 67 8 9
вот я и подумал что для первой строки писать (1) не нужно.. а на деле оказывется нужно.

Автор: WKnight 28.3.2013, 15:01

1. Чтение убираться небудет. Фича полезная.
2. А у массивов и числовых закрывается без проблем smile.gif
6. %figa[2].

Автор: BSW_rama 28.3.2013, 15:08

2. а вот и нифига, помоему невнимательно видео смотрел, стабильный баг
1) запускаем скрипт
2) как вылазиет окошко, ставим на паузу
3) двигаем окошко
4) снимаемся с паузы
5) пробуем закрыть.

Автор: WKnight 28.3.2013, 15:21

2. А у массивов и числовых закрывается без проблем

Вики доступна для редактирования всем желающим.

Автор: EL-GReeN 28.3.2013, 17:59

Код
set $a 1
if ($a > 0)
set $a $a
end_if//<-- из за этой баги я потратил в пустую 3 часа жизни
end_script

Автор: BSW_rama 28.3.2013, 18:12

Цитата(WKnight @ 28.3.2013, 18:21) *

2. А у массивов и числовых закрывается без проблем

проверял и на числовых и на масивах одинаково, инструкцию плох видать читал, надо подвигать окно

Автор: WKnight 29.3.2013, 11:53

Числовые выдают обработанную ошибку и нормально закрываются, массивы после этого не проверял.

Автор: xolost 31.3.2013, 14:11

Хо-хо.
Итак. Есть команда dir
Пример:
dir (%info C:\test test.bmp)

Значит, %info[1 1] = дата и время последнего изменения файла
Всё работает ок, если поменять время на компьютере, то всё по прежнему работает - ок. (казалось бы, к чему я это?)
А вот если будет произведен автопереход на время года как было сегодня примерно в 4:11 утра на час вперед, то dir будет видеть у файла ту же дату но + 1 час, и как результат - не состыковка.

Теперь что полезно.
1) В свойствах файла всё ещё отображается старая дата последнего изменения. (т.е. пилот берет данные где-то не совсем из свойств). Но пилот думает что + 1 час.
2) Когда я перезаписал этот файл из архива(специально в архиве храню подобные файлы, т.е. в этом случае их ничто не изменит). То стало определяться верная дата.

Вывод:
У файла есть несколько источников данных о дате его последнего изменения и пилот берет те данные, которые меняются переходом на время года. (Это наверное баг винды уже, что какой-то параметр вообще меняется - это же бред, нафиг он меняется? но вот так).

Автор: BSW_rama 1.4.2013, 10:35

set #c -3
set #e -37 * -37
set #e #c * #c
end_script

жесть... хорошо хоть это можно выправить, блоком
if #c < 0
set #c 0 - #c
end_if

Автор: DarkMaster 1.4.2013, 11:46

решается скобками...

Автор: WKnight 1.4.2013, 12:47

Dir построена на FindFirst\FindNext. Они возвращают только одно значение даты. Не представляю как исправить.

Автор: BSW_rama 1.4.2013, 14:08

set %travapolezero[1 1] 200
set %travazero[1 1] 200
set %travazero[1 2] 100
for #numpole 31 37 1
set %pole[#numpole 1] #numpole
set %pole[#numpole 2] %travapolezero[1 1] + 18 + 37 * (#numpole - 31)
set %pole[#numpole 3] %travazero[1 2] + 177
end_for
for #a 31 37 1
msg %pole[#a 2], %pole[#a 3]
wait 300
end_for
end_script

меняем в самой длинной строке имя переменной и ошибка пропадает.

set %travapolezero[1 1] 200
set %travazero[1 1] 200
set %travazero[1 2] 100
for #numpole 31 37 1
set %pole[#numpole 1] #numpole
set %pole[#numpole 2] %travazero[1 1] + 18 + 37 * (#numpole - 31)
set %pole[#numpole 3] %travazero[1 2] + 177
end_for
for #a 31 37 1
msg %pole[#a 2], %pole[#a 3]
wait 300
end_for
end_script

как меня это достало....

Автор: BSW_rama 1.4.2013, 15:03

ещё один облом

set %hero %unit#heroid

хотя

set %masiv %drugoymasiv

работает прекрасно.

Автор: DarkMaster 2.4.2013, 18:24

Цитата
Dir построена на FindFirst\FindNext. Они возвращают только одно значение даты. Не представляю как исправить.

Если не менять саму схему работы dir'а, то можно сделать коррекцию на часовой пояс и наличие автоматического перевода времени. Костыли и тормоз, но работать будет.

Если коррекцию выкинуть в отдельный поток, то учитывая время поиска не винте, задержки по времени не будет.

Автор: BSW_rama 9.4.2013, 10:05

set #f prompt (2 4 6)
окошко автоматически исчезает через 2 сек, если первую цифру поставить 0
set #f prompt (0 2 4 6)
тогда висит до бесконечности...
чё за негласная фича?????

Автор: WKnight 9.4.2013, 15:10

Бага.

Автор: qwock 5.5.2013, 8:48

Прикрепленное изображение

Автор: WKnight 5.5.2013, 9:40

$c

Автор: qwock 5.5.2013, 12:34

Цитата(WKnight @ 5.5.2013, 10:40) *

$c

подскажите пожалуйста как же в таком случае получить численное значение суммы двух корней или point_distance?

Автор: 666! 6.5.2013, 5:02

Автор UoPilot че за без предел,без вирусов можно нормально программу написать?

Отчет virustotal - https://www.virustotal.com/ru/file/c11b36e75078287781cbdfe6ec247a22f6a608c3322915e4b9e8b3f29c49cab7/analysis/

Меня ваша программа конечно устраивает но вирусы напрягают,для какой цели они зависают в программе ?

Автор: Kanibal 6.5.2013, 14:31

Цитата(666! @ 6.5.2013, 5:02) *

Автор UoPilot че за без предел,без вирусов можно нормально программу написать?

Отчет virustotal - https://www.virustotal.com/ru/file/c11b36e75078287781cbdfe6ec247a22f6a608c3322915e4b9e8b3f29c49cab7/analysis/

Меня ваша программа конечно устраивает но вирусы напрягают,для какой цели они зависают в программе ?

Возьми http://uopilot.uokit.com/uopsrc96.zip и скомпили себе без вирусов, или не пользуйся. Что ты за претензии тут предьявляешь?

from Zeleax: призываю к вежливости.

Автор: Zeleax 7.5.2013, 12:33

Кстати, у меня в конторе стоит корпоративный антивирус и он потёр именно последнюю версию пилота, а остальные версии спокойно пропустил.

Автор: WKnight 7.5.2013, 16:06

что за антивирь и чем мотивировал?

Автор: DarkMaster 9.5.2013, 6:31

WKnight, по ссылке тыкни, станет понятно. Из чего-то имеющего хоть какую-то репутацию только Symantec.

Цитата
Отчет virustotal - https://www.virustotal.com/ru/file/c11b36e7...9cab7/analysis/

Дык вы посмотрите, что орут нонейм антивири. Смысла на них смотреть около нуля. Лично занимался чисткой по ложным срабатываниям у лидеров из антивиров. Все убрали из баз, как ложное срабатывание.

Автор: WKnight 9.5.2013, 16:36

Та тыкал я туда, около шести срабатываний типа довнлоадер от никому неизвестных поделок. Прикинул почему именно довнлоадер, не нашел причин и закрыл ту фигню.
На несколько разный версий какая-нить шняга да ругается. Сейчас нет времени выяснять на какой именно кусок кода. Отложим до лучших времен.

Автор: DarkMaster 12.5.2013, 11:07

set $a findimage ( 1, 1 950, 810 (FindImage\Tera\LauncherLoginButton.bmp) %launcher 2 100 1 6
Увеличиваем конечные координаты - получаем результат "-1". Оно же работало...

Автор: WKnight 12.5.2013, 11:22

Есть подозрение, что там бага где-то. Тож заметил нечто подобное, пока отловить не удалось.

Автор: DarkMaster 12.5.2013, 11:50

это ты что-то недавно натворил, т.к. поиск по фулхд работал исправно. Тут вбил фул хд, а мне -1 пишет...

Автор: DarkMaster 12.5.2013, 13:09

какой-то бред. Пилот не перезапускал, пару раз прогнал скрипт с урезанной областью поиска, выставил область поиска 0 0 1920 1080 - сожрало. До этого я ставил 1 1 1920 1080. Только я подумал "ага!!!", ввел 1 1 1920 1080 и... оно тоже прекрасно теперь работало...

Автор: WKnight 12.5.2013, 14:42

Вот по-этому пока отловить и не удалось smile.gif.

Автор: xolost 14.5.2013, 0:27

И для кого я описывал все все способы и симптомы для -1 финдимиджа....
Я этот -1 как минимум в двух способах уже давно жду фиксов, т.к. половина моих ботов на это напарывается. Полное описание ищите раньше.
В кратце,
1) нулевой цвет
2) координаты поиска на широкоформатном экране.

И ты как раз сейчас наткнулся на второй, а у второго условий для повторения там несколько.


P.S. Дарк, я помню что обещал проверить кое-что... проверю, но позже... сорри за задержку... реально времени сейчас крайне мало...

Автор: WKnight 14.5.2013, 7:40

Я цвет пока не трогал, координаты ковыряю, но оно крайне нестабильно проявляется. Выскакивает пару раз подряд -1, начинаешь дебажить, оно идеально отрабатывает.

Автор: DarkMaster 15.5.2013, 13:10

Пилот перестал открывать ранее открытые скрипты, не сохраняет размер шрифтов. Удалял инишник - толку нет. Прикладываю бэкап удаленного инишника.


Прикрепленные файлы
Прикрепленный файл  uopilot.7z ( 2,14 килобайт ) Кол-во скачиваний: 71

Автор: WKnight 15.5.2013, 13:24

А оно не говорит ченить типа ерор лоадинг хоткейс?

Автор: WKnight 15.5.2013, 14:19

Кстати в этом конфиге уже нет ссылок на другие скрипты кроме одного.

Автор: DarkMaster 15.5.2013, 14:20

Вообще ничего не говорит. Такое впечатление, что просто дефолтные настройки берет.

Цитата
ерор лоадинг хоткейс

Года два жил с этой бедой, кроме лишнего окошка при запуске проблем не было. Проблема исчезла, когда очередная версия пилота просто снесла мне инишник. 2.30 вроде так отличилась или 2.29, не помню уже.

Автор: WKnight 15.5.2013, 15:06

По идее можно было снести секцию хоткейс в конфиге и оно должно было стать нормально smile.gif

Автор: DarkMaster 15.5.2013, 16:18

угу. вот только их там было очень много и заново все расставлять ну совсем никак не хотелось. Главное работало.

А че сейчас то делать?

Автор: WKnight 16.5.2013, 12:18

Другие настройки сохраняет?
Если его в новое место скопировать и там настраивать, сохраняет?
Мож вирус? smile.gif

Автор: DarkMaster 16.5.2013, 14:47

Он их сохраняет. Но он их не загружает. Т.е. я открываю инишник - все нормально сохранено, а загружается дефолт.

С вирусами сложнее. Я сижу серый на динамике, с единичными пробросами нестандартных портов, браузер запущен 100% времени в песочнице, стоит носкрипт, блок флэша и т.д., приложения к которым проброшены порты тоже запущены 100% времени в песочнице ну и антивирь стоит. Про вирусы я только байки слышу. Пилот вне песочницы работает.

Автор: WKnight 16.5.2013, 15:51

Странно, пришли новый конфиг, и пример настройки которую он не загружает. Файл пилота не изменен?

Автор: DarkMaster 16.5.2013, 17:03

У меня в одной папки лежит весь репозиторий, и отдельно ехе которым я пользуюсь с измененным названием. Закрыл, открыл - опять шрифт мелкий. Запустил 2.28 - все нормально. Запустил 2.32 тоже ожил. Втф? Он куда-нибудь в реестр лезть не начал случаем?

Автор: WKnight 17.5.2013, 10:54

В реестр с незапамятных времен пишет только путь к клиенту уо из соответствующего поля ввода, и переменные для изиуо. Больше ничего вроде.

Автор: DarkMaster 17.5.2013, 11:22

И че это было?

Автор: WKnight 17.5.2013, 11:42

Даже предположений никаких нет.

Автор: xolost 18.5.2013, 16:17

Код

set %test[1] 1
set #test 1
set $test 1

так работает:
set $test findimage (0 0 50 50 (c:\test\%test[#test]\тралала.bmp) %crds47 2 100 -1)  
set $test findimage (0 0 50 50 (c:\test\%test[1]\тралала.bmp) %crds47 2 100 -1)  



так не работает:
set $test findimage (0 0 50 50 (c:\test\#test\тралала.bmp) %crds47 2 100 -1)  
set $test findimage (0 0 50 50 (c:\test\$test\тралала.bmp) %crds47 2 100 -1)


баян?

Автор: WKnight 18.5.2013, 16:52

Проверим.

Автор: DarkMaster 18.5.2013, 19:07

\ - не является разделителем. Т.е. имя переменной у тебя $test\тралала.bmp.

Еще раз выскажусь за то, чтобы пробелы до и после переменной опускались при подстановке значения переменной.

Автор: xolost 19.5.2013, 14:07

Цитата(DarkMaster @ 18.5.2013, 20:07) *

\ - не является разделителем. Т.е. имя переменной у тебя $test\тралала.bmp.


А правильно ли это?

Автор: DarkMaster 19.5.2013, 14:13

И да и нет. Чтобы было совсем правильно, нужны экранирующие символы. В части переменных очень сильно напрашивается игнорирование пробела.

Автор: BSW_rama 27.6.2013, 18:47

не хотит выполнять циклы внутри первого цикла, причём сама фишка в том что если поставить #pos от 1, тогда он выполняет 1-5, а вот 6-15 не хотит.. пипец...

бага

set %base[1 1] 334
set %base[1 2] 147
set %base[1 3] 358
set %base[1 4] 173
set %base[2 1] 377
set %base[2 2] 188
set %base[2 3] 401
set %base[2 4] 215
set %base[3 1] 447
set %base[3 2] 161
set %base[3 3] 468
set %base[3 4] 192
set %base[4 1] 423
set %base[4 2] 229
set %base[4 3] 453
set %base[4 4] 260
set %base[5 1] 494
set %base[5 2] 251
set %base[5 3] 522
set %base[5 4] 280
set %base[6 1] 551
set %base[6 2] 244
set %base[6 3] 549
set %base[6 4] 246
set %base[7 1] 583
set %base[7 2] 276
set %base[7 3] 600
set %base[7 4] 203
set %base[8 1] 630
set %base[8 2] 237
set %base[8 3] 596
set %base[8 4] 240
set %base[9 1] 625
set %base[9 2] 269
set %base[9 3] 635
set %base[9 4] 196
set %base[10 1] 666
set %base[10 2] 230
set %base[10 3] 638
set %base[10 4] 235
set %base[11 1] 669
set %base[11 2] 267
set %base[11 3] 709
set %base[11 4] 220
set %base[12 1] 741
set %base[12 2] 249
set %base[12 3] 733
set %base[12 4] 161
set %base[13 1] 764
set %base[13 2] 191
set %base[13 3] 771
set %base[13 4] 139
set %base[14 1] 802
set %base[14 2] 168
set %base[14 3] 765
set %base[14 4] 178
set %base[15 1] 794
set %base[15 2] 209
set %base[15 3] 796
set %base[15 4] 130
for #pos 6 15 1
msg #pos
set #core1 %base[#pos 2]
set #core2 %base[#pos 4]
set #core3 %base[#pos 1]
set #core4 %base[#pos 3]
msg #core1 #core2 #core3 #core4
for #y #core1 #core2
for #x #core3 #core4
msg #x #y
end_for
end_for
end_for
end_script

Автор: Zeleax 27.6.2013, 18:52

не ищите вы легких путей )
почему init_arr не используете для инициализации массива?

Автор: WKnight 28.6.2013, 10:25

Не выполняет потому, что там выполнять нечего.
У вас все циклы типа от 551 до 549 с шагом 1.

Автор: DarkMaster 8.7.2013, 18:24

кнайт, а что с шрифтом лога то порешали? Я чет забыл чем кончилось... Задолбал он меня уже вконец скидывать шрифт на 7... Не вижу я нихрена с таким шрифтом((

Автор: WKnight 8.7.2013, 18:35

Не припомню. Возможно в 2до есть, щас перечитывать лень. При легком тесте в основной закладке не восстанавливает. Завтра поковыряю.

Автор: DarkMaster 30.7.2013, 12:45

Код
set #UOpilot findwindow (UoPilot  v2.32   WK)
showwindow #UOpilot minimize

Периодически приводит к зависанию. Причем проходит строку showwindow, окно не сворачивает и виснет через пару строк(разных, в разных скриптах). Комментирую строку со сворачиванием - все нормально. Восстанавливаю - шанс повиснуть при старте(код в шапке).

Автор: xolost 7.8.2013, 14:51

Код

set $a 0 0 1500 1500
set $c findcolor ($a 1 1 4874622 %b 2)
msg $c

-1


Код

set $a 0 0 1500 1500
set #c findcolor ($a 1 1 4874622 %b 2)
msg #c

-1

Код

set %a[1] 0 0 1500 1500
set $c findcolor (%a[1] 1 1 4874622 %b 2)
msg $c

-1

Код

set %a[1] 0 0 1500 1500
set $c findimage (%a[1] (C:\тралала.bmp) %crds11 2 100 -1)
msg $c

0+

Код

set $a 0 0 1500 1500
set $c findimage ($a (C:\тралала.bmp) %crds11 2 100 -1)
msg $c

0+


Вывод:
фиксим финдколор...


Или я неверно применяю к нему переменные координат?

Автор: DarkMaster 7.8.2013, 14:53

Цитата
неверно применяю к нему переменные координат

Автор: xolost 7.8.2013, 14:59

Ну поясни как надо. Если ты имеешь ввиду, что применяются только числовые переменные, то решение я конечно смогу найти - налепив лишние куски кода.

Но может у тебя как-то попроще?

Автор: DarkMaster 7.8.2013, 15:02

если в двух словах, то не лепи в одну переменную несколько координат. Это работает только в ифах. Если где-то еще каким-то чудом заработает, то считай это фичей.

Автор: xolost 7.8.2013, 15:04

Цитата(DarkMaster @ 7.8.2013, 16:02) *

если в двух словах, то не лепи в одну переменную несколько координат. Это работает только в ифах. Если где-то еще каким-то чудом заработает, то считай это фичей.


Я дал четкие примеры сверху.
У финдимиджа работает в любых позах любые переменные координат, т.е. числовые, строковые, массивы. Хоть в одной, хоть в 4-ех.
У финдколора никак не работают строковые и массивы. Только числовые.

Считаешь что багует финдимидж, раз всё умеет?

Автор: DarkMaster 7.8.2013, 15:17

еще раз

Цитата
не лепи в одну переменную несколько координат. Это работает только в ифах. Если где-то еще каким-то чудом заработает, то считай это фичей.

Это недокументированная возможность. Работает - хорошо, не работает - так и должно быть.

Автор: xolost 7.8.2013, 15:21

Цитата(DarkMaster @ 7.8.2013, 16:17) *

еще раз

Это недокументированная возможность. Работает - хорошо, не работает - так и должно быть.


Ещё раз, попробую по другому объяснить.


Код
set $c findcolor (#x #y #x1 #y1 1 1 4874622 %b 2)
Работает.


Код
set $c findcolor ($x $y $x1 $y1 1 1 4874622 %b 2)
Не работает


Код
set $c findcolor (%x[1] %y[1] %x1[1] %y1[1] 1 1 4874622 %b 2)
Не работает



Финдимидж во всех таких же случаях отработает и + даже одной переменной во всех позах.

Автор: DarkMaster 7.8.2013, 15:39

в таком виде еще имеет смысл о чем то говорить. В частности о массивах.

Автор: xolost 7.8.2013, 15:46

Цитата(xolost @ 7.8.2013, 16:04) *

У финдколора никак не работают строковые и массивы. Только числовые.


Никак - подразумевалось вполне буквально)

Автор: DarkMaster 9.8.2013, 18:03

Что за параметр [append] в save_array? В синтаксисе появился, а в истории развития тишина. Зарытые сокровища? smile.gif

Автор: xolost 9.8.2013, 18:48

Цитата(DarkMaster @ 9.8.2013, 19:03) *

Что за параметр [append] в save_array? В синтаксисе появился, а в истории развития тишина. Зарытые сокровища? smile.gif

воу воу воу, по легче!
save_array работает идеально, не сломайте раби Бога...)

Автор: WKnight 11.8.2013, 14:53

Поздно smile.gif

Задумывалась дозапись массивов, что-то недоделано.

Автор: xolost 11.8.2013, 15:14

Цитата(WKnight @ 11.8.2013, 15:53) *

Поздно smile.gif

Задумывалась дозапись массивов, что-то недоделано.


А зачем она?

Код

load_array %a $path
set #a size(%a)
set #a #a + 1
set %a[#a] Вася, а может Петя или вообще любая переменная
save_array %a $path

И всё.
Особенно учитывая, что это не только в один столбец актуально записывать, думаю оно не оч нужно.
Хотя, может и нужно))

Автор: DarkMaster 11.8.2013, 15:46

угу, а когда у тебя тхт файл на пару тысяч строк? А если их с десяток тысяч? Ты представляешь сколько он будет загружать, а потом сохранять? У меня были тхт шники которые пилот грузил более 10 минут. Зашибись, чтобы строчку добавить.

Автор: xolost 11.8.2013, 15:55

Цитата(DarkMaster @ 11.8.2013, 16:46) *

угу, а когда у тебя тхт файл на пару тысяч строк? А если их с десяток тысяч? Ты представляешь сколько он будет загружать, а потом сохранять? У меня были тхт шники которые пилот грузил более 10 минут. Зашибись, чтобы строчку добавить.


10-ти мегабайтный файл загружается за 16мс
т.е. теоретически 1 гиг будет грузится 1.6 секунды

Это много? И ты знаешь где достать такого объема текстовые файлы?

Сколько весил тот, который ты 10 минут грузил?

Автор: DarkMaster 11.8.2013, 16:48

30к строк. сколько весил хз.
дальше 10к строк существенное замедление процесса. Хз может с этим что-то делали, это было не на 2.32.

Автор: xolost 24.8.2013, 11:13

Устал уже с этими форами бороться. Их можно поправить?

1)

Код
   :1
   for #a 1 5
       gosub 2
   end_for

   :2
   goto 1

"Ошибка интерпретации фор" - вместо ошибки, можно просто опять цикл начинать заново, ибо по новой в него идем.

2)

Код
  
   set #b 1
   for #a 1 5
      :1
      if #b = 1
          goto 2
      end_if
   end_for

   :2
   set #b 0
   goto 1

"Не могу найти имя переменной фор" - наверняка может, только не хочет...

Автор: DarkMaster 24.8.2013, 13:23

for просто не свинка, а культурный оператор. Прерывание циклов по гото не культурно и свинство, вот он и не подчиняется. Кнайт вообще говорил, что хотел его поковырять по этому поводу. По большому счету это принудительное обучение культуре программирования)

Автор: xolost 24.8.2013, 13:26

Я понимаю - культура, мультура...
Однако, из-за этой культуры дописывать десятки, а то и сотни строк - затратно и чрева-то наделать ошибок.

Автор: DarkMaster 24.8.2013, 13:29

ошибки они как раз с гото.

Код
for ....
    if ...
        set #goto 1
        break
    end_if
end_for

if #goto = 1
    goto mark
end_fi


gosub кстати отрабатывает корректно, если из госаба так же по-свинки не выходить =)

Автор: xolost 24.8.2013, 13:38

Цитата(DarkMaster @ 24.8.2013, 14:29) *

ошибки они как раз с гото.

Код
for ....
    if ...
        set #goto 1
        break
    end_if
end_for

if #goto = 1
    goto mark
end_fi


Отличный пример... в нем как раз у тебя на 4 строчки больше, зато "культурно"... как раз поэтому и ошибок больше можно сделать.
А ещё, в нем получается, что мы не можем продоложить работу фора... Т.е. мы его жестко прерываем, а если мне не нужно его прерывать?
Если бы нужно было, я бы сразу через брейк отрабатывал бы.

Цитата
gosub кстати отрабатывает корректно, если из госаба так же по-свинки не выходить =)

ага, однако, если в том госабе где мы работаем - что-то жесткое случится и нам нужно будет срочно уходить в глобальный другой цикл(например битва), то... Опять-таки.. нужно делать там ретурн, а потом в цикле брейки и ретюрны... А если цикл в цикле раза 3 как у меня?

Так что, в глобальных ботах - это проблема.

Автор: DarkMaster 24.8.2013, 13:41

Цитата
если мне не нужно его прерывать?

есть госаб
Цитата
А если цикл в цикле раза 3 как у меня?

то займет это 10 мс. Критичность? Ну хз хз... Это может быть критично разве, что для бота в КС/Кваке и тп.

Автор: xolost 24.8.2013, 13:59

Цитата(DarkMaster @ 24.8.2013, 14:41) *

есть госаб

то займет это 10 мс. Критичность? Ну хз хз... Это может быть критично разве, что для бота в КС/Кваке и тп.

Я же привел пример))

Вот тройной цикл в каждом из котором по 50 строк всяких задач, и как ты понимаешь, всё это завязано и последовательно. И когда я тем госабом выйду, а там увижу, что мне срочно надо уйти в другой цикл(вообще не связанный ни с чем), а в нем ещё 100500 букв, циклов, госапов и своих гото, в которые можем уходить исходя из новых условий.

Конечно, можно переписать весь код и вообще удалить нафиг гото и тем самым избежать многих проблем. Однако прибавится работы с госапом подобной.

Вопрос в том, для чего существует пилот? Для того, что бы пользователь мог написать бота или что бы он научился культурно программировать?
Когда пользователь, вроде меня, пишет бота пол года(одновременно изучая его) и получает на выходе 100000500000 букв с 50-тью оптимизациями и 100+ фукнционалом, то в данном случае, вопрос - либо потратить месяц-два на переделку всех мест в боте, что бы было "культурно"(ведь 100% что поломаешь всего бота), либо просто исправить эти два косяка, суть в которых только "культура" и не более того.







И да, конечно же есть ещё вариант решения:

while #a <= 50
set #a #a + 1
end_while

получается суть фора. Но ведь и это извращение. И что бы его не было, фор для того и создан. Разве нет?

Автор: DarkMaster 24.8.2013, 14:20

у меня таких проблем не возникает. Наверно потому, что гото у меня есть только в виде goto start)

Автор: HF-Trade 25.8.2013, 18:55

Цитата(DarkMaster @ 11.8.2013, 17:48) *

30к строк. сколько весил хз.
дальше 10к строк существенное замедление процесса. Хз может с этим что-то делали, это было не на 2.32.


Проблема скорее не в загрузке, даже построчно.. А в запихивании всего этого при загрузке в какойнить рекордсет, и построчном оображении.. хотя хз.

VirtualList надо было...
100+к строк, секундное дело...

Автор: DarkMaster 17.9.2013, 10:50

Код
set $icqNum 111-111-111
set #handleMainCahtWindow findwindow ([$icqNum] - Окно сообщений)
showwindow #handleMainCahtWindow hide
log   #handleMainCahtWindow

showwindow #handleMainCahtWindow
set #handleMainCahtWindow findwindow ([$icqNum] - Окно сообщений)
log   #handleMainCahtWindow

Почему, если не сделать второй showwindow, то окно не будет найдено? Скрытые окна не ищутся? О.о

getlayout при раскладке a000419 возвращает значение 0000F0C0. Непорядок. При этом в setlayout надо вводить именно a000419.

Автор: WKnight 17.9.2013, 11:54

Цитата(DarkMaster @ 17.9.2013, 7:50) *

Код
set $icqNum 111-111-111
set #handleMainCahtWindow findwindow ([$icqNum] - Окно сообщений)
showwindow #handleMainCahtWindow hide
log   #handleMainCahtWindow

showwindow #handleMainCahtWindow
set #handleMainCahtWindow findwindow ([$icqNum] - Окно сообщений)
log   #handleMainCahtWindow

Почему, если не сделать второй showwindow, то окно не будет найдено? Скрытые окна не ищутся? О.о

getlayout при раскладке a000419 возвращает значение 0000F0C0. Непорядок. При этом в setlayout надо вводить именно a000419.

"поиск в скрытых окнах зависит от состояния переключателя "Показывать все окна"."
От него много чего зависит smile.gif

Автор: DarkMaster 17.9.2013, 11:56

Цитата
От него много чего зависит

Давай подробнее. Для меня это неведомая галка.

Автор: WKnight 17.9.2013, 12:22

Цитата
От него много чего зависит
Это образно smile.gif
Список окон в пилоте под кнопочкой W и команда findwindow, может конечно еще что-нить несущественное smile.gif

Автор: nazar 20.9.2013, 15:08

какая перемення определяет день недели в новой версии??

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)