Cross chat ascended
Features
Screenshots:
If you get error 126 on load, you must install OpenSSL
Config explained
Features
- Focused on performance: The plugin is fully async, meaning that the chat fetch & send does not cause ANY lag or performance decrease on the server
- Free lifetime basic crosschat
- Paid access to better features and a discord bot (soon)
- Easy to set up! You just need a mysql or mariadb server!
- Works with newer MySQL versions and does not require legacy authentication anymore!
- Better security, other crosschats expose too much data to the internet. With my new mysql implementation the connections are done trough SSL
- Use -serverkey=your map name in your launch args to determine the map's name in the cross chat
- Chat logs! Every chat interaction records a log on the database, with its timestamp so you can make use of them whenever!
- Fully fledged discord bot integration discord <-> game. Discord bot offers a lot of functionality to interact with discord, including but not limited to:
- Ingame chat <-> discord
- Live player lists
- Remote rcon commands
- Discord link verification
- Builtin kickme in the panel. with buttons
- Custom bot presence.
- Customizable chat formatting. You can specify a default formatting, or specify a custom one for specific permission groups!
- Chat tags! Add prefixes to players, choose every aspect of them. Players can even enable/disable them!
- Tribelogs to discord. Simple system so players can link their tribelogs to a discord webhook
- Mutes. You can specify the muted permission group, and players with that group will not be able to send any chat message
Screenshots:
If you get error 126 on load, you must install OpenSSL
Config explained
JSON:
{
"MySQL": {
"Host": "localhost",
"User": "root",
"Password": "",
"Database": "test",
"Port": 3306
},
"General": {
"FetchChatInterval": 0.25 // How often to fetch chat in seconds
},
"Premium": { // Premium features
"ChatFormat": "{map}: {tags} {sender} {tribe}: {message}", // The format of the chat message.
"Icon": "", // The icon to show before the name in chat
"FormattingParts": { // The formatting parts of the chat message
"map": "[{name}]",
"tags": "{name}",
"sender": "<RichColor Color=\"1, 0.9, 0, 1\">{name}</>", // Yellowish color, same as ark
"tribe": "<RichColor Color=\"1, 0.9, 0, 1\">[{name}]</>", // Yellowish color, same as ark
"message": "{message}"
},
"PermissionsFormatting": { // Formatting override for certain permission groups
"Admin": {
"Priority": 9999, // The priority of the permission group. The higher the more priority it is given.
"ChatFormat": "{map}: {tags} {sender} {tribe}: {message}", // The format of the chat message.
"Icon": "", // The icon to show before the name in chat
"FormattingParts": {
"map": "[{name}]",
"tags": "{name}",
"sender": "<RichColor Color=\"1, 0.9, 0, 1\">{name}</>",
"tribe": "<RichColor Color=\"1, 0.9, 0, 1\">[{name}]</>",
"message": "<RichColor Color=\"1, 0, 0, 1\">{message}</>"
}
}
},
"ChatTags": { // The chat tags. Can have multiple tags with different permissions and formatting.
"Admin": { // The name of the tag
"Priority": 9999, // The priority of the tag. The higher the more priority it is given.
"Icon": "", // The icon to show before the name in chat
"Text": "<RichColor Color=\"1, 0, 0, 1\">[{icon}Admin]</>", // The text to show in chat
"CanBeDisabled": true // Whether the tag can be disabled or not
}
},
"Tribelogs": { // The settings for the tribe logs
"Enabled": true, // Whether the tribe logs to discord are enabled or not
"OnlyTribeOwnerCanSetWebhook": true, // Whether only the tribe owner can set the webhook
"OnlyTribeAdminsCanSetWebhook": false, // Whether only tribe admins can set the webhook
"AdminWebhook": "", // The webhook to send the logs to
"Permission": "CCA.Tribelog", // The permission to set the webhook
"Format": "{map}: {log}" // The format of the log message
},
"MutedPermissionGroup": "Muted" // The permission group for muted players
},
"Commands": {
"EnableTag": "/enabletag",
"DisableTag": "/disabletag",
"ChatMode": {
"Command": "/chatmode",
"Modes": {
"Global": "cluster",
"Tribe": "tribe",
"Local": "map"
}
},
"SetTribelog": "/tribelog",
"SetDiscordCode": "/setdiscord"
},
"Messages": {
"SenderName": "Crosschat",
"TagEnabled": "Tag enabled successfully",
"TagDisabled": "Tag disabled successfully",
"NoPermissionTag": "You don't have permission to enable that tag",
"EnableTagSyntax": "Syntax: /enabletag <tag>",
"DisableTagSyntax": "Syntax: /disabletag <tag>",
"TagDisabledAlready": "That tag is already disabled",
"TagNotFound": "That tag doesn't exist",
"CannotDisableTag": "You cannot disable this tag",
"TagAlreadyEnabled": "That tag is already enabled",
"ChangeChatModeSyntax": "Syntax: /chatmode <cluster|tribe|map>",
"GlobalChatMode": "Global chat mode enabled",
"TribeChatMode": "Tribe chat and local map mode enabled",
"LocalChatMode": "Local map chat mode enabled",
"Muted": "You are muted and cannot chat. You can check the time left with /groups",
"SetTribeLogSyntax": "Syntax: /tribelog <webhook>",
"TribeLogSet": "Tribe log webhook set successfully",
"OnlyTribeOwnerCanSetWebhook": "Only the tribe owner can set the webhook",
"OnlyTribeAdminsCanSetWebhook": "Only tribe admins can set the webhook",
"NoPermissionTribeLog": "You don't have permission to set the tribe log webhook",
"InvalidWebhook": "Invalid webhook",
"SetDiscordCodeSyntax": "Syntax: /setdiscord <code>",
"CheckingDiscordCode": "Checking discord code...",
"DiscordCodeSet": "Discord code set successfully",
"InvalidDiscordCode": "Invalid discord code",
"DiscordCodeAlreadySet": "You are already linked!"
}
}
JSON:
{
"AccountKey": "", // Account key
"BotToken": "", // Bot token. Get one from https://discord.com/developers/applications
"MySQL": { // Crosschat MySQL database
"Host": "",
"User": "",
"Password": "",
"Database": "",
"Port": 3306
},
"PermissionsMySQL": { // Permissions MySQL database
"Host": "",
"User": "",
"Password": "",
"Database": "",
"Port": 3306
},
"General": {
"IngameChatChannelId": 1057656944556515368, // Channel id for 2 way ingame chat (ingame <-> discord)
"IngameChatFormat": "{platform} **[{map}] {player}{tribename}**: {message}", // Message format for ingame chat
"Platforms": {
"Steam": "Steam",
"Xbox": "Xbox",
"Playstation": "PS"
},
"PanelEmbed": { // Panel embed for the crosschat panel that contains various buttons
"Color": [ 0, 255, 0 ], // RGB Color
"Url": "",
"Title": {
"Text": "Crosschat Ascended Panel",
"Url": "",
"IconUrl": ""
},
"Description": "Click one of the buttons to do something",
"Thumbnail": "",
"Image": "",
"Footer": {
"Text": "CrosschatAscended. Provided by Pelayori",
"IconUrl": ""
}
},
"LinkDiscordButton": {
"Enabled": true,
"Text": "Link Discord",
"Style": "SUCCESS" // Button style. Can be PRIMARY, SECONDARY, SUCCESS, DANGER
},
"GetEosButton": {
"Enabled": true,
"Text": "Get your EOS ID",
"Style": "PRIMARY"
},
"KickmeButton": {
"Enabled": true,
"Text": "Kick you from the cluster",
"Style": "DANGER"
}
},
"PlayerList": {
"Enabled": false,
"Color": [ 0, 255, 0 ],
"ChannelId": 1202313051366510712, // Channel id for the player list.
"Thumbnail": "",
"Image": "",
"Title": "Cluster. {nmaps} maps, {nplayers} players", // Title of the embed
"Server": "{map} - {players} players.", // Server line format
"Players": "{name} {tribe}", // Player line format
"SurroundPlayersInCodeBlock": true,
"Footer": {
"Text": "Provided by CrosschatAscended.",
"IconUrl": ""
}
},
"BotStatus": {
"Enabled": true,
"Statuses": [
[ "PLAYING", "with {players} players" ], // Statuses. {players} will be replaced with the amount of players
[ "WATCHING", "{maps} maps, {players} players" ], // {ma} will be replaced with the amount of maps
[ "LISTENING", "to {players} players" ] // Status can be PLAYING, WATCHING or LISTENING
]
},
"AdminPlayerList": {
"Enabled": true,
"ChannelId": 1202313051366510712, // Channel id for the admin player list
"Color": [ 0, 255, 0 ],
"Thumbnail": "",
"Image": "",
"Title": "Cluster. {nmaps} maps, {nplayers} players",
"Server": "{map} - {players} players. Avg fps: {avgfps}. Current fps: {curfps}",
"SurroundPlayersInCodeBlock": true,
"Players": "({playtime}s = {play_secs}s {play_mins}m {play_hours}h) {name} {tribe} ({eos}, {playerid}, {tribeid})",
"Footer": {
"Text": "Provided by CrosschatAscended.",
"IconUrl": ""
}
},
"Verification": {
"RolesToGiveOnVerification": [ // Roles to give on verification
728358128218931360
]
},
"RoleSyncing": [ // Roles to be synced discord <-> game. If role is given in discord, it will be given ingame and vice versa
{
"RoleId": 728358128218931360, // Discord role id
"PermissionGroup": "Verified" // Permission group in the game
}
],
"RconPasswords": { // Rcon passwords for each server
"Default": "1234", // Default password. Will be used if there is not specific password for the server
"Island-1": "1234",
"1.1.1.1:32330": "1234",
"1.1.1.1": "1234"
},
"Messages": {
"ConnectCode": "Your connect code is: {0}",
"ServerOffline": "Server is offline",
"NotLinked": "You are not linked. Please link your account first.",
"AlreadyLinked": "You are already linked.",
"Kickme": "You have been kicked from the cluster.",
"GetEos": "Your EOS ID is: {0}"
}
}