One shared chat across your whole cluster - plus Discord relay and a built-in chat filter. / Единый чат на весь кластер - плюс ретрансляция в Discord и встроенный фильтр чата.
Cross-server chat for an ARK cluster: players on every map talk in one global chat, with optional Discord mirroring and word/link moderation - all config-driven, no client mod.
0xCrossServerChat ties the chat of every server in your cluster together through one shared database. A message typed on The Island shows up on Ragnarok, Aberration and the rest, tagged with the server it came from. Tribe chat can be carried too (only that tribe sees it elsewhere). It can mirror chat to a Discord channel in a format you control, greet joining players with the recent backlog, and clean bad words and links out of every channel.
Requirements: ARK: Survival Evolved dedicated servers with ARK Server API, Windows x64, and one MariaDB/MySQL database reachable by every server in the cluster.
0xCrossServerChat ties the chat of every server in your cluster together through one shared database. A message typed on The Island shows up on Ragnarok, Aberration and the rest, tagged with the server it came from. Tribe chat can be carried too (only that tribe sees it elsewhere). It can mirror chat to a Discord channel in a format you control, greet joining players with the recent backlog, and clean bad words and links out of every channel.
Features
- Cluster chat - global (and optionally tribe) chat shared between all servers.
- Server tag - each message shows where it came from; auto-uses the server's name, or set your own.
- Join history - show a (re)joining player the last N global messages so they don't miss context.
- Discord relay - mirror chat to a webhook with a fully customizable line format (colors via ANSI).
- Word filter - regex/word blacklist; censor (replace with
****) or block the whole message. - Link filter - block links by default, with an allow-list for the ones you trust.
- No client mod - server-side only; the only shared dependency is one database.
- Every server writes chat to one shared database table; the others poll it (~1s) and display new lines. That table is the only link between servers - no central relay process needed.
- Each line is tagged with its source server and the sender's name (and tribe). Tribe chat is delivered only to members of the same tribe on the other servers.
- Moderation runs on every channel (global / tribe / local) before anything is shown or relayed. In censor mode the message is edited in place, so local chat is cleaned too - not just the relayed copy.
- Discord: each server posts its own messages once, so every line appears in the channel exactly once - just use the same webhook on all servers.
- On startup a server skips the existing backlog, so restarting it never floods chat with old messages.
| Field | Meaning |
|---|---|
| Database | The shared cluster DB - every server points at the SAME one |
| Relay.ServerTag | Source label; empty = use the server's own name (unique even on the same map) |
| Relay.RelayGlobal / RelayTribe | Which channels are shared across servers |
| Relay.HistoryOnJoin | Show a joining player the last N global messages (0 = off) |
| Discord.Enabled / WebhookUrl | Mirror chat to a Discord channel |
| Discord.Format | Line template ({time} {server} {channel} {sender} {message} + color tokens) |
| Filter.Mode | censor = replace matches with Mask; block = drop the message |
| Filter.BlockLinks / AllowedLinks | Block URLs by default, except the ones you allow |
| Filter.BlockedWords | Words/phrases to catch (plain text or regex) |
JSON:
{
"Database": {
"Enabled": true,
"Host": "127.0.0.1", "Port": 3306,
"User": "ark", "Password": "", "Schema": "ark"
},
"Relay": {
"Enabled": true,
"ServerTag": "", // empty = use the server's name
"RelayGlobal": true,
"RelayTribe": true,
"HistoryOnJoin": 20
},
"Discord": {
"Enabled": false,
"WebhookUrl": "",
"OnlyGlobal": true,
"Ansi": true,
"Format": "{yellow}[{time}]{reset} {magenta}[{channel}]{reset} {white}{sender}: {message}{reset}"
},
"Filter": {
"Enabled": true,
"Mode": "censor",
"Mask": "****",
"BlockLinks": true,
"AllowedLinks": [ "discord.gg/your-server" ],
"BlockedWords": [ "\\bbadword+\\b" ]
}
}
- Drop the
0xCrossServerChatfolder intoShooterGame\Binaries\Win64\ArkApi\Plugins\on every server in the cluster. - Point all of them at the same database in
config.json. The plugin creates its table automatically. - (Optional) Set a Discord webhook and tune the filter, then restart the servers. Comments and trailing commas in the config are allowed.
Requirements: ARK: Survival Evolved dedicated servers with ARK Server API, Windows x64, and one MariaDB/MySQL database reachable by every server in the cluster.
Кросс-серверный чат для кластера ARK: игроки на всех картах общаются в одном глобальном чате, с опциональной ретрансляцией в Discord и модерацией слов/ссылок - всё через конфиг, без клиентского мода.
0xCrossServerChat связывает чат всех серверов кластера через одну общую базу данных. Сообщение, написанное на The Island, появляется на Ragnarok, Aberration и остальных - с пометкой, с какого сервера оно пришло. Трайб-чат тоже можно передавать (на других серверах его видит только тот же трайб). Плагин умеет дублировать чат в Discord-канал в нужном вам формате, показывать зашедшему игроку недавнюю историю и вычищать мат и ссылки из всех каналов.
Требования: выделенные серверы ARK: Survival Evolved с ARK Server API, Windows x64, и одна база MariaDB/MySQL, доступная каждому серверу кластера.
0xCrossServerChat связывает чат всех серверов кластера через одну общую базу данных. Сообщение, написанное на The Island, появляется на Ragnarok, Aberration и остальных - с пометкой, с какого сервера оно пришло. Трайб-чат тоже можно передавать (на других серверах его видит только тот же трайб). Плагин умеет дублировать чат в Discord-канал в нужном вам формате, показывать зашедшему игроку недавнюю историю и вычищать мат и ссылки из всех каналов.
Возможности
- Чат кластера - глобальный (и при желании трайб) чат общий для всех серверов.
- Метка сервера - у каждого сообщения видно, откуда оно; по умолчанию берётся имя сервера, можно задать своё.
- История при заходе - показывает (пере)зашедшему игроку последние N сообщений, чтобы не терять контекст.
- Ретрансляция в Discord - дублирование чата в вебхук с полностью настраиваемым форматом строки (цвета через ANSI).
- Фильтр слов - чёрный список (слова/regex); цензура (замена на
****) или блок всего сообщения. - Фильтр ссылок - блок ссылок по умолчанию и белый список для доверенных.
- Без клиентского мода - только сервер; единственная общая зависимость - одна база данных.
- Каждый сервер пишет чат в одну общую таблицу БД; остальные опрашивают её (~1с) и показывают новые строки. Эта таблица - единственная связь между серверами, отдельный релей-процесс не нужен.
- Каждая строка помечается сервером-источником и именем отправителя (и трайбом). Трайб-чат доставляется только участникам того же трайба на других серверах.
- Модерация работает на всех каналах (глобал / трайб / локал) до показа и ретрансляции. В режиме цензуры сообщение правится на месте, поэтому локальный чат тоже зачищается - не только пересылаемая копия.
- Discord: каждый сервер постит свои сообщения один раз, поэтому каждая строка попадает в канал ровно однажды - просто используйте один и тот же вебхук на всех серверах.
- При старте сервер пропускает накопленный бэклог, поэтому перезапуск никогда не заливает чат старыми сообщениями.
| Поле | Значение |
|---|---|
| Database | Общая БД кластера - все серверы указывают на ОДНУ |
| Relay.ServerTag | Метка источника; пусто = имя сервера (уникально даже на одной карте) |
| Relay.RelayGlobal / RelayTribe | Какие каналы общие для всех серверов |
| Relay.HistoryOnJoin | Показать зашедшему последние N сообщений (0 = выкл) |
| Discord.Enabled / WebhookUrl | Дублирование чата в Discord-канал |
| Discord.Format | Шаблон строки ({time} {server} {channel} {sender} {message} + цвет-токены) |
| Filter.Mode | censor = замена на Mask; block = не пропускать сообщение |
| Filter.BlockLinks / AllowedLinks | Блок ссылок по умолчанию, кроме разрешённых |
| Filter.BlockedWords | Слова/фразы для отлова (обычный текст или regex) |
JSON:
{
"Database": {
"Enabled": true,
"Host": "127.0.0.1", "Port": 3306,
"User": "ark", "Password": "", "Schema": "ark"
},
"Relay": {
"Enabled": true,
"ServerTag": "", // пусто = имя сервера
"RelayGlobal": true,
"RelayTribe": true,
"HistoryOnJoin": 20
},
"Discord": {
"Enabled": false,
"WebhookUrl": "",
"OnlyGlobal": true,
"Ansi": true,
"Format": "{yellow}[{time}]{reset} {magenta}[{channel}]{reset} {white}{sender}: {message}{reset}"
},
"Filter": {
"Enabled": true,
"Mode": "censor",
"Mask": "****",
"BlockLinks": true,
"AllowedLinks": [ "discord.gg/your-server" ],
"BlockedWords": [ "\\bbadword+\\b" ]
}
}
- Положите папку
0xCrossServerChatвShooterGame\Binaries\Win64\ArkApi\Plugins\на каждом сервере кластера. - Укажите всем им одну и ту же базу данных в
config.json. Таблицу плагин создаёт сам. - (Опционально) Задайте Discord-вебхук и настройте фильтр, затем перезапустите серверы. В конфиге допускаются комментарии и висячие запятые.
Требования: выделенные серверы ARK: Survival Evolved с ARK Server API, Windows x64, и одна база MariaDB/MySQL, доступная каждому серверу кластера.