Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.

MatterAMXX

Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.

Description

Using Matterbridge API, this plugin allows you to bridge your game server with a Matterbridge installation, relaying messages from/to a growing number of protocols.

You can also bridge multiple servers together so the players can chat between each one.

Protocols natively supported in Matterbridge

  • Mattermost
  • IRC
  • XMPP
  • Gitter
  • Slack
  • Discord
  • Telegram
  • Rocket.chat
  • Matrix
  • Steam (Bugged for now)
  • Twitch
  • Ssh-chat
  • WhatsApp
  • Zulip
  • Keybase

Tested Protocols

  • Discord
  • Matrix
  • Telegram

Dependencies

This plugin requires the following to work:

Supported Games

This plugin is supposed to be mod agnostic. All official games should work out of the box

  • Half-Life
  • Counter-Strike
  • Condition Zero
  • Opposing Force
  • Ricochet
  • Day of Defeat
  • Team Fortress Classic
  • Deathmatch Classic

Kill feed feature will also work in mods where a proper hamdata.ini table is provided

  • The Specialists
  • Sven Co-op

Tested Games

  • Half-Life
  • Ricochet
  • Sven Co-op
  • The Specialists

Installation Instructions

  • Download all requirements, plus the .sma file.
  • Place include files in the /scripting/includes directory.
  • Compile the plugin and install the newly generated .amxx file. (Remember to install the latest version of GRIP in your server)

Setting up MatterAMXX

This quickstart guide assumes you already have a working Matterbridge installation.

Open your matterbridge.toml file and add the following lines:

[api.myserver]
BindAddress="0.0.0.0:1337"
Token="verysecrettoken"
Buffer=1000
RemoteNickFormat="{NICK}"

Where "myserver" is goes the name of the relay, you can put anything.

Find your gateway where you want to relay the messages.

[[gateway]]  
name="cstrike"  
enable=true  
  
[[gateway.inout]]  
account="discord.mydiscord"  
channel="general"  
  
[[gateway.inout]]  
account="api.myserver"  
channel="api"

Where cstrike is goes the gateway name. By default is the mod's gamedir (cstrike for Counter-Strike, valve for Half-Life, etc) but you can change it using cvars, you can add more gateway.inout entries depending on how many protocols do you want to relay messages.

Avatar Spoofing

It's possible to set up avatars for each user on protocols that support it. Unfortunately, due to limitations of AMXX and the GRIP module, user info from the Steam API can't be retrieved because it gets truncated.

However, you can host the included PHP script to query for avatars to be used in this plugin, you just need a Steam API Key that you can obtain from the Steam Web API website.

This will also cache each avatar and they will be deleted after a while.

Remember to create the /avatars folder! The script won't do it for you.

API

The API allows other plugins to use MatterAMXX features. Just include the matteramxx.inc file in your plugin and it should work immediately.

Remember that the plugin requires the latest version of MatterAMXX to be running in the server.

Console Variables

  • amx_matter_enable
    • Enables the plugin.
    • Default: 1
  • amx_matter_bridge_url
    • URL and port where the bridge is located.
    • Default: http://localhost:1337
  • amx_matter_system_avatar
    • URL pointing to a picture that will be used as avatar image in system messages. (In protocols that support it)
    • Default: [empty string]
  • amx_matter_autogenerate_avatar
    • URL pointing to a picture that will be used as avatar image in unauthenticated player messages. (In protocols that support it)
    • This will mostly affect LAN servers, ID_PENDING cases, cases where Steam might be down and other specific cases.
    • This is generated on the user's nickname, so you must provide a link to Gravatar, Identicons, etc.
    • Default: [empty string]
  • amx_matter_player_avatar
    • URL pointing to a picture that will be used as avatar image in player messages. (In protocols that support it)
    • Note that this is dynamic based on the user's Steam ID64, if it can't be retrieved the message won't have any avatar.
    • Upload the PHP file I provided to your file server and use it in this cvar like http://localhost/avatars/get_avatar.php?steamid=%s.
    • See "Avatar Spoofing" for more information.
    • Default: [empty string]
  • amx_matter_bridge_gateway
    • Gateway name to connect.
    • Default: [varies, depends on the game]
  • amx_matter_bridge_token
    • String token to authenticate, it's recommended that you set it up, but it will accept any connection by default.
    • Default: [empty string]
  • amx_matter_bridge_incoming
    • Enables incoming messages (protocols to server).
    • Default: 1
  • amx_matter_incoming_update_time
    • Specifies how many seconds it has to wait before querying new incoming messages.
    • Performance wise is tricky, lower values mean the messages will be queried instantly, while higher values will wait and bring all messages at once, both cases may cause overhead. Experiment and see what's ideal for your server.
    • No effect if amx_matter_bridge_incoming is 0.
    • Default: 3.0
  • amx_matter_bridge_outgoing
    • Enables outgoing messages (server to protocols).
    • Default: 1
  • amx_matter_bridge_outgoing_display_map
    • Display the current map at the start of every session.
    • Default: 1
  • amx_matter_bridge_outgoing_strip_colors
    • Strip color codes from player names.
    • It will only affect Half-Life and Adrenaline Gamer.
      • No effect in other games.
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default: 1
  • amx_matter_bridge_outgoing_system_username
    • Name of the "user" when relying system messages.
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default: [your server name]
  • amx_matter_bridge_outgoing_chat
    • Transmit chat messages.
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default: 1
  • amx_matter_bridge_outgoing_chat_no_repeat
    • Implement basic anti-spam filter. Useful for preventing taunt binds from sending multiple times.
    • No effect if amx_matter_bridge_outgoing_chat is 0.
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default: 1
  • amx_matter_bridge_outgoing_kills
    • Transmit kill feed.
    • It's recommended that you to turn it off on heavy activity servers (Like CSDM/Half-Life servers with tons of players)
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default 1
  • amx_matter_bridge_outgoing_join
    • Transmit when people join the server.
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default: 1
  • amx_matter_bridge_outgoing_join_delay
    • Specify how many seconds the server has to wait before sending Join messages..
    • No effect if amx_matter_bridge_outgoing_join is 0.
    • Default: 30.0
  • amx_matter_bridge_outgoing_quit
    • Transmit when people leave the server.
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default: 1
  • amx_matter_bridge_outgoing_quit_ignore_intermission
    • Specify if the server shouldn't send quit messages if the server reached the intermission state.
    • No effect if amx_matter_bridge_outgoing_quit is 0.
    • Default: 0
  • amx_matter_bridge_outgoing_joinquit_count
    • Display playercount on each Join/Quit message.
    • No effect if both amx_matter_bridge_outgoing_quit and amx_matter_bridge_outgoing_join are 0.
    • Default: 1
  • amx_matter_bridge_retry_delay
    • In seconds, how long the server has wait before retrying a connection when it was interrupted.
    • No effect if amx_matter_bridge_outgoing is 0.
    • Default: 3.0

Credits

  • 42wim
    Main developer of Matterbridge.
  • Michael Wieland
    His MatterBukkit plugin for Minecraft inspired me to create this.
  • Th3-822
    Helped me finding some bugs.
Similar Resources

Simple load-balancer for npchat servers, based on the xor distance metric between node & user id

npchat-helmsman Simple load-balancer for npchat servers, based on the xor distance metric between node & user id. Local Development Clone this reposit

Jan 15, 2022

Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here

Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here

Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here

Dec 20, 2021

Matterbridge API Connector for Vintage Story Server

Matterbridge API Connector for Vintage Story Server

Oct 21, 2021

Connect a Minecraft Forge server to Matterbridge

Mattercraft Mattercraft is a Minecraft Forge mod that relays chat messages between a Minecraft server and Matterbridge. It uses Matterbridge's HTTP AP

Jul 28, 2022

Matterbridge link for Minecraft Server chat.

Matterbridge link for Minecraft Server chat. Simple bridge between Minecraft, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, Rocket.Chat, Hipchat(via xmpp), Matrix and Steam.

Mar 28, 2022

Bridge facebook messenger with any service supported by matterbridge

fbridge fbridge bridges facebook messenger with any service supported by matterbridge trough the API interface. fbridge is using fbchat to connect to

Oct 30, 2022

Facebook bridge used with matterbridge

fbridge-asyncio This repo is a fork of fbridge. If you log in to your facebook account from a browser, after you do, it's a good idea to restart fbrid

Aug 7, 2022

Connect Discourse threads to Matterbridge

Matterbabble Matterbabble is an API client for Discourse and Matterbridge. It mirrors Discourse posts in a topic to Matterbridge messages on a gateway

Dec 7, 2022

Socketlogger allows multiple processes to log to a shared log file between processes.

Socketlogger allows multiple processes to log to a shared log file between processes.

socketlogger socketlogger is a language agnostic logging utility designed to allow mulitple applications, running on one or multiple computers, to wri

Dec 7, 2021
Comments
  • Compile errors

    Compile errors

    Hi. I've just downloaded the latest hlds, metamod 1.21.1-am, amxmodx 1.8.2, grip 0.0.0.0-test, matteramxx 1.5 . I've installed the included files of all of them. I've not touched any of the others as they seem to be released in binary form, but I'm trying to compile the sma file as the instructions here say, and I get numerous compile errors and the resulting amx file is empty. How can I get this working?

    Welcome to the AMX Mod X 1.8.1-300 Compiler.
    Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team
    
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(97) : warning 200: symbol "GripHTTPStatusSwitchingProtocol" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(102) : warning 200: symbol "GripHTTPStatusNonAuthoritativeI" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(124) : warning 200: symbol "GripHTTPStatusProxyAuthenticati" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(129) : warning 200: symbol "GripHTTPStatusPreconditionFaile" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(132) : warning 200: symbol "GripHTTPStatusUnsupportedMediaT" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(133) : warning 200: symbol "GripHTTPStatusRangeNotSatisfiab" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(136) : warning 200: symbol "GripHTTPStatusMisdirectedReques" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(137) : warning 200: symbol "GripHTTPStatusUnprocessableEnti" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(141) : warning 200: symbol "GripHTTPStatusPreconditionRequi" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(143) : warning 200: symbol "GripHTTPStatusRequestHeaderFiel" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(144) : warning 200: symbol "GripHTTPStatusUnavailableForLeg" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(145) : warning 200: symbol "GripHTTPStatusInternalServerErr" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(148) : warning 200: symbol "GripHTTPStatusServiceUnavailabl" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(150) : warning 200: symbol "GripHTTPStatusHttpVersionNotSup" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(151) : warning 200: symbol "GripHTTPStatusVariantAlsoNegoti" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(152) : warning 200: symbol "GripHTTPStatusInsufficientStora" is truncated to 31 characters
    /home/steam/.steam/steamcmd/hlds/valve/addons/amxmodx/scripting/include/grip.inc(155) : warning 200: symbol "GripHTTPStatusNetworkAuthentica" is truncated to 31 characters
    matteramxx.sma(81) : warning 200: symbol "g_cvarOutgoing_Chat_ZeroifyAtSi" is truncated to 31 characters
    matteramxx.sma(86) : warning 200: symbol "g_cvarOutgoing_Quit_IgnoreInter" is truncated to 31 characters
    matteramxx.sma(87) : warning 200: symbol "g_cvarOutgoing_JoinQuit_ShowCou" is truncated to 31 characters
    matteramxx.sma(169) : warning 200: symbol "g_cvarOutgoing_Chat_ZeroifyAtSi" is truncated to 31 characters
    matteramxx.sma(174) : warning 200: symbol "g_cvarOutgoing_Quit_IgnoreInter" is truncated to 31 characters
    matteramxx.sma(177) : warning 200: symbol "g_cvarOutgoing_JoinQuit_ShowCou" is truncated to 31 characters
    matteramxx.sma(212) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(238) : error 088: number of arguments does not match definition
    matteramxx.sma(243) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(256) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(274) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(278) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(302) : error 088: number of arguments does not match definition
    matteramxx.sma(304) : error 088: number of arguments does not match definition
    matteramxx.sma(326) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(451) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(453) : error 017: undefined symbol "client_print_color"
    matteramxx.sma(478) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(484) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(494) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(506) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(585) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(592) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(674) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(677) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(683) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(684) : error 017: undefined symbol "get_playersnum_ex"
    matteramxx.sma(702) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(706) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(713) : error 017: undefined symbol "get_pcvar_bool"
    matteramxx.sma(714) : error 017: undefined symbol "get_playersnum_ex"
    matteramxx.sma(816) : error 088: number of arguments does not match definition
    
    Compilation aborted.
    26 Errors.
    
  • Querying a label from a message that doesn't have a label will crash the plugin

    Querying a label from a message that doesn't have a label will crash the plugin

    If amx_matter_bridge_incoming_chat_protocol is 2 the plugin will attempt to query the message label, if no label is defined the plugin will crash.

    [gRIP] Error: Can't index json using `label`, because json doesn't contain it
    
Matterbridge mattermost plugin

mattermost-plugin Matterbridge mattermost plugin WIP Configuration You have to create a matterbridge.toml configuration file before running make. Beca

Dec 11, 2022
Fluux XMPP is a Go XMPP library, focusing on simplicity, simple automation, and IoT.

Fluux XMPP is a Go XMPP library, focusing on simplicity, simple automation, and IoT. The goal is to make simple to write simple XMPP client

Dec 14, 2022
An inline buildpack for deploying a mattermost-irc bridge

Matterbridge-Heroku An inline buildpack for hosting Matterbridge on Heroku. Heroku is a platform for easily deploying applications. A buildpack provid

Nov 26, 2022
The plugin serves as a starting point for writing a Mattermost plugin

Plugin Starter Template This plugin serves as a starting point for writing a Mattermost plugin. Feel free to base your own plugin off this repository.

Dec 10, 2021
Slash command for Slack/Mattermost to post punch lines
Slash command for Slack/Mattermost to post punch lines

Slash command pro milujipraci.cz This project is by its nature dedicated to czech or slovak speaking users, so I suggest you to either learn Czech or

Jan 18, 2022
Node of the decentralized oracle network, bridging on and off-chain computation

Chainlink is middleware to simplify communication with blockchains. Here you'll find the Chainlink Golang node, currently in alpha. This initial imple

Dec 31, 2022
Lobby - A Nox game lobby which exposes a simple HTTP API for both listing and registering Nox game servers

Nox lobby server This project provides a Nox game lobby which exposes a simple H

Mar 6, 2022
Matterbridge API plugin for Reddit Community Chat

Mattereddit 2 Mattereddit is a Matterbridge API plugin allowing you to connect Reddit group chats to the various chat services supported by Matterbrid

Sep 13, 2022
MBotC plugin for Mattermost

Plugin Starter Template This plugin serves as a starting point for writing a Mattermost plugin. Feel free to base your own plugin off this repository.

Feb 28, 2022
This app brings the Matterbridge binary to your server to connect Nextcloud Talk with other chat services

This app brings the Matterbridge binary to your server to connect Nextcloud Talk with other chat services

Sep 12, 2022