Написание простого плагина под EventScripts 2.0+ - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Другие игры / Other games > Counter Strike > Документация

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

Ответ
Опции темы
Непрочитано 05.05.2010, 23:33   #1
Аватар для PROGRAMMATOR
Администратор

Автор темы (Топик Стартер) Написание простого плагина под EventScripts 2.0+

Когда-то играл в PointBlank и заметил интересную вещь - при попадании в голову противнику, выводилось сообщение в центре экрана и также сопровождалось это все голосовым сообщением. Недавно настраивал сервер Counter-Strike: Source и решил написать несложный плагин, который реализует практически идентичную тему. Почему практически, да потому что не нашел возможности вывода графики на экран (в PointBlank сообщение оформлено графически).

Для написания плагина нам потребуется EventScripts 2.0 (если вы скачивали готовый сервер, то он уже установлен и качать вам не понадобится), любой текстовый редактор с поддержкой сохранения файлов в кодировке UTF-8 без BOM. Безусловно, мой выбор пал на лучший редактор Notepad++, который справляется со всеми этими действиями.

Приступим к написанию. Первым делом нужно создать директорию плагина, сам плагин я обозвал как headshot, думаю самое разумное ему название. Создаем директорию по пути:

Цитата:
cstrike\addons\eventscripts\headshot\
Теперь внутри директории headshot создайте текстовый файл es_headshot.txt, заметьте, что приставка es_ обязательна для основного файла плагина. Именно его и будет инициализировать сервер при запуске. Открываем es_headshot.txt текстовым редактором и приступаем к написанию необходимого нам события, а событие, которое происходит при попадании пулями по цели называется player_hurt. Описывается оно вот таким способом:

PHP код:
// Плагин HeadShot
// Автор PROGRAMMATOR
// (c) 2010 www.zone-game.info

event player_hurt
{


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

PHP код:
// 1 | голова, шея
// 2 | верхняя часть торса
// 3 | нижняя часть торса | таз
// 4 | левая рука и все ее части
// 5 | правая рука и все ее части
// 6 | левая нога и все ее части
// 7 | правая нога и все ее части 
Для того, чтобы получить номер группы, нам необходимо обратиться к константе hitgroup, это все делается с помощью функции event_var(). Смотрим пример ниже:

PHP код:
// Плагин HeadShot
// Автор PROGRAMMATOR
// (c) 2010 www.zone-game.info

event player_hurt
{
    
// проверяем, попали ли мы в голову цели
    
if (event_var(hitgroup) == 1) do
    {
    
    }

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

PHP код:
// Плагин HeadShot
// Автор PROGRAMMATOR
// (c) 2010 www.zone-game.info

event player_hurt
{
    
// проверяем, попали ли мы в голову цели
    
if (event_var(hitgroup) == 1) do
    {
        
// проверим умерла ли цель от нашего попадания
        
if (event_var(health) < 1) do
        {
            
        }
    }

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

PHP код:
// Плагин HeadShot
// Автор PROGRAMMATOR
// (c) 2010 www.zone-game.info

event player_hurt
{
    
// проверяем, попали ли мы в голову цели
    
if (event_var(hitgroup) == 1) do
    {
        
// проверим умерла ли цель от нашего попадания
        
if (event_var(health) < 1) do
        {
            
// вывод сообщения в центре экрана, который показан только атакующему
            
es_centertell event_var(attackerПопадание в голову!
        }
    }

Внимательный сразу заметит, что мы получаем значение константы attacker. В этой константе содержится информация об атакующем (в данном случае это вы). Таким образом, сообщение выводится только вам. Как я и говорил в самом начале темы, здесь мы также рассмотрим, как можно проиграть определенный звук при попадании жертве в голову. Нам потребуется метод es_cexec, позволяющий выполнять клиентские команды от идентификатора игрока и команда playgamesound, которая и проигрывает указанный звук. Пишем далее:

PHP код:
// Плагин HeadShot
// Автор PROGRAMMATOR
// (c) 2010 www.zone-game.info

event player_hurt
{
    
// проверяем, попали ли мы в голову цели
    
if (event_var(hitgroup) == 1) do
    {
        
// проверим умерла ли цель от нашего попадания
        
if (event_var(health) < 1) do
        {
            
// вывод сообщения в центре экрана, который показан только атакующему
            
es_centertell event_var(attackerПопадание в голову!
            
            
// проигрывание звука у определенного игрока (атакующего)
            
es_cexec event_var(attackerplaygamesound player/bhit_helmet-1.wav
        
}
    }

В этом примере я взял стандартный звук, который проигрывается при пробивании защитного шлема. Естественно вы его можете заменить на любой другой, главное, что бы он был в формате .wav. Для загрузки нашего плагина HeadShot, откройте конфигурационный файл сервера server.cfg и впишите в него:

Цитата:
es_load headshot
Перезапускайте сервер и тестируйте! Если есть вопросы по плагину или EventScripts в целом, то не стесняемся задаем их в этой теме.

Вложения
Тип файла: txt es_headshot.txt (748 байт, 10 просмотров)
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 06.05.2010, 00:58   #2
Аватар для PROGRAMMATOR
Администратор

Автор темы (Топик Стартер) Re: Написание простого плагина под EventScripts 2.0+

Ozzy предложил установить в качестве звука - голос из Unreal (HeadShot). Я экспортировал из Unreal этот звук, и подогнал его под нужный формат и битрейты. Не забывайте отредактировать сам плагин:

PHP код:
// Плагин HeadShot
// Автор PROGRAMMATOR
// (c) 2010 www.zone-game.info

event player_hurt
{
    
// проверяем, попали ли мы в голову цели
    
if (event_var(hitgroup) == 1) do
    {
        
// проверим умерла ли цель от нашего попадания
        
if (event_var(health) < 1) do
        {
            
// вывод сообщения в центре экрана, который показан только атакующему
            
es_centertell event_var(attackerПопадание в голову!
            
            
// проигрывание звука у определенного игрока (атакующего)
            
es_cexec event_var(attackerplaygamesound player/headshot.wav
        
}
    }

Теперь, чтобы наш звук автоматически загружался каждому игроку, необходимо в секцию загрузок Main Admin Plugin добавить наш звук, в итоге файл cstrike\cfg\mani_admin_plugin\downloads.txt будет следующего содержания:

PHP код:
"downloads.txt"
{
    
"downloads"
    
{
        
"HeadShot"    "sound/player/headshot.wav"
    
}

Звук прикрепил к сообщению. После загрузки не забудьте разархивировать его в сервер, по пути:

Цитата:
cstrike\sound\player\
Вложения
Тип файла: zip headshot.zip (50.7 Кб, 9 просмотров)
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Ответ

Метки
eventscripts, плагин css


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание квестов Aion MMd Документация 30 15.11.2012 17:27
[Гайд] Написание квестов: от и до. ViAl Документация 17 24.12.2010 14:31
Написание продавца Tonchi Тех-документация 27 06.08.2010 15:40
Написание продовца Heon Lineage II 2 25.04.2009 19:05
Написание квестов Nytrex Тех-документация 10 06.03.2009 22:27


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 04:45. Часовой пояс GMT +3.

Вверх