Дисклеймер: К сожалению, у меня нет серьезного опыта программирования и опыта работы с языковыми моделями для кодинга. Поэтому код такой, какой получился. Если у вас есть замечания, то только с конкретными предложениями - как именно и что исправить/переписать. С GIT я тоже ранее не работал, но проект все же зачем-то создал и выложил...
--------------------------------------------------------------------
Скачать:
drive.google.com
Уважаемые харборцы! Предлагаю вашему вниманию скрипт, реализующий Дополнительную Игровую Панель.
Суть. Панель оформлена с использованием текстур клиента, поэтому и сама панель, и проигрываемые анимации, все в стилистике старых хроник. Звук, к слову, взят из XP, тоже старее уже некуда... В этом и заключалась изначальная задумка -добавить удобное средство управления, сохранив максимально атмосферность.
P.S. тем, кто уже на этом абзаце нажал reply и собирается печатать, что "шта!? одна панелька это и есть отличительная черта С1! когда видишь несколько панелей на скриншоте, то "... то предлагаю вам более подходящую тему

Панель работает по следующему принципу: при нажатии на иконку (или через хоткей) скрипт отправляет команду основной игровой панели - переключение на другой номер, прожатие соответствующей ячейки, возврат панели к изначальному состоянию. При этом начинает проигрываться анимация. Длительность анимации фиксированная: для предопределенных расходников - то время, которое у них кулдаун, для быстрых скиллов и моментальных предметов - треть секунды, для тогглов - бесконечно. Кулдаун скиллов скрипт не_ рассчитывается динамически в зависимости от скорости каста или скорости атаки, поэтому панель в первую очередь задумывалась для расходников или редких (но быстрых) действий.
Видеообзор на 30 секунд:
drive.google.com
Ограничения. Клиент старых хроник (а может сам Unreal2 движок), как вы знаете, имеет проблему переключения активных окон, наверное, вы сталкивались сами, что после возврата игру происходит клик левой клавиши мыши, и персонаж начинает туда бежать (а иногда прям десантируется с моста в кучу мобов), или что залипает Alt (обработка которого в свою очередь приводит к прожатию Ctrl, ну а там уже атака союзника или гварда). Мне так и не удалось полностью обойти эту проблему, поэтому на некоторых системах нормально пользоваться, увы, не получится, а там, где подобное будет случаться изредка, все же рекомендую использование в режиме "подпивасника"... в серьезном фарме, а уж тем более в пвп есть риск накосячить и подвести всю группу. По этим причинам панель вероятно так и останется в раннем доступе, и не увидит статуса полноценного релиза.
Для детальной настройки панели написан отдельный скрипт - Configurator. Настроить надо 1 раз перед использованием.

Чтобы каждый раз не выгружать и не перезапускать панель вручную, можете воспользоваться скриптом Starter. При закрытии (или краше) клиента - он выгрузит панель из памяти автоматически. И по хоткею запустит новый экземпляр.
Инструкция по пользованию.
Комфортной вам игры!
FAQ
F: Меня не забанят?
A: Нет
F: Как закрыть/выйти?
A: Найдите в трее (рядом с часами) иконку стартера и панели, правой клавишей -> exit.
F: В конфигураторе мало иконок
A: Да, есть такое. Добавил те, что вспомнил. С учетом ограничения описанного выше (что время отката скилла я не рассчитываю) скиллы с откатом порой специально и не добавлял, чтобы не возникало когнитивного диссонанса... Но вы можете скачать с любой базы нужную вам иконку и сохранить ее в формате .png в разрешении 32*32 пикселя и положить в одну из папок в /resources/action_type/. Ну или взять отсюда
F: Не отображается анимация / появляется на старте и пропадает сразу же / клик проскакивает мимо панели. Что делать?
A: В Конфигураторе в разделе Options выставите все галки и попробуйте с ними. Потом по 1 снимайте.
F: Все равно не помогает. Что делать?
A: Выставите в Конфигураторе опцию Debug_Mode, воспроизведите проблему и пришлите в личку описание с шагами воспроизведения проблемы и текстовый файл debug_log.txt, который появился в папке. Посмотрим.
F: Все работало, но зависло. Что делать?
A: Alt+Ctrl+Del, запустить диспетчер задач. Найти AutoHotKey и прибить.
F: Антивирус ругается.
A: Добавьте в исключения.
VirusTotal: Starter.ahk ; CustomSkillPanel.ahk
F: Произошел рассинхрон тоггла или скилл уже откатился, а кулдаун анимации все еще отображается. Как сбросить?
A: Правый клик по иконке
F: После смены игровой панели вызов скилла с Дополнительной порой приводит к тому, что возвращается старая панель (которая была до смены)
A: Проверка номера основной панели происходит раз в 2 секунды, после смены панели обождите 2 секунды, прежде чем использовать скиллы с дополнительной.
F: Не работают хоткеи
A: Если среди настроенных хоткеев есть хоть 1 буква, то все хоткеи будут работать только, если включен CapsLock. Скрипт запоминает состояние CapsLock в игре, поэтому при альт-табе или выходе вам не нужно за ним следить: статус будет сброшен, а когда снова вернетесь в игру, автоматически включится снова. Таким образом избавляемся и от любителей писать в чат КАПСОМ, и имеем возможность быстро включать/выключать хоткеи.
F: Как включить анимацию сосок?
A: В Конфигураторе укажите ячейки основной панели, где у вас лежат соски. В игре - левый клик по шапке (слева или сверху) дополнительной панели. Или можно из другого скрипта/программы отправить PostMessage(0x5555
F: Я включил анимацию, как указано выше, она отображается, но соски в игре сами все еще не прожимаются...
A: Все верно, Панель не задумывалась для автоматизации игрового процесса. Только анимация, чтобы красиво, или для индикации работы вашего другого макроса/скрипта.
F: Можно пример этого "другого макроса/скрипта"?
A: я сам не пользуюсь автососками, поэтому на текущий момент могу только предложить посмотреть вот эту тему.
Вместо F11 или F12 (выберите что-то одно, так как панель не поддерживает раздельное управление анимацией сосок, а скрипт по ссылке умеет жать разные соски из разных ячеек)
вставить (тоже что-то одно)
и в самый конец файла еще вставить
Ну или вот такой скрипт (этим пользуюсь сам; его поместить рядом с другими скриптами): по нажатии Shift+F12 он включает/выключает некий "условный pvp режим". Когда этот "pvp режим" включается, основная панель переключается на 2ую, а нажатие F5, F6, F7 (где у меня атака и атакующие скиллы) осуществляется с дополнительным прожатием Ctrl и с отправкой F4, где у меня соска. Таким образом, для каждого удара с соской мне нужно жать 1 клавишу, а не 2. Но спамить нужно постоянно, да. Но я раньше играл на луке, и при кайте и так и так нужно было каждый раз жать, поэтому я привык... Может быть и вам подойдет такой вариант - редактировать в блокноте самому или в любую ИИ (гугль, яндекс) вставляете код и прям по-русски пишите "переделай так, чтобы вместо ххх было ...".
F: У меня несколько персонажей, мне надо несколько разных панелей. Каждый раз в Конфигураторе настраивать заново?
A: Во-первых, осуждаю, это не role-play... Во-вторых, нет, не придется. Создайте несколько конфиг файлов и переименуйте их в "config1.ini" "config2.ini" и тд. Используйте Starter для запуска Ctrl+Shift+Z (X,C,V,B,N,M) в зависимости от номера конфига
F: Я нищеброд и подкаблучник, у меня нет отдельного кабинета, а в спальне по ночам жена запрещает мне кричать в микрофон...
A: В Конфигураторе выберите раздел Chat и настройте сообщение. Дублировать сообщения можно только в групповой и клан чат, в общие чаты запрещено. Таймаут на отправку сообщений в групповой чат - 2 секунды, в общие - 5 минут.
F: У меня есть замечание, совет..
A: Если не попадает под дисклеймер, то пишите -форум все стерпит если интересная задумка (а главное если смогу вообще такое реализовать), то обсудим, может и впрямь получится запилить.
F: Нашел баг...
A: Опишите по шагам ситуацию, буду разбираться. Только не рассчитывайте на оперативность. И времени не могу много выделять, да и уж подустал сам от этой панели... Спасибо за понимание.
--------------------------------------------------------------------
Скачать:
!L2SkillPanel.zip
drive.google.com
Уважаемые харборцы! Предлагаю вашему вниманию скрипт, реализующий Дополнительную Игровую Панель.
Суть. Панель оформлена с использованием текстур клиента, поэтому и сама панель, и проигрываемые анимации, все в стилистике старых хроник. Звук, к слову, взят из XP, тоже старее уже некуда... В этом и заключалась изначальная задумка -добавить удобное средство управления, сохранив максимально атмосферность.
P.S. тем, кто уже на этом абзаце нажал reply и собирается печатать, что "шта!? одна панелька это и есть отличительная черта С1! когда видишь несколько панелей на скриншоте, то "... то предлагаю вам более подходящую тему

Панель работает по следующему принципу: при нажатии на иконку (или через хоткей) скрипт отправляет команду основной игровой панели - переключение на другой номер, прожатие соответствующей ячейки, возврат панели к изначальному состоянию. При этом начинает проигрываться анимация. Длительность анимации фиксированная: для предопределенных расходников - то время, которое у них кулдаун, для быстрых скиллов и моментальных предметов - треть секунды, для тогглов - бесконечно. Кулдаун скиллов скрипт не_ рассчитывается динамически в зависимости от скорости каста или скорости атаки, поэтому панель в первую очередь задумывалась для расходников или редких (но быстрых) действий.
Видеообзор на 30 секунд:
CustomSkillPanel.mp4
drive.google.com
Ограничения. Клиент старых хроник (а может сам Unreal2 движок), как вы знаете, имеет проблему переключения активных окон, наверное, вы сталкивались сами, что после возврата игру происходит клик левой клавиши мыши, и персонаж начинает туда бежать (а иногда прям десантируется с моста в кучу мобов), или что залипает Alt (обработка которого в свою очередь приводит к прожатию Ctrl, ну а там уже атака союзника или гварда). Мне так и не удалось полностью обойти эту проблему, поэтому на некоторых системах нормально пользоваться, увы, не получится, а там, где подобное будет случаться изредка, все же рекомендую использование в режиме "подпивасника"... в серьезном фарме, а уж тем более в пвп есть риск накосячить и подвести всю группу. По этим причинам панель вероятно так и останется в раннем доступе, и не увидит статуса полноценного релиза.
Для детальной настройки панели написан отдельный скрипт - Configurator. Настроить надо 1 раз перед использованием.

Чтобы каждый раз не выгружать и не перезапускать панель вручную, можете воспользоваться скриптом Starter. При закрытии (или краше) клиента - он выгрузит панель из памяти автоматически. И по хоткею запустит новый экземпляр.
Инструкция по пользованию.
1. Установить с настройками по умолчанию (в папку ProgramFiles) AHK v2.
2. Распаковать архив к игре в папку Patches.
3. Запустить Configurator и настроить панель.
4. Запустить Starter. В игре нажать Ctrl+Shift+z
2. Распаковать архив к игре в папку Patches.
3. Запустить Configurator и настроить панель.
4. Запустить Starter. В игре нажать Ctrl+Shift+z
1. Установить с настройками по умолчанию (в папку ProgramFiles ! как просит ) AHK v2.
2. Распаковать архив к игре в папку Patches. Убедиться, что не оказалось вложенных папок. Должно быть Lineage2/Patches/L2CustomSkillPanel/ и тут уже файлы скрипты. Т.е. все ровно также, как с любым другим патчом. Только вот в лоунчере галку ставить НЕ надо!
3. Выбрать в игре какую-нибудь неиспользуемую панельку и вынести на нее нужные скиллы, расходники и предметы.
4. Запустить дабл-кликом Configurator.ahk. Прочитать инструкцию по нажатии Tutorial. Указать вверху номер панели, настроенный в пункте выше.
5. Выбрать из выпадающих списков подходящие действия и иконки и настроить в соответствии с п.3
6. Настроить хоткеи, если требуется.
7. Если нужно сменить набор брони разом - в игре вынести все части брони на какую-нибудь другую панель, а в Конфигураторе выбрать в выпадающем списке Equipment и там указать номер панели, а номера ячеек указать через запятую.
8. Если нужно сказать в чат - выбрать в выпадающем списке Chat и ввести сообщение. В игре эту ячейку оставить пустой.
9. Нажать Save Config. Если нужно несколько по-разному настроенных панелей, то переименовать созданный файл в config1.ini config2.ini и тд.
10. Запустить дабл-кликом Starter и в игре прожать Ctrl+Shift+z, или просто запустить CustomSkillPanel.
2. Распаковать архив к игре в папку Patches. Убедиться, что не оказалось вложенных папок. Должно быть Lineage2/Patches/L2CustomSkillPanel/ и тут уже файлы скрипты. Т.е. все ровно также, как с любым другим патчом. Только вот в лоунчере галку ставить НЕ надо!
3. Выбрать в игре какую-нибудь неиспользуемую панельку и вынести на нее нужные скиллы, расходники и предметы.
4. Запустить дабл-кликом Configurator.ahk. Прочитать инструкцию по нажатии Tutorial. Указать вверху номер панели, настроенный в пункте выше.
5. Выбрать из выпадающих списков подходящие действия и иконки и настроить в соответствии с п.3
6. Настроить хоткеи, если требуется.
7. Если нужно сменить набор брони разом - в игре вынести все части брони на какую-нибудь другую панель, а в Конфигураторе выбрать в выпадающем списке Equipment и там указать номер панели, а номера ячеек указать через запятую.
8. Если нужно сказать в чат - выбрать в выпадающем списке Chat и ввести сообщение. В игре эту ячейку оставить пустой.
9. Нажать Save Config. Если нужно несколько по-разному настроенных панелей, то переименовать созданный файл в config1.ini config2.ini и тд.
10. Запустить дабл-кликом Starter и в игре прожать Ctrl+Shift+z, или просто запустить CustomSkillPanel.
Комфортной вам игры!
FAQ
F: Меня не забанят?
A: Нет
F: Как закрыть/выйти?
A: Найдите в трее (рядом с часами) иконку стартера и панели, правой клавишей -> exit.
F: В конфигураторе мало иконок
A: Да, есть такое. Добавил те, что вспомнил. С учетом ограничения описанного выше (что время отката скилла я не рассчитываю) скиллы с откатом порой специально и не добавлял, чтобы не возникало когнитивного диссонанса... Но вы можете скачать с любой базы нужную вам иконку и сохранить ее в формате .png в разрешении 32*32 пикселя и положить в одну из папок в /resources/action_type/. Ну или взять отсюда
F: Не отображается анимация / появляется на старте и пропадает сразу же / клик проскакивает мимо панели. Что делать?
A: В Конфигураторе в разделе Options выставите все галки и попробуйте с ними. Потом по 1 снимайте.
F: Все равно не помогает. Что делать?
A: Выставите в Конфигураторе опцию Debug_Mode, воспроизведите проблему и пришлите в личку описание с шагами воспроизведения проблемы и текстовый файл debug_log.txt, который появился в папке. Посмотрим.
F: Все работало, но зависло. Что делать?
A: Alt+Ctrl+Del, запустить диспетчер задач. Найти AutoHotKey и прибить.
F: Антивирус ругается.
A: Добавьте в исключения.
VirusTotal: Starter.ahk ; CustomSkillPanel.ahk
F: Произошел рассинхрон тоггла или скилл уже откатился, а кулдаун анимации все еще отображается. Как сбросить?
A: Правый клик по иконке
F: После смены игровой панели вызов скилла с Дополнительной порой приводит к тому, что возвращается старая панель (которая была до смены)
A: Проверка номера основной панели происходит раз в 2 секунды, после смены панели обождите 2 секунды, прежде чем использовать скиллы с дополнительной.
F: Не работают хоткеи
A: Если среди настроенных хоткеев есть хоть 1 буква, то все хоткеи будут работать только, если включен CapsLock. Скрипт запоминает состояние CapsLock в игре, поэтому при альт-табе или выходе вам не нужно за ним следить: статус будет сброшен, а когда снова вернетесь в игру, автоматически включится снова. Таким образом избавляемся и от любителей писать в чат КАПСОМ, и имеем возможность быстро включать/выключать хоткеи.
F: Как включить анимацию сосок?
A: В Конфигураторе укажите ячейки основной панели, где у вас лежат соски. В игре - левый клик по шапке (слева или сверху) дополнительной панели. Или можно из другого скрипта/программы отправить PostMessage(0x5555
F: Я включил анимацию, как указано выше, она отображается, но соски в игре сами все еще не прожимаются...
A: Все верно, Панель не задумывалась для автоматизации игрового процесса. Только анимация, чтобы красиво, или для индикации работы вашего другого макроса/скрипта.
F: Можно пример этого "другого макроса/скрипта"?
A: я сам не пользуюсь автососками, поэтому на текущий момент могу только предложить посмотреть вот эту тему.
Вместо F11 или F12 (выберите что-то одно, так как панель не поддерживает раздельное управление анимацией сосок, а скрипт по ссылке умеет жать разные соски из разных ячеек)
*F11::
{
global g_s_window_name
static t := false
settimer(() => f_controlsend_winactive("{F9}"),
g_i_shortcut_cyclic_ms * (t ^= 1))
}
*F12::
{
global g_s_window_name
static t := false
settimer(() => f_controlsend_winactive("{F10}"),
g_i_shortcut_cyclic_ms * (t ^= 1))
}
{
global g_s_window_name
static t := false
settimer(() => f_controlsend_winactive("{F9}"),
g_i_shortcut_cyclic_ms * (t ^= 1))
}
*F12::
{
global g_s_window_name
static t := false
settimer(() => f_controlsend_winactive("{F10}"),
g_i_shortcut_cyclic_ms * (t ^= 1))
}
*F11::
{
static t := false
SendCommand5555(t := !t)
settimer(() => f_controlsend_winactive("{F9}"), g_i_shortcut_cyclic_ms * t)
}
*F12::
{
static t := false
SendCommand5555(t := !t)
settimer(() => f_controlsend_winactive("{F10}"), g_i_shortcut_cyclic_ms * t)
}
{
static t := false
SendCommand5555(t := !t)
settimer(() => f_controlsend_winactive("{F9}"), g_i_shortcut_cyclic_ms * t)
}
*F12::
{
static t := false
SendCommand5555(t := !t)
settimer(() => f_controlsend_winactive("{F10}"), g_i_shortcut_cyclic_ms * t)
}
SendCommand5555(flag) {
static TargetScript := "CustomSkillPanel.ahk ahk_class AutoHotkey"
DetectHiddenWindows(True)
if WinExist(TargetScript) {
PostMessage(0x5555, flag, 0,, TargetScript)
}
}
static TargetScript := "CustomSkillPanel.ahk ahk_class AutoHotkey"
DetectHiddenWindows(True)
if WinExist(TargetScript) {
PostMessage(0x5555, flag, 0,, TargetScript)
}
}
F: У меня несколько персонажей, мне надо несколько разных панелей. Каждый раз в Конфигураторе настраивать заново?
A: Во-первых, осуждаю, это не role-play... Во-вторых, нет, не придется. Создайте несколько конфиг файлов и переименуйте их в "config1.ini" "config2.ini" и тд. Используйте Starter для запуска Ctrl+Shift+Z (X,C,V,B,N,M) в зависимости от номера конфига
F: Я нищеброд и подкаблучник, у меня нет отдельного кабинета, а в спальне по ночам жена запрещает мне кричать в микрофон...
A: В Конфигураторе выберите раздел Chat и настройте сообщение. Дублировать сообщения можно только в групповой и клан чат, в общие чаты запрещено. Таймаут на отправку сообщений в групповой чат - 2 секунды, в общие - 5 минут.
F: У меня есть замечание, совет..
A: Если не попадает под дисклеймер, то пишите -
F: Нашел баг...
A: Опишите по шагам ситуацию, буду разбираться. Только не рассчитывайте на оперативность. И времени не могу много выделять, да и уж подустал сам от этой панели... Спасибо за понимание.
Last edited: