Offload colour replace to client
This commit is contained in:
@@ -1,367 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: colour.js
|
||||
// DESC: Provides colours, functions and usage
|
||||
// TYPE: Server (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
let serverColours = {
|
||||
hex: {
|
||||
byType: {
|
||||
talkMessage: "C8C8C8",
|
||||
shoutMessage: "FFFFC8",
|
||||
whisperMessage: "828282",
|
||||
doActionMessage: "B19CD9",
|
||||
meActionMessage: "B19CD9",
|
||||
errorMessage: "ED4337",
|
||||
syntaxMessage: "C8C8C8",
|
||||
normalMessage: "FFFFFF",
|
||||
alertMessage: "FFFF00",
|
||||
successMessage: "00B400",
|
||||
clanChatMessage: "00BE00",
|
||||
businessBlue: "0099FF",
|
||||
houseGreen: "11CC11",
|
||||
clanOrange: "FF9900",
|
||||
vehiclePurple: "960096",
|
||||
jobYellow: "FFFF00",
|
||||
},
|
||||
byName: {
|
||||
white: "FFFFFF",
|
||||
black: "000000",
|
||||
red: "FF0000",
|
||||
yellow: "FFFF00",
|
||||
royalBlue: "0000FF",
|
||||
teal: "00FFFF",
|
||||
orange: "FF8000",
|
||||
softRed: "ED4337",
|
||||
softGreen: "32CD32",
|
||||
lightPurple: "960096",
|
||||
lightGrey: "C8C8C8",
|
||||
mediumGrey: "969696",
|
||||
darkGrey: "404040",
|
||||
policeBlue: "3250C8",
|
||||
medicPink: "DB7093",
|
||||
firefighterRed: "CD3C3C",
|
||||
busDriverGreen: "32A032",
|
||||
taxiDriverYellow: "F0E664",
|
||||
deliveryPurple: "B19CD9",
|
||||
civilianWhite: "C8C8C8",
|
||||
burntYellow: "D2D200",
|
||||
burntOrange: "D27800",
|
||||
bankGreen: "00B400",
|
||||
softYellow: "EAC67E",
|
||||
businessBlue: "0099FF",
|
||||
houseGreen: "11CC11",
|
||||
clanOrange: "FF9900",
|
||||
vehiclePurple: "960096",
|
||||
jobYellow: "FFFF00",
|
||||
},
|
||||
},
|
||||
|
||||
byType: {
|
||||
talkMessage: toColour(200, 200, 200),
|
||||
shoutMessage: toColour(255, 255, 200),
|
||||
whisperMessage: toColour(130, 130, 130),
|
||||
doActionMessage: toColour(177, 156, 217, 255),
|
||||
meActionMessage: toColour(177, 156, 217, 255),
|
||||
errorMessage: toColour(237, 67, 55, 255),
|
||||
syntaxMessage: toColour(200, 200, 200, 255),
|
||||
normalMessage: toColour(255, 255, 255, 255),
|
||||
alertMessage: toColour(255, 255, 0, 255),
|
||||
successMessage: toColour(0, 180, 0, 255),
|
||||
clanChatMessage: toColour(0, 190, 0, 255),
|
||||
},
|
||||
byName: {
|
||||
white: toColour(255, 255, 255, 255),
|
||||
black: toColour(0, 0, 0, 255),
|
||||
red: toColour(255, 0, 0, 255),
|
||||
yellow: toColour(255, 255, 0, 255),
|
||||
royalBlue: toColour(0, 0, 255, 255),
|
||||
teal: toColour(0, 255, 255, 255),
|
||||
orange: toColour(255, 128, 0, 255),
|
||||
softRed: toColour(205, 60, 60, 255),
|
||||
softGreen: toColour(50, 205, 50, 255),
|
||||
lightPurple: toColour(150, 0, 150, 255),
|
||||
lightGrey: toColour(200, 200, 200, 255),
|
||||
mediumGrey: toColour(150, 150, 150, 255),
|
||||
darkGrey: toColour(64, 64, 64, 255),
|
||||
policeBlue: toColour(50, 80, 200, 255),
|
||||
medicPink: toColour(219, 112, 147, 255),
|
||||
firefighterRed: toColour(205, 60, 60, 255),
|
||||
busDriverGreen: toColour(50, 160, 50, 255),
|
||||
taxiDriverYellow: toColour(240, 230, 100, 255),
|
||||
deliveryPurple: toColour(177, 156, 217, 255),
|
||||
civilianWhite: toColour(200, 200, 200, 255),
|
||||
burntYellow: toColour(210, 210, 0, 255),
|
||||
burntOrange: toColour(210, 120, 0, 255),
|
||||
bankGreen: toColour(0, 150, 0, 255),
|
||||
softYellow: toColour(234, 198, 126, 255),
|
||||
businessBlue: toColour(0, 153, 255, 255),
|
||||
houseGreen: toColour(17, 204, 17, 255),
|
||||
clanOrange: toColour(255, 153, 0, 255),
|
||||
},
|
||||
};
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getServerColours() {
|
||||
return serverColours;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getColourByType(typeName) {
|
||||
return getServerColours().byType[typeName];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getColourByName(colourName) {
|
||||
return getServerColours().byName[colourName];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getHexColourByName(colourName) {
|
||||
//let rgbaColour = getServerColours().byName[colourName];
|
||||
//let rgbaArray = rgbaArrayFromToColour(rgbaColour);
|
||||
//return rgbToHex(rgbaArray[0], rgbaArray[1], rgbaArray[2]);
|
||||
|
||||
return `#${getServerColours().hex.byName[colourName]}`;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getHexColourByType(colourName) {
|
||||
//let rgbaColour = getServerColours().byType[colourName];
|
||||
//let rgbaArray = rgbaArrayFromToColour(rgbaColour);
|
||||
//return rgbToHex(rgbaArray[0], rgbaArray[1], rgbaArray[2]);
|
||||
|
||||
return `#${getServerColours().hex.byType[colourName]}`;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerColour(client) {
|
||||
if(getPlayerData(client) != false) {
|
||||
if(!isPlayerLoggedIn(client)) {
|
||||
return getColourByName("darkGrey");
|
||||
} else {
|
||||
if(isPlayerWorking(client)) {
|
||||
return getJobData(getJobIndexFromDatabaseId(getPlayerCurrentSubAccount(client).job)).colour;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return getColourByName("civilianWhite");
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets the red/green colour depending on bool (red = false, green = true) for inline use in chatbox messages
|
||||
*
|
||||
* @param {Boolean} boolValue The boolean value
|
||||
* @return {String} Red or green inline HEX colour string
|
||||
*
|
||||
*/
|
||||
function getBoolRedGreenInlineColour(boolValue) {
|
||||
return (!boolValue) ? "{softRed}" : "{softGreen}";
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets an array of RGB colour values from a HEX colour string
|
||||
*
|
||||
* @param {String} hexColour Hex colour string
|
||||
* @return {Array} 3-slot array where each slot is an RGB colour value
|
||||
*
|
||||
*/
|
||||
function hexToRgb(h) {
|
||||
return [
|
||||
'0x'+h[1]+h[2]|0,
|
||||
'0x'+h[3]+h[4]|0,
|
||||
'0x'+h[5]+h[6]|0
|
||||
];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets a HEX colour string from RGB values, without brackets (example: #FFFFFF)
|
||||
*
|
||||
* @param {Number} red Red RGB value
|
||||
* @param {Number} green Green RGB value
|
||||
* @param {Number} blue Blue RGB value
|
||||
* @return {String} HEX colour string
|
||||
*
|
||||
*/
|
||||
function rgbToHex(r, g, b) {
|
||||
return "#"+((1<<24)+(r<<16)+(g<<8)+ b).toString(16).slice(1);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets the current colour for a player (affected by job and status)
|
||||
*
|
||||
* @param {Client} client Player client
|
||||
* @return {Number} Colour integer
|
||||
*
|
||||
*/
|
||||
function getClientChatColour(client) {
|
||||
let tempJob = getPlayerCurrentSubAccount(client).job;
|
||||
if(tempJob != -1) {
|
||||
if(getPlayerData(client).isWorking) {
|
||||
return getJobData(tempJob).jobColour;
|
||||
}
|
||||
}
|
||||
return getColourByName("white");
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets a toColour-created colour integer with random RGB values (alpha is always 255)
|
||||
*
|
||||
* @return {Number} Colour integer
|
||||
*
|
||||
*/
|
||||
function getRandomRGB() {
|
||||
return toColour.apply(null, [
|
||||
getRandom(0, 255),
|
||||
getRandom(0, 255),
|
||||
getRandom(0, 255),
|
||||
255
|
||||
]);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets a hex formatting colour by name for use inline in chatbox messages (example: [#FFFFFF]).
|
||||
*
|
||||
* @param {String} colourName - Colour name
|
||||
* @return {String} HEX-formatted colour string with brackets
|
||||
*
|
||||
*/
|
||||
function getInlineChatColourByName(colourName) {
|
||||
return `{${colourName}}`;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets a hex formatting colour by type for use inline in chatbox messages (example: [#FFFFFF]).
|
||||
*
|
||||
* @param {String} colourName - Colour type
|
||||
* @return {String} HEX-formatted colour string with brackets
|
||||
*
|
||||
*/
|
||||
function getInlineChatColourByType(colourName) {
|
||||
return `{${colourName}}`;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* Gets an array of RGBA colour values from a toColour integer.
|
||||
*
|
||||
* @param {Number} colour - Colour integer created by toColour
|
||||
* @return {Array} 4-slot array where each slot is an RGBA colour value
|
||||
*
|
||||
*/
|
||||
function rgbaArrayFromToColour(colour) {
|
||||
//return [
|
||||
// (colour >> 24) & 0xFF, // red
|
||||
// (colour >> 16) & 0xFF,
|
||||
// (colour >> 8) & 0xFF,
|
||||
// colour & 0xFF // alpha
|
||||
//];
|
||||
return [
|
||||
(colour >> 16) & 0xFF, // red
|
||||
(colour >> 8) & 0xFF,
|
||||
colour & 0xFF,
|
||||
(colour >> 24) & 0xFF// alpha
|
||||
];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function hexFromToColour(colour) {
|
||||
let rgba = rgbaArrayFromToColour(colour);
|
||||
return rgbToHex(rgba[0], rgba[1], rgba[2]);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function replaceColoursInMessage(messageText) {
|
||||
if(messageText == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
let tempFind = `{RESETCOLOUR}`;
|
||||
let tempRegex = new RegExp(tempFind, 'g');
|
||||
messageText = messageText.replace(tempRegex, "[/#]");
|
||||
|
||||
tempFind = `{ALTCOLOUR}`;
|
||||
tempRegex = new RegExp(tempFind, 'g');
|
||||
messageText = messageText.replace(tempRegex, "[#C8C8C8]");
|
||||
|
||||
tempFind = `{MAINCOLOUR}`;
|
||||
tempRegex = new RegExp(tempFind, 'g');
|
||||
messageText = messageText.replace(tempRegex, "[#FFFFFF]");
|
||||
|
||||
for(let i in getServerColours().hex.byName) {
|
||||
let find = `{${i}}`;
|
||||
let re = new RegExp(find, 'g');
|
||||
messageText = messageText.replace(re, `[#${getServerColours().hex.byName[i]}]`);
|
||||
}
|
||||
|
||||
for(let i in getServerColours().hex.byType) {
|
||||
let find = `{${i}}`;
|
||||
let re = new RegExp(find, 'g');
|
||||
messageText = messageText.replace(re, `[#${getServerColours().hex.byType[i]}]`);
|
||||
}
|
||||
|
||||
return messageText;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function removeColoursInMessage(messageText) {
|
||||
if(messageText == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
let tempFind = `{RESETCOLOUR}`;
|
||||
let tempRegex = new RegExp(tempFind, 'g');
|
||||
messageText = messageText.replace(tempRegex, "");
|
||||
|
||||
tempFind = `{ALTCOLOUR}`;
|
||||
tempRegex = new RegExp(tempFind, 'g');
|
||||
messageText = messageText.replace(tempRegex, "");
|
||||
|
||||
tempFind = `{MAINCOLOUR}`;
|
||||
tempRegex = new RegExp(tempFind, 'g');
|
||||
messageText = messageText.replace(tempRegex, "");
|
||||
|
||||
for(let i in getServerColours().hex.byName) {
|
||||
let find = `{${i}}`;
|
||||
let re = new RegExp(find, 'g');
|
||||
messageText = messageText.replace(re, "");
|
||||
}
|
||||
|
||||
for(let i in getServerColours().hex.byType) {
|
||||
let find = `{${i}}`;
|
||||
let re = new RegExp(find, 'g');
|
||||
messageText = messageText.replace(re, "");
|
||||
}
|
||||
|
||||
return messageText;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -34,8 +34,6 @@ function getLocaleString(client, stringName, ...args) {
|
||||
submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`);
|
||||
}
|
||||
|
||||
tempString = replaceColoursInMessage(tempString);
|
||||
|
||||
for(let i = 1; i <= args.length; i++) {
|
||||
tempString = tempString.replace(`{${i}}`, args[i-1]);
|
||||
}
|
||||
@@ -47,7 +45,6 @@ function getLocaleString(client, stringName, ...args) {
|
||||
|
||||
function getGroupedLocaleString(client, stringName, index, ...args) {
|
||||
let tempString = getRawGroupedLocaleString(stringName, getPlayerData(client).locale, index);
|
||||
tempString = replaceColoursInMessage(tempString);
|
||||
|
||||
for(let i = 1; i <= args.length; i++) {
|
||||
tempString = tempString.replace(`{${i}}`, args[i-1]);
|
||||
|
||||
@@ -33,19 +33,19 @@ function messageAdminAction(messageText) {
|
||||
*
|
||||
*/
|
||||
function messagePlayerNormal(client, messageText, colour = COLOUR_WHITE) {
|
||||
if(isConsole(client) || client == null) {
|
||||
logToConsole(LOG_INFO, `${removeColoursInMessage(messageText)}`);
|
||||
}
|
||||
//if(isConsole(client) || client == null) {
|
||||
// logToConsole(LOG_INFO, `${removeColoursInMessage(messageText)}`);
|
||||
//}
|
||||
|
||||
sendChatBoxMessageToPlayer(client, `${replaceColoursInMessage(messageText)}`, colour);
|
||||
sendChatBoxMessageToPlayer(client, messageText, colour);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function messageAdmins(messageText, colour = getColourByName("softRed")) {
|
||||
let plainMessage = removeColoursInMessage(messageText);
|
||||
console.warn(`🛡️ ${plainMessage}`);
|
||||
//let plainMessage = removeColoursInMessage(messageText);
|
||||
//console.warn(`🛡️ ${plainMessage}`);
|
||||
|
||||
let clients = getClients();
|
||||
for(let i in clients) {
|
||||
@@ -54,9 +54,9 @@ function messageAdmins(messageText, colour = getColourByName("softRed")) {
|
||||
}
|
||||
}
|
||||
|
||||
if(getServerConfig().discordConfig.sendAdminEvents) {
|
||||
messageDiscordAdminChannel(plainMessage);
|
||||
}
|
||||
//if(getServerConfig().discordConfig.sendAdminEvents) {
|
||||
// messageDiscordAdminChannel(plainMessage);
|
||||
//}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -236,17 +236,6 @@ function clearChatBox(client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function replaceEmojiInString(messageString) {
|
||||
for(let i in emojiReplaceString) {
|
||||
while(messageString.indexOf(emojiReplaceString[i][0]) != -1) {
|
||||
messageString = messageString.replace(emojiReplaceString[i][0], emojiReplaceString[i][1]);
|
||||
}
|
||||
}
|
||||
return messageString;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function messagePlayerHelpContent(client, messageString) {
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}${messageString}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user