Add optional chatbox timestamps

This commit is contained in:
Vortrex
2022-06-27 09:35:58 -05:00
parent acd03cc124
commit e017313b58
5 changed files with 88 additions and 41 deletions

View File

@@ -9,6 +9,7 @@
// =========================================================================== // ===========================================================================
let chatBoxTimeStampsEnabled = false;
let chatBoxHistory = []; let chatBoxHistory = [];
let bottomMessageIndex = 0; let bottomMessageIndex = 0;
let maxChatBoxHistory = 500; let maxChatBoxHistory = 500;
@@ -56,12 +57,21 @@ function receiveChatBoxMessageFromServer(messageString, colour) {
let colouredString = replaceColoursInMessage(messageString); let colouredString = replaceColoursInMessage(messageString);
let date = new Date();
let timeStampText = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
logToConsole(LOG_DEBUG, `[VRR.ChatBox]: Changed colours in string: ${colouredString}`); logToConsole(LOG_DEBUG, `[VRR.ChatBox]: Changed colours in string: ${colouredString}`);
addToChatBoxHistory(colouredString, colour); addToChatBoxHistory(colouredString, colour, timeStampText);
//if(bottomMessageIndex >= chatBoxHistory.length-1) { //if(bottomMessageIndex >= chatBoxHistory.length-1) {
message(colouredString, colour);
bottomMessageIndex = chatBoxHistory.length-1; let outputText = colouredString;
if (chatBoxTimeStampsEnabled) {
outputText = `{TIMESTAMPCOLOUR}[${timeStampText}]{MAINCOLOUR} ${colouredString}`;
}
message(outputText, colour);
bottomMessageIndex = chatBoxHistory.length - 1;
//} //}
chatLastUse = getCurrentUnixTimestamp(); chatLastUse = getCurrentUnixTimestamp();
@@ -75,8 +85,15 @@ function setChatScrollLines(amount) {
// =========================================================================== // ===========================================================================
function setChatBoxTimeStampsState(state) {
chatBoxTimeStampsEnabled = state;
updateChatBox();
}
// ===========================================================================
function setChatAutoHideDelay(delay) { function setChatAutoHideDelay(delay) {
chatAutoHideDelay = delay*1000; chatAutoHideDelay = delay * 1000;
} }
// =========================================================================== // ===========================================================================
@@ -88,8 +105,8 @@ function addToChatBoxHistory(messageString, colour) {
// =========================================================================== // ===========================================================================
function chatBoxScrollUp() { function chatBoxScrollUp() {
if(bottomMessageIndex > maxChatBoxLines) { if (bottomMessageIndex > maxChatBoxLines) {
bottomMessageIndex = bottomMessageIndex-scrollAmount; bottomMessageIndex = bottomMessageIndex - scrollAmount;
updateChatBox(); updateChatBox();
} }
} }
@@ -97,8 +114,8 @@ function chatBoxScrollUp() {
// =========================================================================== // ===========================================================================
function chatBoxScrollDown() { function chatBoxScrollDown() {
if(bottomMessageIndex < chatBoxHistory.length-1) { if (bottomMessageIndex < chatBoxHistory.length - 1) {
bottomMessageIndex = bottomMessageIndex+scrollAmount; bottomMessageIndex = bottomMessageIndex + scrollAmount;
updateChatBox(); updateChatBox();
} }
} }
@@ -106,7 +123,7 @@ function chatBoxScrollDown() {
// =========================================================================== // ===========================================================================
function clearChatBox() { function clearChatBox() {
for(let i = 0 ; i <= maxChatBoxLines ; i++) { for (let i = 0; i <= maxChatBoxLines; i++) {
message("", COLOUR_WHITE); message("", COLOUR_WHITE);
} }
} }
@@ -115,9 +132,14 @@ function clearChatBox() {
function updateChatBox() { function updateChatBox() {
clearChatBox(); clearChatBox();
for(let i = bottomMessageIndex-maxChatBoxLines ; i <= bottomMessageIndex ; i++) { for (let i = bottomMessageIndex - maxChatBoxLines; i <= bottomMessageIndex; i++) {
if(typeof chatBoxHistory[i] != "undefined") { if (typeof chatBoxHistory[i] != "undefined") {
message(chatBoxHistory[i][0], chatBoxHistory[i][1]); let outputText = chatBoxHistory[i][0];
if (chatBoxTimeStampsEnabled) {
outputText = `{TIMESTAMPCOLOUR}[${timeStampText}]{MAINCOLOUR} ${chatBoxHistory[i][0]}`;
}
message(outputText, chatBoxHistory[i][1]);
} else { } else {
message("", COLOUR_WHITE); message("", COLOUR_WHITE);
} }
@@ -129,18 +151,18 @@ function updateChatBox() {
function processMouseWheelForChatBox(mouseId, deltaCoordinates, flipped) { function processMouseWheelForChatBox(mouseId, deltaCoordinates, flipped) {
// There isn't a way to detect whether chat input is active, but mouse cursor is forced shown when typing so ¯\_(ツ)_/¯ // There isn't a way to detect whether chat input is active, but mouse cursor is forced shown when typing so ¯\_(ツ)_/¯
if(!gui.cursorEnabled) { if (!gui.cursorEnabled) {
return false; return false;
} }
if(!flipped) { if (!flipped) {
if(deltaCoordinates.y > 0) { if (deltaCoordinates.y > 0) {
chatBoxScrollUp(); chatBoxScrollUp();
} else { } else {
chatBoxScrollDown(); chatBoxScrollDown();
} }
} else { } else {
if(deltaCoordinates.y > 0) { if (deltaCoordinates.y > 0) {
chatBoxScrollDown(); chatBoxScrollDown();
} else { } else {
chatBoxScrollUp(); chatBoxScrollUp();
@@ -154,16 +176,16 @@ function checkChatAutoHide() {
return false; return false;
// Make sure chat input isn't active // Make sure chat input isn't active
if(gui.cursorEnabled) { if (gui.cursorEnabled) {
return false; return false;
} }
// Don't process auto-hide if it's disabled // Don't process auto-hide if it's disabled
if(chatAutoHideDelay == 0) { if (chatAutoHideDelay == 0) {
return false; return false;
} }
if(getCurrentUnixTimestamp()-chatLastUse >= chatAutoHideDelay) { if (getCurrentUnixTimestamp() - chatLastUse >= chatAutoHideDelay) {
setChatWindowEnabled(false); setChatWindowEnabled(false);
} }
} }

View File

@@ -18,10 +18,11 @@ function initServerScript() {
function addAllNetworkHandlers() { function addAllNetworkHandlers() {
logToConsole(LOG_DEBUG, "[VRR.Server]: Adding network handlers ..."); logToConsole(LOG_DEBUG, "[VRR.Server]: Adding network handlers ...");
// Chat history // Chat Box
addNetworkEventHandler("m", receiveChatBoxMessageFromServer); // Not prefixed with VRR to make it as small as possible addNetworkEventHandler("m", receiveChatBoxMessageFromServer); // Not prefixed with VRR to make it as small as possible
addNetworkEventHandler("vrr.chatScrollLines", setChatScrollLines); addNetworkEventHandler("vrr.chatScrollLines", setChatScrollLines);
addNetworkEventHandler("vrr.chatAutoHideDelay", setChatAutoHideDelay); addNetworkEventHandler("vrr.chatAutoHideDelay", setChatAutoHideDelay);
addNetworkEventHandler("vrr.chatTimeStamps", setChatBoxTimeStampsState);
// Messaging (like textdraws and stuff) // Messaging (like textdraws and stuff)
addNetworkEventHandler("vrr.smallGameMessage", showSmallGameMessage); addNetworkEventHandler("vrr.smallGameMessage", showSmallGameMessage);

View File

@@ -387,6 +387,23 @@ function toggleAccountTwoFactorAuthCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function toggleChatBoxTimeStampsCommand(command, params, client) {
let flagValue = getAccountSettingsFlagValue("ChatBoxTimestamps");
if (hasBitFlag(getPlayerData(client).accountData.settings, flagValue)) {
getPlayerData(client).accountData.settings = removeBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerSuccess(client, getLocaleString(client, "ChatBoxTimestampsToggle", `{softRed}${toUpperCase(getLocaleString(client, "Off"))}`));
sendPlayerChatBoxTimeStampsState(client, false);
} else {
getPlayerData(client).accountData.settings = addBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerSuccess(client, getLocaleString(client, "ChatBoxTimestampsToggle", `{softGreen}${toUpperCase(getLocaleString(client, "On"))}`));
sendPlayerChatBoxTimeStampsState(client, false);
}
return true;
}
// ===========================================================================
function registerCommand(command, params, client) { function registerCommand(command, params, client) {
if (isPlayerRegistered(client)) { if (isPlayerRegistered(client)) {
messagePlayerError(client, getLocaleString(client, "AccountNameAlreadyRegistered")); messagePlayerError(client, getLocaleString(client, "AccountNameAlreadyRegistered"));

View File

@@ -117,6 +117,7 @@ let serverBitFlagKeys = {
"NoKeyBinds", "NoKeyBinds",
"NoRandomTips", "NoRandomTips",
"NoActionTips", "NoActionTips",
"ChatBoxTimestamps",
], ],
// Not going to be used. Use trigger, condition, and response stuff in trigger.js // Not going to be used. Use trigger, condition, and response stuff in trigger.js
@@ -243,25 +244,25 @@ function initBitFlagScript() {
// =========================================================================== // ===========================================================================
function doesPlayerHaveStaffPermission(client, requiredFlags) { function doesPlayerHaveStaffPermission(client, requiredFlags) {
if(isConsole(client)) { if (isConsole(client)) {
return true; return true;
} }
if(requiredFlags == getStaffFlagValue("None")) { if (requiredFlags == getStaffFlagValue("None")) {
return true; return true;
} }
let staffFlags = 0; let staffFlags = 0;
if(getPlayerData(client)) { if (getPlayerData(client)) {
staffFlags = getPlayerData(client).accountData.flags.admin; staffFlags = getPlayerData(client).accountData.flags.admin;
} }
// -1 is automatic override (having -1 for staff flags is basically god mode admin level) // -1 is automatic override (having -1 for staff flags is basically god mode admin level)
if(staffFlags == getStaffFlagValue("All")) { if (staffFlags == getStaffFlagValue("All")) {
return true; return true;
} }
if(hasBitFlag(staffFlags, requiredFlags)) { if (hasBitFlag(staffFlags, requiredFlags)) {
return true; return true;
} }
@@ -271,15 +272,15 @@ function doesPlayerHaveStaffPermission(client, requiredFlags) {
// =========================================================================== // ===========================================================================
function doesPlayerHaveClanPermission(client, requiredFlags) { function doesPlayerHaveClanPermission(client, requiredFlags) {
if(isConsole(client)) { if (isConsole(client)) {
return true; return true;
} }
if(requiredFlags == getClanFlagValue("None")) { if (requiredFlags == getClanFlagValue("None")) {
return true; return true;
} }
if(doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageClans"))) { if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageClans"))) {
return true; return true;
} }
@@ -287,11 +288,11 @@ function doesPlayerHaveClanPermission(client, requiredFlags) {
clanFlags = getPlayerCurrentSubAccount(client).clanFlags | getClanRankFlags(getPlayerCurrentSubAccount(client).clanRank); clanFlags = getPlayerCurrentSubAccount(client).clanFlags | getClanRankFlags(getPlayerCurrentSubAccount(client).clanRank);
// -1 is automatic override (having -1 for staff flags is basically god mode admin level) // -1 is automatic override (having -1 for staff flags is basically god mode admin level)
if(clanFlags == getClanFlagValue("All")) { if (clanFlags == getClanFlagValue("All")) {
return true; return true;
} }
if(hasBitFlag(clanFlags, requiredFlags)) { if (hasBitFlag(clanFlags, requiredFlags)) {
return true; return true;
} }
@@ -301,11 +302,11 @@ function doesPlayerHaveClanPermission(client, requiredFlags) {
// =========================================================================== // ===========================================================================
function getStaffFlagValue(flagName) { function getStaffFlagValue(flagName) {
if(flagName == "All") { if (flagName == "All") {
return -1; return -1;
} }
if(typeof serverBitFlags.staffFlags[flagName] == "undefined") { if (typeof serverBitFlags.staffFlags[flagName] == "undefined") {
return false; return false;
} }
@@ -315,11 +316,11 @@ function getStaffFlagValue(flagName) {
// =========================================================================== // ===========================================================================
function getClanFlagValue(flagName) { function getClanFlagValue(flagName) {
if(flagName == "All") { if (flagName == "All") {
return -1; return -1;
} }
if(typeof getServerBitFlags().clanFlags[flagName] == "undefined") { if (typeof getServerBitFlags().clanFlags[flagName] == "undefined") {
return false; return false;
} }
@@ -329,11 +330,11 @@ function getClanFlagValue(flagName) {
// =========================================================================== // ===========================================================================
function getAccountSettingsFlagValue(flagName) { function getAccountSettingsFlagValue(flagName) {
if(flagName == "All") { if (flagName == "All") {
return -1; return -1;
} }
if(typeof serverBitFlags.accountSettingsFlags[flagName] == "undefined") { if (typeof serverBitFlags.accountSettingsFlags[flagName] == "undefined") {
return false; return false;
} }
@@ -343,11 +344,11 @@ function getAccountSettingsFlagValue(flagName) {
// =========================================================================== // ===========================================================================
function getModerationFlagValue(flagName) { function getModerationFlagValue(flagName) {
if(flagName == "All") { if (flagName == "All") {
return -1; return -1;
} }
if(typeof serverBitFlags.moderationFlags[flagName] == "undefined") { if (typeof serverBitFlags.moderationFlags[flagName] == "undefined") {
return false; return false;
} }
@@ -357,7 +358,7 @@ function getModerationFlagValue(flagName) {
// =========================================================================== // ===========================================================================
function givePlayerStaffFlag(client, flagName) { function givePlayerStaffFlag(client, flagName) {
if(!getStaffFlagValue(flagName)) { if (!getStaffFlagValue(flagName)) {
return false; return false;
} }
@@ -369,7 +370,7 @@ function givePlayerStaffFlag(client, flagName) {
function takePlayerStaffFlag(client, flagName) { function takePlayerStaffFlag(client, flagName) {
let flagValue = getStaffFlagValue(flagName); let flagValue = getStaffFlagValue(flagName);
if(!flagValue) { if (!flagValue) {
return false; return false;
} }
@@ -380,7 +381,7 @@ function takePlayerStaffFlag(client, flagName) {
// =========================================================================== // ===========================================================================
function takePlayerStaffFlag(client, flagName) { function takePlayerStaffFlag(client, flagName) {
if(!getStaffFlagValue(flagName)) { if (!getStaffFlagValue(flagName)) {
return false; return false;
} }

View File

@@ -1237,4 +1237,10 @@ function clearLocalPickupsForPlayer(client) {
sendNetworkEventToPlayer(client, "vrr.clearPickups"); sendNetworkEventToPlayer(client, "vrr.clearPickups");
} }
// ==========================================================================
function sendPlayerChatBoxTimeStampsState(client, state) {
sendNetworkEventToPlayer(client, "vrr.chatTimeStamps", state);
}
// ========================================================================== // ==========================================================================