RU/Resource:Voice
Внедрение поддержки голосовой связи в версии 1.1 произошло вместе с базовым, но гибким скриптовым интерфейсом для него.
Цель ресурса Voice - предоставить типичный интерфейс, основанный на базовом внутреннем скриптинге MTA, для доступа к простому функционалу, который пользователь ожидает от голосового чата, включая возможность создавать разные каналы (в т.ч. для команд) и заглушать голоса других игроков.
На данный момент ресурс Voice не имеет GUI-интерфейса для заглушения голосов других игроков на клиентской стороне, но это будет реализовано позже.
Концепция
Ресурс Voice предоставляет возможность распределять игроков по каналам. Канал - способ контроля над теми, с кем вы можете разговаривать и кого можете слышать. Есть три основных типа каналов:
- Скриптовый канал: Канал, установленный функцией setPlayerChannel, он имеет формат номера. Игроки канала 1 не могут слышать голоса игроков из канала 2.
- Командный канал: У скриптов нет доступа к этому типа каналов, но он во многом похож на скриптовый канал. Этот тип канала автоматически задается в зависимости от настройки распределения по командам. Если игрок находится в команде, getPlayerChannel будет возвращать элемент команды. Игроки из одного командного канала не могут слышать голоса игроков из других командных каналов. К тому же, игроки из командного канала не могут слышать и голоса игроков из скриптовых каналов.
- "Root" (корневой) канал: Игроки помещаются в этот канал по умолчанию. Этот канал связан с концепцией элемента root, и getPlayerChannel вернет root (корневой) элемент. Когда игрок в канале root, его слышат все игроки сервера. Как бы то ни было, он не сможет слышать голоса игроков ни из командного канала, ни из скриптового канала.
Настройки
Все настройки могут быть изменены через MTA'шыне функции set(), изменение meta.xml ресурса или изменение settings.xml.
Иконки чата
- Имя настройки: show_chat_icon
- Описание: Булевая переменная, которая позволяет вам включать или выключать иконку голосового чата, появляющуюся над игроком, когда он говорит.
- XML-образец:
<setting name="show_chat_icon" value="[false]"/>
Автораспределение по командам
- Имя настройки: autoassign_to_teams
- Описание: Булевая переменная, которая позволяет вам включать или выключать автораспределение игроков по каналам их команд ресурсом voice.
- XML-образец:
<setting name="autoassign_to_teams" value="[false]"/>
Клиентские функции скриптинга
Все указанные функции скриптинга - клиентские и затрагивают только local player (локального игрока). Все функции должны вызываться с использованием функции call.
isPlayerMuted
Эта функция позволяет определять, заглушен ли удаленный игрок у локального игрока. Другими словами, "могу ли я слышать этого самого удаленного игрока"?
bool exports.voice:isPlayerMuted ( player playerToCheck )
- playerToCheck: Игрок, слышимость которого вы хотите проверить
Возвращает булевую переменную - true, если заглушен, иначе - false'.
setPlayerMuted
Эта функция позволяет вам заглушить удаленного игрока у локального игрока. Проще говоря, я могу заглушить у себя этого игрока, когда захочу.
bool exports.voice:setPlayerMuted ( player playerToMute, bool muted )
- playerToMute: Игрок, которого вы хотите заглушить или разглушить
- muted : Булевая переменная, отвечающая за то, будет ли игрок заглушен или разглушен, где true - для заглушения, false - наоборот.
Возвращает true, если операция прошла успешно, иначе - false.
Серверные функции скриптинга
Все указанные функции скриптинга - серверные и затрагивают всех игроков без исключения. Все функции должны вызываться с использованием функции call.
isPlayerMuted
Функция позволяет вам проверять игрока на заглушенность для всего сервера.
bool exports.voice:isPlayerMuted ( player playerToCheck )
- playerToCheck: Игрок, заглушенность которого вы хотите проверить
Возвращает true, если он заглушен, иначе - false'
setPlayerMuted
Эта функция позволяет заглушить игрока для всех на сервере.
bool exports.voice:setPlayerMuted ( player playerToMute, bool muted )
- playerToMute: Игрок, которого вы хотите заглушить или разглушить
- muted : Булевая переменная, отвечающая за то, будет ли игрок заглушен или разглушен. true для заглушения, false для разглушения.
Возвращает true, если операция прошла успешно, иначе - false.
getPlayerMutedByList
Эта функция позволяет вам заправшивать список всех игроков, кто заглушил указанного игрока.
table exports.voice:getPlayerMutedByList( player playerToCheck )
- playerToCheck: Игрок, на заглушенность которого вы хотите проверить других игроков сервера
Возвращает таблицу игроков, заглушивших указанного игрока.
getPlayerChannel
Эта функция позволяет вам запросить, в каком канале голосового чата находится указанный игрок.
int/element exports.voice:getPlayerChannel ( player playerToCheck )
- playerToCheck: Игрок, канал нахождения которого вы хотите запросить
Возвращает целове число - ID канала, в котором он находится, элемент команды, если игрок находится в ее канале, или root (корневой) элемент, если канал не указан.
setPlayerChannel
Эта функция позволяет вам перемещать указанного игрока в другой канал.
bool exports.voice:setPlayerChannel ( player playerToCheck, [ int channelID ] )
- playerToCheck: Игрок, которого вы хотите переместить
- channelID : Опционально: ID канала, в который вы хотите переместить игрока. Неуказание данного аргумента позволит ресурсу Voice автоматически распорядиться игроком (напр. авто-распределить в канал команды).
Возвращает true, если операция прошла успешно, иначе - false.
getPlayersInChannel
Эта функция позволяет вам запросить лист игроков, находищихся в указанном канале.
table exports.voice:getPlayersInChannel ( int channelID )
- channelID : ID канала, лист игроков, находищихся в котором, вы хотите запросить.
Возвращает таблицу игроков, находящихся в указанном канале.
getNextEmptyChannel
Эта функция позволяет вам получить ID следующего полностью пустого канала, позволяя с легкостью создавать новые
int getNextEmptyChannel ( )
Возвращает целое число - номер первого канала, который оказался полностью пустым.