Как делать скрипты. Как писать скрипты для Windows? Создание bat-скрипта в Windows


Общение с клиентом порой бывает весьма непростым. При этом менеджеру необходимо подвести собеседника к покупке. Над вопросом, как это сделать бились и продолжают биться как начинающие продажники, так и профи. Существенно облегчить процесс, поднять уровень отдела продаж на новую высоту помогут скрипты, предусматривающие разные повороты в разговоре с клиентом.

В этой статье рассмотрим, как написать алгоритм продаж.
Существует множество сторонних организаций, которые будут предлагать вам воспользоваться их услугами по созданию такого шаблона. Действительно, процесс его разработки своими силами может занять довольно продолжительное время, потребовать изрядного количества ресурсов. Но сам же эта работа, к которой на определенном этапе имеет смысл подключить всю команду, связанную с продажами, пойдет на пользу вашим сотрудникам.

Итак, почему лучше сделать это самостоятельно?

  • Вы, как никто, знаете свою компанию и сферу бизнеса
  • Отличная возможность для развития сотрудников
  • Детальный тестинг алгоритма

“Роботы” вместо людей?

Скрипты продаж вызывают много споров в профессиональной среде. Нужны они или нет? Главным аргументом против является чрезмерная автоматизация процесса, его “роботизированность”. С одной стороны, это может почувствовать клиент, с другой — сами сотрудники привыкают к шаблонным действиям, становятся менее изобретательными и даже говорят всегда одни и те же фразы.

Сторонники такого подхода приводят довод, связанный с повышением уровня продаж, а также качеством обслуживания клиентов. Разволновавшийся новичок-продажник может упустить из вида важные моменты. В итоге сделка сорвется или клиент останется недовольным вашим сервисом. Наличие алгоритма поможет разумно ответить на все вопросы и возражения

Теперь понимаем, что правило придерживаться золотой середины как нельзя лучше подходит для этой ситуации. Скрипт — алгоритм, который будет служить опорой для продажников. Однако не стоит полагаться только на него. Поняв, чего именно хочет конкретный клиент, можно пойти ва-банк и сделать такое предложение, от которого он уже не сможет отказаться.

Скрипт — это шаблон, по которому действует продажник. Имея такое подспорье, он будет чувствовать себя гораздо увереннее как в телефонном разговоре, так и при личном общении с клиентом.

Создание алгоритма — это своего рода формирование базы знаний, которая будет постоянно пополняться. Одним из главных преимуществ их использования является ускоренное введение в работу новых сотрудников. Однако не стоит заставлять продажников использовать скрипт от и до.

И руководителями, и самими менеджерами по продажам он скорее должен восприниматься как подспорье, а не директива. Никто не ограничивает свободу общения с клиентом, это лишь помощь, которая так часто бывает необходима.

Как написать продающий скрипт

Процесс делится на три основных этапа:

  • исследование
  • написание
  • тестинг

Исследование

Вы, конечно, уже все знаете о своей сфере деятельности, клиентах и конкурентах. Но создание скрипта продаж как раз станет отличным поводом эти знания углубить или может найти что-то новое.
На этом этапе вам предстоит влезть в шкуру клиента, чтобы понять, что может его интересовать в вашем продукте/услуге, какие действия с вашей стороны его раздражают. Углубиться в психологию клиентов здорово помогла бы запись телефонных разговоров. Так что если вы планируете создание скрипта, уже сейчас можете эту запись организовать. Только одно это совместное с командой прослушивание и последующий анализ услышанного помогут здорово продвинуться в технологии продаж.

Особое внимание обратите на сомнения и возражения, обход которых нужно обязательно включить в будущий материал. Продумайте, что, исходя из особенностей своего продукта/ услуги, скажет менеджер на “Дорого”, “Я пока только присматриваюсь”, “Еще подумаю” и т.д.

Отдельно распишите все преимущества продукта/услуги, разработайте новые формы для их позиционирования.

Написание

Структура скрипта диктуется привычным ходом разговора с клиентом.

  • Представление
  • Выяснение потребности
  • Презентация товара/услуги
  • Работа с возражениями
  • Сделка

Если речь идет о телефонном разговоре, то перед представлением и приветствием добавляется блок обхода секретаря. От его качества напрямую зависит, сможете ли вы подступиться к клиенту или он будет вечно “занят”.

Каким бы странным поначалу это не казалось, пропишите все фразы вплоть до приветствия и прощания. Некоторые фразы даже могут стать вашей фишкой, по которой будут узнавать компанию.

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

Теперь возникает вопрос, как это все оформить, чтобы не запутаться, например, в ходе телефонного разговора.

Многие менеджеры составляют для себя план разговора. Делается это в ежедневнике или записной книжке. После обсуждения с командой у вас появится много бумажек со схемами. Оставлять все в таком виде, конечно, нельзя. Он только тогда и превратится в алгоритм, когда будет четко структурирован, понятен и удобен.

Часто для написания скрипта используются таблицы в Word или Excel. Это оправданно в том случае, если вы оперируете не слишком объемными фразами. Если же вы видите, что алгоритм получится объемным, лучше всего воспользоваться специализированным сервисом для его создания. Минус таких ресурсов в том, что для их применения потребуется заплатить.

Кроме того, существуют специализированные конструкторы, где заложено множество шаблонов вопросов и ответов. Вот здесь действительно за вас все делает робот. Сеть пестрит объявлениями типа “Создай продающий скрипт за столько-то минут”. Такие скриптогенераторы могут стать выходом, если вам немедленно потребовался алгоритм.

Но если вы действительно хотите прокачать команду, лучше пойти классическим путем и делать все самостоятельно, основываясь на имеющемся опыте.

Тестинг

Вы все написали и рветесь в бой. Не спешите. Предстоит еще процесс шлифовки. Сначала проверьте свое творение на менеджерах, других сотрудниках компании, затем пообщайтесь в прописанном формате с небольшими клиентами.

Момент отработки скрипта в игре очень важен не только для того, чтобы с ним освоились менеджеры, но и для того, чтобы выявить слабые звенья в вашей логической цепочке. Попросите других сотрудников сыграть вредных клиентов. Изучите, в какую сторону может уходить разговор. Дополните скрипт “антикризисными” ответами.

Правки и уточнения после тестирования однозначно появятся. И вот тут вспоминаем о сервисах, где можно все удобно записать Если вы ими воспользуетесь, то процесс редактирования алгоритма станет гораздо более удобным, а результаты сразу доступными всем менеджерам.

То, что скрипт будет постоянно развиваться, меняться, говорит не о вашей несостоятельности, а о том, что команда активно работает, пробует новые подходы.

По каким критериям оценивать написанное?

  • Насколько менеджерам комфортно разговаривать, используя написанные фразы
  • Удается ли удержать внимание клиента
  • Характер разговора, нет ли движения по кругу
  • Что вызвало негативную реакцию у клиента

Выводы

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

  • Внимательно следите за языком. Общение должно получиться живым.
  • Не пишите слишком большие текстовые блоки. Клиент не воспримет монолог.
  • Если вы говорите по телефону и читаете написанное, собеседник ни в коем случае не должен это почувствовать.
  • Индивидуализируйте скрипт под каждого менеджера. Это значительно упростит работу и привыкание к новому методу.

Как и все новое, это решение может не сразу прижиться среди менеджеров. Ломка неизбежна и в том случае, если это ваш первый алгоритм, и в том, ели вы просто его меняете. На этапе внедрения, если вы не хотите, чтобы все так и заглохло, а ресурсы оказались потраченными зря, следите, чтобы все использовали новый сценарий.

Будьте готовы к тому, что скрипт будет постоянно меняться. Чем больше новых клиентов будет у вас появляться, тем чаще будут вноситься изменения и дополнения в алгоритм работы.

Процесс разработки крайне трудоемкий и может занять длительное время, но результат не заставит себя ждать. В ваших руках окажется инструмент для работы не с гипотетической, а с реальной аудиторией.

Инструкция

В зависимости от того, где происходит исполнение сценария, скрипты делятся на «клиентские» и «серверные». Переходя по какому-то адресу в сети, мы отправляем URL интересующей страницы серверу, и тот запускает сценарий (скрипт), находящийся по указанному адресу. Скрипт, выполняя на сервере запрограммированные в нём действия, собирает страницу из нужных блоков и отправляет её браузеру. Это - серверный скрипт. Получив страницу, браузер на нашем визуализирует её для нас и, если в полученном коде страницы есть какой-то сценарий, то уже он занимается исполнением этого скрипта. Это - клиентский скрипт.
Чтобы сервер или браузер могли прочесть, понять и исполнить сценарий он должен быть составлен и записан по известным им правилам. Такие наборы правил называют скриптовыми языками программирования. Большинство серверных сценариев в настоящее время пишутся на языке PHP, а большинство клиентских - на языке JavaScript. Чтобы написать скрипт достаточно иметь обычный текстовый редактор – блокнот. Но для постоянного программирования скриптов не обойтись без специализированного редактора. Такой редактор берёт на себя львиную долю рутинной работы по написанию скриптов, оставляя программисту больше времени для творчества.
Давайте напишем простой скрипт на серверном языке PHP. Первой строкой надо сообщить исполнителю, что с этого места начинается сценарий. На языке PHP этот открывающий тег выглядит так:Между этими двумя тегами находятся инструкции - языка. Например, напечатать надпись, оставленную О. Бендером на Кавказских скалах, так:echo ("Здесь были Кися и Ося");А инструкция показать текущее время в формате ЧАС:МИНУТА пишется так:echo date("H:i");Полностью PHP-скрипт, составленный из этих операторов, будет выглядеть так:echo date("H:i");
echo (" здесь были Кися и Ося!");?>После выполнения этого скрипта серверной программой-исполнителем (интерпретатором языка) страничка бы выглядела так:

А этот же сценарий на клиентском языке JavaScript будет выглядеть так:var now = new date();
document.write ("В ");
document.write (now.getHours() + ":" + now.getMinutes());
document.write (" здесь были Кися и Ося!");Здесь строка var now = new date() отдаёт исполнителю сценария команду создать новый виртуальный объект с именем "now", который представляет собой текущую дату и время. document.write() – это команда написать в странице то, что указано в скобках, а команды now.getHours() и now.getMinutes() предписывают извлечь из объекта “now” текущие час и минуту.
Осталось для большей наглядности объединить эти два скрипта в один файл, сохранить его на сервере и набрать URL в адресной строке браузера. В результате увидим одинаковые строки, одна из которых была выполнена по нашему сценарию на сервере (интерпретатором PHP), а другая - в нашем компьютере (интерпретатором JavaScript).

Как писать скрипты для операционной системы, сайтов или же просто игр? Ответ на этот, поверьте, легкий вопрос и будет рассмотрен в рамках данной статьи.

Общая информация

Очень желательно, чтобы были хотя бы минимальные знания о программировании. Но если что-то покажется непонятным, то статья-другая поможет заполнить пробел. Первоначально давайте определим, что же собой представляет скрипт. Так называют алгоритм, написанный определёнными языками программирования, что хранится на компьютере человека и может взаимодействовать с определёнными файлами, программами вроде браузеров и системными настройками. Это всё позволяет значительно дополнять стандартные возможности, создавать автоматизированных помощников, что будут брать на себя часть работы.

Начинаем работать с браузеров

Это, пожалуй, одно из самых лёгких занятий. Если мы пишем скрипты на JavaScript, то для этого достаточно обычного блокнота и знания этого языка программирования. Правда, есть тут и недостатки. Так, каждый человек, у которого есть всё тот же "Блокнот", сможет посмотреть, что же собой представляет скрипт. И если у него будут плохие намерения, а в коде уязвимость - то могут возникнуть проблемы. Отвечая на вопрос о том, как научиться писать скрипты на JavaScript, следует отметить, что для этого достаточно изучить данный язык программирования. Для того чтобы создавать лучшие и более сложные программы, можно воспользоваться различными библиотеками. Но для них требуются соответствующие расширения веб-обозревателей. И при смене компьютерной техники придётся проводить дополнительные настройки. А при использовании сторонних разработок необходимо удостовериться, что скрипт не будет отсылать пользовательские данные на сторонние сервисы. Следует отметить, что каждый браузер имеет свои определённые ограничения. Но в целом с их помощью можно делать практически всё что угодно. Зачем же их пишут в таких случаях? Они нужны тогда, когда следует автоматизировать деятельность человека.

Работаем с операционной системой Windows

Допустим, нам необходимо поменять конфигурацию компьютера. Для этого существует широчайший набор графических средств, но всё они, увы, не охватывают. Поэтому часто приходится создавать системные скрипты. Они имеют расширение.bat. Каждый человек, который более-менее длительное время работает за компьютером, уже встречался с такими файлами. Но вот как писать скрипты для Windows? Для этого нам пригодится всё тот же "Блокнот". Сначала создаём новый текстовый файл. В нём необходимо записать системные команды. После этого необходимо изменить расширение файла на.bat. И остаётся только запустить эту разработку. Если всё правильно, то команды успешно будут выполнены, что и можно лицезреть. Но в случае ошибок или неграмотного написания кода в лучшем случае ничего не произойдёт. Поэтому лучше разбираться в том, что записываешь. Просто брать где-то код и бездумно его вставлять категорически не рекомендуется! Это может привести к значительным проблемам в работе операционной системы. И ещё повезёт, если такие опасные действия были сделаны с гостевого аккаунта. Ведь команда от администратора может превратить компьютер в "кирпич".

А что с "Линуксом"?

Следует помнить, что "Виндовс" - это не единственная операционная система. Есть ещё и "Линукс", причем довольно популярный. Как писать скрипты в этой операционной системе? Они создаются с помощью оболочки - специального командного интерпретатора, который является интерфейсом между человеком и ядром операционной системы. В "Линуксе" скрипты, по сути, это просто файл, в котором перечисляются системные команды. Это просто и одновременно удобно. Но оболочке нужно знать, как же такой файл следует обрабатывать. По умолчанию она просто читает. А если нужно выполнить, то используется конструкция «#!», которую необходимо поставить перед командой. Все скрипты имеют расширение.sh. Следует отметить, что с их помощью можно делать довольно много сложных вещей. Например, резервное копирование файлов. В целом вариантов использования чрезвычайно много.

Учимся писать скрипты

Итак, первоначально необходимо определиться со средой, где мы будем набирать код. Почти всегда для этого достаточно одного "Блокнота". Но в нём не очень удобно отображать строение конструкций, к тому же не подсвечиваются операторы и другие элементы. Поэтому в качестве достойной альтернативы можно предложить программу Notepad++. Для тех, кто знает английский язык, не так сложно перевести, что это тоже "Блокнот". Но с расширенными возможностями. Эта небольшая, но очень приятная разработка ориентирована в первую очередь на программистов. В ней можно включить настройку отображения почти всего, что только есть. Присутствует удобный инструмент отображения кода и множество других хоть и мелких, но приятных вещиц, которые сделают процесс написания более комфортным. В целом же на вопрос "где писать скрипты" дано множество различных ответов, каждый из которых предлагает свою изюминку. Есть и очень навороченные среды, с эмуляторами и множеством инструментов отладки. Выбирай, что душе пожелается. После этого необходимо позаботиться о наличии знаний. В качестве базиса подойдёт справка по языку программирования или же команд операционной системы. Для более продвинутого изучения можно прочитать несколько книг, в которых объясняются особенности машинной логики и обработки кода.

Сервисы обучения в реальном времени

Если интересует, как научиться писать скрипты, то не следует сбрасывать со счетов и возможность обучения с помощью информационных образовательных технологий. Как приблизительно выглядит такая «кузница программистов»? По программе, составленной согласно мнению опытных разработчиков, новичка ведут от самого лёгкого к сложным моментам. Так, первоначально может изучаться динамическое обновление данных, чтобы в последующем перейти к созданию сокет-серверов. И человек проходит обучение не спеша, поэтапно, усваивая максимальное количество данных. Поэтому, если возникнут сложности, можно обратиться за помощью к ним. Не факт, что первый попавшийся удовлетворит все потребности, но тогда необходимо будет просто попробовать что-то иное.

Зачем же изучать?

Многих интересует, как писать скрипты для игр. Что ж, это не очень сложно, но и не единственное применение подобной возможности. Но давайте же рассмотрим на примере игры. Допустим, человеку нравится играть на определённом сайте в какое-то развлечение. Но оно, увы, предусматривает, что необходимо или вкладывать свои деньги, или же долго и монотонно выполнять определённые действия. И если был выбран второй путь, то скрипты - это именно то, что здесь нужно. Подобное может быть использовано и в стационарных играх на компьютере. Там есть персонажи под управлением искусственного интеллекта, и чтобы сразиться с ним, можно создать свою версию ИИ, устроив таким образом битву компьютера с самим собой (и для более лёгкого прохождения). Но скрипты могут быть успешно использованы не только в играх. Допустим, что есть сайт серьёзной компании. Важным аспектом является максимальная поддержка коммуникации с клиентами. И для этого в виде скрипта добавляется небольшая форма, с помощью которой можно получить консультацию специалиста в онлайн-режиме. Возможностей применения много!

Заключение

Увы, но в рамках статьи очень сложно передать, как правильно писать скрипты. Можно, конечно, использовать общие фразы о том, что код должен занимать меньше места, быть оптимальным и много чего другого, но действительно понять это можно будет только на практике. Ведь только опыт и поиск оптимальных решений могут помочь в реализации программ таким образом, чтобы они с минимальными трудозатратами выполняли свои «обязанности». В программировании вообще, а не только в написании скриптов, очень много зависит от практики! Поэтому нужно постоянно учиться, совершенствоваться и думать, как же реализовать поставленную задачу наилучшим образом.

Что такое скрипт? Скрипт это программа написанная на языке веб-программирования, для сайтов, которая решает какие либо динамические задачи на сайте будь то создает корзину покупателю или организует переписку на сайте или голосование в общем реализует какую-либо потребность которую стандартными средствами html или css не реализуешь. Скрипты это чуть ли не основной компонент любого сайта, именно с помощью скриптов сайт из обычной рисованной странницы превращается во многофункциональную структуру, и чтобы , без скриптов ни как не обойтись.
Практически любой скрипт можно адаптировать под конкретный сайт настроить и внедрить. В этом разделе вам предложены очень интересные и полезные скрипты которые помогут вам сделать ваш сайт более удобным и разнообразным.

Это обновленная версия всем известного и любимого CMS Wordpress, на котором работает основная масса блогов в интернете. Версия полностью русифицирована и корректная. В этой версии многое улучшили и доработали, например улучшили текстовый редактор, создали новый вид для библиотеки изображений, новый каталог плагинов и т.д. Вы можете скачать Wordpress 4 и уже сегодня обзавестись прекрасным блогом.

Прекрасный мощный форум, который имеет огромный потенциал и что самое приятное он ещё и бесплатный. Версия 3 является логическим продолжением известного phpbb2, но только конечно же намного больше функционала, качества, и всевозможных улучшений. Хороший cms который ни сколько не уступит своим платным аналогам.

Инструкция по установке и настройке скрипта форума phpBB3 читайте .

Это самая популярная сборка одного из лучших CMS. На его основе вы сможете создавать проекты практически любой сложности, от персональной страницы до многоуровневого интернет магазина. Прелесть данного CMS заключается в простоте использования и достаточно несложной настройке, что дает вам огромные возможности в плане создания сайтов. Joomla 2.5.6 полностью бесплатный CMS с огромным набором плагинов и всевозможных шаблонов.

Joomla представляет собой набор скриптов, написанных на языке программирования PHP. Это готовый и бесплатный движок для вашего сайта. Joomla! старается сохранить вещи настолько простыми, насколько это возможно, в то же время предоставляя большие возможности. Наконец-то незнакомые с программированием люди могут получить систему полного управления своими сайтами, не тратя непомерных средств на программное обеспечение с закрытым кодом. Обычно вэб-сервер - это прерогатива хостеров, однако вы можете достаточно просто и быстро установить D.E.N.W.E.R., который установит на ваш компьютер готовый пакет программного обеспечения вэб-сервера и на котором вы сможете развернуть и установить CMS Joomla. Версия Joomla! 1.5.12 с локализованными демонстрационными материалами и предустановленным русским языком диалогов. Данный дистрибутив ничем не отличается от стандартного, кроме предустановленных русскоязычных пакетов локализации, демо-материалов на русском языке, языковых файлов TinyMCE и текста лицензии, отображаемой при инсталляции.

Фактически - это мини Yandex на Вашем сайте. Скрипт поиска по сайту без использования MySQL. Подходит для большинства малых и средних сайтов. Использует индексацию, благодаря чему время поиска значительно сокращается. Индексирует ~1Mb за 1сек (скорость зависит от вложенности папок и структуры Ваших страниц). Поиск занимает от долей секунды (в зависимости от сложности запроса и веса индекса) до...

Вордпресс - это бесплатная CMS с открытым кодом, распространяемая под GNU GPL. На сегодняшний момент WordPress - одна из самых популярных платформ для блогов. С помощью этого скрипта вы сможете сделать сайт с огромным функционалом, от простой странички с записями, до многофункционального сайта с регистрацией пользователей, и всевозможными сервисами, благодаря большому количеству плагинов. Так же для этого CMS написано огромное количество бесплатных шаблонов, которые помогут сделать ваш блог стильным и красивым.
Урок по установке и настройке.

Часть 1. Вступление

И так, что же такое скрипт? Это набор команд, которые будут последовательно выполняться движком игры. Хотя, фактически, таковыми являются и файлы, содержащие настройки, но впредь скриптами будем называть только те наборы команд, которые используют логические команды, а не просто набор команд, которые никак между собой не взаимосвязаны. У движка Source, на котором работают игры Valve, набор таких команд достаточно ограничен, дабы не давать игрокам возможности получать нечестное преимущество путём использования скриптов. Скрипты, описаные в этом руководстве, были написаны для Team Fortress 2, однако почти все приёмы их написания так же применимы и для других многопользовательских игр на движке Source - CS:GO, HL2:DM, CS:S и так далее.
В Source есть отдельный формат файлов, в которые записываться скрипты - .cfg. Данный формат не является специальным для движка Source, его можно найти и в множестве других программ. Скриптовые команды так же могут вводится напрямую через внутриигровую консоль. В дальнейшем мы будем иметь дело именно с такими файлами, тут и далее будем называть конфигами. Консоль же лучше использовать исключительно для коротких команд и настройки игры, но не для написания объёмных скриптов.
В этом руководстве вы сможете пройтись по всем уровням скриптов, от самых простых до весьма сложных. Но не думайте, что нужны какие-то особые навыки для их написания, всего лишь немного логики и блокнот. И так, начнём же наше изучение!

Часть 2. Готовимся писать скрипты

Что же нужно для написания скрипта? Во-первых, хороший и удобный текстовый редактор. Стандартный блокнот Windows не подойдёт, так как он имеет весьма ограниченный функционал. Поэтому я рекомендую использовать блокнот Notepad++. Скачать его можно .
Далее стоит включить функцию отображения расширений файлов в Windows. Это позволяет быстро изменять расширение файлов и превращать текстовые файлы в конфиги прямо в проводнике Windows, что может значительно упростить данную операцию. Как это сделать:
Теперь нам нужно научиться создавать сами конфиги. Для начала найдите папку Steam. Если вы не изменяли её местоположение, то она должна быть в C:\Program Files (x86). После того, как её найдете, пройдите по следующему пути:
Steam/steamapps/common/Team Fortress 2
На этом этапе настоятельно рекомендую сделать ярлык папки tf на рабочем столе для быстрого доступа к ней. Кроме неё, тут есть папки bin и hl, но нам они не нужны, так как там находятся файлы движка. Файлы самой игры как раз в папке tf. Внутри тоже много разнообразных файлов и папок, но нас интересует только одна - cfg. Тут находятся все игровые конфиги. В итоге, мы оказались в

C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\tf\cfg
Все конфиги, которые вы будете делать, загружаются из этой папки. Так же их можно загружать из /tf/custom/%названиепапки%/cfg, но этот способ есть смысл использовать только в том случае, если вы делаете свой мод, либо используете дополнительные возможности TF2, как субтитры (о них ниже). И так, теперь давайте сделаем первый конфиг. Для этого создайте текстовый документ и переименуйте его в autoexec.cfg. Этот файл очень часто используется при написании скриптов, поскольку, как видно из его названия (auto + execute, автозагрузка), он загружается автоматически при запуске игры. Но работать будет любой cfg файл с латинским названием без пробелов. При этом внутри cfg можно делать собственные папки, дабы делать большие скрипты более структурированными и опрятными. Autoexec - не единственный файл, который загружается автоматически. Кроме него ещё есть config.cfg, однако в нём содержатся назначения клавиш в игре и изменять его не стоит. Так же можно создать конфиги для каждого отдельного игрового класса. Это стоит сделать сразу же, вместе с autoexec"ом. Эти конфиги будут загружены при выборе соответствующего класса. Названия файлов следующие:
scout.cfg - Разведчик
soldier.cfg - Солдат
pyro.cfg - Поджигатель
demoman.cfg - Подрывник
heavyweapons.cfg - Пулемётчик
engineer.cfg - Инженер
medic.cfg - Медик
sniper.cfg - Снайпер
spy.cfg – Шпион
Кроме того, можно загружать конфиги вручную с помощью команды exec:

exec [название конфига]

Тут и далее команды для скриптов и готовые скрипты будем выносить в такие же рамки с кодом
При этом если он находится в папке внутри tf/cfg, скажем, tf/cfg/myusefulscript/script.cfg, то его можно загрузить с помощью

exec myusefulscript/script

Часть 3. Консольные команды, консоль и с чем их едят

Консоль – текстовое окно с логом действий движка игры, ошибок, результатов ввода команд и прочего. Кроме того, в ней содержится строка для ввода команд, полоса прокрутки и кнопка ввода команды. Консоль всех игр на движке Source выглядит так:
Для того, чтоб открыть консоль в игре, зайдите в дополнительные настройки клавиатуры и поставьте галочку «Включить консоль разработчика». После этого достаточно нажать кнопку «~» (или «ё» в русской раскладке). Но что же мы можем вводить в консоль?
Как мы уже знаем, все скрипты состоят из консольных команд. В Team Fortress 2 есть несколько видов команд, которые можно вводить через консоль. Среди них:
Обычные команды без каких-либо аргументов. Они выполняются один раз при вводе и отвечают за одно определённое действие. Например:

retry // переподключиться к серверу disconnect // отключиться от сервера exit // выйти из игры

Команды с аргументами, которые тоже выполняются один раз, однако аргумент позволяет производить действие с определенными данными или предметами. Аргумент может быть представлен как словом, так и числом. Таких аргументов может быть и несколько. Например:

ent_fire game_timer “addtime 100” // добавить 100 секунд к времени текущего раунда ent_create obj_sentrygun // создать турель первого уровня под прицелом addcond 40 // дать игроку критические удары

Переменные, которые имеют определённое числовое значение в качестве аргумента. Однако, в отличии от команд с аргументами, эти аргументы остаются неизменными и выполняются всё время, до тех пор, пока их не изменят. Обычно переменные – это различные настройки. Чаще всего они имеют только два значения – 0 и 1, но бывают и другие. Переменные делятся на два типа – со стороны сервера и клиента. Первые могут изменятся только администратором сервера посредством прямого доступа к серверной консоли или командой rcon. Клиентские команды могут быть изменены игроками на их усмотрение, однако некоторые также могут быть фиксированы сервером. Например:

sv_cheats 1 // включить чит-команды на сервере fov_desired 90 // установить угол обзора на 90 градусов sensitivity 4 // установить чувствительность мыши на 4

Команды со знаком «+» или «-». Их выполнение происходит зациклено, то есть от момента, когда мы начали выполнение команды со знаком «+», до того момента, когда мы дали команду остановить данное действие, то есть выполнили команду со знаком «-». Обычно они используются при назначении клавиш и работают пока мы держим соответствующую клавишу нажатой. Например:

Attack // стрелять из выбранного оружия основной атакой -attack // прекратить стрелять +forward // идти вперёд -forward // перестать двигаться вперёд

Команды в консоль можно вводить как последовательно, по одной строчке, так и в одну строку с использованием точки с запятой:

sv_cheats 1; addcond 40; sv_cheats 0 // включить читы, дать игроку криты и выключить читы

Аргументы всех команд можно вводить в кавычках " ", но их использование не везде необходимо. Старайтесь использовать их при работе с логическими командами, а так же командами, отправляющими какой-либо текст в чат. Иногда может возникнуть ошибка с той или иной командой из-за неправильного использования кавычек. Например:

sv_cheats "1" // тут кавычки использовать можно, но они неуместны alias cheats "sv_cheats 1" // а вот тут скобки необходимы, иначе переменная будет введена без аргумента echo "Warning, something has gone wrong!" // тут кавычки тоже нужны, иначе сообщение не отправится полностью

Ну и напоследок, как вы уже могли заметить, в скриптах можно делать комментарии с помощью двух знаков «/» (слэш). Всё, что написано на той же строчке после них, выполняться движком не будет. Например:

sv_cheats 0 // sv_cheats 1 – первая команда будет выполнена, вторая – нет

Теперь, когда мы ознакомились с основами, можем приступать к написанию первого скрипта. И да, на будущее, я буду заменять аргументы на слова в квадратных скобках для большей ясности того, какой аргумент за что отвечает. Вот так:

ent_create [предмет]

Часть 4. Команды bind и alias

Перед тем, как писать скрипты, нужно понять, что представляют собой две важнейшие логические команды - bind и alias.
Команда bind позволяет нам назначать определённой кнопке определённую команду. Используется она следующим образом:

bind [кнопка] "[команда]"

Например:

bind k "echo Hello, World!" // выведет "Hello, World!" в консоль bind l "voicemenu 2 6" // заставит вашего персонажа использовать голосовую команду "Хороший выстрел!", полный список голосовых команд можете найти bind p "disguise 1 1" // замаскирует шпиона под вражеского разведчика, список аргументов смотрите

При работе с биндами есть еще пара полезных команд:

key_listboundkeys // вывести список всех текущих назначений клавиш key_findbinding [клавиша] // найти команду определенной клавиши unbind [клавиша] // команда-противоположность bind, снимает назначение с ненужной кнопки

Кстати, вот несколько команд для вывода какого-либо текста во время игрового процесса:

echo [текст] - выводит текст в консоль say [текст] - выводит текст в общий чат (его увидят обе команды) say_team [текст] - выводит текст в чат команды (его увидит только ваша команда)


Ну а теперь, важнейшая команда, из которой, по сути, состоит 95% всех скриптов:

alias [название алиаса] "[последовательность команд]" // позволяет соединить несколько команд в одну, и дать ей собственное название.

Однако стоит заметить, что сама команда alias всего лишь объединяет несколько команд в одну, для выполнения их последовательности нужно выполнить сам алиас по его названию.Названия алиасов также чувствительны к регистру, которым они написаны, то есть алиасы yourStuff, YourStuff, и yourstuff могут иметь разные действия. Название алиаса должно отображать его функцию, это поможет вам в будущем, когда захотите изменить свой скрипт. Если вы собираетесь создать много алиасов с похожими функциями, то дайте им одно название, но присвойте каждому свой числовой индекс, например line1; line2; line3; line4 и т. д.
При этом последовательность может содержать ещё больше команд alias, либо выполнять саму себя, например:

alias cheat “sv_cheats 1; addcond 40” cheat // при выполнении данный алиас включит читы на сервере и даст нам криты alias aliases "alias 1 "echo One"; alias 2 "echo Two"; alias 3 "echo Three"; 1; 2; 3" aliases // этот алиас сначала сократит несколько команд с помощью других алиасов, а потом последовательно их выполнит, в данном случае выведет 1, 2 и 3 в консоль alias loop "echo "Spam"; wait 300; loop" // этот алиас представляет собой замкнутый цикл, который выполняет сам себя, циклически посылая сообщение в консоль, но для циклов желательно использовать более сложные конструкции, о них расскажем позже

Другая интересная особенность команды alias – её можно использовать как переменную со знаком «+» или «-». При этом так же, как и в случае с такой переменной, при нажатии на кнопку, к которой привязан данный алиас, выполняется команда «+», а при отпускании – «-». Пример:

alias +logkey "echo "You pressed K"" alias -logkey "echo "You released K"" bind k +logkey // теперь при нажатии на клавишу K в консоль будет выведено первое сообщение, а при отпускании – второе

Большинство скриптов состоит из двух частей - первая содержит логику с использованием alias либо других логических команд, а вторая назначает заданные действия кнопкам, используя команду bind. Ну а теперь давайте познакомимся с остальными логическими командами, которые можно также использовать в написании ваших скриптов.

Часть 5. Команды toggle, bindtoggle, incrementvar и wait

Команды, о которых мы будем говорить ниже, не так часто используются в скриптах, они по большей части являются упрощением сложных конструкций с использованием alias (кроме команды wait).
Команды toggle и bindtoggle очень схожи между собой. По сути, они выполняют одно и то же действие – переключают заданную переменную между её определёнными значениями. Отличие между ними в том, что bindtoggle сразу же задаёт такому переключателю соответствующую кнопку, но при этом не работает с аргументами, то есть всегда переключает переменную между 0 и 1. Использование данных команд:

toggle [переменная] [стандартное значение] [конечное значение] // если значение не задано, то команда будет переключать их между 0 и 1 toggle r_drawviewmodel 0 1 // при вводе будет переключать видимость модели оружия игрока на экране, будет работать и без последних двух аргументов bindtoggle [кнопка] “[переменная] [стандартное значение] [конечное значение]” bindtoggle k r_drawviewmodel // будет изменяться видимость оружия в руках

Применение toggle и bindtoggle весьма полезно при работе с переменными, однако если нужно переключить другие нечисловые аргументы, то тут уже возникают проблемы. Как это делать мы рассмотрим в следующих частях
Команда incrementvar может сэкономить уйму времени, так как конструкция из команд alias, которая заменила бы её, поистине огромна. Данная команда позволяет менять переменную не между двумя заданными значениями, а добавлять некоторое значение к текущему при каждом вызове команды. При этом можно выставить границы, в которых эту команду можно изменять. Использование данной команды:
incrementvar [команда] [минимальное значение] [максимальное значение] [сумма] // в данном примере сумма – число, которое мы будем добавлять при каждом вызове команды, оно может быть отрицательным

bind k “incrementvar viewmodel_fov 90 120 1“ // при нажатии k отдаление оружия будет увеличиваться от 90 до 120, а потом опять сбросится до 90 bind k “incrementvar viewmodel_fov 90 120 -1” // при нажатии k отдаление оружия будет уменьшаться от 120 до 90, а потом опять сбросится до 120

Данная команда используется крайне редко из-за узкого круга применения, но может быть крайне полезной в некоторых случаях.
Последняя логическая команда – wait. Её потенциал поистине огромный, поэтому Valve добавили специальную серверную переменную (sv_allow_wait_command), которая, к сожалению, выключена на большинстве серверов сообщества, соревновательном режиме и киберспортивных лигах TF2. Однако wait по-прежнему работает в свободном режиме игры (Casual) и на некоторых серверах сообщества.
Что же она представляет собой? Она банально даёт вам возможность вставлять задержки между выполнением некоторых действий. Однако вводятся они не в секундах, а в тиках. Количество таких тиков у каждого сервера может быть разным, но почти у всех оно равно 66 тикам в секунду. Использование команды wait:

wait [кол-во тиков] // задержка в заданное количество тиков перед вызовом следующего элемента последовательности alias song "say "This was a triumph"; wait 300; say "I"m making a note here."; wait 300; say "HUGE SUCCESS.""; song // всего лишь один пример применения – обход спам-фильтра в чате, работающего на большинстве серверов

Для проверки того, включён ли wait на сервере, существует вот такой скрипт:

alias waitTester "alias waitTest waitPositive; wait; waitTest" alias wait "alias waitTest waitNegative" alias waitPositive "echo Wait is enabled on this server." // сюда можно добавить алиасы, которые будут запущены в том случае, если wait включён, либо вставить exec ссылку на конфиг с таким скриптом alias waitNegative "echo Wait is DISABLED on this server." waitTester

В нём использована особенность движка – если команда wait выключена, то можно создать алиас с именем wait, а если включена, то нельзя, так как такой алиас будет конфликтовать с самой командой.
Wait можно использовать для множества разных скриптов – таймеров, чат-спаммеров, автоматического передвижения, последовательного выполнения действий и так далее. Однако не стоит использовать его слишком часто – помните, что он выключен на большинстве серверов.
На этом заканчивается знакомство с основными скриптовыми командами движка Source, теперь давайте научимся использовать их на практике.

Часть 6. Практическое применение скриптовых команд

В этой части мы познакомимся с простыми способами применения скриптов. Кроме того, мы познакомимся с некоторыми другими командами, которые тоже можно применять для написания скриптов. Достаточно распространенными являются скрипты для переключения прицелов, видимости и отдаления для основного, дополнительного и оружия ближнего боя. Вот пример одного из таких простых скриптов:

// тут мы делаем алиасы с настройками под каждый слот оружия // slot1/2/3 - выбор самого оружия // r_drawviewmodel 0/1 - будете ли вы видеть оружие в руках // viewmodel_fov - отдаление оружия от экрана // cl_crosshair_file - вид прицела, аргументы можно посмотреть в дополнительных настройках alias primary "slot1; r_drawviewmodel 0; viewmodel_fov 0; cl_crosshair_file crosshair1" alias secondary "slot2; r_drawviewmodel 0; viewmodel_fov 0; cl_crosshair_file crosshair2" alias melee "slot3; r_drawviewmodel 1; viewmodel_fov 90; cl_crosshair_file crosshair3" // задаём кнопкам соответствующие функции-алиасы bind 1 primary bind 2 secondary bind 3 melee

Проблемой данного скрипта является то, что при смене оружия с помощью колёсика мышки или кнопки Q, он работает некорректно. Как это разрешить, смотрите в следующей части.
Еще один интересный и полезный скрипт - скрипт на быструю постройку для инженера. Он сначала сносит постройку, а потом тут же берет её чертёж в руки:

// алиасы для собственно быстрой постройки // используются команды build и destroy alias sentry "destroy 2 0; build 2 0" // построить турель alias dispenser "destroy 0 0; build 0 0" // построить раздатчик alias teleentr "destroy 1 0; build 1 0" // построить вход телепорта alias teleexit "destroy 1 1; build 1 1" // построить выход телепорта // назначение алиасов к кнопкам f1-f4 bind f1 sentry bind f2 dispenser bind f3 teleentr build f4 teleexit

Еще один полезный скрипт для инженера, использующего Озарение. Он позволяет мгновенно телепортироваться на базу или к выходу телепорта, не открывая специальное меню:

// задаём функциональные алиасы // тут используем команду eureka_telepport, отвечающую за телепортацию Озарения alias gotobase "eureka_teleport 0" alias gotoexit "eureka_teleport 1" // назначаем их к кнопкам bind f10 gotobase bind f11 gotoexit

Очень полезный скрипт для быстрой смены наборов снаряжения с помощью клавиш:

// делаем алиасы для смены снаряжения // используется команда load_itempreset, переключающая наборы А-Г, которые можно поменять в снаряжении текущего класса (клавиша M в игре) alias loadoutA "load_itempreset 0" alias loadoutB "load_itempreset 1" alias loadoutC "load_itempreset 2" alias loadoutD "load_itempreset 3" // задаём кнопкам num1-num4 функции алиасов bind kp_end loadoutA bind kp_downarrow loadoutB bind kp_pgdn loadoutC bind kp_rightarrow loadoutD

Для быстрого доступа к насмешкам без вызова их меню, можно использовать команду taunt с аргументом, либо команду taunt_by_name:

alias laugh "taunt 1" // сработает насмешка Злорадство, но только в том случае, если она выставлена в первый слот в меню насмешек, номера слотов можете посмотреть ниже alias relax "taunt_by_name "Taunt: Rancho Relaxo"" // сработает насмешка Ранчо Релаксо, но только в том случае, если она у вас есть, экипирована в меню насмешек и вы играете за инженера // а теперь назначим данные алиасы к кнопкам: bind l laugh bind p relax

Скрипт для быстрого включения убер-заряда медика по нажатию на кнопку. Если в руках не лечебная пушка, то быстрое нажатие заставит медика взять её, а удержание - включить убер-заряд. Тут использованы команды переключения оружия (slotX) и альтернативной атаки (+attack2), активирующей убер-заряд. Удерживать кнопку надо потому, что смена оружия на лечебную пушку занимает пол секунды. Сам скрипт:

alias +quickuber "slot2; +attack2;voicemenu 0 0; autocall_initial" alias -quickuber "-attack2" bind mouse2 +quickuber

Скрипт, очень похожий на предыдущий, он работает по такому же принципу. Этот скрипт для пулемётчика, при удержании кнопки он выбросит на землю свой бутерброд, если он экипирован:

alias +quicksandwich "slot2; +attack2" alias -quicksandwich "-attack2" bind k "+quicksandwich"

Часть 7. Основные скриптовые конструкции

Теперь, когда мы научились делать простые скрипты, можно начинать ознакомление с главными и более сложными их видами, из которых состоят наиболее часто используемые скрипты.
Первый и самый главный их тип - циклические переключатели. Они имеют два или более состояния, переключение между которыми происходит посредством вызова одного и того же алиаса. Каждый алиас должен выполнить собственную функцию, а потом переназначить тот единственный алиас вызова на следующий алиас в последовательности

// ради примера, давайте сделаем переключатель, который при срабатывании будет последовательно выводить 1, 2 и 3 в консоль, а потом начинать цикл заново alias state1 "echo 1; alias togglestate state2" // первое состояние переключателя, он выполняет свою функцию и переназначает контрольный алиас на второе состояние alias state2 "echo 2; alias togglestate state3" // по аналогии с первым alias state3 "echo 3; alias togglestate state1" // последний алиас замыкает цикл и назначает следующим первый alias togglestate state1 // теперь осталось назначить тот самый контрольный алиас, при вызове которого будут производится переключения между тремя его состояниями bind k togglestate

Вот такая вот незамысловатая конструкция, очень похожая на команду toggle. Однако эта конструкция-переключатель позволяет работать не только с переменными, а и с аргументами, или даже переключаться между разными, а также может содержать неограниченное количество элементов.
С помощью команды alias также можно создавать бинды не для одной клавиши, а для их сочетания. Работает это следующим так: при нажатии определённой кнопки другая кнопка получает новую функцию, а при отпускании - возвращается к старой. В скрипте задействованы +/- алиасы. При нажатии на K в консоль будет выведено сообщение "Hello!", а при использовании сочетания клавиш Shift+K - "Hello, World!"

alias msg msg1 alias msg1 "echo Hello!" alias msg2 "echo Hello, World!" alias +togglemsg "alias msg msg2" alias -togglemsg "alias msg msg1" bind k msg bind shift +togglemsg

Следующая важная конструкция - замкнутый цикл, использующий wait. В отличии от первого цикла-переключателя, этот цикл не требует постоянного вызова алиаса, он работает сам по себе от запуска до отмены. Вот как он работает:

// для начала зададим все элементы последовательности этого цикла alias loop1 "echo 1" alias loop2 "echo 2" alias loop3 "echo 3" alias loop "loop1; wait 66; loop 2; wait 66; loop3; wait 66; reloop" // теперь объединяем их в один алиас, вставляя между ними wait, а в конце - перенаправление в начало цикла alias startloop "alias reloop loop" // алиас, позволяющий нам начать цикл alias breakloop "alias reloop " "" // алиас для прерывания цикла, который перенаправит его конец на пустую команду bind l "startloop; loop" // а теперь задаём необходимые бинды для начала и прерывания цикла bind k

Хотя данная конструкция может быть очень полезной, как уже упоминалось ранее, wait отключён на большинстве серверов. А использование замкнутого цикла с wait на сервере, где он отключён, может спровоцировать зависание и краш игры. Будьте осторожны с такими циклами при смене серверов - они продолжают работать даже после отключения от сервера со включённым wait, а если подключится к серверу, где он выключен, ваша игра зависнет, поэтому цикл нужно каждый раз вручную обрывать.
Полезный скрипт, решающий одну из проблем движка - при одновременном нажатии A и D ваш персонаж останавливается. С использованием множества +/- алиасов получается вот такой скрипт с двумя буфферными алиасами, отменяющими текущее боковое передвижение и начинающие новые:

bind w +mfwd bind s +mback bind a +mleft bind d +mright alias +mfwd "-back;+forward;alias checkfwd +forward" alias +mback "-forward;+back;alias checkback +back" alias +mleft "-moveright;+moveleft;alias checkleft +moveleft" alias +mright "-moveleft;+moveright;alias checkright +moveright" alias -mfwd "-forward;checkback;alias checkfwd none" alias -mback "-back;checkfwd;alias checkback none" alias -mleft "-moveleft;checkright;alias checkleft none" alias -mright "-moveright;checkleft;alias checkright none" alias checkfwd none alias checkback none alias checkleft none alias checkright none alias none ""

Часть 8. Примеры готовых скриптов

А теперь примеры готовых скриптов. Советую завести для их просмотра отдельный файл, скажем, test.cfg и вставлять туда нужные скрипты по очереди, если хотите увидеть, как они работают. Делать это лучше всего на локальном сервере, который можно создать через главное меню, я для этого предпочитаю карту itemtest, поскольку она совсем небольшая и быстро загружется.
Весьма полезный пример применения переключателя - скрипт для переключения голосового чата в игре.Он позволяет нажимать кнопку V для включения и выключения голосового чата, а не держать её пока говорите. Скрипт основан на том принципе, что команды с «+» или «-» изменяют своё значение при отпускании клавиши, если назначены напрямую. А если ввести команду вручную, скажем, +forward, то для её отмены потребуется так же точно ввести -fowrard. Сам скрипт:

alias enablevoice "+voicereocrd; alias togglevoice disablevoice" alias disablevoice "-voicerecord; alias togglevoice enablevoice" alias togglevoice enablevoice bind v togglevoice

А теперь давайте рассмотрим интересное практическое применение wait цикла - генератор случайных чисел, в данном случае - виртуальная игральная кость:

alias dice1 "alias dice "echo "" alias dice2 "alias dice "echo "" alias dice3 "alias dice "echo "" alias dice4 "alias dice "echo "" alias dice5 "alias dice "echo "" alias dice6 "alias dice "echo "" alias diceloop "dice1; wait 5; dice2; wait 5; dice3; wait 5; dice4; wait 5; dice6; wait 5; dicereloop" alias dicereloop diceloop diceloop bind k dice // далее следует проверка того, включён ли wait на сервере, прежде чем запускать цикл alias waitTester "alias waitTest waitPositive; wait; waitTest" alias wait "alias waitTest waitNegative" alias waitPositive "echo Dice script loaded!; diceloop; bind k dice" // если wait работает, то тут начинаем цикл и выставляем сам бинд alias waitNegative "Unable to load dice script - wait is disabled on this server!" waitTester alias stopdiceloop "alias dicereloop " "; unbind k" // этот алиас позволяет остановить цикл, но чтоб начать его опять, нужно перезагрузить конфиг, содержащий скрипт

В результате по нажатию K мы будем получать разные значения от 1 до 6, как и на игральной кости. Однако такой скрипт нельзя назвать полноценным генератором случайных чисел, поскольку результат его работы хоть и сложно, но можно предугадать. Такую же конструкцию можно использовать и для отправки случайного сообщения в чат по нажатию кнопки

Скрипт для постоянного приседания в прыжке, может быть полезен для запрыгивания на некоторые предметы, а также делает попадание в вас немного сложнее и облегчает жизнь при простых прыжках на взрывчатке для подрывника и солдата. Однако если вы собрались прыгать с использованием двух или более ракет или липучек, то советую удалить этот скрипт, поскольку тогда нужно держать приседание на весь прыжок, а не только при отрыве от земли. Скрипт объединяет команды для прыжка и приседания (+jump и +duck) в один алиас, и при этом не даст скрипту поломаться, если нажать на пробел слишком быстро:

alias +rj "spec_mode; -duck; +cr; alias checkrj +cr" alias -rj "-cr; checkduck; alias checkrj none" alias +crouch "-cr; +duck; alias checkduck +duck" alias -crouch "-duck; checkrj; alias checkduck none" alias checkduck none alias checkrj none alias +cr "+jump; +duck" alias -cr "-duck; -jump" alias none "" bind space +rj bind ctrl +crouch bind shift +jump

Скрипт, похожий на предыдущий, и в этот раз сделан специально для прыжков на ракетах солдата. Для подрывника он не подойдёт, поскольку липучку нужно заранее кинуть на землю и подождать её активации. Работает по тому же принципу, но в этот раз мы добавляем +attack:

alias +rocketjump "+jump; +duck; +attack" alias -rocketjump "-jump; -attack; -duck" bind mouse2 "+rocketjump"

Другой полезный скрипт - быстрая запись игрового процесса в.dem файл, который потом можно просмотреть. Запись будет начата по нажатию на заданную кнопку и закончится при нажатии на неё же. Готовую запись можно найти в папке tf/demos, а просмотреть в игре с помощью команды demoui, вызывающей управление записью. Больше о записи.dem файлов можете прочитать . Скрипт является простейшим переключателем, с работой которого мы ознакомились в начале этой части:

alias tgrecord_on "ds_record; alias tgrecord tgrecord_off" alias tgrecord_off "ds_stop; alias tgrecord tgrecord_on" alias tgrecord tgrecord_on bind f10 tgrecord

Переключатель прицелов, о котором мы уже говорили в шестой части, и вот теперь вернёмся вновь. Как вы можете помнить, предыдущий переключатель работал корректно только при переключении оружия с помощью цифровых кнопок. Для работы с колёсиком мыши нам необходимо значительно его усложнить, добавив новые логические элементы для возврата к предыдущему оружию и их прокрутки с помощью колесика мыши. Как пример, возьмём вот скрипт.

// для начала задаём настройки для каждого слота alias cross1 "r_drawviewmodel 0;viewmodel_fov 0;cl_crosshair_red 0;cl_crosshair_green 255;cl_crosshair_blue 0;cl_crosshair_scale 30;cl_crosshair_file crosshair2" alias cross2 "r_drawviewmodel 0;viewmodel_fov 0;cl_crosshair_red 0;cl_crosshair_green 255;cl_crosshair_blue 0;cl_crosshair_scale 10;cl_crosshair_file crosshair3" alias cross3 "r_drawviewmodel 1;viewmodel_fov 90;cl_crosshair_red 0;cl_crosshair_green 255;cl_crosshair_blue 0;cl_crosshair_scale 10;cl_crosshair_file crosshair5" // alias wep1 "primary" alias wep2 "second" alias wep3 "melee" // логика для каждого слота, запоминающая предыдущее оружие при переключении // в вызове предыдущего оружия задействован особый цикл с ответвлениями, где у нас есть вариант выбора следующего элемента // а прокрутка колёсиком - обычный замкнутый alias-переключатель, о котором мы говорили в предыдущей части // всё это вместе с заданными выше настройками собрано в 3 алиаса, которые потом можно использовать alias primary "slot1;alias wep2 switch3;alias wep3 switch5;alias downbind switch3;alias upbind switch5;cross1" alias second "slot2;alias wep1 switch1;alias wep3 switch6;alias downbind switch6;alias upbind switch1;cross2" alias melee "slot3;alias wep1 switch2;alias wep2 switch4;alias downbind switch2;alias upbind switch4;cross3" // задача этой части скрипта - переключение на предыдущее оружие // поскольку слотов для оружия 3, с каждого можно переключиться на два других, имеем 6 возможных переключателей (1->2, 1->3, 2->1, 2->3, 3->1, 3->2) alias qswitch "switch3" alias switch1 "primary;alias qswitch switch3" alias switch2 "primary;alias qswitch switch5" alias switch3 "second;alias qswitch switch1" alias switch4 "second;alias qswitch switch6" alias switch5 "melee;alias qswitch switch2" alias switch6 "melee;alias qswitch switch4" // ну и последняя часть - забиндить это всё на кнопки - bind 1 "wep1" bind 2 "wep2" bind 3 "wep3" bind q "qswitch" bind mwheeldown "downbind" bind mwheelup "upbind"

Конечно же, это не все скрипты, которые можно использовать, а наиболее часто используемые из них, но вы всегда можете найти нужный или создать собственный. В последующих частях мы рассмотрим методы улучшения внешнего вида скриптов.

Часть 9. Использование звуков, субтитров и работа с HUD

Посредством консольных команд можно взаимодействовать не только с консолью и чатом игры.
В первую очередь, существует команда для проигрывания звуков (.wav или.mp3):

play [путь к звуку] // использование очень похоже на команду exec, нужно указать путь к звуку из папки sound, указание расширения файла не обязательно

Пример:

play buttons/button14.wav

Узнать путь к звуковому файлу можно с использованием программы путём открытия файла tf2_sound_misc_dir.vpk в корне папки /tf. Там вы найдёте почти все.wav звуки
Другой интересный способ их применения - использование в скриптах субтитров. Система субтитров всё время существовала в движке для дублирования фраз персонажей и других звуков. Однако благодаря команде для отладки субтитров мы имеем возможность вызывать их тогда, когда нам нужно:

closecaption 1 // включение субтитров в игре cc_emit [звук или название] // принудительно вызывает определённый субтитр на экран по его названию

Однако прежде чем использовать субтитры в игре, их нужно создать и пропустить через специальный компилятор.
Для этого:
Ну и напоследок, несколько команд для работы с пользовательским интерфейсом (HUD):

hud_reloadscheme // перезапускает худ, полезно в случаях если какие-то его части перестают работать gamemenucommand [команда] // выполняет команды главного меню (открыть настройки, браузер серверов и т. д.), их можно найти в testhudanim [анимация] // выполнение анимации худа из /scrpts/hudanimations_tf.txt

Часть 10. Текстовый интерфейс с использованием developer 1

Текстовый интерфейс с использованием developer 1
Движок Source содержит множество команд и инструментов для отладки, используемых разработчиками и создателями модов. Одной из таких команд является developer 1. Она включает режим разработчика, который добавляет дополнительную текстовую информацию, и, что самое главное, выводит последние несколько строчек из консоли на экран во время игры. При этом с помощью ещё нескольких переменных можно настраивать то, сколько строчек выводить на экран и сколько они там будут оставаться:
contimes - сколько строчек из консоли отображать на экране
con_notifytime - сколько секунд последняя команда будет оставаться наверху лога, перед тем, как будет показана следующая строка
В результате путём написания скрипта можно выводить любой текст на экран, а добавив этому тексту кнопки для взаимодействия с ним, можно создать простейший текстовый интерфейс в виде меню с выбором различных опций. Поскольку на клавиатуре есть удобный numpad блок, на котором нет жизненно важных игровых биндов, именно его удобнее всего использовать для ввода и взаимодействия с текстовым меню. Но это далеко не всё - можно сделать меню не просто в виде статического текста, а сделать несколько страниц с разными опциями, либо даже анимировать некоторые его пункты при взаимодействии с ними. Единственный недостаток такого меню в том, что его нельзя вызвать в главном меню игры. Впечатлены, на что способен скриптовый язык движка Source? Теперь давайте поймём, как это работает. Создадим отдельную папку в tf/cfg для нашего меню, скажем, menu. В ней делаем несколько файлов, - menu.cfg, numbinds.cfg, cheats.cfg.
Их функции будут описаны далее. Содержание menu.cfg:

// в начале помещаем логику для загрузки и закрытия меню alias btn "play buttons/button14.wav" // звук нажатия на кнопку alias launchmenu "exec menu/menu; play buttons/button17.wav" // загрузка самого меню alias unbindnumpad "unbind KP_INS; unbind KP_END; unbind KP_DOWNARROW; unbind KP_PGDN; unbind KP_LEFTARROW; unbind KP_5; unbind "KP_RIGHTARROW"; unbind "KP_HOME"; unbind "KP_UPARROW"; unbind "KP_PGUP"; unbind KP_ENTER" // снятие биндов с нумпада при закрытии меню alias resetnumbinds "exec menu/numbinds" // загрузка биндов для нумпада по умолчанию после закрытия, их нужно поместить в menu/numbinds.cfg alias setlaunchkey "bind KP_DEL launchmenu" // выставляем кнопку для повторного открытия меню после того, как мы его закрыли alias exitmenu "clear; unbindnumpad; setlaunchkey; resetnumbinds; developer 0; play buttons/button19.wav" // собираем всю процедуру выхода из меню в один алиас // теперь можем приступить к созданию логической части самого меню alias animatemenu "exec menu/vismenu" // этот алиас загружает видимую часть меню, он пригодится нам при создании анимированного пункта меню // анимированные пункты вовсе не обязательны, но я добавлю сюда один ради примера // главная составляющая таких анимаций - логические переключатели, которые мы научились делать ранее // давайте же сделаем первый пункт анимированным, для этого сначала сделаем алиасы с функцией для каждого возможного состояния, пускай их будет 3 alias netgraphmode1_func "net_graph 0" alias netgraphmode2_func "net_graph 1" alias netgraphmode3_func" net_graph 4" // теперь делаем по строке для отображения в меню для каждого состояния alias netgraphmode1_echo "echo - Disable net_graph" alias netgraphmode2_echo "echo - Enable net_graph" alias netgraphmode3_echo "echo - Enable advanced net_graph" // теперь начинаем делать зацикленный переключатель, меняющий значение нужного пункта, при этом пункт меню должен отображать не текущее значение переменной, а следующее, которое мы получим при нажатии // каждый алиас должен вызвать свою _func команду, поменять визуальный пункт меню на следующий, обновить меню, и передать управление следующему в списке алиасу, а последний - вернуться к первому alias netgraphmode1 "netgraphmode1_func; alias netgraphmode_echo netgraphmode2_echo; animatemenu; alias netgraphmode netgraphmode2" alias netgraphmode2 "netgraphmode2_func; alias netgraphmode_echo netgraphmode3_echo; animatemenu; alias netgraphmode netgraphmode3" alias netgraphmode3 "netgraphmode3_func; alias netgraphmode_echo netgraphmode1_echo; animatemenu; alias netgraphmode netgraphmode1" // из-за следующих двух строчек нам пришлось вынести часть меню, которую мы будем видеть, в отдельный файл, поскольку иначе бы при перезагрузке этого файла значения цикла выставлялись бы на стандартные alias netgraphmode_echo netgraphmode1_echo alias netgraphmode netgraphmode1 // на этом логическая часть анимации закончена, можем приступать к остальным пунктам меню alias op1 "netgraphmode; btn" alias op2 "kill; btn" alias op3 "toggle sv_cheats 0 1; btn" alias op4 "toggle r_drawviewmodel 0 1; btn" alias op5 "hud_reloadscheme; record fix; stop; snd_restart; btn" alias op6 "exec autoexec; btn" alias op7 "exec menu/cheats; btn" // это - ссылка на подпункт меню alias op8 "demoui; btn" alias op9 "toggle cl_showfps 0 1; btn" // теперь осталось забиндить наш нумпад bind KP_END "op1" bind KP_DOWNARROW "op2" bind KP_PGDN "op3" bind KP_LEFTARROW "op4" bind KP_5 "op5" bind KP_RIGHTARROW "op6" bind KP_HOME "op7" bind KP_UPARROW "op8" bind KP_PGUP "op9" bind KP_DEL "exitmenu" // запускаем видимую часть меню exec menu/vismenu

Теперь переходим к файлу vismenu.cfg, отвечающему за отображение самого интерфейса меню на экране:

// данный набор команд жизненно важен для отображения нашего меню // launching visual part clear contimes 600 con_notifytime 600 developer 1 con_filter_enable 0 // после этого уже следует именно то, что мы будем видеть: echo "" // перед и после самого меню нужно добавить пустые строки echo "" // перед - для того, чтоб меню было не в самом верху, а где-то посредине экрана echo "" // после - чтоб лог из консоли, следующий после загрузки меню, не попадал на экран echo "" // однако это всё-таки иногда будет происходить, в таком случае нужно перезапустить меню echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" // само меню нужно писать латинскими буквами, так как консоль не поддерживает кириллицу echo ____________________________________ echo "" echo ============M=E=N=U================ echo ____________________________________ echo "" netgraphmode_echo // этот пункт меню анимированный, поэтому заменяем его соответствующим алиасом echo - Suicide echo - Toggle sv_cheats echo - Toggle viewmodel echo - Fix game glitches echo - Reload autoexec echo - Cheats echo - Open demo playback echo - Toggle FPS meter echo - Exit echo ____________________________________ echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo ""


Часть 11. Создание и использование сторонних генераторов скриптов

Методы создания скриптов, описанные в этой части, не приведут к VAC блокировке, хотя и дают игрокам использовать более широкие скриптовые возможности, чем те, которые заложены движком игры. Речь пойдёт о сторонних генераторах скриптов. Файлы конфигов движка Source можно изменять во время работы игры. Это позволяет создать программы-редакторы этих файлов, а так же различные преобразователи текста в скрипты. Одной из самых популярных таких программ является SRC Repair, содержащий пак конфигов с настройками графики и позволяющий их менять и редактировать.
Однако можно не ограничиваться готовыми программами и написать собственную. Поскольку скриптовый язык Source очень прост, даже новичку не составит труда сделать какое-либо приложение, работающее со скриптами. То, как именно их создавать, в этом руководстве описано не будет, поскольку существует бесчисленное множество языков программирования, позволяющих это делать, но ниже будут приведены простейшие примеры того, что можно сделать.
В первую очередь, мы можем создавать различные показатели в реальном времени, например вывод системного времени в консоль по команде. Стоит отметить, что такие программы будут лишены возможности обратной связи с пользователем, поскольку скриптовые команды выполняются в движке игры, а результат их выполнения скрыт от сторонних программ.
Пример программы для выведения времени в консоль:

Другим интересным способом расширить возможности движка - написание скриптов с помощью скриптового языка AutoHotKey, сокращенно AHK. AHK включает в себя компилятор, программу для получения информации о положении курсора и справку. Этот достаточно простой (но при этом более сложный чем скриптинг Source) скриптовый язык позволяет имитировать нажатия клавиш и выполнение различных действий пользователем. Это позволяет, к примеру, создать скрипт для быстрого крафта вещей в TF2 или же обхода команды wait на серверах, где она выключена. Пример работы скрипта для быстрого крафта вещей:
Думаю, каждый, будь то новичок или человек, отлично разобравшийся в написании скриптов смог почерпнуть кое-что для себя. - официальная англоязычная вики о движке Source и множестве вещей, связанных с ним.

  • - моя собственная разработка, сборник скриптов для медика с текстовым интерфейсом.
  • Множество других маленьких, но полезных скриптов с пояснением принципа их работы можете найти в моём руководстве, большинство - в части номер 8.
  • Отдельная благодарность:

    Поддержка и редактирование руководства.
    - помощь с некоторой информацией и разработка внутриигрового текстового интерфейса.
    - пара полезных скриптов.