mirror of
https://github.com/AsgardEternal/SquadJS.git
synced 2024-09-29 09:54:26 -05:00
60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
import { LOG_PARSER_PLAYER_CONNECTED } from 'squad-server/events/log-parser';
|
|
|
|
export default function(server, options = {}) {
|
|
if (!server) throw new Error('SeedingMessage must be provided with a reference to the server.');
|
|
|
|
const mode = options.mode || 'interval';
|
|
const interval = options.interval || 150 * 1000;
|
|
const delay = options.delay || 45 * 1000;
|
|
|
|
const seedingThreshold = options.seedingThreshold || 50;
|
|
const seedingMessage =
|
|
options.seedingMessage ||
|
|
'Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!';
|
|
|
|
const liveEnabled = options.liveEnabled || true;
|
|
const liveThreshold = seedingThreshold + (options.liveThreshold || 2);
|
|
const liveMessage = options.liveMessage || 'Live!';
|
|
|
|
switch (mode) {
|
|
case 'interval':
|
|
setInterval(() => {
|
|
const playerCount = server.players.length;
|
|
|
|
if (playerCount === 0) return;
|
|
|
|
if (playerCount < seedingThreshold) {
|
|
server.rcon.execute(`AdminBroadcast ${seedingMessage}`);
|
|
return;
|
|
}
|
|
|
|
if (liveEnabled && playerCount < liveThreshold) {
|
|
server.rcon.execute(`AdminBroadcast ${liveMessage}`);
|
|
}
|
|
}, interval);
|
|
|
|
break;
|
|
case 'onjoin':
|
|
server.on(LOG_PARSER_PLAYER_CONNECTED, () => {
|
|
setTimeout(() => {
|
|
const playerCount = server.players.length;
|
|
|
|
if (playerCount === 0) return;
|
|
|
|
if (playerCount < seedingThreshold) {
|
|
server.rcon.execute(`AdminBroadcast ${seedingMessage}`);
|
|
return;
|
|
}
|
|
|
|
if (liveEnabled && playerCount < liveThreshold) {
|
|
server.rcon.execute(`AdminBroadcast ${liveMessage}`);
|
|
}
|
|
}, delay);
|
|
});
|
|
|
|
break;
|
|
default:
|
|
throw new Error('Invalid SeedingMessage mode.');
|
|
}
|
|
}
|