Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Автобафф
DarkMaster
сообщение 1.9.2011, 13:49
Сообщение #1


***********

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



Здесь представлены два скрипта для баффа.

Первый скрипт более нагляден и проще для работы с ним.
Автобафф скрипт №1
Код
// Скрипт предназначен для автобафа в л2.
// Можно помещать в тело других скриптов - конфликты крайне маловероятны.
// Минимальная версия пилота 2,21

// Пустые значения не оставлять.
// Порядковые номера должны идти БЕЗ пропусков.
// Количество баффов можно изменять как душе угодно.

set %buffButton [ 1 ] num_1  // Кнопки с баффом.
set %buffButton [ 2 ] num_2
set %buffButton [ 3 ] num_3
set %buffButton [ 4 ] num_4
set %buffButton [ 5 ] num_5

set %buffCooldown [ 1 ] 1140000  // Время через которое кидать бафф в миллисекундах (1000 = 1 сек)
set %buffCooldown [ 2 ] 1140000 // 19 минут
set %buffCooldown [ 3 ] 1140000
set %buffCooldown [ 4 ] 120000 // 2 Минуты.
set %buffCooldown [ 5 ] 120000

set #castWaiting 2000 // Время которое скрипт ждет окончания каста

set #sizeBuffList size (%buffButton) // Маленький служебный кусок.
for #i 1 #sizeBuffList 1
    set %nextBuff [ #i ] 0
end_for

:start  // Сам скрипт

for #i 1 #sizeBuffList 1
    if %nextBuff [ #i ] < timer
        send %buffButton [ #i ]
        wait #castWaiting
        set %nextBuff [ #i ] timer + %buffCooldown [ #i ]
    end_if
end_for

goto start

Второй скрипт гораздо более гибкий и позволяет индивидуально под каждый бафф сделать свои настройки. Так же он является примером использования нескольких параллельных таймеров для любых действий.
Автобафф скрипт №2
Код
// Скрипт предназначен для автобафа в л2.
// Можно помещать в тело других скриптов - конфликты крайне маловероятны.
// Данный скрипт полностью построен на блоках. 1 действие по таймеру - 1 блок.

if #timeNextBuff1 < timer // Первый блок
send $buffButton1
wait 2000
set #timeNextBuff1 timer + 120000 // Указываем через сколько времени повторить действие в миллисекундах (1000 = 1 cек).
end_if

if #timeNextBuff2 < timer // Второй блок
send $buffButton2
wait 2000
set #timeNextBuff2 timer + 120000 // Указываем через сколько времени повторить действие в миллисекундах (1000 = 1 cек).
end_if


Сообщение отредактировал DarkMaster - 10.2.2013, 22:56


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sky
сообщение 28.11.2011, 20:36
Сообщение #2


**

Neophyte
Сообщений: 22
Регистрация: 5.4.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.593
Возраст: 32



Немного изменил первый вариант скрипта. Этот удобнее в линейке использовать когда надо через интервал несколько кнопок нажимать.

Автобафф скрипт №3

Код

set #num_p 1  // служебная переменная, всегда вначале равна 1
//----------Далее пары строк, которые можно добавлять или убирать
//----------в них первое значение всегда интревал нажатия, а последующие - кнопки которые надо нажимать друг за другом
set $time_p 1700000 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
gosub CALC
set $time_p 200000 num_5 num_6 num_7
gosub CALC
set $time_p 3200 1 Escape
gosub CALC
//----------------Прочие переменные----------------------------------------
set #pausetime 500 // время в мс задержки нажатий нескольких кнопок в интервале
//----------------Маленький служебный кусок.
set #asize size (%masspress)
for #i 1 #asize
    set %masspress_save[#i 1] %masspress[#i 1]
    set %masspress_save[#i 2] size (%masspress[#i])
end_for
:START //-------------Начало нажатий
for #i 1 #asize
    if %masspress[#i 1] < timer
        for #j 2 %masspress_save[#i 2]
            if %masspress[#i #j] <> ""
                send %masspress[#i #j]
                wait #pausetime
            end_if
        end_for
        set %masspress[#i 1] timer + %masspress_save[#i 1]
    end_if
end_for
goto START

:CALC
    set clipboard $time_p
    get clipboard %time_p
    set #size_mass size (%time_p[1]) - 1
    for #i 1 #size_mass
        set %masspress [#num_p #i] %time_p[1 #i]
    end_for
    set #num_p #num_p + 1
    set $a findcolor ( 1, 1 2, 2 1 1 167772150 %time_p 1)//уничтожим массив))
return
    



правда возможны глюки на версии 2.27.1 т.к. там for #i 1 1 не работает. на версии 2.22 все пашет

Сообщение отредактировал DarkMaster - 28.7.2015, 1:07
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.11.2011, 22:22
Сообщение #3


***********

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



Цитата
if %a[#i #j] <> ""

Это че?

Избегай однобуквенных переменных - это хороший шаг к крашу скрипта, если его будут прикручивать к другому. Да и читаемость сильно падает. Минут 10 сидел и втуплял что тут вообще происходит в скрипте, хотя по большому счету писано с моего... Смысл дошел далеко не сразу, описание только смутило.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sky
сообщение 29.11.2011, 11:04
Сообщение #4


**

Neophyte
Сообщений: 22
Регистрация: 5.4.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.593
Возраст: 32



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

if %a[#i #j] <> ""
Это че?

это особенность пилота создавать пустые данные массива по максимально длинному количеству значений уровня массива. Т.е. в моем примере теперь размер массивов %masspress[1] %masspress[2] и %masspress[3] везде будет равен 5, по второму значению, в первом и третьем блоке он просто дописывает пустые значения, думаю так не правильно, но он так работает. Вот эта строка чтобы скрипт не жал пустые кнопки и паузы между ними.
Еще мне не нравится что нельзя в пилоте написать set %b %a, вполне вроде логичная операция.
И жаль, что нельзя или я не нашел как заполнять массивы упрощенно одной строкой, т.е. вместо
set %a[3 1] 120000
set %a[3 2] +
set %a[3 3] -
хорошо бы писать set %a[3] (120000,"+","-") типа как на перле.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 5.12.2011, 11:48
Сообщение #5


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Цитата
Т.е. в моем примере теперь размер массивов %masspress[1] %masspress[2] и %masspress[3] везде будет равен 5
в первом и третьем блоке он просто дописывает пустые значения, думаю так не правильно

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

Сообщение отредактировал WKnight - 5.12.2011, 11:48
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.4.2024, 13:52
Designed by Nickostyle