Плюсы:- Адаптивность (вам не нужно надевать очки для вашего экрана 1920x1080, чтобы увидеть, что пишут другие)
- Копирование / вставка из / в input (больше нет консоли - & gt; скажем someLongMessageOrUrl)
- Настраиваемый (теперь вы можете унифицировать чат для всех ваших игроков)
- Расширяемый (например, вы можете сделать ссылки url в чате кликабельными или добавить поддержку markdown)
Минусы:- Он не может выполнять встроенные команды, такие как
/nick ; /login, и т.д. Из соображений безопасности. Вам нужно написать свои собственные обработчики для этих команд или просто использовать консоль для таких команд. Пользовательские команды по-прежнему работают должным образом. - Он не может быть использован до запуска ресурса, поэтому вы не можете писать полезные сообщения для игрока в
onPlayerConnect обработчике событий. используйте onPlayerJoin вместо этого.
Приступая к работе:- скачать русурс
- переместить этот ресурс в
server/mods/deathmatch/resources/ - добавить в
server/mods/deathmatch/mtaserver.conf:
<!-- set this resource before all other resources -->
<resource src="chat2" startup="1" protected="0" />
- добавить в
server/mods/deathmatch/acl.xml:
<group name="chat2ACLGroup">
<acl name="chat2ACL"></acl>
<object name="resource.chat2"></object>
</group>
<acl name="chat2ACL">
<right name="function.executeCommandHandler" access="true"></right>
</acl>
API-ИНТЕРФЕЙС:
На стороне клиента:outputChatBox(string message, int red?, int green?, int blue?) -> void - Обратите внимание, что последний параметр 'colorcoded' отсутствует. Шестнадцатеричная обработка включена по умолчаниюshowChat(bool show) -> voidclearChatBox() -> voidexports.chat2:isChatVisible() -> bool
На стороне сервера:outputChatBox(string message, element elem?, int red?, int green?, int blue?) -> void - Обратите внимание, что последний параметр 'colorcoded' отсутствует. Шестнадцатеричная обработка включена по умолчаниюshowChat(element elem, bool show) -> voidclearChatBox(element elem) -> voidexports.chat2:useDefaultOutput(bool) -> void - Включить / Отключить вывод по умолчанию. Если вы отключите его, то вам нужно будет написать свои собственные обработчики onPlayerChat событии
Примеры:addEventHandler("onResourceStart", resourceRoot, function() -- необходимо выполнить, если ваш игровой режим не выводит никаких сообщений в чат
-- onPlayerChat обработчик события. Например: play gamemode уже использует свой собственный вывод
- так что вам не нужно включать вывод по умолчанию, но race gamemode его не имеет,
- так что вам нужно включить вывод по умолчанию.
exports.chat2:useDefaultOutput(true)
end)
addEventHandler("onPlayerJoin", root, function()
outputChatBox("#ccff00hellow #ffcc00world", source)
outputChatBox("i'm red af", source, 255, 0, 0)
end)
addEventHandler("onPlayerChat", root, function(message, messageType)
if message ~= "ping" then
outputChatBox("pong", source)
end
end)
ВОПРОСЫ И ОТВЕТЫ:
Я запустил этот ресурс, но я не вижу чата
- Вы должны выполнить exports.chat2:useDefaultOutput(true), потому что ваш игровой режим не имеет встроенного вывода
Чат показывает одни и те же сообщения дважды
- Выполните exports.chat2:useDefaultOutput(false) где-нибудь в своем коде
Как я могу добавить новые типы ввода для, скажем, глобальных / локальных / частных чатов?
- Вам нужно добавить новые записи в таблицу clientside inputKeyButtons с уникальными
messageType значениями, А затем обработать эти типы сообщений в onPlayerChat обработчиках событий