Несмотря на то, что потихоньку разработчики улучшают интерфейс игры, тем не менее многих удобных функций все еще нет.
Например, в игре есть очень полезное умение - Battle Order. Оно увеличивает жизнь и ману персонажа на небольшой промежуток времени. Использовать его может любой класс, с помощью рунного слова.
Скилл нужно постоянно активировать заново, как минимум раз в несколько минут (чем выше уровень скилла, тем дольше действует). Но в процессе игры не понятно, сколько осталось еще времени до окончания его действия, а если вы играете на хардкоре - это чревато потерей персонажа.
Хорошо бы в игре выводился таймер, а также срабатывало звуковое предупреждение перед окончанием действия скилла.
Создаем скрипт и назначаем его на ту же кнопку, которая в игре активирует скилл.
Устанавливаем глобальный режим работы скрипта 1.
Также указываем, что скрипт должен работать только в окне игры //@filter Diablo II: Resurrected
//@script_name Diablo2_BO_Reminder
//@script_hotkey F10 ПоказатьТаймер ПоказатьТаймер
//@retain_clipboard 0
//@hide_actions 0
//@global_mode 1
//@filter Diablo II: Resurrected
Процедура ПоказатьТаймер()
Таймаут = 140000;
ТК = Новый ТурбоКонф;
ТК.ShowTimer("({0} s)", Таймаут, 520, 961, 10000, 18);
ТК.Key(Keys.F10);
КонецПроцедуры
Метод ShowTimer будет выводить сообщение с заданным форматом и смещением. За 10 секунд до окончания действия надпись начнет мигать, а за 3 секунды раздастся мелодичный звуковой сигнал. 18 - это размер шрифта.
После вызова таймера, пробрасываем в игру клавишу F10, для активации скилла.
Сохраняем, перезапускаем скрипты Ctrl+Shift+R. Отлично, все работает!
Но это не очень удобно, если у нас изменился уровень скилла, то нужно вносить изменения в код и перезапускать скрипт. Улучшим его.
Добавим окно вызова настроек по Ctrl+F11, форму ввода, а также сохранение/восстановление значения.
//@script_name Diablo2_BO_Reminder
//@script_hotkey F10 ПоказатьТаймер ПоказатьТаймер
//@script_hotkey Control+F11 ПоказатьМеню Показать меню
//@retain_clipboard 0
//@hide_actions 0
//@global_mode 1
//@filter Diablo II: Resurrected
Перем ТурбоКонф;
Процедура ОбработчикВводаЗначения(Значение, Отказ) Экспорт
ТурбоКонф.СохранитьЗначение("D2_BO_Timeout", Значение);
КонецПроцедуры
Процедура ПоказатьНастройкиБО()
Форма = Новый ФормаВводаЗначения();
Форма.УстановитьДействие(ЭтотОбъект, "ОбработчикВводаЗначения");
Форма.Значение = ТурбоКонф.ВосстановитьЗначение("D2_BO_Timeout");
Форма.Заголовок = "D2 BO Timeout";
Форма.Текст = "Battle Order duration (ms):";
Форма.Показать();
КонецПроцедуры
Процедура ОбработчикВыбораЗначения(Значение, Отказ) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
Если Значение = "nopickup" Тогда
ТурбоКонф.Key(Keys.Enter);
ТурбоКонф.Ждать(200);
ТурбоКонф.ОтправитьТекст("/nopickup");
ТурбоКонф.Ждать(200);
ТурбоКонф.Key(Keys.Enter);
ИначеЕсли Значение = "leavetrade" Тогда
ТурбоКонф.Key(Keys.Enter);
ТурбоКонф.Ждать(200);
ТурбоКонф.Key(Keys.Tab);
ТурбоКонф.Ждать(200);
ТурбоКонф.ОтправитьТекст("/channel leave");
ТурбоКонф.Ждать(200);
ТурбоКонф.Key(Keys.Enter);
ИначеЕсли Значение = "setboduration" Тогда
ПоказатьНастройкиБО();
КонецЕсли;
КонецПроцедуры
Процедура ПоказатьМеню()
ТурбоКонф = Новый ТурбоКонф;
Форма = Новый ФормаВыбораЗначения();
Форма.УстановитьДействие(ЭтотОбъект, "ОбработчикВыбораЗначения");
Пункты = Новый Соответствие;
Пункты.Вставить("No pick up", "nopickup");
Пункты.Вставить("Leave trade channel", "leavetrade");
Пункты.Вставить("Set BO duration", "setboduration");
Форма.Данные = Пункты;
Форма.Заголовок = "TurboD2";
Форма.АвтоматическийРазмер = Истина;
Форма.Показать();
КонецПроцедуры
Процедура ПоказатьТаймер()
Таймаут = ТурбоКонф.ВосстановитьЗначение("D2_BO_Timeout");
Если Таймаут = Неопределено Тогда
Таймаут = 60000;
КонецЕсли;
ТК = Новый ТурбоКонф;
ТК.ShowTimer("({0} s)", Таймаут, 520, 961, 10000, 18);
ТК.Key(Keys.F10);
КонецПроцедуры
ТурбоКонф = Новый ТурбоКонф;
Ну и пару дополнительных функций, быстрый выход из канала трейда и ввод команды /nopickup.
Результат:
Таким образом TurboConf помогает не только в работе, но и в отдыхе!
Больше историй в моем телеграм-блоге Турбокодер
Как в TurboConf заменить Ctrl+Click для перехода к объекту на горячую клавишу
Создаем свой шаблон T9 с умным фильтром
Как найти все скрипты, которые срабатывают автоматически
Как отфильтровать объекты по типу в "Навигаторе по метаданным"
Быстрое добавление объекта в кэш
Ввод специальных символов без переключения раскладки
Переназначение штатных комбинаций горячих клавиш в конфигураторе 1С
#1, 21 апреля 2023 20:00
А как TurboConf взаимодействует с игрой?