- Свой локальный сервер WoW с блэкджеком и ботами, часть 1
- Свой локальный сервер WoW с блэкджеком и ботами, часть 2
- Свой локальный сервер WoW с блэкджеком и ботами, часть 3
Часть 2 - Модули
Модули ставятся по одному принципу. Скачиваются в /opt/azerothcore-wotlk/modules, пересобирается сервер, копируются настройки, в описании к модулю могут быть дополнительные действия перед запуском сервера. Затем просто запускается сервер. На всякий случай во время установки и пересборки сервер лучше остановить.
Из нюансов. В azerothcore с обновлениями меняется структура, azerothcore с playerbots отстаёт от основной ветки из-за чего последние версии модулей могут быть несовместимы с ней. В моём случае это проявлялось падением worldserver при запуске с жалобами на неизвестные поля и невозможность применить sql файлы.
Пример совместимых версий:
Azerothcore version: f42434df1 Merge pull request #177 from mod-playerbots/20260313-ac-core-merge
modules/mod-playerbots version: 4b7b0958 Merge pull request #2205 from mod-playerbots/test-staging
modules/mod-individual-progression version: efc8311 Update professions.sql (#1113)
modules/mod-ah-bot-plus version: 1822d96 Fix typo in mod_ahbot.conf.dist comments
modules/mod-transmog version: 2427a32 fix(Core): Validate item template before creating item in Transmogrify (#225)
modules/mod-ollama-chat version: 186d6a1 Fine tuning random chat a bit more
modules/mod-player-bot-level-brackets version: b03737f Merge pull request #82 from DustinHendrickson/Dustin/propertyfixes
Мне пришлось откатить mod-transmog до 2427a32. При запуске сервера были ошибки на несуществующие поля и невозможность применить модифицирующие базу скрипты из sql-файлов. Откатить версию ядра или модуля до нужной можно перейдя в директорию куда делался git clone и сделать git checkout КОММИТ. Например:
cd /opt/azerothcore-wotlk/modules/mod-transmog/
git checkout 2427a32
Конфиги в этом случае надо скопировать повторно, возможно и другие дополнительные действия (типа копирования sql-файлов, уже с аккуратным удалением предыдущих).
Доп. модули сервера
Имитация живого аукциона
Модуль согласно настройкам наполняет аукцион предметами с ценами подобными реальным, а также покупает их.
Предварительно надо завести аккаунт и персонажа под именем которого будет работать бот.
Создание аккаунта в консоли управления сервером (telnet 127.0.0.1 3443): account create ahbot password.
После этого надо зайти с клиента под этой учеткой и завести там персонажа, но не заходить под ним в игру.
Затем в консоли управления найти GUID этого персонажа: lookup player account ahbot, он будет нужен для настройки модуля после установки.
Установка:
cd /opt/azerothcore-wotlk/modules
git clone https://github.com/NathanHandley/mod-ah-bot-plus.git
После установки надо пересобрать сервер и скопировать настройки по умолчанию:
cd /opt/azerothcore-wotlk/
./acore.sh compiler all
cp env/dist/etc/modules/mod_ahbot.conf.dist env/dist/etc/modules/mod_ahbot.conf
В /opt/azerothcore-wotlk/env/dist/etc/modules/mod_ahbot.conf надо найти параметр и прописать значение GUID своего бот-персонажа AuctionHouseBot.GUIDs = НОМЕР. Можно сделать аналогичным способом кучку ботов для атмосферности, чтобы имена были разные и напоминали живых игроков, но функционально это не требуется.
Там же надо включить покупку и продажу предметов, чтобы бот её осуществлял:
# Выставление предметов на аукцион
AuctionHouseBot.EnableSeller = true
# Покупка предметов
AuctionHouseBot.Buyer.Enabled = true
Если сервер включается только на игровую сессию, то лучше увеличить скорость выставления предметов на продажу:
AuctionHouseBot.ItemsPerCycle = 600
Так же в этом случае возможно стоит поднять число покупаемых элементов за один цикл, иначе после конца игровой сессии бот может целый час разгребать несколько десятков предметов:
AuctionHouseBot.Buyer.BuyCandidatesPerBuyCycle = 10
После перезапуска сервера бот будет пополнять аукцион и покупать с него вещи по ценам, которые он считает соответствующими им (дополнительные настройки можно почитать и поменять в конфигурационном файле модуля).
Модуль замены внешки у предметов (трансмог)
Установка:
cd /opt/azerothcore-wotlk/modules
git clone https://github.com/azerothcore/mod-transmog.git
После установки надо переместить sql файлы, которые вносят изменения в базу при запуске пересобранного сервера:
cp /opt/azerothcore-wotlk/modules/mod-transmog/data/sql/db-auth/acore_cms_subscriptions.sql /opt/azerothcore-wotlk/data/sql/updates/db_auth/
cp /opt/azerothcore-wotlk/modules/mod-transmog/data/sql/db-characters/trasmorg.sql /opt/azerothcore-wotlk/data/sql/updates/db_characters/
cp /opt/azerothcore-wotlk/modules/mod-transmog/data/sql/db-world/*.sql /opt/azerothcore-wotlk/data/sql/updates/db_world/
После установки надо пересобрать сервер и задать изначальные настройки:
cd /opt/azerothcore-wotlk/
./acore.sh compiler all
cp env/dist/etc/modules/transmog.conf.dist env/dist/etc/modules/transmog.conf
Описание доп. настроек можно посмотреть и поменять в конфигурационном файле.
Мод записывает надетые хоть раз на персонажа вещи и их внешность можно потом вещать на другие. Т.е. надо хоть раз надеть.
Работает через интерфейс призванного персонажа. Призвать может человек с правами ГМ, команда в игре .npc add 190010. Удалить при желании можно выбрав в цель и введя .npc del.
Индивидуальная прогрессия
Идея модуля в попытке растянуть удовольствие от игры. С каждым новым аддоном и патчем предыдущий контент в WoW терял актуальность. Играя в 3.3.5a практически невозможно нормально насладиться данжами классики и TBC, эти аддоны просто пролетаются до WotLK. Мод убирает разные добавленные ускоряшки прогресса и искусственно блокирует его. Прокачавшись до 60-го надо по очереди закрывать рейды, чтобы прокачка дальше разблокировалась и можно было идти в TBC. Аналогично надо поступать и в нём. При желании, разблокировать всё можно ручками. Недостаток этого мода - его сложность и вероятность столкнуться с побочными эффектами от этого. Разработчики мода стараются держать совместимость с Playerbots, но вот разработка самого playerbots идет независимо.
Список изменений относительно оригинального 3.3.5a: https://github.com/ZhengPeiRu21/mod-individual-progression/wiki/List-of-Changes
Установка:
cd /opt/azerothcore-wotlk//modules
git clone https://github.com/ZhengPeiRu21/mod-individual-progression.git
После установки надо пересобрать сервер и задать изначальные настройки:
cd /opt/azerothcore-wotlk/
./acore.sh compiler all
cp modules/mod-individual-progression/conf/individualProgression.conf.dist env/dist/etc/modules/individualProgression.conf
Есть возможность применить дополнительные настройки сервера, которые, по задумке, еще больше приближают ощущения ко временам актуального контента. Я их не использовал, можно почитать в гайде по установке модуля.
Надо включить EnablePlayerSettings в /opt/azerothcore-wotlk/env/dist/etc/worldserver.conf. Это включает индивидуальные параметры для персонажа, которые требуются для мода. В таблице БД acore_characters_character_settings будет связка GUID_персонажа с параметром mod-individual-progression и значением. Это значение - уровень разблокированного прогресса, который, в случае чего, можно изменить самому.
Мод меняет уровни доступности маунтов с 20/40/60 уровней как в WotLK, на 40/60/70 как в классике/TBC. Поэтому в настройках PlayerBots стоит сменить уровни использования маунтов и для ботов /opt/azerothcore-wotlk/env/dist/etc/modules/playerbots.conf:
70AiPlayerbot.UseGroundMountAtMinLevel = 40
AiPlayerbot.UseFastGroundMountAtMinLevel = 60
AiPlayerbot.UseFlyMountAtMinLevel = 70
Равномерное распределение ботов по уровням:
Модуль решает проблему с распределением ботов по уровню. Изначально сервер заселяется ботами разных уровней и на разных стадиях прогрессии, пока сервер работает они качаются. Что приводит к тому, что они начинают скапливаться на высоких уровнях. Модуль же ботов, которые не в друзьях и не в гильдии, сбрасывает на нижние уровни, где наблюдается недобор онлайна, с уровней, где их перебор.
Установка:
cd /opt/azerothcore-wotlk//modules
git clone https://github.com/DustinHendrickson/mod-player-bot-level-brackets.git
После установки надо пересобрать сервер и задать изначальные настройки:
cd /opt/azerothcore-wotlk/
./acore.sh compiler all
cp modules/mod-player-bot-level-brackets/conf/mod_player_bot_level_brackets.conf.dist env/dist/etc/modules/mod_player_bot_level_brackets.conf
В конфиге можно познакомиться и поправить настройки. Значения по умолчанию довольно адекватные и после запуска сервера всё должно работать.
Ollama для общения с ботами
Идея модуля в использовании установленной локально или где-то ollama, которой можно скармливать запросы для генерации сообщений от лица ботов. Но это лучше крутить на видеокарте и даже так использовать можно только относительно простые и быстрые модельки. Промпты можно редактировать и подгонять под себя и развешивать ботам разные личности. У меня 3060 12 гб используется для этого, нормально работают нейросетки, которые отвечают в пределах ~5-8 секунд. Подстроив промпты, получилось выдать более-менее вменяемый результат, который лучше фиксированных сообщений Playerbots, но далеко выше этого уйти не удалось.
Перед установкой надо запустить на сервере или где-то ollama и скачать подходящую под своё железо модельку. Проверить доступность можно по своему адресу: curl http://localhost:11434/api/tags.
Зависимости для модуля:
apt install libfmt-dev
Установка модуля:
cd /opt/azerothcore-wotlk/modules
git clone https://github.com/DustinHendrickson/mod-ollama-chat.git
После установки надо пересобрать сервер и задать изначальные настройки:
cd /opt/azerothcore-wotlk/
./acore.sh compiler all
cp modules/mod-ollama-chat/conf/mod_ollama_chat.conf.dist env/dist/etc/modules/mod_ollama_chat.conf
Сервер можно запустить сразу и ГМ может применять настройки на лету командой .ollama reload в игре или настроить перед запуском.
В opt/azerothcore-wotlk/env/dist/etc/modules/mod_ollama_chat.conf надо задать адрес подключения к ollama и свою модель:
OllamaChat.Model = qwen3:8b
OllamaChat.Url = http://localhost:11434/api/generate
Так же там можно ознакомиться и поменять другие параметры. Например, чтобы боты отвечали на личные сообщения.
Если всё пройдет успешно то боты должны начать писать сообщения. Если нет, то ошибки можно увидеть в логах worldserver.
Предварительно можно протестировать модель на потенциальную пригодность: time curl -D - http://localhost:11434/api/generate -d «{«model»:«cogito:14b»,«prompt»:«what roles can do paladins in world of warcraft?»,«stream»:false}»
Сначала модель загрузится в память, но если при повторном запросе она отвечает > 10 секунд использовать её для ботов — сомнительная идея. Если >25 секунд, то лучше даже не пробовать.
При использовании ollama лучше отключить фиксированные сообщения от ботов. В /opt/azerothcore-wotlk/env/dist/etc/modules/playerbots.conf найти и выставить значения
# disables loot/quest/kill broadcasts
AiPlayerbot.EnableBroadcasts = 0
# disables random talking in say/yell/general channels
AiPlayerbot.RandomBotTalk = 0
# disables random emoting
AiPlayerbot.RandomBotEmote = 0
# disables dungeon suggestions
AiPlayerbot.RandomBotSuggestDungeons = 0
# disables greeting when invited
AiPlayerbot.EnableGreet = 0
# disables guild event chatting
AiPlayerbot.GuildFeedback = 0
# disables bots talking without a master
AiPlayerbot.RandomBotSayWithoutMaster = 0
В настройках модуля /opt/azerothcore-wotlk/env/dist/etc/modules/mod_ollama_chat.conf есть черный список фраз OllamaChat.BlacklistCommands, на которые боты не должны реагировать. Это префиксы команд для playerbots, их стоит дополнить @tank,@dps,@heal,@melee,@ranged. Некоторые команды начинаются с этих слов, автор о них забыл или не знал. Просто символ @ не работает в этом списке.
Автоматическая продажа серых предметов при подборе:
Модуль автоматически конвертирует мусор (серые вещи) в золото. Что освобождает инвентарь и делает жизнь удобнее, особенно полезно для разгрузки ботов. Беда в том, что серые шмотки пусть и редко, но не всегда являются мусором. Проще жить без мода.
Установка модуля:
cd /opt/azerothcore-wotlk/modules
git clone https://github.com/noisiver/mod-junk-to-gold.git
После установки надо пересобрать сервер:
cd /opt/azerothcore-wotlk/
./acore.sh compiler all
После перезапуска должен работать.
Другие модули
Сам не использовал, но могут быть полезными. Принцип установки такой же.
Каталог модов с описаниями: https://www.azerothcore.org/catalogue.html#/home
-
mod-autobalance - автоматически подстраивает характеристики мобов и боссов в подземельях и рейдах под количество игроков.
-
mod-account-achievements - делится достижениями со всеми персонажами на аккаунте.
-
mod-solo-lfg - позволяет входить в подземелья через «Поиск подземелий», даже если не хватает игроков (даже в одиночку).
-
mod-ale - скриптинговый движок, использующий язык Lua.
-
mod-npc-all-mounts - NPC для бесплатного получения всех маунтов.
-
mod-npc-free-professions - NPC для бесплатного прокачивания всех профессий.
-
mod-challenge-modes - позволяет активировать различные сложные режимы игры
-
mod-arac - позволяет играть любыми классами на любой расе
Третья часть про сервисы для сервера, модификации клиента и обслуживание: Свой локальный сервер WoW с блэкджеком и ботами, часть 3