Files
GTA4RP/scripts/server/config.js
2021-01-23 13:31:56 -06:00

614 lines
22 KiB
JavaScript

// ===========================================================================
// Asshat-Gaming Roleplay
// https://github.com/VortrexFTW/gtac_asshat_rp
// Copyright (c) 2021 Asshat-Gaming (https://asshatgaming.com)
// ---------------------------------------------------------------------------
// FILE: config.js
// DESC: Provides server configuration
// TYPE: Server (JavaScript)
// ===========================================================================
let serverConfig = {};
let globalConfig = {
accountPasswordHash: "SHA512",
npcFarProximity: 100,
npcMediumProximity: 40,
npcCloseProximity: 12,
meActionDistance: 20,
doActionDistance: 15,
shoutDistance: 30,
talkDistance: 10,
whisperDistance: 2,
megaphoneDistance: 40,
vehicleLockDistance: 5,
startWorkingDistance: 5,
takeJobDistance: 5,
stopWorkingDistance: 10,
spawnCarDistance: 5,
payAndSprayDistance: 5,
defaultKeybinds: [
new serverClasses.keyBindData(false, toInteger(SDLK_k), "engine"),
new serverClasses.keyBindData(false, toInteger(SDLK_l), "lights"),
new serverClasses.keyBindData(false, toInteger(SDLK_j), "lock"),
new serverClasses.keyBindData(false, toInteger(SDLK_f), "enter"),
new serverClasses.keyBindData(false, toInteger(SDLK_g), "passenger"),
new serverClasses.keyBindData(false, toInteger(SDLK_m), "cursor"),
new serverClasses.keyBindData(false, toInteger(SDLK_o), "drop"),
new serverClasses.keyBindData(false, toInteger(SDLK_p), "pickup"),
new serverClasses.keyBindData(false, toInteger(SDLK_u), "use"),
new serverClasses.keyBindData(false, toInteger(SDLK_i), "inv"),
new serverClasses.keyBindData(false, toInteger(SDLK_0), "i 0"),
new serverClasses.keyBindData(false, toInteger(SDLK_1), "i 1"),
new serverClasses.keyBindData(false, toInteger(SDLK_2), "i 2"),
new serverClasses.keyBindData(false, toInteger(SDLK_3), "i 3"),
new serverClasses.keyBindData(false, toInteger(SDLK_4), "i 4"),
new serverClasses.keyBindData(false, toInteger(SDLK_5), "i 5"),
new serverClasses.keyBindData(false, toInteger(SDLK_6), "i 6"),
new serverClasses.keyBindData(false, toInteger(SDLK_7), "i 7"),
new serverClasses.keyBindData(false, toInteger(SDLK_8), "i 8"),
new serverClasses.keyBindData(false, toInteger(SDLK_9), "i 9"),
],
exitPropertyDistance: 3.0,
enterPropertyDistance: 3.0,
businessDimensionStart: 5000,
houseDimensionStart: 100,
buyVehicleDriveAwayDistance: 25.0,
returnToJobVehicleTime: 30,
walkieTalkieSpeakerDistance: 15,
walkieTalkieTalkDistance: 15,
phoneSpeakerDistance: 15,
phoneTalkDistance: 15,
tazerEffectDuration: 15000,
weaponEquippableTypes: [
AG_ITEM_USETYPE_WEAPON,
AG_ITEM_USETYPE_TAZER,
AG_ITEM_USETYPE_EXTINGUISHER,
AG_ITEM_USETYPE_SPRAYPAINT,
AG_ITEM_USETYPE_PEPPERSPRAY,
],
};
let gameConfig = {
blipSprites: [
false,
{ // GTA III
policeStation: 8,
fireStation: 9,
hospital: 12,
ammunation: 20,
payAndSpray: 18,
vehicleDealership: 6,
restaurant: -1,
fastFood: -1,
bank: 0,
fuelStation: -1,
business: -1,
house: -1,
},
{ // GTA VC
policeStation: 0,
fireStation: 0,
hospital: 0,
ammunation: 16,
payAndSpray: 27,
vehicleDealership: 7,
restaurant: -1,
fastFood: -1,
bank: 0,
fuelStation: -1,
business: -1,
house: -1,
},
{ // GTA SA
policeStation: 30,
fireStation: 20,
hospital: 22,
ammunation: 6,
payAndSpray: 63,
vehicleDealership: 55,
airplaneDealership: 5,
boatDealership: 9,
restaurant: 50,
fastFood: -1,
clothes: 45,
pizza: 29,
chicken: 14,
burger: 10,
bank: 52,
fuelStation: 0,
business: -1,
house: 31,
},
{ // GTA UG
policeStation: 8,
fireStation: 9,
hospital: 12,
ammunation: 20,
payAndSpray: 18,
vehicleDealership: 6,
restaurant: -1,
fastFood: -1,
bank: 52,
fuelStation: 0,
business: -1,
house: -1,
},
{ // GTA IV
policeStation: 8,
fireStation: 9,
hospital: 12,
ammunation: 20,
payAndSpray: 18,
vehicleDealership: 6,
restaurant: -1,
fastFood: -1,
bank: 52,
fuelStation: 0,
business: -1,
house: -1,
},
],
pickupModels: [
{},
{ // GTA 3
policeStation: 1361,
fireStation: 1361,
hospital: 1361,
ammunation: 1361,
payAndSpray: 1361,
vehicleDealership: 1361,
restaurant: 1361,
fastFood: 1361,
bank: 1323,
fuelStation: 1361,
business: 1361,
house: 1361,
clothes: 1361,
misc: 1361,
exit: 1361
},
{ // GTA Vice City
policeStation: 375,
fireStation: 406,
hospital: 366,
ammunation: 406,
payAndSpray: 406,
vehicleDealership: 406,
restaurant: 406,
fastFood: 406,
bank: 408,
fuelStation: 406,
business: 406,
house: 407,
clothes: 409,
misc: 406,
exit: 406,
},
{ // GTA San Andreas
policeStation: 1247,
fireStation: 1318,
hospital: 1240,
ammunation: 1239,
payAndSpray: 1239,
vehicleDealership: 1239,
restaurant: 1239,
fastFood: 1239,
bank: 1274,
fuelStation: 1239,
business: 1272,
house: 1273,
clothes: 1275,
misc: 1239,
exit: 1247,
}
],
pickupTypes: [
{},
{ // GTA 3
business: 0,
house: 0,
bank: 0,
clothes: 0,
info: 0,
job: 0,
},
{ // GTA Vice City
business: 0,
house: 0,
bank: 0,
clothes: 0,
info: 0,
job: 0,
},
{ // GTA San Andreas
business: 1,
house: 1,
bank: 1,
clothes: 1,
info: 1,
job: 1,
}
],
// THIS IS SCREEN HEIGHT, NOT ACTUAL DOOR POSITION IN THE WORLD
propertyLabelHeight: [
false,
85,
85,
85,
85,
85,
85,
],
removedWorldObjects: [
false,
[ // GTA III
new serverClasses.removedWorldObjectData("fraightback04", toVector3(1229.88, -84.8012, 13.4004), 50.0), // Truck trailer in Easy Credit Autos dealership parking lot
new serverClasses.removedWorldObjectData("fraightback03", toVector3(1239.49, -68.0529, 11.6914), 50.0), // Truck trailer in Easy Credit Autos dealership parking lot
],
[ // GTA VC
],
[ // GTA SA
],
[ // GTA UG
],
[ // GTA IV
],
],
excludedGroundSnowModels: [
false,
[ // GTA III
],
[ // GTA VC
],
[ // GTA SA
],
[ // GTA UG
],
[ // GTA IV
],
],
interiorTemplates: [
false,
{ // GTA 3
},
{ // GTA VC
mall: new serverClasses.interiorTemplateData(toVector3(379.62, 1007.00, 19.22), 4),
malibu: new serverClasses.interiorTemplateData(toVector3(489.83, -76.49, 11.48), 17),
vcpd: new serverClasses.interiorTemplateData(toVector3(396.38, -472.96, 12.34), 12),
apartment: new serverClasses.interiorTemplateData(toVector3(26.67, -1328.89, 13.00), 11),
hotel: new serverClasses.interiorTemplateData(toVector3(228.53, -1277.12, 12.07), 1),
bikerBar: new serverClasses.interiorTemplateData(toVector3(-597.41, 651.84, 11.30), 11),
mansion: new serverClasses.interiorTemplateData(toVector3(-379.14, -551.65, 19.32), 2),
gunRange: new serverClasses.interiorTemplateData(toVector3(-667.79, 1217.51, 11.10), 10),
bank: new serverClasses.interiorTemplateData(toVector3(-894.52, -341.16, 13.45), 3),
stripClub: new serverClasses.interiorTemplateData(toVector3(97.53, -1472.06, 10.43), 5),
rosenberg: new serverClasses.interiorTemplateData(toVector3(120.82, -827.98, 10.62), 6),
arena: new serverClasses.interiorTemplateData(toVector3(-1080.49, 1331.16, 13.91), 15),
ghettoShack: new serverClasses.interiorTemplateData(toVector3(-962.72, 146.11, 9.395), 12),
},
{ // GTA SA
lspd: new serverClasses.interiorTemplateData(toVector3(247.113, 62.929, 1003.64), 2),
lvpd: new serverClasses.interiorTemplateData(toVector3(288.82, 167.39, 1007.17), 3),
sfpd: new serverClasses.interiorTemplateData(toVector3(246.40, 110.84, 1003.22), 10),
reeceBarberShop: new serverClasses.interiorTemplateData(toVector3(411.62, -21.43, 1001.80), 2),
fourDragons: new serverClasses.interiorTemplateData(toVector3(2016.26, 1017.77, 996.87), 10),
caligula: new serverClasses.interiorTemplateData(toVector3(2233.8, 1712.23, 1011.76), 1),
genericCasino: new serverClasses.interiorTemplateData(toVector3(1118.88, -10.27, 1002.08), 12),
cluckinBell: new serverClasses.interiorTemplateData(toVector3(365.71, -9.88, 1001.85), 9),
pizzaStack: new serverClasses.interiorTemplateData(toVector3(372.35, -131.65, 1001.49), 5),
burgerShot: new serverClasses.interiorTemplateData(toVector3(363.41, -74.57, 1001.50), 10),
tattooParlor: new serverClasses.interiorTemplateData(toVector3(-203.07, -24.16, 1002.27), 16),
bank: new serverClasses.interiorTemplateData(toVector3(2305.14, -16.274, 26.74), 1),
gas1: new serverClasses.interiorTemplateData(toVector3(-25.88, -185.86, 1003.54), 17),
gas2: new serverClasses.interiorTemplateData(toVector3(6.09, -29.27, 1003.54), 10),
gas3: new serverClasses.interiorTemplateData(toVector3(-30.94, -89.60, 1003.54), 18),
gas4: new serverClasses.interiorTemplateData(toVector3(-25.13, -139.06, 1003.54), 16),
gas5: new serverClasses.interiorTemplateData(toVector3( -27.31, -29.27, 1003.54), 4),
gas6: new serverClasses.interiorTemplateData(toVector3(-26.69, -55.71, 1003.54), 6),
shamal: new serverClasses.interiorTemplateData(toVector3(2.38, 33.10, 1199.84), 1),
andromeda: new serverClasses.interiorTemplateData(toVector3(315.85, 1024.49, 1949.79), 9),
airportTickets: new serverClasses.interiorTemplateData(toVector3(-1827.14, 7.20, 1061.14), 14),
airportBaggage: new serverClasses.interiorTemplateData(toVector3(-1855.56, 41.26, 1061.14), 14),
ammu1: new serverClasses.interiorTemplateData(toVector3(286.14, -40.64, 1001.56), 1),
ammu2: new serverClasses.interiorTemplateData(toVector3(286.80, -82.54, 1001.53), 4),
ammu3: new serverClasses.interiorTemplateData(toVector3(296.91, -108.07, 1001.56), 6),
ammu4: new serverClasses.interiorTemplateData(toVector3(314.82, -141.43, 999.66), 7),
ammu5: new serverClasses.interiorTemplateData(toVector3(316.52, -167.70, 999.66), 6),
ammuBooth: new serverClasses.interiorTemplateData(toVector3(302.29, -143.13, 1004.06), 7),
ammuRange: new serverClasses.interiorTemplateData(toVector3(280.79, -135.20, 1004.06), 7),
house1: new serverClasses.interiorTemplateData(toVector3(235.51, 1189.17, 1080.34), 3),
house2: new serverClasses.interiorTemplateData(toVector3(225.76, 1240.00, 1082.15), 2),
house3: new serverClasses.interiorTemplateData(toVector3(223.04, 1289.26, 1082.20), 1),
house4: new serverClasses.interiorTemplateData(toVector3(225.63, 1022.48, 1084.07), 7),
house5: new serverClasses.interiorTemplateData(toVector3(295.14, 1474.47, 1080.52), 15),
house6: new serverClasses.interiorTemplateData(toVector3(328.49, 1480.59, 1084.45), 15),
house7: new serverClasses.interiorTemplateData(toVector3(385.80, 1471.77, 1080.21), 15),
atrium: new serverClasses.interiorTemplateData(toVector3(1726.18, -1641.00, 20.23), 18),
crackPalace: new serverClasses.interiorTemplateData(toVector3(2,567.52, -1294.59, 1063.25), 2),
bloodbowlStadium: new serverClasses.interiorTemplateData(toVector3(-1394.20, 987.62, 1023.96), 15),
burningDesireHouse: new serverClasses.interiorTemplateData(toVector3(2338.32, -1180.61, 1027.98), 5),
furhbergerHouse: new serverClasses.interiorTemplateData(toVector3(2807.63, -1170.15, 1025.57), 8),
dillimoreGas: new serverClasses.interiorTemplateData(toVector3(664.19, -570.73, 16.34), 0),
donutShop: new serverClasses.interiorTemplateData(toVector3(376.99, -191.21, 1000.63), 17),
airport: new serverClasses.interiorTemplateData(toVector3(-1830.81, 16.83, 1061.14), 14),
jeffersonMotel: new serverClasses.interiorTemplateData(toVector3(2220.26, -1,148.01, 1025.80), 15),
kickstartStadium: new serverClasses.interiorTemplateData(toVector3(-1410.72, 1,591.16, 1052.53), 14),
libertyCity: new serverClasses.interiorTemplateData(toVector3(-750.80, 491.00, 1371.70), 1),
lsxBaggageReclaim: new serverClasses.interiorTemplateData(toVector3(-1870.80, 59.81, 1056.25), 14),
jizzy: new serverClasses.interiorTemplateData(toVector3(-2637.69, 1404.24, 906.46), 3),
rcBattlefield: new serverClasses.interiorTemplateData(toVector3(-1079.99, 1061.58, 1343.04), 10),
ryderHouse: new serverClasses.interiorTemplateData(toVector3(2451.77, -1699.80, 1013.51), 2),
sfGarage: new serverClasses.interiorTemplateData(toVector3(-2042.42, 178.59, 28.84), 1),
sweetHouse: new serverClasses.interiorTemplateData(toVector3(2535.83, -1,674.32, 1015.50), 1),
katieHouse: new serverClasses.interiorTemplateData(toVector3(267.22, 304.71, 999.14), 2),
helenaHouse: new serverClasses.interiorTemplateData(toVector3(292.44, 308.77, 999.14), 3),
welcomePump: new serverClasses.interiorTemplateData(toVector3(681.66, -453.32, -25.61), 1),
woozieApartment: new serverClasses.interiorTemplateData(toVector3(-2158.72, 641.29, 1052.38), 1),
eightTrackStadium: new serverClasses.interiorTemplateData(toVector3(-1395.96, -208.20, 1051.17), 7),
dirtBikeStadium: new serverClasses.interiorTemplateData(toVector3(-1424.93, -664.59, 1059.86), 4),
crackDen: new serverClasses.interiorTemplateData(toVector3(318.57, 1115.21, 1082.98), 5),
motelRoom: new serverClasses.interiorTemplateData(toVector3(2251.85, -1138.16, 1050.63), 9),
hashburyHouse: new serverClasses.interiorTemplateData(toVector3(2260.76, -1210.45, 1049.02), 10),
cjHouse: new serverClasses.interiorTemplateData(toVector3(2496.65, -1696.55, 1014.74), 3),
maddDoggMansion: new serverClasses.interiorTemplateData(toVector3(1299.14, -794.77, 1084.00), 5),
motelRoom2: new serverClasses.interiorTemplateData(toVector3(2262.83, -1137.71, 1050.63), 10),
safeHouse1: new serverClasses.interiorTemplateData(toVector3(2365.42, -1131.85, 1050.88), 8),
safeHouse2: new serverClasses.interiorTemplateData(toVector3(2324.33, -1144.79, 1050.71), 12),
zeroStore: new serverClasses.interiorTemplateData(toVector3(-2240.00, 131.00, 1035.40), 6),
brothel1: new serverClasses.interiorTemplateData(toVector3(940.65, -18.48, 1000.93), 3),
brothel2: new serverClasses.interiorTemplateData(toVector3(967.53, -53.02, 1001.12), 3),
brothel3: new serverClasses.interiorTemplateData(toVector3(744.27, 1437.25, 1102.70), 6),
prolapsStore: new serverClasses.interiorTemplateData(toVector3(207.35, -138.00, 1003.31), 3),
victimStore: new serverClasses.interiorTemplateData(toVector3(221.33, -6.61, 1005.19), 5),
suburbanStore: new serverClasses.interiorTemplateData(toVector3(203.81, -46.53, 1001.80), 1),
sexShop: new serverClasses.interiorTemplateData(toVector3(-106.72, -19.64, 1000.71), 3),
bincoStore: new serverClasses.interiorTemplateData(toVector3(207.54, -109.00, 1005.13), 15),
wardrobe: new serverClasses.interiorTemplateData(toVector3(255.71, -41.13, 1002.02), 14),
},
{ // GTA UG
},
{ // GTA IV
},
],
};
// -------------------------------------------------------------------------
function initConfigScript() {
logToConsole(LOG_DEBUG, "[Asshat.Config]: Initializing config script ...");
serverConfig = loadServerConfigFromGameAndPort(server.game, server.port);
applyConfigToServer(serverConfig);
logToConsole(LOG_DEBUG, "[Asshat.Config]: Config script initialized!");
}
// ---------------------------------------------------------------------------
function loadServerConfigFromGameAndPort(gameId, port) {
let dbConnection = connectToDatabase();
if(dbConnection) {
let dbQueryString = `SELECT * FROM svr_main WHERE svr_game = ${gameId} AND svr_port = ${port} LIMIT 1;`;
let dbQuery = queryDatabase(dbConnection, dbQueryString);
if(dbQuery) {
if(dbQuery.numRows > 0) {
let dbAssoc = fetchQueryAssoc(dbQuery);
let tempServerConfigData = new serverClasses.serverConfigData(dbAssoc);
freeDatabaseQuery(dbQuery);
return tempServerConfigData;
}
}
disconnectFromDatabase(dbConnection);
}
return false;
}
// ---------------------------------------------------------------------------
function loadServerConfigFromId(tempServerId) {
let dbConnection = connectToDatabase();
if(dbConnection) {
let dbQueryString = `SELECT * FROM svr_main WHERE svr_id = ${tempServerId} LIMIT 1;`;
let dbQuery = queryDatabase(dbConnection, dbQueryString);
if(dbQuery) {
if(dbQuery.numRows > 0) {
let dbAssoc = fetchQueryAssoc(dbQuery);
let tempServerConfigData = serverClasses.serverConfigData(dbAssoc);
freeDatabaseQuery(dbQuery);
return tempServerConfigData;
}
}
disconnectFromDatabase(dbConnection);
}
return false;
}
// -------------------------------------------------------------------------
function applyConfigToServer(tempServerConfig) {
server.name = tempServerConfig.name;
server.password = tempServerConfig.password;
gta.time.hour = tempServerConfig.hour;
gta.time.minute = tempServerConfig.minute;
gta.forceWeather(tempServerConfig.weather);
updateServerRules();
}
// -------------------------------------------------------------------------
function saveServerConfigToDatabase(serverConfigData) {
logToConsole(LOG_DEBUG, `[Asshat.Config]: Saving server ${serverConfigData.databaseId} configuration to database ...`);
let dbConnection = connectToDatabase();
if(dbConnection) {
let safeServerName = escapeDatabaseString(dbConnection, serverConfigData.name);
let safePassword = escapeDatabaseString(dbConnection, serverConfigData.password);
let dbQueryString = `UPDATE svr_main SET svr_logo=${boolToInt(serverConfigData.showLogo)}, svr_gui=${boolToInt(getServerConfig().useGUI)}, svr_password='${safePassword}', svr_name='${safeServerName}', svr_start_time_hour=${serverConfigData.hour}, svr_start_time_min=${serverConfigData.minute}, svr_start_weather=${serverConfigData.weather}, svr_start_snow_falling=${boolToInt(serverConfigData.fallingSnow)}, svr_start_snow_ground=${boolToInt(serverConfigData.groundSnow)}, svr_newchar_pos_x=${serverConfigData.newCharacter.spawnPosition.x}, svr_newchar_pos_y=${serverConfigData.newCharacter.spawnPosition.y}, svr_newchar_pos_z=${serverConfigData.newCharacter.spawnPosition.z}, svr_newchar_rot_z=${serverConfigData.newCharacter.spawnHeading}, svr_newchar_money=${serverConfigData.newCharacter.money}, svr_newchar_skin=${serverConfigData.newCharacter.skin}, svr_gui_col1_r=${serverConfigData.guiColour[0]}, svr_gui_col1_g=${serverConfigData.guiColour[1]}, svr_gui_col1_b=${serverConfigData.guiColour[2]} WHERE svr_id = ${serverConfigData.databaseId}`;
let dbQuery = queryDatabase(dbConnection, dbQueryString);
disconnectFromDatabase(dbConnection);
}
logToConsole(LOG_DEBUG, `[Asshat.Config]: Server ${serverConfigData.databaseId} configuration saved to database!`);
}
// -------------------------------------------------------------------------
function getServerConfig() {
return serverConfig;
}
// -------------------------------------------------------------------------
function getGameConfig() {
return gameConfig;
}
// -------------------------------------------------------------------------
function getGlobalConfig() {
return globalConfig;
}
// -------------------------------------------------------------------------
function getServerId() {
return getServerConfig().databaseId;
}
// -------------------------------------------------------------------------
function setTimeCommand(command, params, client) {
if(areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command));
return false;
}
let splitParams = params.split();
let hour = toInteger(splitParams[0]) || 0;
let minute = toInteger(splitParams[1]) || 0;
if(hour > 23 || hour < 0) {
messagePlayerError(client, "The hour must be between 0 and 23!");
return false;
}
if(minute > 59 || minute < 0) {
messagePlayerError(client, "The minute must be between 0 and 59!");
return false;
}
gta.time.hour = hour;
gta.time.minute = minute;
messageAdminAction(`${client.name} set the time to ${makeReadableTime(hour, minute)}`);
return true;
}
// ---------------------------------------------------------------------------
function setWeatherCommand(command, params, client) {
if(areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command));
return false;
}
let splitParams = params.split();
let weatherId = getWeatherFromParams(splitParams[0]);
if(!weatherId) {
messagePlayerError(client, `That weather ID or name is invalid!`);
return false;
}
gta.forceWeather(toInteger(weatherId));
messageAdminAction(`${client.name} set the weather to [#AAAAAA]${weatherNames[getServerGame()][toInteger(weatherId)]}`);
updateServerRules();
return true;
}
// ---------------------------------------------------------------------------
function setSnowingCommand(command, params, client) {
if(areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command));
return false;
}
let splitParams = params.split();
let fallingSnow = Number(splitParams[0]) || !getServerConfig().fallingSnow;
let groundSnow = Number(splitParams[1]) || !getServerConfig().groundSnow;
fallingSnow = intToBool(toInteger(fallingSnow));
groundSnow = intToBool(toInteger(groundSnow));
getServerConfig().fallingSnow = fallingSnow;
getServerConfig().groundSnow = groundSnow;
updatePlayerSnowState(null);
messageAdminAction(`${client.name} turned falling snow ${getBoolRedGreenInlineColour(fallingSnow)}${getOnOffFromBool(fallingSnow)} [#FFFFFF]and ground snow ${getBoolRedGreenInlineColour(groundSnow)}${getOnOffFromBool(groundSnow)}`);
updateServerRules();
return true;
}
// ---------------------------------------------------------------------------
function toggleServerLogoCommand(command, params, client) {
getServerConfig().useLogo = !getServerConfig().useLogo;
updatePlayerShowLogoState(null, getServerConfig().useLogo);
messageAdminAction(`${client.name} turned the server logo image ${getBoolRedGreenInlineColour(getServerConfig().useLogo)}${toUpperCase(getOnOffFromBool(getServerConfig().useLogo))}`);
updateServerRules();
return true;
}
// ---------------------------------------------------------------------------
function toggleServerGUICommand(command, params, client) {
getServerConfig().useGUI = !getServerConfig().useGUI;
messageAdminAction(`${client.name} turned GUI ${toLowerCase(getOnOffFromBool(getServerConfig().useGUI))} for this server`);
updateServerRules();
return true;
}
// -------------------------------------------------------------------------