Новый чат MTA

Image

Описание

Плюсы:

  • Адаптивность (вам не нужно надевать очки для вашего экрана 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) -> void
  • clearChatBox() -> void
  • exports.chat2:isChatVisible() -> bool

    На стороне сервера:

  • outputChatBox(string message, element elem?, int red?, int green?, int blue?) -> void - Обратите внимание, что последний параметр \'colorcoded\' отсутствует. Шестнадцатеричная обработка включена по умолчанию
  • showChat(element elem, bool show) -> void
  • clearChatBox(element elem) -> void
  • exports.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 обработчиках событий