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

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

UoKit.com Форумы _ UO Pilot _ Пожелания

Автор: DarkMaster 2.6.2010, 2:04

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

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


Для пожеланий и багов открыт специальный https://redmine.uokit.com/projects/uopilot/issues.
Крайне рекомендуется писать сообщения с соответствующим содержанием именно туда. В противном случае ваш пост будет промодерирован и вручную будет создана копия на багтреккере.

https://redmine.uokit.com/projects/uopilot/issues


Цитата
Цитата
Очень хочется увидеть команды аналоги существующих только get'ы
get ShowWindow <handle> <state>
Зачастую существует несколько окон и из-за этого отсылаются ошибочные команды.
И по возможности.
get windowpos X Y width height handle

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

get $state <handle> - возвращает в переменную $state состояние окна <handle> HIDE/MINIMIZE/TOP/Развернуто_но_не_ТОП
get windowpos <handle> #x #y #wight #height - возвращает местоположение и рамер окна <handle> в переменные #x #y #wight #height соответсвенно.

Автор: Zhorzh 14.8.2010, 20:15

Тут вообще идея-бомба родиласьsmile.gif
1. получение/установка текстовых свойств windowed-компонент типа TEDit и т.п.
2. получение/установка св-в по id у объектов html.

Автор: WKnight 15.8.2010, 4:32

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

2 не представляю как извне его найти.

Автор: DarkMaster 28.8.2010, 18:33

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

Вставка буфера аналог ctrl+v, только посыл в конкретное приложение, на не системное нажатие. Речь уже когда то шла, что на мысль натолкнул. Чтобы не кануло в лета собственно.

Автор: GhostHunter 1.11.2010, 18:28

Добавлю 5 копеек от себя, в части касающейся парсера команд. На мой взгляд, было бы уместно довести до конца механизм работы с процедурами:
вложенный вызов процедур (вызов процедуры из другой процедуры) - существенно сократит и повысит читабельность кода большинства скриптов;
возможность возвращения значения из процедуры (return #myVar) - фактически, добавление разновидности процедур - функций;
передача массивов в качестве аргументов;
ну и что касается in-out параметров (т.е. по ссылке или по значению) - совсем не будут лишними, на мой взгляд.

Вот такие предложения smile.gif


Ну и как всегда, не могу не напомнить про команду записи сообщения в лог dry.gif Это просто становится моей визитной карточкой biggrin.gif

Автор: DarkMaster 17.11.2010, 6:53

Хотелось бы видеть аналог с++ switch ... Можно конечно с метками извращаться, но тогда если будет не описанная ситуация скрипт встанет с ошибкой. Громоздить кучу ифов не удобно да и тормозные они.

Автор: DarkMaster 3.8.2011, 14:55

Тут идею по поводу лога опять начали подниматься.
Я придерживаюсь идеи создания ini файла в котором будет описана запись в лог каждой команды. И фантазию WKnight'у развивать не надо будет, чтобы придумывать описания и провидцем становиться не надо - пользователь сам скорректирует то что ему важно.
Так же очень хотелось бы иметь 4 режима лога:
1) Выключено. Даже ручной set logging траляля - полностью игнорируется.
2) В лог идет запись только в ручную проставленных сообщений(на данный момент идентично set logging off)
3) В лог идут только автоматические сообщения.
4) В лог идут все сообщения (на данный момент идентично set logging on).

Автор: ubik 5.8.2011, 11:46

waitkey {anykey} // без разницы кодом или символом
lawsend //медленный сенд))

Автор: DarkMaster 15.8.2011, 13:30

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

Автор: Zeleax 30.8.2011, 0:02

findcolor:
Группа - ищется группа пикселей заданных цветов (соотношений между каналами), состоящая из заданного числа точек (или больше), находящихся друг от друга на расстоянии не более чем заданное.
Используется для обнаружения объектов, состоящих более чем из одного пикселя подходящего цвета (отсекается "шум").

crop - определение углов прямоугольной области, ограничивающей все пиксели всех перечисленных цветов (соотношений);
Используется для быстрого определения размера текстовых надписей, высоты/ширины полоски маны(жизни) и т.п.

Автор: DarkMaster 9.9.2011, 13:52

1) Отрываем окно статуса командой в пилоте или отдельная кнопка.
2) Нажимаем кнопку/плюсик "добавить переменную"
3) Получаем возможность ввести имя переменной и название.
4) В окошко добавляется строка, например, "ХП 12345", где ХП - название из предыдущего пункта, а 12345 - значение переменной.
5) Окошко самостоятельно обновляется. Таймер можно вывести переменной, но и фиксированный шибко не испортит.
6) Минимальные рамки окошка, а лучше и вовсе их отсутствие.
7) Обязательно возможность установить поверх всех окон.
8) В идеале возможность задать цвет при значениях больше или меньше определенных в пункте 4.
9) Желательно, чтобы окошек можно было создать несколько независимых.
10) Название выравнивание по левому краю, значение по правому.

Так же думаю будет правильным ввести под это дело несколько команд:
set status_open - открывает окно статуса.
set status_close - закрывает окно статуса.
set status_add "Мана" #mana.3 (#mana < 123 255 0 0 0)(0 255 0)
Добавляет в окно статуса строку с названием "Мана" и значением переменной #mana. Если #mana меньше 123, то цвет становится красным - 255 0 0, в другом случае цвет зеленый - 0 255 0. Параметры цвета необязательные, можно просто опустить.
set status_del #mana - удаляет переменную #mana из окна статуса.

Что мы имеем в итоге: небольшое окошко поверх всех окон в котором табличка названий переменных и их значения.
Пример:
set #mana.3 10
set #weight 300
set #ammo 27
set status_add "Мана" #mana.3 (#mana < 123 255 0 0 0)
set status_add "Вес" #weight (#weight < 100 0 255 0) (#weight > 500 255 0 0 0) (200 200 200)
set status_add "Патроны" #ammo

Нарисовал как мог...
_____________
| Мана__ __10 |
| Вес_____300 |
| Патроны...27 |

Все это программа максимум. Если будет реализация даже на базовом уровне - уже будет прекрасно.

Автор: Elvari 12.9.2011, 2:21

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

Примерный синтаксис:

overlay <text> [<начало блока текста по x> <начало блока текста по y> <цвет шрифта> <размер шрифта>]

Например:
Скрипт вида
Код
set $t1 text1
set $t2 text2
set $t3 text3
set $t4 text4
set $t5 text5
set $t6 text6
set $t7 text7
set $t8 text8

overlay $t1||$t2 200 300 255 18
overlay $t3|$t4 800 600 65280 24
overlay $t5|$t6|$t7 880 600 16777215 24
overlay $t8 960 740 65535 10

привел бы к такому результату (предположим что черный фон это окно игры):

http://s47.radikal.ru/i115/1109/10/e58e4dbe67a3.png

Автор: DarkMaster 14.9.2011, 1:10

Есть идея как можно поудобнее срастить Notepad++ с пилотом. Сейчас если пишешь скрипт в блокноте, то его постоянно приходиться подгружать в пилоте. Появилась команда load_script и навела меня на мысть:
set #a current_script
load_script #a test.txt
Допилить хотелось бы так: если лоад скрпит происходит в закладку из которой он был вызван, то скрипт заменяется и стартует уже новый. На данный момент этот код приводит к замене скрипта во вкладке, однако работает ранее запущенный(если не перезапускать).

Автор: DarkMaster 17.9.2011, 0:46

давно мечтаю о do while... вроде и мелочь, но иногда так не хватает.
как кстати дела со switch? ты вроде начинал работать над ним, если не ошибаюсь.

Автор: Warstone 18.9.2011, 20:32

Цитата(Zeleax @ 18.9.2011, 14:29) *

Пытаюсь сделать плагин на C#
Печально. Не надо так делать.
Цитата(Zeleax @ 18.9.2011, 14:29) *
Отсюда пожелание - добавить системную переменную для работы с плагинами, в которой будет возвращаться код ошибки при вызове плагина
Кнайт... GetLastError/SetLastError тут - как нельзя кстати.

Предлагаю вынести обсуждение в топик плагинов. Зелеах, постани туда код твоего тестового плагина.

Да, кстати... Кнайт... Очень хорошо-бы добавить вот какую фичу... Возможность сделать "скриншот" рабочего окна и искать на нем. Это может помочь в некоторых случаях.

Автор: DarkMaster 18.9.2011, 20:39

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

Если я правильно понял, то второй метод сравнения как раз так и работает.

Автор: Warstone 18.9.2011, 20:53

Нет... Я имл в виду для группы findimage'ей... То есть что-бы можно было раз 5 запустить findimage/findcolor на запомненом изображении.

Автор: WKnight 19.9.2011, 11:35

Цитата
То есть что-бы можно было раз 5 запустить findimage/findcolor на запомненом изображении.
а смысл, если изображение уже изменилось за время поиска?
Цитата
Печально. Не надо так делать.
причина? лучше будет если смогут и на си писать, может конечно не на фреймворк зависимом, но всеже.

Автор: Elvari 21.9.2011, 22:24

Цитата(WKnight @ 16.9.2011, 16:15) *

хинт подправил
поборол мигание, ускорил в 4-5 раз, научил таскаться по экрану
затрудняюсь в опеределении нового синтаксиса. можно добавить
x y
width height
fontcolor
fontsize

спасибо) когда это можно будет увидеть?
можно ли будет отобразить несколько хинтов?

Автор: Larrikin 24.9.2011, 3:26

хотелось бы функцию для получения случайного значения с http://ru.wikipedia.org/wiki/Нормальное_распределение вероятностью в указанном диапазоне.

возможный пример использования:

Код
set #time_to_wait ( normal 1 3 )


тут переменная #time_to_wait должна получать значения от 1, 2, 3 или 4, причем 2 и 3 чаще, чем 1 или 4.

еще пример

Код
wait ( normal 1000 4000 )


скрипт приостанавливается на срок от 1 до 5 секунд, но чаще всего в районе 3 секунд.

Автор: DarkMaster 27.9.2011, 8:00

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

Цитата
findmem <%result> (<var> <type> [смещение] [var] [type]...) [startAdress] [endAddress] [шаг] [count]

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

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

Автор: Juzzver 27.9.2011, 10:21

Мечтаю об обходе "GameGuard", чтобы свободно ставить на макрос и сворачивать окно )

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

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

Автор: Warstone 27.9.2011, 11:17

Цитата(WKnight @ 19.9.2011, 12:35) *

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

Автор: Juzzver 27.9.2011, 11:20

Это относительно Karos Online, я 3 дня искал возможность обхода гейм гварда, все попытки безуспешны... Как я понял GG отличаются от тех, что стоят на линейках и т.п., т.к. их софт мне не помог и гайды как хексить, сверлить ддлки тоже, т.к. их попросту нет в моем случае.

Единственное, что сработало - это мышка x7, но трабл в том, что процесс макроса занимает весь пк, т.е. свернуть окно нельзя, в этом все и неудобства.

Вот он противный http://www.gameguard.co.kr/ru/index.htm

Автор: WKnight 27.9.2011, 12:15

Цитата
В некоторых случаях это надо
есть пожелание по поводу запоминания области экрана, есть вероятность что на ее основе получится.
Цитата
Это относительно Karos Online
если есть файлик npggNT.des то может помочь старая дллка

Автор: Larrikin 27.9.2011, 12:32

Цитата(Zeleax @ 24.9.2011, 19:05) *

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

Я так понимаю там даже http://ru.wikipedia.org/wiki/Преобразование_Бокса_—_Мюллера

Автор: DarkMaster 27.9.2011, 17:33

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

Может я что-то не так понимаю... Там же идет по факту обычный реадмем. Все что надо сделать это довесить его for'ом или while'ом(хз как правильнее сделать, т.к. нужно и сравнение и шаг). Сделать что-то вроде:
Код
%findingVar содержит список искомых значений со смещениями и типами.

#shift - шаг поиска.
%findingVar [1 1] 123 // - значение
%findingVar [1 2] 0 // - смещение
%findingVar [1 3] d  // - тип

%findingVar [1 1] 321
%findingVar [1 2] -512
%findingVar [1 3] d

set #sizeFindingVar size (%findingVar)

for #i #startAddress #endAddress #shift
    readmem %findingVar [1 1] #i %findingVar [1 3]
    if #var = %findingVar [ 1] // Нашли искомое значение.
        if #sizeFindingVar = 1 // Сверяем структуру  если есть, нет - выходим.
            set #successAddress #i
            break
        else
        for #ii 2 #sizeFindingVar 1 // Сверяем всю структуру
            set #addressWithShift %findingVar [1 2]
            readmem #structureVar [1 1] #addressWithShift %findingVar [1 3]
            if #structureVar = %findingVar [#ii 1]
                if #ii = #sizeFindingVar // Если последнее значение из структуры, то все совпало.
                    set #successAddress #i
                    break 2
                end_if
            else // Значение смещения не совпало, выходим.
                break
            end_if
        end_for
    end_if
end_for

#successAddress содержит искомое значение.


Можно это как-то в адекватном виде перевести на делфик или сделать вставку на асме? Просто время работы в пилоте всю задумку убивает.
Или я не правильно в корне себе процесс поиска представляю?

Цитата
Скажите исправят ли в обновленной версии 2.18 + frost глюк с нажатием клавиш f и num?

На данный момент мы не имеем никакого отношения к разработке обхода фроста.

Автор: WKnight 29.9.2011, 12:41

Цитата
for #i #startAddress #endAddress #shift
выделенная память обычно не одним куском, а рандомно разбросана

Автор: WKnight 1.10.2011, 6:11

Цитата(Elvari @ 5.9.2011, 23:42) *
мешает ограничение в 255 символов.

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

Автор: DarkMaster 1.10.2011, 7:55

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

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

Автор: DarkMaster 4.10.2011, 10:32

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

Автор: WKnight 4.10.2011, 15:03

подробнее как оно должо работать

Автор: DarkMaster 4.10.2011, 15:20

в случае % оттенков. скажем есть погрешность 3%.
точка имеет цвет 100 100 100, 255*3%=8, соответственно 100+/-8. При этом все цвета в пределах (92 92 92)-(108 108 108) будут считаться совпадением. Ну и соответственно в масштабах финдимиджа для всей картинки. Я так понимаю кушать будет не мало, но лучше так, чем каждый раз на грабли вставать, да и некоторые аспекты сейчас нереализуемы из-за этого(чуть прозрачный фон например).

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

Автор: _LESTAT_ 18.10.2011, 22:59

Столкнулся, с как я думал, решенной проблемой.
Теперь пилот умеет определять , размер окон и положение.(кстате как избавится от параметров которые не хочешь задавать, например мне надо определить лишь размер окна, но не его положение, но всеравно приходится резервировать переменные для всех параметров)
Теперь пилот с помощью showwindow умеет задавать приложениям, развернуться им свернуться и т.п. Но как быть если ненужно задавать , а нужно лишь определить свернуто окно или развернуто или восстановлено. Неужели в этом случае придется прибегать к внешним утилитам, может добавите команду позволяющие определить позицию окон (MIN MAX и.т.п.)?

Автор: DarkMaster 19.10.2011, 8:51

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

Хотелось бы вытаскивать состояния в _независимые_ переменные:
1) хайд
2) минимизировано
3) максимизировано
4) восстановлено
5) доступно
6) активно

Так же неоднократно была необходимость вытащить хендл активного окна. Т.е. просто узнать какое окно сейчас активно.
get #handle activewindow
В переменную #handle возвращается текущее активное окно.
Это бывает необходимо при работе с несколькими окнами/приложениями либо при работе скрипта, которому периодически необходимо свершать действия в развернутом окне. Возврат после этих действий бывает очень проблематичен.

Автор: Zeleax 28.10.2011, 11:57

предлагаю для решений проблем с нахождением окон добавить команду типа
get windowsfromcursor %winlist
или
get windows %winlist #x #y

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

Автор: DarkMaster 28.10.2011, 13:10

Мммм... А смысл? Что потом делать с этой свалкой хендлов?

Автор: Zeleax 28.10.2011, 13:30

Цитата(DarkMaster @ 28.10.2011, 13:10) *

Мммм... А смысл? Что потом делать с этой свалкой хендлов?

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

Автор: DarkMaster 28.10.2011, 15:01

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

Автор: Zeleax 28.10.2011, 15:51

Цитата(DarkMaster @ 28.10.2011, 15:01) *

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

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

Автор: DarkMaster 28.10.2011, 17:46

У меня на данный момент открыто 28 окон, большинство развернуто на весь экран... Ну правда таких не много будет...


Прикрепленные файлы
Прикрепленный файл  speedballs.7z ( 32,72 килобайт ) Кол-во скачиваний: 1191

Автор: Zeleax 28.10.2011, 21:40

Цитата(DarkMaster @ 28.10.2011, 17:46) *

У меня на данный момент открыто 28 окон, большинство развернуто на весь экран... Ну правда таких не много будет...

Ну во время проверки не будешь открывать кучу лишних окон , надеюсь? )

Автор: DarkMaster 28.10.2011, 22:41

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

Автор: DarkMaster 3.11.2011, 13:30

Если задать пилоту хоткей(в данном случае "z"), то при нажатии на него не будет напечатан символ, что достаточно не удобно. Решил исправить данную проблему небольшим скриптиком:

Код
set #handle findwindow (Dungeon Defenders)
set workwindow #handle
:start
get windowpos #handle #xw #yw #w #h #r
if_not #xw = -32000 or #xw = -11 // Ïðèëîæåíèå íå ñâåðíóòî
    get mouse_pos #x #y
    left #x #y
    send t
    wait 100
else  
    sendex z
    stop_script
end_if
goto start


Смысл если мы в приложение, то выполнить скрипт, иначе просто нажать клавишу. Но результат оказался очень забавным: выполняя сендекс "z" скрипт вместо написания символа сам себя останавливает.
Хотелось бы решить как-то данную проблему.

Автор: Elvari 3.11.2011, 15:25

send z?

Автор: DarkMaster 3.11.2011, 17:15

И в какое окно посылать send z? Если приложение свернуто, то активно может быть что годно - от калькулятора до десятого дочернего окна редактора памяти.

Автор: DarkMaster 11.11.2011, 10:11

Давно мечтаю о задании в теле скрипта хоткея на сам скрипт. Было бы еще очень интересная идея выполнения по хоткею подпрограммы внутри скрипта. Может быть очень полезно для коррекции действий. Сейчас это приходится решать дополнительными скриптами, что не очень удобно, а передавать другим людям и вовсе морока. Т.е. в теле скрипта будет содержатся что-то вроде:
:sub {F1}
msg 123
return

Автор: Elvari 14.11.2011, 15:33

Можно ли научить пилот определять что зажата какая-либо кнопка (к примеру правая кнопка мышки) и в этом случае не запускать скрипт?

Автор: DarkMaster 15.11.2011, 14:26

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

Автор: Zeleax 15.11.2011, 14:58

Цитата(DarkMaster @ 15.11.2011, 14:26) *

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

Так может лучше повесить опциональное ограничение на размер файла?

Автор: ceziy 22.11.2011, 20:53

было бы неплохо добавить функций для работы со строковыми переменными. к примеру взять за аналог простые функции копи инсерт
Copy(s:string, index:integer, count:integer):string

set $F qwertyASD12345
set $s copy( $f , 6 , 3) //результат ASD


Insert(source:string, var s:string,index:integer)

set $s qwerty12345
insert( ASD , $s , 6) // результат qwertyASD12345

и делит и поиск по строке тоже было бы неплохо )))

Автор: Zeleax 1.12.2011, 12:56

Просьба добавить опцию включения/отключения нумерации строк (чтобы при необходимости освободить место в окне)

Автор: Zeleax 4.12.2011, 12:27

Предлагаю в список считываемых Readmem типов добавить вещественные FLOAT/SINGLE (4 байта), REAL (6 байт), DOUBLE (8 байт), дабы не извращаться в самом скрипте, как https://forum.uokit.com/index.php?showtopic=22710.

Автор: DarkMaster 5.12.2011, 0:28

При выходе из пилота "Сохранить изменения в имя_скрипта/новый_скрипт". Ну и соответственно блокировка выключения компа... Сколько уже скриптов загублено и сколько времени проведено в анализе на каком месте был последний сейв... Так же неплохо было бы автосейв в темп файл(именно в темп, а не перезапись).

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

ok
перенес в начало списка предыдущие 2 поста.

Автор: Zeleax 5.12.2011, 12:58

Хотелось бы, чтоб пилотовский хелп и история развития открывались в отдельных окнах, видимых на панели задач (ну или хотя бы опционально выбирать). Сейчас они как-то загадочно работают )

Автор: Zeleax 6.12.2011, 8:47

Было бы неплохо иметь функцию get workwindow, возвращающую хендл текущего рабочего окна

Автор: DarkMaster 6.12.2011, 11:13

Вытаскивал с помощью артмани пид. Вроде все прошло достаточно быстро и просто.

Автор: olmer 6.12.2011, 19:24

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

Автор: WKnight 7.12.2011, 11:54

галочка "отображать запущенные скрипты"?

Автор: olmer 7.12.2011, 16:04

О спасибо)

Автор: Zeleax 9.12.2011, 11:56

WKnight
Вопрос: почему в пилоте не используются в выражениях вещественные числа? Насколько сложно это реализовать?

З.Ы.: это я веду к возможности использования тригонометрических функций )

Автор: WKnight 9.12.2011, 16:20

исторически так сложилось, от прародителя. лет за 10 оно особо никому не понадобилось smile.gif
я уже подумываю ченить придумать с точками, но проблема в том, во первых всё конкретно заточено на целочисленное, а во вторых что процедуры преобразования вещественных чисел не, так сказать, thread-safe, короче в потоках могут себя криво вести, как раньше поиск точек и картинок на экране, из-за которых пилот падал иногда.

Автор: Zeleax 10.12.2011, 12:38

Всё же хочется отдельную команду для внесения в массив нескольких значений сразу, типа:

Код
aset %arr Один два три четыре
aset %b[2] 1 2 3 4 5 // присвоить первым пяти элементам 2-й строки массива %b соответствующие значения


Потому как делать это через буфер обмена "некошерно", да и вылетает иногда ошибка

Автор: Zeleax 10.12.2011, 15:08

вопрос: чем отличаются переменные active_script и current_script (кроме лишнего значка '^')?

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

Код
set #a 1
call test #a
end_script

proc test #aa #bb
   msg Активный скрипт active_script, текущий скрипт current_script
   // пытаемся обратиться к переменной #a
   set #b #a.current_script
   msg #b
   set #c #a.active_script
   msg внутри поцедуры a= #a , внешнее значение a = #b или #c
end_proc

Автор: WKnight 10.12.2011, 15:44

Цитата
Всё же хочется отдельную команду для внесения в массив нескольких значений сразу, типа
В разработке. где-то выше был приведен пример со ссылкой кажется на перл, однако лучше по нему сделать, чем придумывать.
Цитата
Проблема: не получается обратиться к переменной текущего скрипта по её полному имени переменная.номер_скрипта, где номер скрипта задан в виде переменной
а я это разве доделал? помоему оно заморожено было, да так и осталось, из-за более насущьных вещей.
Цитата
чем отличаются переменные active_script и current_script (кроме лишнего значка '^')?
если по логике, то активный это тот, что показан в пилоте, а текущий - это тот в котором эта команда обрабатывается. т.е. текущий - каждый сам для себя, а активный он один, общий.

Автор: Zeleax 10.12.2011, 16:01

Цитата(WKnight @ 10.12.2011, 14:44) *

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

1. Будем надеяться и ждать )
2. Раз не работает - значит не доделал wink.gif
3. Не понял. А если работает сразу несколько скриптов? То какой тогда активный? И как может текущий исполняемый скрипт быть неактивным?

Автор: WKnight 10.12.2011, 17:33

3. опять же по логике - активный, тот чья закладка на вкладке скрипты сейчас активна, т.е. тот на который действует кнопки старт\пауза в правом нижнем углу пилота и тот что редактируется в данный момент. но это по логике, надо бы проверить, попозже... smile.gif

активный тот, для которого действует комбинация ctrl+a smile.gif

иначе active_script номер закладки редактируемого скрипта в пилоте,
а current_script это номер самого скрипта в котором эта команда используется.

Автор: _LESTAT_ 11.12.2011, 22:25

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

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

Можно ли сделать такой команду, которая определяла, что мышью двигает, или нажимает клавиши мыши или клавиатуры пользователь , после чего скрипт, в котором есть определенная команда (типа: user_active) приостанавливал все свои операции на 5 секунд. Как только активность пользователя пропадала, скрипт бы продолжал свою работу.

Если нельзя определить, скрипт или пользователь двигает мышь или нажмет клавиши. ТО хотябы можно было бы сделать, чтобы определяло, зажата ли какая то клавиша мыши, чтобы хотябы когда двигаешь скролы, скрипт бы не вмешивался.

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

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

Автор: DarkMaster 12.12.2011, 1:09

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

Автор: WKnight 12.12.2011, 11:41

Цитата
нужен возврат текущего(!!!) активного окна

v.2.24.1
функция 'getwindow' возвращает хэндл активного окна

состояния окон в процессе.

Автор: _LESTAT_ 12.12.2011, 14:10

Мое пожелание проигнарировано , или вы просто не знаете как это реализовать ? Могу подсказать теоритически, как это можно сделать и как должно работать.

Автор: WKnight 12.12.2011, 14:31

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

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

Автор: EL-GReeN 12.12.2011, 15:57

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

еще один момент:
if $a qwe
вхождение строки не работает не смотря на то что оба значения строки

Автор: WKnight 12.12.2011, 16:47

Цитата
Сделайте так чтобы size возвращал числовое значение, так как сейчас он совсем не логично возвращает строку
чем вызвано предположение о строке?

Автор: asdvo1ty 12.12.2011, 18:55

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

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

Автор: EL-GReeN 12.12.2011, 20:24

Цитата(WKnight @ 12.12.2011, 16:47) *

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


set $a qwerty
say size($a) + 3 // 6+3 вместо 9
end_script

set $a qwe
goto size($a)//поведение строки
:3
end_script

не знаю может быть я что то не понимаю, тут работает нормально:
set $a qwerty
repeat size($a)
wait 100
end_repeat
end_script

ну да ладно это не критичные мелочи) но вхождение строки очень печально так как в скриптах где условие зависит от журнала, иногда нужный меседж пролетает:
if lastmsg qwe
set $b 'lastmsg'//иногда содержит уже не то
say $b
end_if
end_script
избежать "пролета" можно было бы так:
set $a 'lastmsg' //кстати если без кавычек то в $a будет error
if $a qwe //ошибка
//if $a $a //даже так ошибка
end_if
end_script

Автор: Zeleax 12.12.2011, 21:03

EL-GReeN
Что-то вы намудрили. Всё работает, если использовать промежуточную переменную, а не сразу в команде.

Код
set $a qwerty
set #b size($a) + 3
msg #b
end_script

И поиск в строках работает:
Код
set $a qwerty
set #b PosEx(er $a)
msg #b
end_script

Автор: DarkMaster 12.12.2011, 21:18

Цитата
v.2.24.1
функция 'getwindow' возвращает хэндл активного окна

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

Автор: WKnight 13.12.2011, 3:36

Цитата
Я думал оно вернет хендл окна к которому привязан текущий скрипт.
По-моему привязанное окно у нас называлось рабочим. Но с этими текущими активными действительно путаница, очень нужен новый хэлп wink.gif

Автор: Milerio 13.12.2011, 3:41

ув. WKnight, про работу пилота с окном "в фоне" не забыто?smile.gif оч и оч хотелось бы чтоб пилот работал с перекрытым чем то окном, как в v2.04. Просто из-за обилия окон приходится сидеть на той версии и просто наблюдать, как у вас тут прогресс идет)

Автор: WKnight 13.12.2011, 3:47

Цитата
say size($a) + 3 // 6+3 вместо 9
При разного рода операциях, результат зависит от типа переменной, которой он присваивается. в данном случае say оперирует со строками, repeat c числами.
Вообще ты будешь наверно удивлен, но пилот всё хранит в строках smile.gif было несколько причин так сделать, в том числе объем памяти и универсальность. в настоящее время похоже пора чтото менять...

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

Автор: WKnight 13.12.2011, 4:58

Цитата
но вхождение строки очень печально...
if lastmsg qwe
if $a qwe //ошибка
подобная конструкция возможна только для ключевого слова lastmsg, оставлена для совместимости со старыми скриптами.

--v.2.18--
добавил нечеткое сравнение строк. регистронезависимо. поддерживаются операции <, >, =, <>, <= (S2 содержится в S1), >= (S1 содержится в S2)

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

Автор: root.pl 13.12.2011, 18:47

Хочу выяснить пару воросов у WKnight .

1. Будет ли / возможно ли реализация функции для чтения/записи *ini файлов и если да то в как скоро этого ждать. В последних версиях появилась наконец то фозможность работы со строками и в общем то можно написать самому то что нужно скажем в виде процедуры, но всё же хотелось бы иметь функцию типа :

FunctionIni (секция, ключ, значение, файл)

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

2. Будет ли / возможно ли реализация функции для чтения/записи параметров реестра.

Автор: EL-GReeN 13.12.2011, 21:41

Цитата(WKnight @ 13.12.2011, 4:58) *

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

--v.2.18--
добавил нечеткое сравнение строк. регистронезависимо. поддерживаются операции <, >, =, <>, <= (S2 содержится в S1), >= (S1 содержится в S2)

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

то есть теперь определять вхождение строки лучше PosEx-м, попутно вопрос, сколько символов может хранить переменная?

Цитата(WKnight @ 13.12.2011, 3:47) *

При разного рода операциях, результат зависит от типа переменной, которой он присваивается. в данном случае say оперирует со строками, repeat c числами.
Вообще ты будешь наверно удивлен, но пилот всё хранит в строках smile.gif было несколько причин так сделать, в том числе объем памяти и универсальность. в настоящее время похоже пора чтото менять...

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

ПС
есть пожелание иметь редактируемую переменную содержащую весь лог журнала, аналогичной инже uo.InJournal()

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


Прикрепленные файлы
Прикрепленный файл  12_11_5_RedDot.zip ( 18,12 килобайт ) Кол-во скачиваний: 318

Автор: WKnight 14.12.2011, 2:59

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

имя до 255 символов
числа -2147483648..2147483647 (знаковое 32-bit)
строки до 255 символов
массивы теоретически до ~2^31 символов каждый элемент, практически больше 32к не советую, некоторые команды работы со строками могут не поддерживать.
Цитата
опять же это скриптовый язык пилота которому нужно учиться
учиться нужно всему с чем работаешь, пилот в данном случае не исключение
Цитата
есть пожелание иметь редактируемую переменную содержащую весь лог журнала, аналогичной инже uo.InJournal()
ещеб описание для чего и как с ней работать

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

Цитата
1. Будет ли / возможно ли реализация функции для чтения/записи *ini файлов
в принципе можно, когда не скажу, есть несколько приоритетных задач.
Цитата
2. Будет ли / возможно ли реализация функции для чтения/записи параметров реестра
есть хорощая программа reg, входящая в состав виндовс, нехотелось бы дублировать ее функционал.

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

Цитата(EL-GReeN @ 13.12.2011, 20:41) *

(приложил прогу, антивирус ругается на нее но она в систему вроде не гадит)

ну и зачем такие вещи выкладывать, если и так понятно, что прога должна делать? cool.gif

Автор: EL-GReeN 14.12.2011, 13:23

Цитата(WKnight @ 14.12.2011, 2:59) *

ещеб описание для чего и как с ней работать

Инжа хранит журнал уо в таблице последние 100 строк(100 сообщений), новые сообщения в реал тайм влетают снизу, старые сверху таблицы пропадают.

uo.InJournal("text") - Ищет в журнале Injection строку, в которой встречается "text", и возвращает её номер плюс 1, или возвращает 0 если такая строка с момента последнего удаления журнала (DeleteJournal) не обнаружена.

uo.DeleteJournal("text") - Очищает журнал Injection от всех строк "text". Команда выполняется чтобы отсечь уже отработанные варианты для команды InJournal.
пример:
Код
if uo.InJournal("An Ex Por") then
uo.DeleteJournal("An Ex Por")
//полезное действие
endif


uo.Journal(0) - Возвращает строку журнала Injection по номеру.

uo.SetJournalLine(number,text) - Перезаписывает текст в строке журнала номер number новым текстом text.

есть еще функция uo.JournalSerial(number) но она не часто применяются и трудна в реализации, подробнее тут http://yoko.com.ua/help/


Цитата(Zeleax @ 14.12.2011, 8:37) *

ну и зачем такие вещи выкладывать, если и так понятно, что прога должна делать? cool.gif

выложил для наглядности, дело в том что она рисует как то по особенному, нигде такого не встречал, используется в стрелялках,
drweb говорит: 12_11_5_RedDot.exe contains a joke (hoax) program Joke.Reddot а шутка заключается в том что выключение реддота делается через диспетчер задач, на что не все люди способны.

Автор: root.pl 17.12.2011, 6:07

Было бы очень неплохо если бы в процедурах массивы как параметры тоже передавались.

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

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

Автор: SkifF 18.12.2011, 15:21

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

Автор: _LESTAT_ 18.12.2011, 19:16

1)Было бы не плохо если бы в логе, сообщения можно было выделять цветным фоном.
Шрифт пусть остается черным, а вот если бы была возможность менять цвет фона на котором пишется текст, это было бы очень удобно. Просто у меня в лог отправляется много сообщений и не все из них важные. И я хотел бы чтобы особо важные сообщения в логе выделялись желтым маркером, сообщения об ошибках красным, важные успешные действия выполненные скриптом, выделялись бы зеленым и т.п..
2)Часто нужно задать узнать десятичный код цвета, но средствами пилота, это сделать не просто.
В пилоте нужна опция, открывающая диапазон цветов, с возможностью выбрать цвет шелчком мыши, после чего, копировался в буфер или сразу бы вставлялся в скрипт десятичный код выбраного цвета. Думаю лучше всего подайдет такой как в пейте, используя готовые компоненты, добавить такую возможность не займет много времени, а удобства добавит значительно.
3)В пилоте нужна встроеная экранная лупа, я уже предлагал ее добавить и вроде бы WKnight , согласился, что эту вещь нужно добавить, но в с того момента уже минуло несколько версий, а лупы так и нету.
4)Нужна более продвинутое создание форм. с возможностью добавления панелек с кнопками. Лично мне, да и другим очень бы пригодилось, если бы каждый раз когда нужно, что-то быстро активировать в скрипте, отключить часть его функций или приостановить его, то не приходилось бы, разворачивать пилот, останавливать скрипты и переписывать код, а достаточно было нажать кнопочку, на висящей повер всех окон маленькой панельке с быстрыми кнопочками.

Автор: Zeleax 19.12.2011, 18:42

1) +
2, 3) почему не воспользоваться FSCapture? Хотя не спорю- приятно смотреть, как другие велосипед изобретают ))
4) не понял. Для чего, почему, для кого это надо и т.п. И так ведь есть опция для пилота - "висеть поверх всех окон"

Автор: _LESTAT_ 20.12.2011, 3:00

Цитата(Zeleax @ 19.12.2011, 19:42) *

1) +
2, 3) почему не воспользоваться FSCapture? Хотя не спорю- приятно смотреть, как другие велосипед изобретают ))
4) не понял. Для чего, почему, для кого это надо и т.п. И так ведь есть опция для пилота - "висеть поверх всех окон"

2.3) Так я щас и пользуюсь отдельными приложениями для этих целей, так как этих функций не хватает в пилоте, а нужны они при написании скриптов очень часто. Ну согласись удобней было бы если эти частые функции всегда под рукой, и ненужно устанавливать , а потом каждый раз лесть грузить сторонние программы.
4) Для примера, у меня скрипт делает несколько функций, но остановимся на двух, так вот часто мне нужно чтобы в скрипте работали обе функции, добыча ресурсов и производство товаром, но иногда бывает нужна оставить только одну из них, а другую отключить. Было бы здорово если бы в скрипте можно было описать команду , которая создавала бы форму например, с тремя кнопочками, для каждой кнопочки описана своя функция.Запускаешь скрипт, и в определенном месте появляется малюсенькая панелька например, с тремя кнопочками, висящая по верх всех окон где нить в уголке игры, в которой работает скрипт. Кнопки были бы такие Приостановить/Продолжить скрипт , Отключить/Включить производство, Отключить/Включить собирательство. И я всегда бы смог за секунду отключить , или запаузить скрипт, быстро ответить в чат и продолжить его, приэтом не трогая окно пилота и не переписывая скрипты, просто нажав на кнопочку, на этой маленькой панельке.

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

Автор: Zeleax 20.12.2011, 8:22

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

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

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

Автор: _LESTAT_ 20.12.2011, 14:48

Цитата(Zeleax @ 20.12.2011, 9:22) *

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

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

Цитата(WKnight @ 20.12.2011, 12:53) *

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

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

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

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

Автор: _LESTAT_ 20.12.2011, 19:39

Цитата(WKnight @ 20.12.2011, 16:01) *

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

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

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

Автор: WKnight 21.12.2011, 3:04

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

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

Автор: DarkMaster 23.12.2011, 2:52

подобный кнопочный гуй нужен и нужен давно. Вопрос не поднимал из-за не совсем понятного мне механизма, как это должно работать. По сути, наверное, это будут те же скрипты, но привязанные к кнопке в окошке поверх всех окон с кодом типа "set #typeAttack.#current_script 2".
Можно конечно использовать отдельные вкладки. Однако при достаточно больших скриптах с приличным функционалом все действительно становится проблематичным. Во 1 не удобно постоянно соблюдать порядок скриптов. Убрал один старый и не нужный вначале списка - правь все остальные. Нужны несколько уровней вкладок для подобных решений. Да и распараллеливать многие вещи стало бы возможно. Так же если параметров настроек много, то поиск той строчки бывает крайне не удобен. А теперь на примере:
У нас запущен ПвП скрипт(для того же вова очень актуально), для боя против разных классов он может сильно изменятся. Скрипт у нас работает в режиме боя против мага. Мы убили мага, к нам подбегает паладин. Мы сворачиваемся, открываем пилот, выбираем вкладку для изменения параметров боя, выбираем нужную строку из нескольких десятков, меняем значение, запускаем скрипт(значений для изменений может быть и несколько), сворачиваем пилот. А есть ли смысл теперь разворачивать игру? Все равно у нас уже труп вместо чара.

Автор: _LESTAT_ 23.12.2011, 8:19

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

В идеале, пилоту не помешал бы вообще полноценный редактор форм, со своими лабелами, едитами, чекбоксами, и главное КНОПКАМИ. Я видел подобную реализацию, не только в серьезных языках программирования(типа Делфи) , но и в простых пользовательских маленьких программах (например в редактор форм у программ помогающих делать руссификаций), к сожалению точно не помню названий, но это означает, что это не так сложно сделать.
Да пока это мечты, но черт каким крутым станет пилот, если в нем будет подобная штука - полноценные функциональные формы. Эх было бы здорово, практический полноценный визуальный язык программирования.

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

Цитата(DarkMaster @ 23.12.2011, 1:52) *

У нас запущен ПвП скрипт(для того же вова очень актуально), для боя против разных классов он может сильно изменятся. Скрипт у нас работает в режиме боя против мага. Мы убили мага, к нам подбегает паладин. Мы сворачиваемся, открываем пилот, выбираем вкладку для изменения параметров боя, выбираем нужную строку из нескольких десятков, меняем значение, запускаем скрипт(значений для изменений может быть и несколько), сворачиваем пилот. А есть ли смысл теперь разворачивать игру? Все равно у нас уже труп вместо чара.

А как же:
Цитата
добавил возможность из скрипта запросить значение у пользователя.
'set $a prompt (<подсказка>)' - запрос на ввод значения. возвращает в переменную введенное значение.
'set #b prompt (<выбор1> <выбор2> [выбор3] [выбор4] [выбор5])' - запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна.

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

Цитата(_LESTAT_ @ 23.12.2011, 7:19) *

В идеале, пилоту не помешал бы вообще полноценный редактор форм, со своими лабелами, едитами, чекбоксами, и главное КНОПКАМИ. Я видел подобную реализацию, не только в серьезных языках программирования(типа Делфи) , но и в простых пользовательских маленьких программах (например в редактор форм у программ помогающих делать руссификаций), к сожалению точно не помню названий, но это означает, что это не так сложно сделать.
Да пока это мечты, но черт каким крутым станет пилот, если в нем будет подобная штука - полноценные функциональные формы. Эх было бы здорово, практический полноценный визуальный язык программирования.


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

Автор: avgur 23.12.2011, 13:03

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

Автор: WKnight 23.12.2011, 14:26

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

Автор: WKnight 23.12.2011, 14:36

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

обсуждаем дальше

Автор: Zeleax 23.12.2011, 14:49

Я бы добавил пожелания к текущему пилоту:
- исправить корявость копирования русского текста из справки пилота и редактора скриптов при включенной английской раскладке
- возможность сворачивания пилота в 1 маленькую панельку (поверх всех окон), чтобы там только были кнопки управление скриптами и имена(псевдонимы) скриптов
- добавить возможность назначать псевдонимы скриптам. Например, скрипт 0 назвать "Атака", скрипт 1 - "Тип врага", скрипт 2 - не переименовывать. И чтобы к скриптам и переменным в других скриптах можно было обращаться по этим псевдонимам. При этом вкладки скрипттов тоже должны называться по псевдонимам, а при наведении курсора на них - видеть номер этого скрипта.
- при изменении имени скрипта сразу же должно меняться имя на вкладке пилота
- псевдонимы скриптов назначать в коде самих этих скриптов:

Код
set script_name Атака // текущий скрипт получил имя Атака
set script_name // текущий скрипт получил имя "по-умолчанию" равное номеру скрипта
set script_name 3 Враг // 3-й скрипт получил имя Враг (по умолчанию)
set script_name 3 // 3-й скрипт получил имя "по-умолчанию" равное "3"

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

можно назвать set script_alias )

Автор: WKnight 23.12.2011, 14:56

Цитата(_LESTAT_ @ 11.12.2011, 22:25) *
...
Обычно пилотом в игре выполняется какой то сценарий по скрипту, но иногда, срочно нужно чтото сделать пользователю, например быстро ответить в чат или подвигать определенные скроллы. Ради этого приходить отыскивать окно пилота, тормозить все скрипты, часто ты это забываешь делать ,и в итоге процесс стопорится еще дольше.
...то хотябы предложите свой вариант, полностью или частично решающий данную задачу...
что-то обсуждение как-то плавно завершилось ничем.
хоткей приостановки\продолжения всех скриптов спасет отца русской демократии?


Цитата
Я бы добавил пожелания к текущему пилоту:

кажется я это уже читал

Автор: Destruction 23.12.2011, 15:26

Цитата(Zeleax @ 23.12.2011, 15:49) *
- псевдонимы скриптов назначать в коде самих этих скриптов:
Код
set script_name Атака // текущий скрипт получил имя Атака
set script_name // текущий скрипт получил имя "по-умолчанию" равное номеру скрипта
set script_name 3 Враг // 3-й скрипт получил имя Враг (по умолчанию)
set script_name 3 // 3-й скрипт получил имя "по-умолчанию" равное "3"

Цитата(WKnight @ 23.12.2011, 15:56) *
кажется я это уже читал
Цитата(ICQ)
Destruction (12:20:44 23/12/2011)
вероятно оптимальным будет ввести команду которая сама задаст скрипту идентификатор, т.е. типа:
set script_name Fishing v1.11

Действительно..

Автор: Zeleax 23.12.2011, 15:50

Цитата(WKnight @ 23.12.2011, 13:56) *

что-то обсуждение как-то плавно завершилось ничем.
хоткей приостановки\продолжения всех скриптов спасет отца русской демократии?

Было бы замечательно. Только чтоб хоткей был настраиваемым

Автор: _LESTAT_ 23.12.2011, 20:13

Цитата
как же:
Цитата
Цитата
добавил возможность из скрипта запросить значение у пользователя.
'set $a prompt (<подсказка>)' - запрос на ввод значения. возвращает в переменную введенное значение.
'set #b prompt (<выбор1> <выбор2> [выбор3] [выбор4] [выбор5])' - запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна.


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


prompt не висит постоянно в качестве панели с быстрыми клавишами, а вызывается из крипта и закрывается, для выполнения действий. А значит не совсем подходит для решения текущей задачи, это слишком сложно, а лучше когда все интерактивно, кратко без излишеств. Я за минимизацию, а ты опять предлагает способ с расплодениям минискриптов. Это не так просто.
Я согласен как нить измудрившись, можно частично решить задачу promptом , но это будет не простое и сложное для реализации и использования решения(с добавлением дополнительных скриптов, а если задач несколько и нужно вызывать разные панели с кнопками ? Для каждой делать свой скрипт с промптом? Потому я и предложил вариант с панелькой и интерактивными кнопками.
А насчет редактора форм, зря ты отшучиваешься, я серьезно.


з.ы. 2 WKnight: Насчет того , что все можно сделать хоткеями, я личноне переношу хоткеи кроме ctrl+c , ctrl+v , alt+tab, и ctrl+shit . Вопервых хоткеи внешних приложений часто работают не так как надо или вовсе не работают или работают чрез раз., если например окно программы не активно. Покрайней мере у меня так, потому и развилась такая нелюбовь к ним. Вообщем хоткеи я не люблю, нужна ихняя алтернатива, для таких как я, частично это решит мое предложение, которое не всем по вкусу.

Автор: Zeleax 23.12.2011, 23:34

Вот интересно, а как планируется двигать мышей в окне формы, если ей в это же время двигает скрипт в окне игры?

Автор: DarkMaster 24.12.2011, 2:09

А чем это вообще мешает? Ну если стрелялка, то еще понятно, но мморпг всегда давало жмякать все что хочется. Такое же обычное окно как и у блокнота.

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

Автор: WKnight 24.12.2011, 5:19

--v.2.25--
научил понимать переменные из других скриптов в формате #a.#b, #a.$b, #a.active_script

Автор: Denker 24.12.2011, 11:57

Цитата(WKnight @ 24.12.2011, 4:19) *

--v.2.25--
научил понимать переменные из других скриптов в формате #a.#b, #a.$b, #a.active_script


А макросы в v.2.25 будут работать? В v.2.24.1 не работают.

Автор: WKnight 24.12.2011, 12:17

да, починил

Автор: Zeleax 24.12.2011, 12:41

а где скачать 2.25?

Автор: WKnight 24.12.2011, 13:22

пока нигде, это так сказать анонс wink.gif

Автор: Корн 26.12.2011, 14:20

Хотелось бы в экселевской табличке по конвертации цветов, отдельной строчкой видеть номера цветов, для цветовой гаммы в 16 бит (для виртуальных машин). Если кто-то сталкивался с такой проблемой, подскажите как поправить формулу.

Надо чтобы, забиваю я скажем серый из 32 битной гаммы - "7829367"
И сразу вижу что в 16 битной он будет - "7566707"

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

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

(Не забыть поменять в момент привязки по W или Ctrl-A)

Автор: Корн 9.1.2012, 20:40

Очень не хватает богатого хелпа по оператору Timer
Хотелось бы видеть и понимать всю логику этого оператора, в примерах с комментариями. Пересмотрел все скрипты на автобафы и т.д. Как-то всё равно малоинформативно. Так и не разобрался как создать несколько независимых таймеров.

Нужны ли в начале скрипта строки типа:
set timer
или
set timer 0

Зачем они и что происходит с таймером если этих строк нету. Он же так и так с нуля считает вроде, от запуска скрипта.

Особенно интересуют циклы нескольких таймеров, завязанные на:
while #timer1 < 1
end_while

Автор: DarkMaster 9.1.2012, 21:39

На самом деле тут даже описывать толком нечего. Переменная таймер создается при запуске скрипта и содержит в себе время работы скрипта в миллисекундах. Объявлять ее не нужно - создается она автоматически. Все что можно сделать с этой переменной - обнулить ее командо set timer (вроде даже 0 писать не нужно). Вот и все. Использование нескольких таймеров по большому счету немного не корректно звучит. Таймер существует только 1 и только в нем значение постоянно изменяется. Примеры же приведенные для работы с несколькими таймерами всего навсего сравнивают значение созданных переменных все с тем же единственным таймером.

Автор: Larrikin 10.1.2012, 2:58

Может проще будет понять, если учесть более адекватное название для системной переменной timer было бы now, то есть "сейчас".

Автор: Elvari 11.1.2012, 6:33

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

также было бы просто шикарно добавить опции автоматического перезапуска пилота в случае какой-либо ошибки или зависания (либо перезапуска скрипта, вызвавшего ошибку), или оповещения о проблеме миганием в панели задач. если это конечно реально без помощи второго пилота. smile.gif в последней версии 2.27, к сожалению, пилот зависает довольно часто при агрессивной работе нескольких скриптов, и не сразу можно понять что он повис (hint`ы продолжают отображаться). пока решил попробовать вернуться к 2.24.1. хотя вполне возможно проблема не в новой версии пилота, а в новых версиях скриптов smile.gif

Автор: Zeleax 11.1.2012, 8:03

Надо что-нибудь для определения размера экрана (рабочего стола) для указанного монитора

Автор: Gals 13.1.2012, 15:07

Команду post на Windows 7 x64. smile.gif

Автор: dodik 15.1.2012, 13:32

научить бы пилот не реагировать на зажатие клавиш ctrl,alt,shift

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

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

Автор: FisherSlate 16.1.2012, 12:11

UOpilot - бомба! laugh.gif

Если б я учил детишек 9-12 лет основам алгоритмизации - делал бы это с помощью UOpilot'а, а не паскаля.
Столь простую в синтаксисе, наглядную в отслеживании исполнения кода и мощную по возможностям программу скриптов не найти.
Хотел тут пожелать чтоб была возможность найти картинку на экране, проглядел список фич свежей версии - а оно уже есть!

Повторюсь: UOpilot - бомба! Спасибо за такую клевую штуку!

Автор: WKnight 16.1.2012, 15:29

Спасибо не булькает wink.gif

Автор: Zeleax 17.1.2012, 10:12

После некоторых мытарств с браузерками я понял чего ещё не хватает пилоту ))

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

Автор: WKnight 17.1.2012, 13:56

подробнее, как именно должно работать.

Автор: Zeleax 17.1.2012, 17:06

Цитата(WKnight @ 17.1.2012, 12:56) *

подробнее, как именно должно работать.

Нечто вроде:
Код
// получаем в $s текст (html-код) страницы браузера, окно которой имеет хендл #whandle
set $s getwindowcontent #whandle
// анализ строки $s
...

Хотя, не уверен, что это возможно. Нужно почитать доки

Автор: asdvo1ty 17.1.2012, 17:51

Цитата(Zeleax @ 17.1.2012, 18:06) *

Нечто вроде:
Код
// получаем в $s текст (html-код) страницы браузера, окно которой имеет хендл #whandle
set $s getwindowcontent #whandle
// анализ строки $s
...

Хотя, не уверен, что это возможно. Нужно почитать доки

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

Автор: WKnight 17.1.2012, 19:52

Цитата
получаем в $s текст (html-код) страницы браузера
мельком пошарил в инете, похоже достаточно просто это сделать плагином для браузера, только я в ту область не лазил, и до весны врятли полезу.

Автор: Destruction 18.1.2012, 5:56

Цитата(WKnight @ 17.1.2012, 20:52) *

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

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

Сложным возможно будет только определить активную вкладку, для которой и должен отдаваться HTML-код. Тут зависит от того, что там плагины умеют.

Можно конечно самим пилотом искать где оно там в памяти, но это несколько сложнее. Плагин проще smile.gif

Автор: Zeleax 18.1.2012, 8:40

Цитата(asdvo1ty @ 17.1.2012, 16:51) *

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

Ну я бы в первую очередь делал для FireFox, потому как для него есть GreaseMonkey )

Автор: asdvo1ty 18.1.2012, 14:11

Цитата(Zeleax @ 18.1.2012, 9:40) *

Ну я бы в первую очередь делал для FireFox, потому как для него есть GreaseMonkey )
у Хрома поддержка таких скриптов вообще нативная. Даже расширение не нужно. Но я лично не вижу в этом никакого плюса, потому что, да, сам для себя скрипт может получить доступ к innerHTML документа, но никуда его, вроде как, записать не получится средствами JS: ни в файл, ни в память. И неоткуда Пилоту будет доставать этот скрипт, поэтому все равно придется писать небольшие расширения.

Автор: Dimentium 19.1.2012, 16:56

по горячим следам мысли:

- глобальный хоткей на включение/отключение всех остальных хоткеев;
- OSD сообщения;

дополнительные мысли:
вывод в OSD по таймеру / с выводом при запущенном скрипте / информации о статусе скрипта / переменных
привязка глобального хоткея к CAPS LOCK для удобной наглядной индикации состояния хоткеев.

Автор: Dimentium 19.1.2012, 17:48

перечитал этот топик.
оказывается про OSD уже писалось smile.gif

Автор: Zeleax 20.1.2012, 16:38

прошу добавить в msg возможность перевода строки по \n rolleyes.gif

кстати, в hint цвет фона не меняется, как цвет шрифта?

Автор: WKnight 20.1.2012, 18:00

Цитата
в hint цвет фона не меняется, как цвет шрифта?

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

я кстати перестал msg пользоваться с тех пор как логи появились smile.gif

Автор: Dimentium 20.1.2012, 18:03

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

Код
'' is not a valid integer value.

если при установленной галочке нажать "Сохранить настройки", то получаю эту же ошибку. sad.gif

удивительно, но откат на предыдущий конфиг не срабатывает. программа хранит что-нибудь в реестре или где ещё кроме как в своей папке? :-\
вылечит пока что удается только удалением файла настроек sad.gif

Автор: Zeleax 20.1.2012, 18:06

Цитата(WKnight @ 20.1.2012, 17:00) *

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

я кстати перестал msg пользоваться с тех пор как логи появились smile.gif

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

Логи штука хорошая, но там по левому краю куча неотключаемой инфы- имя скрипта, номер строки, время (которая не всегда нужна бывает). Если бы эту инфу можно было настраивать - что выдавать в лог, а что нет...

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

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

Автор: Elvari 20.1.2012, 21:56

очень хотелось бы поскорее silent mode без всплывающих окон с сообщениями об ошибках (символ не распознан, EConvertError, EAccessViolation итд), иногда очень мешают именно сами окна... rolleyes.gif

Автор: Zeleax 20.1.2012, 21:58

Цитата(DarkMaster @ 20.1.2012, 17:24) *

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

не совсем понял о чём речь

Автор: asdvo1ty 20.1.2012, 23:23

Цитата(Zeleax @ 20.1.2012, 22:58) *

не совсем понял о чём речь

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

Автор: DarkMaster 21.1.2012, 1:35

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

Именно

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

Цитата
настройки перестают сохраняться и подгружаться. более того они игнорируются

пришли конфиг на котором такое происходит.

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

смысла нет. цвет меняется для всего окна целиком, а не для конкретного слова или строки.

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

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

Автор: Zeleax 21.1.2012, 10:26

Цитата
смысла нет. цвет меняется для всего окна целиком, а не для конкретного слова или строки.

вроде ж ты говорил, что для каждого скрипта свой хинт? Разве тогда нельзя для наглядности задать цвет фона хинта для каждого скрипта отдельно (при необходимости, конечно)?

Цитата
в 2до есть похожий пунктик

это где и какой? )

Автор: Zeleax 21.1.2012, 11:13

Еще добавлю в пожелания сделать возврат параметров из проседур proc. Сейчас они только внутрь передаются.
Это более важно, чем цвет фона hint )

P.S.: Только что сидел минут 5 втыкал- почему у меня в C# не работает конструкция типа:
if (a <> 0) b = 1;

(там правильно писать '!=' вместо '<>' ) biggrin.gif

Автор: WKnight 21.1.2012, 12:23

Цитата
вроде ж ты говорил, что для каждого скрипта свой хинт?
а, сорри, спать больше надо, с логами перепутал...
Цитата
(там правильно писать '!=' вместо '<>' )
тут тоже != должно работать, еще хз сколь лет назад делал.
Цитата
Еще добавлю в пожелания сделать возврат параметров из проседур proc. Сейчас они только внутрь передаются.
Это более важно, чем цвет фона hint )
это тоже в 2до есть, т.е. в списке для реализации.
я не всегда делаю то, что нужно в первую очередь. иногда бывает типа вдохновения сделать какую-то конкретную плюшку, которая может быть совсем незначительной, и мало кому нужной. а иногда объем работ выбирается просто в зависимости от наличия времени.

Автор: Zeleax 21.1.2012, 12:28

Цитата
это тоже в 2до есть, т.е. в списке для реализации.

мне тоже спать больше надо, уже туплю )) раньше эту фразу уже встречал и понимал )

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

ну это да, вдохновение сильная штука. сам такой smile.gif

Автор: Zeleax 21.1.2012, 13:35

Если надумаешь делать задание цвет фона для hint smile.gif - предусмотри сразу, плиз, возможность задания прозрачности. Т.е. цвет может быть четырехбайтовым при необходимости (3 байта RGB и один байт на прозрачность).

Еще бы замечательно для hint добавить опции open/close (появления/закрытия), отключающие таймер закрытия.

Код
hint (12 255 1010 695 -1 -1 (Идет процесс расчета, ждите...)) open
// долго считаем...
...
hint close
msg Расчет окончен!

Автор: Zeleax 21.1.2012, 15:12

Пожелание: Исправить https://forum.uokit.com/index.php?s=&showtopic=22925&view=findpost&p=164044.
Добавить в вариант prompt с #числовой_переменной дополнительную опцию, которая:
1) убирает кнопку Ok
2) при клике на одном из пунктов меню сразу закрывает окошко и возвращает результат выбора
3) если окошко закрылось по таймауту, то возвращается 0 (как изначально и было задумано)

Например:

Код
set #b prompt(пункт1 пункт2) #таймер_автозакрытия_мсек #признак_наличия_кнопки_Ok

Автор: archiver 21.1.2012, 16:30

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

Автор: Zeleax 21.1.2012, 16:34

Цитата(archiver @ 21.1.2012, 15:30) *

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

Есть такая возможность. В пилоте закладка Еще / Edit Hotkeys. Список скриптов будет справа внизу окна.

Автор: archiver 21.1.2012, 17:16

Цитата(Zeleax @ 21.1.2012, 17:34) *

Есть такая возможность. В пилоте закладка Еще / Edit Hotkeys. Список скриптов будет справа внизу окна.


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

Автор: Zeleax 21.1.2012, 17:25

Цитата(archiver @ 21.1.2012, 16:16) *

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

Попробовал. Действительно, не работает \

Автор: DarkMaster 21.1.2012, 17:51

они работают, но через одно место.

Автор: Zeleax 21.1.2012, 17:56

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

они работают, но через одно место.

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

Автор: Elvari 21.1.2012, 20:35

создать новые три скрипта с содержимым "pause_script N" и забиндить их на хоткеи )))

Автор: WKnight 23.1.2012, 7:11

Цитата
Есть такая возможность. В пилоте закладка Еще / Edit Hotkeys. Список скриптов будет справа внизу окна.

там настраиваются хоткеи для запуска\остановки

Автор: Zeleax 23.1.2012, 10:23

Цитата(WKnight @ 23.1.2012, 6:11) *

там настраиваются хоткеи для запуска\остановки

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

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

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

судя по пожеланиям, туда можно добавить еще персональную паузу.

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

Автор: Zeleax 23.1.2012, 14:31

Цитата
судя по пожеланиям, туда можно добавить еще персональную паузу.

Да. было бы неплохо.

З.Ы.: WKnight, Спасибо тебе за работу. Так классно пользоваться пилотом, прям душа радуется smile.gif
Если б сейчас без работы не сидел - еще бы отблагодарил wink.gif

Автор: Zeleax 23.1.2012, 19:40

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

Отсюда появилась идея:
ввести встроенные переменные для условного изменения относительных/абсолютных координат в рабочем окне
.
Поясню:
например, сейчас у меня одна из многих точек в скрипте имеет относительные координаты 100, 200
В другом же браузере эта же точка находится в координатах 120, 230.

В скрипте (для второго браузера) пишем:
set relative 20, 30
или
set relative 20, 30 abs // для исмещения абсолютных координат

И все! Скрипт не нужно весь переписывать под новый браузер!

Все команды left, kleft, pleft, get color, if <color>, findcolor, findimage автоматически добавляют/вычитают эти смещения к указанным в скрипте значениям

Автор: DarkMaster 23.1.2012, 21:52

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

Сам уже достаточно давно все до единой координаты, цветА объявляю в шапке скрипта. Там же дописываются все смещения. Как итог - код более читаемый, нигде нет дублирующихся одинаковых координат(не исправлять дважды и более раз), смещения задаются в течении пары секунд.

Автор: Zeleax 25.1.2012, 13:35

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

По горизонтали его еще сузить можно, а вот по вертикали - уже матерных слов иногда не хватает )

Делается так:
1) разворачиваем окно редактора на весь экран
2) кликаем на вкладке Еще
3) снова переключаемся на вкладку Скрипт

Вуаля! - гемор готов ))

Скрипт для возврата окна в исходное состояние

Код
set #var findwindow (UOPilot)
if #var = 0
   msg Пилот не найден!
else
   set windowpos 0 0 200 300 #var
end_if
end_script

Автор: asdvo1ty 25.1.2012, 16:33

Цитата(Zeleax @ 25.1.2012, 14:35) *

У кого-нибудь есть проблемы при редактировании скриптов с уменьшением окна пилота?
У меня иногда в процессе переключения между вкладками Еще и окна редактора скриптов пилот разворачивается на весь экран и я не могу его нормально уменьшить, т.к. правый нижний угол уходит под панель задач, а если я пытаюсь его поднять повыше к верхнему краю экрана (чтоб увидеть низ), то проклятая Win7 сама разворачивает его на весь экран снова, ппц.
так это... надо за верхний край рамки хватать и уменьшать там, а потом уже можно переместить повыше smile.gif

Автор: Zeleax 25.1.2012, 16:41

Цитата(asdvo1ty @ 25.1.2012, 15:33) *

так это... надо за верхний край рамки хватать и уменьшать там, а потом уже можно переместить повыше smile.gif

Точно. А я раз попробовал- показалось, что просто окно передвинулось немного без уменьшения размера ))
Целый скрипт на 7 строк накатал biggrin.gif

Автор: DarkMaster 26.1.2012, 6:37

save_array добавитьв ситнтаксис номер строки с котрой писать в файл. По сути скопировать синтаксис из load_array/

Автор: Zeleax 26.1.2012, 8:49

Переставить пункт "Отображать ход выполнения скрипта" в середину меню, к пункту "Сворачивать UOPilot в трей" и если можно - добавить горячую клавишу.

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

Насчет отображения хендла рабочего окна (по Ctrl+A) я уже, кажется, писал.

Автор: WKnight 26.1.2012, 13:37

Цитата
Насчет отображения хендла рабочего окна (по Ctrl+A) я уже, кажется, писал.

напомни, лучше 2 раза чем ниодного.

Автор: Zeleax 26.1.2012, 13:56

Цитата(WKnight @ 26.1.2012, 12:37) *

напомни, лучше 2 раза чем ниодного.

При привязке по Ctrl+A отображать в пилоте хендл кликнутого окна (можно опционально).

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

Автор: WKnight 26.1.2012, 14:17

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

давно хочу из меню переделать в форму, да всё как-то не до суг smile.gif

Автор: Zeleax 26.1.2012, 14:57

Цитата(WKnight @ 26.1.2012, 13:17) *

давно хочу из меню переделать в форму, да всё как-то не до суг smile.gif

хоть в менюшке навести порядок, и то дело rolleyes.gif

Автор: EL-GReeN 27.1.2012, 19:01

3 предложения:
добавить в readmem параметр HEX 4 байта чтобы возвращался адрес для работы с указателями
добавить функцию перевода dex - hex
добавить функцию сдвига массива

Автор: DarkMaster 28.1.2012, 1:37

Цитата
добавить функцию перевода dex - hex

открываем историю развития.

Автор: WKnight 28.1.2012, 4:28

Цитата
добавить в readmem параметр HEX 4 байта чтобы возвращался адрес для работы с указателями

а чем не устраивает D:dWord = 4b;

Автор: GrWizard 16.2.2012, 9:56

очень бы хотелось получать цвет LastMsg, а сам LastMsg сделать в виде стека, была бы шикарно

Автор: DarkMaster 18.2.2012, 10:35

WKnight
Кстати по поводу чар параметров. Если выбрать маленький тип окошка, то открыть/закрыть нажатием на Char Parametrs будет нельзя - вылетит ошибка. Очень бы хотелось возможность задавать возможность видеть только определенные переменные определенных скриптов ну цвета. Даже идейка небольшая появилась как это реализовать. Создается двухмерный массив где:
%arr [ 1 1 ] #a.1 // имя переменной и вкладка скрипта.
%arr [ 1 2 ] значение переменной
%arr [ 1 3 ] 0 255 0 // цвет текста
%arr [ 1 4 ] 70 70 70 // цвет фона
Окно параметров чара просто считывает этот массив и отрисовывается согласно массиву. Человек же получает полное управление отображением.

Автор: WKnight 18.2.2012, 11:30

Цитата
Если выбрать маленький тип окошка

да, тож заметил када скринил, дето проверка лишняя осталась.
Цитата
задавать возможность видеть только определенные переменные определенных скриптов

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

Автор: avgur 18.2.2012, 15:03

пардон, если уже было. Как насчет отображения картинок в hint

Автор: DarkMaster 19.2.2012, 14:22

меню команд по правой кнопке мыши:
set $w getselectedtext
set $w setselectedtext (text)
что-то забыли в разделе окон

PosEx(SubStr String [Offset=1])
Copy(String Index Count)
Delete(String Index Count)
Insert(Source String Index)
Команды - отсутствуют.

setlayout - отсутствует
getlayout - в клавишах

Напрпашивается подменю работы с текстом.

hint упомянут дважды

Список увеличился, но имеется куча одиночных команд в корне. Оно уже не лезет =)
say можно записать в клавиши. С технической стороны весч другая, а с практической результат очень близок.

set logging
hint
msg
Тоже можно сгруппировать, возможно туда же alarm.

end_script - переместить в скрипты.

Что делать с остальными не знаю.
ну вот как-то так.

Автор: _LESTAT_ 19.2.2012, 15:07

В окне Log Window , кроме стандартных кнопок "Свернуть" "Развернуть" "Закрыть" , там же нужны дополнительные интерактивные кнопки. "Запустить последний остановленый скрипт" ,
"Остановить последний запущенный скрипт"
"Остановить все скрипты".
"Свернуть основное окно пилота, оставив лишь лог"

Насчет любителей горячих клавиш. У меня все клики скрипта срабатывают только через kleft , а kleft всегда передает фокус тому окну в котором кликает, делая окно пилота неактивным, из-за чего пилот неловит Горячие клавиши, вообще ! Это было выяснено, когда я пытался понять почему ниодна горячая клавиша вовремя работы скриптов не срабатывает. Поэтому и самому окну пилота не помешают клавиша "Остановить/Приостановить, Запустить/Продолжить" все скрипты. И не нужно говорить ,что горячие клавиши всё решают, там где они никогда не срабатывают.

=============================
В винде есть интересная функция, которую можно удобо использовать в скриптах. А именно если в настройках мыши, включить опцию "Показать расположение курсора, по нажатию Ctrl" , то вокруг курсора , на долю секунды покажется исходящая волна. Очень бы хотелось, чтобы эту опцию можно было адаптировать, для показа куда кликает мышь. Ведь скрипт переносит курсор, кликает мнгновенно, и меня это устраивает, но если бы я наглядно видел куда происходят клики, было бы еще удобней. Вообщем если бы при каждом клике скрипта срабатывала опция вызывающая показ местоположения курсора, но при этом не тревожущая кнопку ctrl , тоесть вызывалась бы виртуально, а не срабатывала бы для всей операционной системы, было бы очень удобно. Если у кого мысли как это(или чтото подобное) можно осуществить, не затрагивая глобальных клавиш?
з.ы. Нажатие ctrl , перед каждым кликом, можете не предлагать, это я и сам могу реализовать, но как я уже сказал это не слишком удобно, предложить другие варианты, или возможно напишите похожие утилиты/плагины, которые можно будет вызвать через скрипт. Насчет того, что длительность нахождения курсора в месте клика можно изменять случайным образом с помощью небольшого фрагмента скриптика,я тоже знаю, и мне это не нужно, этот совет тоже можете оставить при себе. Необходима именно наглядный маркер вокруг места клика, исчезающий через 500мс, а не в самом месте.

Автор: Zeleax 19.2.2012, 15:17

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

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

Автор: DarkMaster 19.2.2012, 15:20

Цитата
Нажатие ctrl , перед каждым кликом, можете не предлагать, это я и сам могу реализовать, но как я уже сказал это не слишком удобно

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

Автор: боженька 19.2.2012, 18:40

Сделать возможным редактирование скрипта в режиме паузы
Сделать опцию позволяющую вместо нумерации вкладок скриптов отображать имя файла скрипта

Автор: Zeleax 19.2.2012, 22:23

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

Автор: Zeleax 20.2.2012, 1:15

Очень-очень прошу сделать нормальное копирование русскоязычного текста в/из окна пилота и из окна справки, а то уже "немного" раздражают кракозябры после копирования. Не всегда ведь упомнишь, что нужно обязательно язык на русский переключить перед копированием.

З.Ы.: чуток доната кинул )

Автор: DarkMaster 20.2.2012, 9:37

Там cp 1252, надо вернуть 1251.

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

Цитата
end_script - переместить в скрипты.

против, у меня уже на автомате с клавиатуры меню\вверх\ентер smile.gif

Цитата
пилот неловит Горячие клавиши, вообще

касперский + плагин + антифростдлл ?


Цитата
Необходима именно наглядный маркер вокруг места клика, исчезающий через 500мс, а не в самом месте.

можно нарисовать плагин, рисующий че-нить по указанным координатам с указанной задержкой, но я некоторое время этого делать не буду - пока не экспериментировал, может летом. Записал в 2do.

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


Цитата
очень-очень прошу сделать нормальное копирование русскоязычного текста в/из окна пилота и из окна справки

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

Автор: WKnight 21.2.2012, 17:08

Цитата
З.Ы.: чуток доната кинул )
всегда рад принимать благодарность smile.gif
Цитата
Очень-очень прошу сделать нормальное копирование русскоязычного текста в/из окна пилота и из окна справки
из пилота сделал, правда только с клавиатуры. целый день провозился, так и не понял почему все найденые варианты решения проблемы тупо не работали. в процессе экспериментов один случайно заработал, его и оставил...

Автор: Destruction 23.2.2012, 10:45

Код
if 2
    msg 2 истинно
end_if

Зачем так сделано, что истина только единица (в т.ч. в строковой переменной)?)

Код
if 11
    msg 11 истинно
end_if

А так уже синтаксическая ошибка..

Автор: WKnight 23.2.2012, 11:24

побочный эффект разбора составных условий.
в процессе разбора из каждой пары условий формируется строка типа (1^1)v0, и потом сворачивается до упора.

Автор: DarkMaster 23.2.2012, 13:44

do_while
switch

Автор: DarkMaster 23.2.2012, 14:31

добавил возможность выводить в лог выполняющиеся строки скрипта. включается 'set logging commads', выключается 'set logging off'

опечатка commads - n пропущена

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

меню команд по правой кнопке мыши:
set $w getselectedtext
set $w setselectedtext (text)
что-то забыли в разделе окон
---
Если предлагалось засунуть их в меню Get, то оно логически имхо не очень. Там сейчас находятся остатки от команды Get, которые некуда было запхнуть по смысловому значению, хотя по идее мауспос можно к мыше перетащить.
В принципе это все обсуждабельно.


setlayout - отсутствует
getlayout - в клавишах
---
Обе в клавишах, только сет инвизибленная была smile.gif
Имхо логически там и должны быть, есть другое мнение? smile.gif


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

Автор: DarkMaster 23.2.2012, 17:53

Цитата
Если предлагалось засунуть их в меню Get, то оно логически имхо не очень.

Дык я и предлагаю сделать подменю "текст"/"работа с текстом" как душе угодно. И скидать туда соответственно (s)getselectedtext, get word, get number, copy, delete, insert, posex. Сейчас все это размазано по пилоту, а имеет очень близкий функционал и зачастую используется комбинированно.

Цитата
hint упомянут дважды
---
с разным синтаксисом

сделать подменю вывода сообщений с хинтом(можно даже в 2 экземплярах), msg, set logging

Цитата

setlayout - отсутствует
getlayout - в клавишах
---
Обе в клавишах, только сет инвизибленная была smile.gif
Имхо логически там и должны быть, есть другое мнение? smile.gif

Ага. Убрать инвиз)


Они теперь работают следующим образом, '{}' для функциональных клавиш не требуются, но обрабатываются в зависимости от того как указаны.
send {num_4} // 4
send { num_4 } // [4]

Очень долго медитировал на это... Можно пояснить. Откуда появились [] нафиг и что это ваще такое)?

Автор: locust19 6.3.2012, 3:00

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

Автор: zavas 6.3.2012, 3:19

Цитата(locust19 @ 6.3.2012, 4:00) *

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

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

Автор: Destruction 6.3.2012, 3:19

locust19, есть три раздела для https://forum.uokit.com/index.php?showforum=163, https://forum.uokit.com/index.php?showforum=161 и https://forum.uokit.com/index.php?showforum=162.

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

Смысла создавать разделы для 2-3 тем - нет никакого, это лишь усложнит навигацию по форуму.

Автор: zavas 8.3.2012, 17:23

Хочется иметь возможность задавать координаты центра экрана словом для hint.
И цвет текста, как в html.

Автор: WKnight 9.3.2012, 15:25

Цитата
Хочется иметь возможность задавать координаты центра экрана словом для hint.
подробнее.
Цитата
И цвет текста, как в html.

"добавил в 'hint' возможность задания некоторых параметров, в связи с этим слегка изменился синтаксис. старый вариант по прежнему работает.
'hint ([fontSize fontColor [posX posY [width height]]] (any text))'"

Автор: zavas 9.3.2012, 17:43

hint (12 red centerX centerY [width height] (any text))

Автор: Zeleax 11.3.2012, 17:03

Код
 set delimiter '^'
set %a[1] 10^20
// хотелось бы:
msg %a[1 1] // 10
msg %a[1 2] // 20
end_script

Автор: zavas 13.3.2012, 17:30

Возможно дурацкое предложение...
А можно сделать чтобы новая вкладка создавалась с тремя строками:
две пустых, а в последней end_script?

Автор: Zeleax 13.3.2012, 17:36

Цитата(zavas @ 13.3.2012, 16:30) *

Возможно дурацкое предложение...
А можно сделать чтобы новая вкладка создавалась с тремя строками:
две пустых, а в последней end_script?

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

Автор: Zeleax 17.3.2012, 13:55

Пожелание: добавить команду очистки массива (удаление всех строк, элементов и т.п.):
set %arr

Автор: DarkMaster 18.3.2012, 2:12

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

Автор: zavas 18.3.2012, 11:16

Пример работает. Чем поможет фиксированный размер в ситуации с повторным использоваием массива?

Автор: DarkMaster 18.3.2012, 12:40

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

Автор: Zeleax 18.3.2012, 12:48

Цитата(DarkMaster @ 18.3.2012, 11:40) *

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

Да, работает:
Код
set size (%a) // очистить массив

Автор: EL-GReeN 18.3.2012, 16:38

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

Автор: Zeleax 20.3.2012, 9:04

Пожелание: починить работу команд get color, if <коорд, цвет> для работы с неактивными окнами (закрытыми другими окнами). В версии 2.28 они нормально не работают

Автор: WKnight 25.3.2012, 13:00

Цитата(DarkMaster @ 23.2.2012, 14:53) *
Они теперь работают следующим образом, '{}' для функциональных клавиш не требуются, но обрабатываются в зависимости от того как указаны.
send {num_4} // 4
send { num_4 } // [4]

Очень долго медитировал на это... Можно пояснить. Откуда появились [] нафиг и что это ваще такое)?
Подумал баг, сразу засунул в 2do. Исправил, полез описывать, вспомнил, что не баг, а так задумано smile.gif
Смысл в том, что пробел он и в африке разделитель, и парсер берет не сразу всю строку '{ num_4 }', а по словам, т.е. сначала '{', потом 'num_4', и потом отдельно '}'. Вот скобки и получаются.
Вобщем сейчас пофиксил так, что для моноклавиш оно будет посылать только клавиши, без скобок.
send {num_4} // 4
send { num_4 } // 4
однако, если больше одной пары скобок в строке, то
send {num_4} { num_4 } // 4[4]

Автор: Zeleax 25.3.2012, 13:07

Цитата(WKnight @ 25.3.2012, 12:00) *

Вобщем сейчас пофиксил так, что для моноклавиш оно будет посылать только клавиши, без скобок.
send {num_4} // 4
send { num_4 } // 4
однако, если больше одной пары скобок в строке, то
send {num_4} { num_4 } // 4[4]

Путаница, имхо

Автор: WKnight 25.3.2012, 14:26

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


Кстати, DarkMaster, ты говорил что у тебя есть в общем готовая обновленная инструкция по языку скриптов, но были проблемы с преобразованием ее в компактный формат. Может всётаки сообща допилим этот вопрос?

Автор: DarkMaster 25.3.2012, 14:32

Я не говорил, что она готовая. В общем хотел завтра но тем не менее.. Вопсчем у нас появилась вика. Беда в том, что у меня времени вообще нет. 2 переезда, переоформление квартир, отправка бабушки в другой город, в общем весело. Щас вытащу шаблончик, напишу пару строк.

Автор: WKnight 25.3.2012, 14:44

Поздравляю!

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

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

Автор: DarkMaster 25.3.2012, 15:00

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

Автор: WKnight 25.3.2012, 15:55

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

Автор: EL-GReeN 26.3.2012, 18:27

Очень не хватает глобальных переменных, и проверок нажатых кнопок.
load_array работает медленно.

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

Цитата
и проверок нажатых кнопок.

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

Автор: EL-GReeN 26.3.2012, 19:49

Цитата(DarkMaster @ 26.3.2012, 19:15) *

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

В точку.

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

Автор: WKnight 27.3.2012, 2:55

Цитата
Очень не хватает глобальных переменных

Я периодически почитываю этот пункт в 2do, но както не придумывается как "глобальные" отличать от остальных?

Цитата
Я бы даже сказал возможности создать эвент на нажатия клавиш. Именно внутри скрипта.

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


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

Автор: DarkMaster 27.3.2012, 4:22

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

По сути да.
что-то вроде:
event <name> [bind]
код
end_event
Было бы так же интересно вызывать евент самим скриптом без клавиши(читай 2 зайцев).
Цитата
Не массивные переменные достаточно просто меняются на панельке параметров персонажа.

Во время боя, тем более пвп это не прокатит.

Цитата
както не придумывается как "глобальные" отличать от остальных?

Можно сделать вариант в стиле пилота #преременная.g, и как хранить сразу становится понятно.
Можно сделать дополнительный преффикс.
Можно просто объявить в начале, что она глобальная, оставив дальнейший синтаксис не измененным.

Автор: DarkMaster 27.3.2012, 9:30

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

Автор: EL-GReeN 27.3.2012, 9:53

Цитата(WKnight @ 27.3.2012, 2:55) *

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


Как пример из одного движка:
Цитата
keyboard_check(key) Возвращает, если нажата клавиша с конкретным клавиатурным кодом.
keyboard_check_pressed(key) Возвращает, если клавиша с конкретным клавиатурным кодом была нажата с поры выполнения последнего шага.
keyboard_check_released(key) Возвращает, если клавиша с конкретным клавиатурным кодом была отпущена с поры выполнения последнего шага.
keyboard_check_direct(key) Возвращает, если нажата клавиша с конкретным клавиатурным кодом, проверяемая непосредственно аппаратные средства. Результат независим от того, какое приложение рассматривается.

Станут возможными такие условия:
Код
if keyboard_check(32) //код пробела
say Вы нажали пробел.
end_if

if keyboard_check(32) and keyboard_check(18) //код пробела и альта
say Вы нажали пробел и альт.
end_if

Автор: Zeleax 27.3.2012, 10:05

Ну тогда еще добавлю, что должна быть возможность "прозрачной" и "непрозрачной" проверки:
- прозрачная - код клавиши проверяется пилотом и в любом случае нажатие передается далее в рабочее окно (не убирается из очереди)
- непрозрачная - то же что и выше, но в случае если нажата указанная клавиша, то код клавиши удаляется из очереди и не передается в рабочее окно

Автор: DarkMaster 27.3.2012, 11:00

Цитата
Как пример из одного движка:

А как именно идет проверка? Нажата ли в данный момент(создается именно такое впечатление)? Или все это какие-то хуки/дампы, очередь? Игра на перегонки скрпипта и быстрых пальчиков не лучший варинт, я бы даже сказал, что это провальное решение для наших целей.

Автор: EL-GReeN 27.3.2012, 12:58

Как именно там сделано я не знаю исходников нет.
Задача расчета успеет ли сработать условие на нажатие, зависит от пользователя, то есть (сработало условие)-->(обработка действий) если пока обрабатываются действия произошло нажатие то условие не сработает, что есть не хорошо.

Цитата
что-то вроде:
event <name> [bind]
код
end_event
Было бы так же интересно вызывать евент самим скриптом без клавиши(читай 2 зайцев).

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

Автор: Zeleax 27.3.2012, 13:43

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

:event1 key(^S) parallel // вызов в параллельном потоке
return

procedure event2 key(^2) // вызов в потоке основной программы
end_proc

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

мысль очень правильная.
Более того в случае запуска копии возникает интересный вопрос с переменными. В ходе работы нескольких эвентов может получиться так, что один изменит значения в расчетах другого(набор переменных то один). Для адекватной работы придется создавать локальные переменные для каждого эвента, делать функцию вывода результата, продумывать каким образом обращаться к переменным из основного скрипта(считывать при входе? - будут устаревшие данные; при обращении? - может исказиться копией эвента). Мороки много. Прорабатывать все эти тонкости имхо берд и сделать чем проще, тем лучше. Запуск нескольких экземпляров можно конечно сделать и в определенных случаях точно хуже не будет, но обращаться надо будет с ним хорошо подумав.

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

Автор: EL-GReeN 27.3.2012, 15:12

Цитата(DarkMaster @ 27.3.2012, 13:48) *

мысль очень правильная.
Более того в случае запуска копии возникает интересный вопрос с переменными. В ходе работы нескольких эвентов может получиться так, что один изменит значения в расчетах другого(набор переменных то один). Для адекватной работы придется создавать локальные переменные для каждого эвента, делать функцию вывода результата, продумывать каким образом обращаться к переменным из основного скрипта(считывать при входе? - будут устаревшие данные; при обращении? - может исказиться копией эвента). Мороки много. Прорабатывать все эти тонкости имхо берд и сделать чем проще, тем лучше. Запуск нескольких экземпляров можно конечно сделать и в определенных случаях точно хуже не будет, но обращаться надо будет с ним хорошо подумав.

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


Как вариант:
Пилот (глобальные переменные существующие до закрытия пилота, доступ из любого кода)
Запущенный Скрипт (локальные переменные существующие до остановки скрипта, доступ из ивентов такой же как из основного скрипта если совпадает имя)
Ивент (локальные переменные существующие до завершения ивента, без доступа, либо при вызове ивента он возвращает свой ID по которому можно обращаться к переменным)

Автор: Zeleax 4.4.2012, 16:23

Очень хочется иметь переменные для каждого скрипта, сохраняющие значения даже если скрипт остановлен, чтобы использовать их значения при повторном запуске того же скрипта. При необходимости можно им давать особые имена (##пример или $$пример).
Использование дополнительного скрипта в режиме "Пауза" только для хранения переменных предлагаю считать извращением ))

Автор: zavas 5.4.2012, 2:15

Пропаганда и преумножение извращенцов )))
А для каких целей это нужно?

Автор: Zeleax 5.4.2012, 7:25

Цитата(zavas @ 5.4.2012, 1:15) *

Пропаганда и преумножение извращенцов )))
А для каких целей это нужно?

Сделал скрипт, который "замораживает" (ставит на паузу) по горячей клавише любое активное окно (программу), а потом по этой же клавише "размораживает". Скрипт запускается горячими клавишами. Где-то нужно хранить состояние переменных, которые между запусками запоминают окно и хранят флаг состояния "заморожено".
Вот с утра подумал и решил, что можно скрипт зациклить, запускать первый раз вручную, а потом по горячим клавишам только с паузы его снимать. Так что мое предыдущее предложение может и не очень актуально. smile.gif

Автор: WKnight 5.4.2012, 9:37

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

Автор: Zeleax 5.4.2012, 9:45

Цитата(WKnight @ 5.4.2012, 8:37) *

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

+1000000000000 smile.gif

Автор: DarkMaster 6.4.2012, 16:10

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

Автор: zavas 7.4.2012, 1:26

Не понял, как это должно выглядеть?
Локальные и так объявляются в начале

Автор: DarkMaster 7.4.2012, 11:15

set #a 1
gosub 1
msg #a #b // результат: #a = 1 #b = 20.

:1
local set #a 10
set #b #a + 10
return


local set #a 10 не затронуло переменную находящуюся вначале скрипта, т.к. она была создана и существовала только в пределах подпрограммы 1.

Автор: zavas 7.4.2012, 23:16

Ставлю пилот поверх окон - всё отлично.
А когда галочку снимаю - необходимо перезапускать.

Цитата(DarkMaster @ 7.4.2012, 12:15) *

local set #a 10 не затронуло переменную находящуюся вначале скрипта, т.к. она была создана и существовала только в пределах подпрограммы 1.

А для чего это надо? huh.gif

Автор: Zeleax 7.4.2012, 23:21

Цитата(zavas @ 7.4.2012, 22:16) *

А для чего это надо? huh.gif

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

Автор: WKnight 8.4.2012, 3:11

в 2до засунул, а там подумаем. от глобальных отличается очень сильно.

Автор: Elvari 9.4.2012, 10:56

Хотелось бы, чтобы появилась возможность сетевого взаимодействия пилотов. Например, есть два пилота которым нужно синхронизировать действия. То есть в моем случае, в одном пилоте иногда меняется значение одной переменной, а второй должен сразу об этом узнать. И наоборот. Можно конечно в теории настроить ftp как сетевой диск и юзать savearray/loadarray на нем, но не уверен что это будет нормально работать на практике. Возможно ли взаимодействие пилотов по ip в будущем?

Автор: Zeleax 9.4.2012, 11:49

Цитата(Elvari @ 9.4.2012, 9:56) *

Хотелось бы, чтобы появилась возможность сетевого взаимодействия пилотов. Например, есть два пилота которым нужно синхронизировать действия. То есть в моем случае, в одном пилоте иногда меняется значение одной переменной, а второй должен сразу об этом узнать. И наоборот. Можно конечно в теории настроить ftp как сетевой диск и юзать savearray/loadarray на нем, но не уверен что это будет нормально работать на практике. Возможно ли взаимодействие пилотов по ip в будущем?

есть подозрение, что это будет нескоро (если будет вообще).
Сейчас можно использовать для обмена информацией между пилотами ICQ-подобные клиенты работающие без шифровки лога. Пример работы с аськой есть в Полезных советах.
Я такое делал и нормально работало. Да и сетевой диск можно попробовать, как сами писали

Автор: DarkMaster 9.4.2012, 14:09

Наткнулся на один пост, сразу вспомнил про пилот.

>После перезапуска эксплорера не все иконки в трее восстанавливаются

>>Если программа использует трей - она обязана делать RegisterWindowMessage("TaskbarCreated") и затем в оконном цикле это сообщение если получит - то заново пересоздавать свои значки и меню.

Автор: Elvari 9.4.2012, 18:16

Цитата(Zeleax @ 9.4.2012, 12:49) *
Да и сетевой диск можно попробовать, как сами писали

попробовал, отлично работает )
нужен лишь бесплатный хостинг с ftp + webdrive, и пилоты в разных городах узнают об изменении переменных друг друга за время пинга - от 5 до 50мс ))
но все же напрямую было бы лучше

Автор: EL-GReeN 9.4.2012, 19:44

Цитата(Elvari @ 9.4.2012, 18:16) *

попробовал, отлично работает )
нужен лишь бесплатный хостинг с ftp + webdrive, и пилоты в разных городах узнают об изменении переменных друг друга за время пинга - от 5 до 50мс ))
но все же напрямую было бы лучше

Странно у тебя load_array быстро работает? у меня при работе с обычным винтом за 700~мс срабатывает

Автор: Zeleax 9.4.2012, 19:58

Цитата(EL-GReeN @ 9.4.2012, 18:44) *

Странно у тебя load_array быстро работает? у меня при работе с обычным винтом за 700~мс срабатывает

Я в оперативке специально сделал RAM-диск на 4МБ smile.gif

Автор: Elvari 10.4.2012, 0:42

Цитата(EL-GReeN @ 9.4.2012, 20:44) *

Странно у тебя load_array быстро работает? у меня при работе с обычным винтом за 700~мс срабатывает

не знаю, наверно от размера массива зависит
я пытался время замерить, но всегда 0 показывает
массив из одного элемента
Код
set #handle windowfromcursor
set workwindow #handle
:start
set timer
load_array %arr "W:\s.txt"
set #time timer
hint %arr[1,1]|#time
wait 1000
goto start

W: это смонтированная как жесткий диск удаленная ftp-папка

Автор: WKnight 10.4.2012, 19:02

Цитата
Если программа использует трей

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

Цитата
Возможно ли взаимодействие пилотов по ip в будущем?

как минимум нужно описание механизма взаимодействия. что с чем и зачем.

Автор: DarkMaster 14.4.2012, 13:07

Докрутить к редактору сворачивание кусков кода.

Автор: DarkMaster 14.4.2012, 14:43

switch. очень часто изобретаю велосипед из-за его отсутствия...

Автор: Elvari 15.4.2012, 13:47

Цитата(WKnight @ 10.4.2012, 20:02) *
как минимум нужно описание механизма взаимодействия. что с чем и зачем.

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

что-то вроде
Код
set #handle windowfromcursor
set workwindow #handle
set $ip 95.66.140.10
set connection (3 ($ip) 80)
set #a #b.3.9
hint #a
stop_script

3 - номер подключения,
80 - порт,
9 - номер вкладки в удаленном пилоте где есть переменная #b

пока что сделал передачу параметров через load/save_array и WebDAV, задержка около 200мс, это многовато, и костыли по сути

Автор: WKnight 15.4.2012, 14:36

Цитата
switch. очень часто изобретаю велосипед из-за его отсутствия...
я про него помню, времени пока нехватает...

Автор: DarkMaster 15.4.2012, 19:09

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

Автор: DarkMaster 16.4.2012, 12:37

Пилот поверх все окон. Нажимаем "сохранить как" и получаем окно, которое перекрыто самим же пилотом. Надоело возюкать его по всему рабочему столу)

Автор: zavas 16.4.2012, 17:05

Цитата(DarkMaster @ 16.4.2012, 13:37) *

Пилот поверх все окон. Нажимаем "сохранить как" и получаем окно, которое перекрыто самим же пилотом. Надоело возюкать его по всему рабочему столу)

Всё логично ))

Автор: DarkMaster 16.4.2012, 17:15

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

Автор: zavas 16.4.2012, 17:19

Дом, который построил Джек smile.gif

Автор: EL-GReeN 16.4.2012, 19:12

Цитата(DarkMaster @ 16.4.2012, 17:15) *

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

Засада biggrin.gif

Автор: Zeleax 16.4.2012, 20:53

Пожелание:
Если в качестве приемника ниже указан массив, то записываем в него хендлы ВСЕХ подходящих окон (можно искать только по части заголовка окна):
set %arr FindWindow (World of Warcraft)
потому как переименовывать окна не всегда хорошо.

Кстати, немного кинул "звона" на WMR wink.gif

Автор: DarkMaster 17.4.2012, 1:32

Цитата
при запросе выбора значения в prompt хотелось бы иметь возможность вместо "Выберите значение" задать свой заголовок.

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

Автор: DarkMaster 19.4.2012, 1:16

было: set logging <текст>
стало: L <текст>

Автор: _LESTAT_ 19.4.2012, 1:26

А еще был о бы клево если в промпте с выбором нескольких значений, можно было поумолчанию задавать включен ли чебокс или нет. Это не критично, но было бы куда удобней.
Для примера:
Вместо отлюченых, "Отлключить профессии" и "ОТключить производство", было бы
поумолчанию включенные галки, с "Профессии" и "Производство". Что выглядело бы намного логичей. Да и в текстовом промте, иногда нужно вводить одну и туже фразу, было бы удобней с введенным текстом по умолчанию, или Промпт запоминал последне введенное значение и при сдедующем открытии, В поле ввода уже была введена строка, выделеная синим, тоесть можно начать ввод поновой, а можно просто нажать ОК и введеться строка поумолчанию или последння введенная.

Автор: Zeleax 19.4.2012, 9:49

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

Хорошо бы переделать синтаксис, чтоб сообщения об ошибке не вылетало, а возвращался код завершения: 0 - успешно, -1 - ошибка выполнения операции. Или можно в #rez сразу писать длину полученного/отправленного текста (вместо нуля), так даже лучше будет.

set #rez clipboard Проверка связи
get #rez clipboard $s

Если #rez не указан, то тогда код возврата никуда не пишется.

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

Автор: Zhorzh 23.4.2012, 20:17

не знаю, было ли такое предложение: в редактор хоткеев добавить еще выбор звука/звукового файла на запуск, остановку, пауза скрипта, сохранение скрина. плюс на остальные по желанию. но эти 4 крайне желательно для обратной связи пользователю smile.gif

Автор: _LESTAT_ 24.4.2012, 17:11

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

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

Автор: Zeleax 24.4.2012, 17:21

Цитата(_LESTAT_ @ 24.4.2012, 17:11) *
Хотя Горячие клавиши у меня попрежнем у срабатывают лишь, когда активно окно пилота, тоесьт никогда. Потому что каждым kleft кликом по игровому окно, он и становиться активным.

Странно, у меня работают (на запуске/снятии с паузы скриптов)

Автор: zavas 25.4.2012, 1:47

У меня тоже все нормально работает. И старт\стоп и пауза.
Какая у вас версия?

Автор: Zeleax 25.4.2012, 15:50

Хорошо бы иметь команду типа get WindowFromAbsPos, которая в массив записывает хендлы всех окон, находящихся в указанной точке экрана. В порядке убывания значения TOP. Т.е. 1-й элемент массива - самое верхнее окно, находящееся в указанной точке, 2-й - окно, которое ниже и т.д.

Автор: Zeleax 28.4.2012, 10:15

При написании очередного скрипта снова очень сильно захотелось иметь возможность создания и наполнения массива одной строкой:
init_array %массив #число_столбцов <значения для инициализации>

init_array %arr 2 (x1 y1) (x2 y2) (x3 y3)
или
init_array %arr 3 x1 y1 z1 x2 y2 z2
init_array %arr 1 7 8 9 10 11 // будет создан двухмерный массив (все элементы в одном столбце)
init_array %arr 0 7 8 9 10 11 // будет создан одномерный массив (все элементы в одной строке)
где
%arr - создаваемый и инициализируемый массив
2 или 3 - число столбцов в создаваемом массиве
xi yi - значения для инициализации отдельных строк

Автор: DarkMaster 28.4.2012, 12:03

дык одномерный массив это не строка, а такой же столбец... честно говоря тупо медитировал над написанным. есть подозрения как это должно работать, но уверенности нет...
попробую выразить мысль более пилотовским синтаксисом.
init %arr [1] 1 2 3 4 5 // в первый столбец.
если брать строки, то можно:
%arr [ -5 ] // минусом помечаем, что это строка.

Как с помощью твоего синтаксиса выполнить?:
set %arr [ 5 1 ] 1
set %arr [ 5 2 ] 2
set %arr [ 5 3 ] 3

Автор: Zeleax 28.4.2012, 12:49

Цитата(DarkMaster @ 28.4.2012, 12:03) *

Как с помощью твоего синтаксиса выполнить?:
set %arr [ 5 1 ] 1
set %arr [ 5 2 ] 2
set %arr [ 5 3 ] 3

Мой синтаксис для такого не предусмотрен smile.gif
Можно обсудить и составить оптимальный вариант синтаксиса...

Твой вариант лучше для наполнения строки/столбца, но как ты предполагаешь наполнять двухмерный массив?
Хотя, конечно, можно несколькими командами

Автор: DarkMaster 28.4.2012, 23:40

init %arr [0 2] 11 12 21 22 31 32 // 0 флаг заполнения двухмерного массива, 2 количество столбцов.

Автор: DarkMaster 29.4.2012, 0:14

кстати можно даже хитрее.

init %arr [x y]
где x указывает номер столбца/строки с которого начинается заполнение, y указывает количество строк/столбцов (ширину/высоту заполняемого куска).

Т.е.

init %arr [2 3] 21 22 23, 31 32 33
init %arr [-3 2] 31 41, 32 42, 33 43, 34 44

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

Автор: Zeleax 29.4.2012, 7:07

Не могу проверить наличие переменной в другом скрипте- появляется ошибка с остановкой скрипта:

Код
set #sn 7
if #m.#sn = "" // Ошибка выполнения
   msg Переменная не задана
else
   msg Значение переменной равно #m.#sn
end_if
end_script


очень нужен такой контроль наличия...

Автор: DarkMaster 29.4.2012, 7:25

Объявляй переменную в начале скрипта.

Автор: Zeleax 29.4.2012, 7:29

Цитата(DarkMaster @ 29.4.2012, 7:25) *

Объявляй переменную в начале скрипта.

в начале какого скрипта и какую именно переменную? оО

Автор: DarkMaster 29.4.2012, 7:33

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

Автор: Zeleax 29.4.2012, 7:41

Цитата(DarkMaster @ 29.4.2012, 7:33) *

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

Так не подходит. Как раз проверка и нужна, чтоб проверить- не забыли ли в другом скрипте объявить указанную переменную. А если забыли, то исправляем ситуацию автоматически )

В принципе, в моём конкретном случае проблема решится, если можно будет получить workwindow из другого скрипта.

Автор: DarkMaster 29.4.2012, 7:50

а в чем проблема?
2.19
Добавил возможность ссылаться на 'workwindow' из других скриптов.

Автор: Zeleax 29.4.2012, 7:59

Цитата(DarkMaster @ 29.4.2012, 7:50) *

а в чем проблема?
2.19
Добавил возможность ссылаться на 'workwindow' из других скриптов.

Каким именно образом?
у меня не работает:
Код
set #sn 4
set #w workwindow.#sn // ошибка

Автор: DarkMaster 29.4.2012, 8:20

а я не тестил) просто знаю, что есть.

Автор: WKnight 30.4.2012, 15:39

про массивы
а если ченить типа
set %a 1 2 3 // столбец
set %a [-7] 1 2 3 // конкретная строка

Автор: Zeleax 30.4.2012, 15:48

Цитата(WKnight @ 30.4.2012, 15:39) *

про массивы
а если ченить типа
set %a 1 2 3 // столбец
set %a [-7] 1 2 3 // конкретная строка

мож тогда лучше
set %a 1 2 3 // одномерный массив %a[1], %a[2], %a[3]
хочется как то и двухмерные массивы одной строкой инициализировать...

Автор: WKnight 30.4.2012, 16:12

Цитата
мож тогда лучше
set %a 1 2 3 // одномерный массив %a[1], %a[2], %a[3]

так эт оно и есть - столбец

Цитата
хочется как то и двухмерные массивы одной строкой инициализировать...

load_array smile.gif

Автор: Zeleax 30.4.2012, 16:15

Цитата(WKnight @ 30.4.2012, 16:12) *
load_array smile.gif

из файла? =\

Автор: DarkMaster 1.5.2012, 2:38

Цитата
set %a 1 2 3 // столбец
set %a [-7] 1 2 3 // конкретная строка

Ты точно через set хочешь сделать? Тогда просто надо будет быть очень осторожным с пробелами и забыв про кавычки можно будет легко прибить таблицу. Плюс старые скрипты могут пострадать.
По сути то, о чем я и говорил. Просто с опущенной размерностью, что вроде как подразумевалось smile.gif
Лучше сразу сделать полнофункциональную вещь, чем потом городить костыли.

Автор: WKnight 1.5.2012, 3:25

через set оно както проще и привычней smile.gif
приведенный синтаксис вроде полностью совместим со старыми скриптами.

Автор: DarkMaster 1.5.2012, 4:25

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

Автор: Zeleax 1.5.2012, 7:13

set %a - одномерный массив
set %a[-7] - двухмерный массив

особой путаницы быть не должно

Автор: DarkMaster 1.5.2012, 7:30

Можно приведенный мной пример отобразить в этом синтаксисе?
init %arr [2 3] 21 22 23, 31 32 33
init %arr [-3 2] 31 41, 32 42, 33 43, 34 44
init %arr [-3 1] 31 32 33 34 35

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

Я чет не догоняю что где и как. Как set %a[-7] указывает на начальную позицию? Как задается количество строк/столбцов?

Автор: Zeleax 1.5.2012, 7:43

Цитата(DarkMaster @ 1.5.2012, 7:30) *

Я чет не догоняю что где и как. Как set %a[-7] указывает на начальную позицию? Как задается количество строк/столбцов?

-7 означает запись в 7-ю строку начиная с 1-го столбца. Сколько будет значений, столько и получится столбцов. Запись начиная с произвольного столбца не предусмотрена. Писать сразу в несколько строк не получится.
Чтоб писать в несколько строк - лучше сделать как у тебя и ввести новую команду, как у тебя в примере.

Вобщем, DarkMaster, я поддерживаю твой последний синтаксис, только без минусов в номерах строк
Цитата
init %arr [2 3] 21 22 23, 31 32 33 // запись, начиная со 2-й строки по 3 элемента в строку (2 строки)
init %arr [3 2] 31 41, 32 42, 33 43, 34 44 // запись, начиная с 3-й строки по 2 элемента в строку (4 строки)
init %arr [3 1] 31 32 33 34 35 // запись, начиная с 3-й строки по 1 элементу в строку (5 строк)

p.s.: не припомню случаев, когда _ручная_ инициализация требовалась не с 1-го столбца...

С дополнением:
Код
init %arr 1 2 3 4 // пишет в одномерный (однострочный) массив начиная с 1 столбца. Сколько значений - столько будет элементов.
init %arr[3] 3 4 5 6 7 // пишет в 3-ю строку двухмерного массива начиная с 1-го столбца. Сколько значений, столько и будет столбцов

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)