Статья № 49 Делаем bot'a
 Автор DominuS, ? [прислать статью]


Данная статья скомунизжена с docs.com.ru

Делаем мясо для Потрясения 3

Наверное, не сразу понятно, про что будет статья. Объясняю статья будет про ботов в Quake III Arena (да именно Потрясение 3, ко мне эта мысля пришла от earthquake - землетрясение). Наверняка все, кто читает эту статью, уже давно разносит в пух и прах великого Xaero на найтмаровской сложности на его родной карте и хочется чего-нибудь новенького. Итак, месим мясо для Ку3.

Требующийся софт:

Первое, что нам нужно - это архиватор. Я не знаю почему, но большинство "великих" (может и без кавычек) програмеров советуют WinZip и ему подобные, ИМХО - WinRar удобнее.

Второе - это прога для просмотра содержимого ботовских файлов. Держитесь покрепче, упритесь во что-нибудь, что не будет двигаться, если Вас начнёт колбасить... и так... Блокнот!!! Да-да, именно Блокнот и ему подобные простенькие проги нам помогут в нашем нелёгком труде.

Третье - пиво (кофе) и рыба (конфеты, пончики, чипсы).

Приступим.

Сначала нам надо достать макет для наших будущих ботов. Для этого заходим в корневую директорию Квейка, затем заходим в (обычно нужную только для добавления новых карт и моделей) директорию \baseq3. После того как Вы зайдёте в заветный dir у Вас, возможно, разбегутся глаза от обилия файлов в оном, ведь вы уже давно выучили такую интересную команду как writeconfig, а сохранять свой конфиг под одним и тем же именем - неинтересно.
И так, в всей этой куче мусора ищем файл . Нашли? ОК, тогда открывайте его. Как? Дабл клик на него и в появившемся списке программ выбираем WinRar (WinZip, ZipMagic etc.), потом помечаем пункт "Всегда использовать программу для файлов этого типа" и жмём ОК. Как, не верите? Если хотите - я отвечу, но такие непонятные нам простым смертным файлы с расширением *.pk3 - это обычные архивы.
Далее в открывшемся окне rar'а находим директорию botfiles и разархивируем её (так удобнее). Всё теперь можно делать своего бота!

Начинаем делать бота.

Заходим в разархивированную директорию botfiles, далее заходим во вложенную директорию bots, перед Вами открывается странная картина: куча файлов с давно выученными именами горячо любимых ботов. То, что Вы увидите, войдя в директорию bots - это мозги ботов, если угодно AI. Каждый файл отвечает за отдельную деталь бота:

имя-бота_c.c - этот файл отвечает за общее поведение бота (точность при стрельбе, общительность, etc.)
имя-бота_i.c - тут создатели игрушки решили сказать, боту насколько он будет рваться заполучить предметы квейковского обихода (оружие, патроны, меги, армор)
имя-бота_t.c - здесь выложены сообщения, которые бот вам будет посылать (чат)
имя-бота_w.c - а в этом файле описаны предпочтения бота в оружии

С файлами разобрались, теперь приступим собственно к созданию бота. Выбираем вашего любимого бота (в моём случае это Phobos) и выкидываем его файлы ( _c.c _i.c _t.c и _w.c) куда-нибудь в отдельную директорию. Переименовываем файлы, заменяя имя исходного бота на имя своего бота (в моём случае было phobos_c.c, а стало spamer_c.c, вообще-то имя можно давать любое и как можно короче, например 1_с.с - на жизнь бота это не повлияет :)).

Вот мы и переименовали файлы, переходим к следующему этапу.

Открываем файл с окончанием _c.c через Блокнот. Находим строку:

CHARACTERISTIC_NAME "Имя-бота"
и вместо "Имя-бота" пишем имя своего бота, например
CHARACTERISTIC_NAME "Spamer"

Далее делаем нашего бота супер метким для этого все напротив надписей от CHARACTERISTIC_AIM_ACCURACY_MACHINEGUN до CHARACTERISTIC_AIM_SKILL_BFG10K цифры, которые стоят напротив них заменяем на 1 (обычно эти строки присутствуют только в разделе, который начинается со слов "skill 5" - найтмар, но лучше их запихать и во все остальные разделы. Слова "skill 1" "skill 3" "skill 5" обозначают сложность бота от i can win до nightmare).

Вы можете поэкспериментировать с другими строками, так, например для CHARACTERISTIC_CHAT_CPM можно установить равным 0, чтобы ваш бот молчал, а можно поставить штук пятнадцать девяток, чтобы он стоял и разговаривал с Вами (этакая чат-прога :)).

Ах, да! Ещё самое главное:

CHARACTERISTIC_WEAPONWEIGHTS поставьте "bots/имя-вашего-бота_w.c"
CHARACTERISTIC_CHAT_FILE поставьте "bots/имя-вашего-бота_t.c"
CHARACTERISTIC_ITEMWEIGHTS поставьте "bots/имя-вашего-бота_i.c"

Теперь Ваш бот практически готов, осталось только несколько последних штрихов.

Заходим в злополучный архив pak0.pk3, заходим в botfiles -> bots -> нажимаем Добавить (Add) -> находим файлы нашего бота и помечаем их -> жмём Добавить в архив (Add to archive) -> ждём окончания добавления.

Теперь надо задать для Квейка координаты новорожденного бота. Выходим в корневой каталог архива -> заходим в Scripts -> открываем bots.txt (можно не распаковывать) -> идём в конец документа и добавляем такие строки:

{
name Имя-бота
funname Имя-бота-как-оно-будет-писаться-в-игре-с-учётом-регистра (например ^1S^3pame^1R)
model Модель-бота (например klesk/red, пути к моделям можно посмотреть в том же паке Models -> Players)
aifile bots/имя-файла-после-переименования_c.c
}

Вот и всё - ваш бот готов. Теперь заходим в игру запускаем карту жмём тильду (~) пишем:

addbot Имя-бота 5 и наслаждаемся.

Прикольный совет:

Поставьте в имя-бота_w.c предпочтение всех оружий на 0, кроме пулемёта, а в имя-бота_c.c точность пулемёта 1. Затем создайте какую - нибудь открытую, полностью просматривающуюся зону и умирайте...

Траблшотинг:

Если пишет какие-то сообщения об ошибке, значит, проверьте, правильно ли вы прописывали имена файлов, а если вам пишет что-то типа "chat daemia_t.c" или что-то вроде этого, то зайдите в файл _c.c, в CHARACTERISTIC_CHAT_NAME "Имя-исходного-бота" измените Имя-исходного-бота на Имя-своего-бота, затем откройте файл _t.c и chat "Имя-исходного-бота" измените на chat "Имя-Вашего-бота" - всё, теперь должно работать.

Весёлой игры! С Вами был DominuS АКА Bipa Moda.

Дополнено Max Snake: Скачать архив со описаниеми от Mr Elusive (один из создателей Quake 3) этих и других скриптов. [Q3ABotEdit.rar](ENG).