Вернуться   MUruZ MU Online Forum > Основной > Общий

Общий Разговоры на различные темы.

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2007, 23:24   #21
DarkLord
Заблокирован
 
Регистрация: 02.02.2007
Сообщений: 515
По умолчанию

Дурак какойто? ты следи за разговом! я написал что она жрёт банки ???
Offline   Ответить с цитированием
Старый 08.02.2007, 23:44   #22
DarkLord
Заблокирован
 
Регистрация: 02.02.2007
Сообщений: 515
По умолчанию

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

Условные обозначения:
<> - обязательный параметр
[] - необязательный параметр


СИНТАКСИС
===========

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

Слова состоят из символов 0-9, А-z, А-я.

Символы #, $, %, +, -, *, /, >, <, =, :, ., (, ), [, ] являются служебными, остальные разделители.

Можно писать комментарии после всех параметров. Также таковыми считается все, что идет после двойного слэша '//'. Крайне рекомендуется использовать именно такой метод.

Паузы в командах указываются по умолчанию в миллисекундах (1/100 секунды), но возможно указание времени и явно, в часах, минутах, секундах:
wait 500 // ждать 0.5 секунды
wait 5s // ждать 5 секунд
wait 1m // ждать 1 минуту
wait 1h // ждать 1 час


Переменные
===========

В имени переменной допустимы символы - ['0'..'9','A'..'z','А'..'я'], регистр не учитывается. Максимальная длина имени переменной 255 символов.

Переменные могут быть числовыми и строковыми. Синтаксис числовой переменной '#name', где name - имя переменной. Синтаксис строковой переменной '$name', где name - имя переменной.
Например:
set #i 20
set $s test string

Также вы можете использовать массивы. Символ процента '%' считается идентификатором массива. Индексы массива указываются после имени в квадратных скобках '[' и ']'. Размер массива равен максимальному использованному индексу. Присваивание значений осуществляется каждому элементу индивидуально командой set. Элементы массива могут содержать как строки, так и числа. Допустимо сылаться на массивы параллельных скриптов, указав после имени массива, через точку, номер скрипта. При указании только первого индекса в двумерном массиве, результатом будет строка из всех элементов второй размерности массива, соответствующих указанному индексу, и разделенных пробелом.
Например:
set %ar [4] тест // одномерный массив на 4 элемента
set %arr [50 1] 544
set %arr [50 2] 800 // двумерный массив на 50 раз по 2 элемента
set %ar.2 [5] // одномерный массив в параллельном скрипте
left %arr [50] // клик левой кнопкой по координатам 544 800

Учтите, что элементы массивов нельзя напрямую использовать в условных операторах:
if charposx <> %arr [50 1]

Перед использованием переменной в скрипте вы должны определить ее при помощи команды set. Переменные изменяются только при участии set и for, команда repeat использует значение, не изменяя его.
Например:
set #i #i + 1

Синтаксис команды Set:
-----------------------------------------
set $<имя> <значение> или
set #<имя> <знач1> [<зн. оп.> <знач2>]
set %<имя> [элемент] <значение>
между знаком операции и значениями должен быть разделитель. Поддерживаются следующие операции: +, -, *, /, также вы можете использовать скобки для изменения приоритетов выполнения математических операций. При делении результат округляется к меньшему целому.
Например:
set #q ((5+4)/(3+-2)* #e )-(2-(-5+9))*3

Со строковыми переменными возможны некоторые математические операции:
set $s1 1
set $s2 2
set $s $s1 + $s2
Результатом будет $s = '1 + 2', т.е. при присваивании чего-либо строковой переменной, ей присваивается все до конца строки, с соответствующими заменами
set #n $s1 + $s2
Результатом будет #n = 3, т.е. если строковая переменная, содержит строковое представление целого числа, то ее можно использовать в качестве числовой переменной.

В команде set вы можете использовать генератор случайных чисел: random <number> возвращает число в диапазоне от 0 до number-1
Например:
set #a random 2

При двух или более запущенных скриптах вы можете обращаться к переменным, определенным в других скриптах пилота. Синтаксис указания таких переменных следующий:
#i.2 - обращаемся к переменной #i из скрипта, находящегося в окне номер 2.

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


Зарезервированные переменные
=============================

Примечание 1: [W] означает, что вы можете изменять значение этой переменной
в скрипте через команду set, все остальные переменные только для чтения.

Примечание 2: Для корректного определения Пилотом большинства параметров чара у вас на экране ультимы должно быть раскрыто окно статов (Character Status).


hour - текущее время (час)

min - текущее время (минуты)

sec - текущее время (секунды)
Например:
say current time is hour : min . sec

timer - считает количество миллисекунд от начала выполнения скрипта может использоваться практически в любых операторах и сочетаниях.
set timer // устанавливает значение timer в 0

name - имя чара

str - сила чара

int - интеллект чара

dex - ловкость чара

hits - здоровье чара

mana - мана

stam - стамина

gold - количество денег у чара

wght - текущий вес

armor - класс армора

charposx - позиция чара по горизонтали

charposy - позиция чара по вертикали

charposz - координата z чара (высота)

chardir - направление взгляда чара (куда чар повернут)
0 - чар смотрит на север, каждые 45 градусов поворота чара по часовой стрелке добавляют еденичку, т.е. 7 - чар смотрит на северо-запад

lastmsg - последнее сообщение сервера

lastobjectid - идентификатор последнего использованного объекта [W]

lastobjecttype - тип последнего использованного объекта [W]

lasttargetid - идентификатор последней цели [W]

lasttargetx - координаты последней цели [W]

lasttargety - - " - [W]

lasttargetz - - " - [W]

lasttargetkind - класс последней цели (1 - предмет; 2 - земля; 3 - статика или вода) (т.е. если вам нужно лопатой/киркой кликнуть на поверхность пещеры в заданные координаты, то необходимо указать '3'; если необходимо кликнуть через ласт таргет на предмет, то необходимо указать '1' и 'Id' предмета; ловя рыбку указываем координаты точки и класс '2'). [W]

lastliftedid - идентификатор вещи, которая последней была тронута с места (передвинута, побывала в 'руке'). [W]

lastskill - номер последнего скила который был использаван через меню Skills [W]

lastspell - номер последнего заклинания которое быле прокастовано через книгу [W]

laststatictype - тип последней статичной цели (дерево...) [W]

target - вид курсора (0 - рука; 1 - прицел) [W]

При двух или более запущенных скриптах вы можете обращаться к переменным, определенным в других скриптах пилота для других чаров, добавив к имени переменной номер скрипта через точку. Например:
set lasttargetid.1 7
say hits.1


Условные операторы, циклы, переходы
==================================

В условных операторах и циклах вы можете использовать следующие операции: >, <, =, <>, а также логические операции (and, or, xor). Приоритетов нет, обрабатывается последовательно.
Например:
if hour = 23 and min = 45 or #count = 100

Для изменения приоритетов используйте круглые скобки:
while (#a > 1 and #a < 3) or ((#a = 1 and 130, 9 7295) or #a = 5)

В условных операторах вы можете использовать генератор случайных чисел: random <number> возвращает число в диапазоне от 0 до number-1
Например:
while #a = #b or random 5 > 3

Для прерывания действия операторов while, for и repeat вы можете использовать команду Break. Синтаксис:
Break [уровень]
Если уровень больше 1, то прерывается заданное кол-во родительских циклов.

Оператор Continue переводит исполнение цикла на следующий шаг. Может быть использован в циклах repeat, for, while.

При использовании последнего сообщения от сервера в условных операторах, существует некоторое правило синтаксиса:
if lastmsg текст последнего сообщения или его часть
или
if lastmsg = $a [or lastmsg = $b ...]
Т.е. если в условии напрямую указан текст сообщения, то не должно быть больше ничего, включая знаки каких-либо операций.


Оператор IF
--------------------
Синтаксис:
if <условие>
...
end_if

или

if <условие>
...
else
...
end_if

или

if_not <условие>
...
end_if

или

if_not <условие>
...
else
...
end_if

Возможны три варианта условий:

1) Проверка какой-то переменной, синтаксис:
if <значение> <знак операции> <значение>
Примечание: между знаком операции и значениями должен быть разделитель.
Например:
if hits < 45

2) Проверка последнего сообщения от сервера:
If lastmsg <последнее сообщение>
если в последнем сообщении от сервера есть указанная строка
Например:
if lastmsg too heavy

3) Проверка цвета в определенных координатах:
if <коорд> <цвет> [цвет2]
Если цвет в точке <коорд> равен <цвет>
Примечание: если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2. Учтите, что проверка цвета в определенных координатах корректно работает только при развернутом окне ультимы.


Оператор WHILE
----------------------------
Синтакис:
While <условие>
...
end_while

или

While_not <условие>
...
end_while

Возможны три варианта условий:

1) Проверка какой-то переменной, синтаксис:
While <значение> <знак операции> <значение>
Примечание: между знаком операции и значениями должен быть разделитель.
Например:
While hits > 45

2) Проверка последнего сообщения от сервера:
While lastmsg <последнее сообщение>
делать пока в последнем сообщении от сервера есть указанная строка
Например:
while lastmsg too heavy

3) Проверка цвета в определенных координатах:
While <коорд> <цвет> [цвет2]
Пока цвет в точке <коорд> равен <цвет>
Примечание: если задан цвет2, то цвет точки проверяется на принадлежность диапазону от цвет до цвет2
Например:
While 320 240 1489121


Оператор FOR
------------------------

Синтаксис:
For #<имя> <начало> <конец> [шаг]
...
End_for
Цикл, с инкрементом переменной. Если переменная #<имя> существовала, то она заменяется, иначе добавляется. После завершения цикла переменная равна <конец>. Если шаг не указан, он равен 1.
Например:
For #i 0 10 2

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


Оператор REPEAT
-------------------------------

Повтор действий указанное количество раз
Синтаксис:
Repeat <число>
...
End_Repeat


Оператор GOTO
---------------------------

Переход на указанную метку
Синтаксис:
Goto <метка>

Метка должна быть указана в скрипте в следующем синтаксисе:
:<метка>

Например:
Goto end
:end


Вызов подпрограмм
-----------------------------------

Синтаксис вызова подпрограммы:
gosub <метка>

Подпрограмма начинается с
:<метка>
и заканчивается
return

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


Вызов процедуры
------------------------------

Синтаксис вызова процедуры:
call <имя>
Процедура с указанным именем ищется сначала в текущем скрипте, а затем, если не найдена, в "файле процедур" - скрипт с номером 99. Загрузить туда что-либо можно с помошью соответствующего пункта меню. Поддерживается вложенный вызов процедур.

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

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

Процедура начинается с
proc <имя>
и заканчивается
end_proc

Например:
proc saying_message
say test passed
end_proc
call saying_message
end_script


Управления работой скрипта
=========================


Окончание работы скрипта
----------------------------------------------

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

Для прекращения выполнения скрипта используйте команду:
End_Script
Параметров нет.

Или команду:
stop_script
без указания каких-либо параметров.


Паузы
-----------

Wait <число> - ждать.
Параметр <число> можно задать в различных единицах измерения:
wait 1 // 1 миллисекунда
wait 1s // 1 секунда
wait 1m // 1 минута
wait 1h // 1 час

WaitForTarget [max wait time] - ждать "прицела" (в милисекундах).
Приостанавливает выполнение скрипта, пока курсор в ультиме не примет форму таргета, или пока не истечет интервал времени, указанный в качестве параметра в мс. Значение по умолчанию для max wait time составляет 10000 (то есть 10 секунд).

pause_script
Команда pause_script без указания параметров приостанавливет выполнение текущего скрипта. Чтобы запустить его вновь, вы должны будете задать команду resume_script В ДРУГОМ СКРИПТЕ c ссылкой на номер текущего (см. следующий подраздел)


Управление работой других скриптов
================================

Вы можете управлять работой других скриптов, запущенных в других окнах ЭТОГО ЖЕ UoPilot-а при помощи нижеследующих команд. При этом в качестве параметра <number> вы указываете номер окна соответствующего скрипта в UoPilot-е.

start_script <number>
Если скрипт с таким номером существует, то он будет запущен

stop_script [number | all]
Если скрипт с таким номером существует, то он будет остановлен

pause_script [number | all]
Если скрипт с таким номером существует, то он будет приостановлен

resume_script <number | all>
Если скрипт с таким номером существует, то его выполнение будет продолжено

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

По поводу использования команд pause_script и stop_script без параметров - смотрите предыдущий подраздел.


Команды интерфейса и вызова внешних программ
============================================

Alarm [файл .wav]
Издает звуковой сигнал, содержащийся в файле [файл .wav]. При ошибке воспроизведения файла (неверный формат), или если параметр [файл .wav] не указан - воспроизводится стандартный звуковой сигнал, ранее содержащийся в файле msg.wav. Если файл не найден, то команда игнорируется.
Например:
alarm welcome.wav

Msg [текст]
На экран выводится окно, содержащее указанный текст, выполнение скрипта при этом приостанавливается до закрытия окна. Окно с текстом выводится поверх всех окон.

Flash
Мигнуть в таскбаре. При этом в таскбаре мигает окно Пилота. Если вы хотите, чтобы мигало то окно ультимы, к которому привязан текущий скрипт, укажите команду flash с каким-либо параметром.
Например:
flash что-нибудь

Exec <команда> [параметры]
Запустить указанное приложение, передать ему указанные параметры. Для использования в качестве параметров зарезервированных переменных, поставьте перед ними признак переменной '#'.
Обратите внимание, что вы используете знак '#' как для числовых переменных, так и для строковых!
Например:
exec c:\test.exe #name #lastmsg

Terminate <заголовок окна>
Завершить указанное приложение. Следует использовать с осторожностью, иначе можно прибить совсем не то, что хотелось.

macro_load <имя файла>
Загрузить ранее записанный и сохраненный в файл макрос. Если не указан путь, то ищется в каталоге UoPilot'а.

macro_play [число]
Запустить загруженный макрос [число] раз, и дождаться окончания его выполнения. Если [число]=0 - макрос будет выполняться бесконечно, по умолчанию один раз. Остановить\запустить вручную можно стандартными горячими клавишами.


Команды работы с мышью
=======================

Все команды работы с мышью, а также некоторые другие требуют указания координат. Пилот поддерживает два способа указания координат: абсолютные координаты (координаты точки от левого верхнего угла экрана) и относительные координаты (координаты точки от левого верхнего угла экрана Ультимы. Заголовок окна Ультимы не учитывается). Задать в скрипте координаты вы можете, наведя курсор мыши на необходимую точку и нажав комбинацию Ctrl-A. При этом помните:

1) Окно UoPilot должно быть активно. То есть расположите окно ультимы под окном пилота, выберите окно пилота, наведите курсор мыши на нужную точку НЕ НАЖИМАЯ НА КНОПКИ МЫШИ и нажмите Ctrl-A.

2) В окне пилота должен быть включен один из флажков "Сразу вставлять относительные координаты в скрипт" или "Сразу вставлять абсолютные координаты в скрипт". В противном случае, координаты можно вставить в скрипт вручную, кликнув мышью на кнопке с координатами.

3) Если вы указываете в командах абсолютные координаты (нельзя использовать в команде drag) - вам надо после координат указать идентификатора абсолютных координат - ключевое слово "abs", являющееся последним параметром в команде.
Например:
double_left 218, 242 abs

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

Move <коорд>
Перемещает курсор в указанные координаты.
Внимание! Крайне рекомендуется задавать эту команду перед заданием любой из двух нижеследующих команд.

Left <коорд>
Щелкнуть левой клавишей мыши 1 раз в указанных координатах

Right <коорд>
Щелкнуть правой клавишей мыши 1 раз в указанных координатах

Double_Left <коорд>
Щелкнуть левой клавишей мыши 2 раза в указанных координатах

Double_Right <коорд>
Щелкнуть правой клавишей мыши 2 раза в указанных координатах

left_down <коорд>
Прижимает левую кнопку мыши в указанных координатах

left_up <коорд>
Отпускает левую кнопку мыши в указанных координатах

right_down <коорд>
Прижимает правую кнопку мыши в указанных координатах

right_up <коорд>
Отпускает правую кнопку мыши в указанных координатах


Прочие команды
==============

Send <клавиша [пауза]> | <текст>
"Нажать" клавишу и ждать указанное число миллисекунд. Если параметр не распознан как управляющая клавиша, то он посылается как текст. В последнем случае команда работает аналогично команде say, за исключением завершающего Enter'а.

Sendex <список клавиш>
"Нажать" последовательно несколько клавиш. Посылает практически все комбинации клавиш. Клавиши Ctrl, Alt, Shift кодируются символами ^, @ и ~ соответственно. Все функциональные клавиши должны быть заключены в фигурные скобки, например: {Enter}. В одной команде может быть целое предложение из клавиш:
sendex ~closing ~application @{f4}
Имеется следующее свойство: приложение примет только те клавиши (символьные), которые соответствуют установленной в нем раскладке клавиатуры.
Во время выполнения команды, на приложение направляется фокус, и блокируется система. При некоторых обстоятельствах, следующая команда выполняется до завершения текущей.

Drag <откуда> <куда> [количество]
Перенести из точки с координатами <откуда> в точку с координатами <куда> указанное количество предметов. Координаты <откуда> и <куда> могут быть только относительные. Если не указать количество, то перенесется один некучкующийся предмет (окошко с количеством не всплывает), если указать all, то перенесутся все предметы.
Например:
Drag #x #y 320, 240

Say [текст]
Набрать текст и нажать Enter. Например:
say my x: coordx y: coordy and armor: ar
--------
Разберайтесь.
Offline   Ответить с цитированием
Старый 09.02.2007, 00:21   #23
webius
Murderer
 
Аватар для webius
 
Регистрация: 05.01.2007
Сообщений: 237
По умолчанию

Это ты гонишь Вин Му при сворачивании окна зажимает последнею нажатую клавишу для Эвил Спиритов хватает, но пашет не долго :x
[/b]
СпасиБо за обьяснение) этого надо было сказать))

Данная документация содержит описание языка скриптов программы UOPilot. Будьте внимательны при использовании более ранних версий программы.
--------
Разберайтесь.
[/b]
Можно и заняться скриптом, спс)
Offline   Ответить с цитированием
Старый 09.02.2007, 09:49   #24
OgeN13
Commoner
 
Регистрация: 28.04.2006
Сообщений: 93
По умолчанию

Среди моих друзей *****ов нет, если ты что-то сделал ему то ищи причину в себе. [/b]
Если нет тогда успокой его, ресы он набил не сам пусть будет попроще, не удивлюсь что скоро появится новая гильдия FONO
Offline   Ответить с цитированием
Старый 09.02.2007, 15:25   #25
MantiKor
Phonomaniac
 
Регистрация: 07.02.2006
Сообщений: 587
По умолчанию

http://slil.ru/23900787
попробуй эту прогу тока му винд не запускай
Offline   Ответить с цитированием
Старый 09.02.2007, 17:36   #26
Stа1noy
Hero
 
Регистрация: 21.01.2007
Сообщений: 1,163
По умолчанию

Дурак какойто? ты следи за разговом! я написал что она жрёт банки ???
[/b]
Грамотей хренов. А по поводу разговора мои тебе ответ ЧЬЯ БЫ КОРОВА МЫЧАЛА!

Сегодня в 2300 по москве в таркане на 2 серваке.
Offline   Ответить с цитированием
Старый 09.02.2007, 18:03   #27
Mioko
Newbie
 
Регистрация: 26.11.2006
Сообщений: 12
Thumbs down

Вот вам пример простого скрипта для пилота v2.11
Он кастует спириты проверяет не опустилось ли ХП ниже отметки и если опустилось жрет банку с ХП, и через 30 повоторений скрипта кастует Сул барьер ну и дроп поднимает.
Сразу говорю координаты настроены под мой комп и координаты Спиритов, Бафа, Бутылок с хп скорее всего не подойдут так что пробуйте 8)

set #q 0 // Проверка не пора ли кастовать Сул барьер
:Start // Метка кастования спиритов
Sendex {Spacebar} // Автоподбор
move 503, 318 // Каст спиритов
right_down 503, 318
move 503, 318
right_down 503, 318
move 503, 318
right_down 503, 318
if 199, 718 526344 526344 // Проверка на HP
Right 361, 729
Right 361, 729
end_if
set #q #q + 1
if #q = 30
Goto next // Если скрипт 30 раз повторился то перейти на метку обкаста
end_if
Goto Start
:next // Метка для обкаста
move 522, 729
move 522, 729
left_down 522, 729
left_up 522, 729
move 787, 621
move 787, 621
left_down 787, 621
left_up 787, 621
right_down 471, 506
right_up 471, 506
wait 200
set #q 0
move 516, 723
move 516, 723
left_down 516, 723
left_up 516, 723
move 537, 622
move 537, 622
left_down 537, 622
left_up 537, 622
[/b]
Offline   Ответить с цитированием
Старый 09.02.2007, 20:17   #28
DarkLord
Заблокирован
 
Регистрация: 02.02.2007
Сообщений: 515
По умолчанию

http://slil.ru/23900787
попробуй эту прогу тока му винд не запускай
[/b]
Не мог бы в другое место кинуть а то качает с очень маленькой скоростью


Вот вам пример простого скрипта для пилота v2.11
Он кастует спириты проверяет не опустилось ли ХП ниже отметки и если опустилось жрет банку с ХП, и через 30 повоторений скрипта кастует Сул барьер ну и дроп поднимает.
Сразу говорю координаты настроены под мой комп и координаты Спиритов, Бафа, Бутылок с хп скорее всего не подойдут так что пробуйте 8)
[/b]
А какие имено нужно изменять координаты я сделал вроде но он не кастует
Offline   Ответить с цитированием
Старый 10.02.2007, 10:18   #29
Stа1noy
Hero
 
Регистрация: 21.01.2007
Сообщений: 1,163
По умолчанию

Не мог бы в другое место кинуть а то качает с очень маленькой скоростью
А какие имено нужно изменять координаты я сделал вроде но он не кастует
[/b]
А ты уверен что ты СМ??
Offline   Ответить с цитированием
Старый 10.02.2007, 11:32   #30
DarkLord
Заблокирован
 
Регистрация: 02.02.2007
Сообщений: 515
По умолчанию

А причом тут СМ?
Offline   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.