// ==UserScript==
// @name GameChatSaver
// @namespace http://tampermonkey.net/
// @version 1.0.0
// @description Script created for saving the team/public chat for a game into an HTML file. ***Make sure to load chat before using button. Once chat is loaded, click "save game chat" and select which chat and a name
// @author JustinR17
// @match https://www.warzone.com/MultiPlayer?GameID=*
// @require http://cdn.jsdelivr.net/g/filesaver.js
// @require
// @downloadURL https://update.greasyfork.icu/scripts/390263/GameChatSaver.user.js
// @updateURL https://update.greasyfork.icu/scripts/390263/GameChatSaver.meta.js
// ==/UserScript==
function saveFile(value, name) {
var fileBlob = new Blob([value], { type: "text/plain;charset=utf-8" });
saveAs(fileBlob, name + ".html");
}
function startFile(chat) {
return "
" + chat + "";
}
function endFile() {
return "
";
}
function formatMessage(curMsg) {
var playerCol = curMsg.querySelectorAll("div[id^='ujs_LeftCol']")[0];
var messageCol = curMsg.querySelectorAll("div[id^='ujs_MessageLabel']")[1];
var fgColour = messageCol.style.color;
var bgColour = curMsg.querySelectorAll("div[id^='ujs_RightCol']")[1].style.borderImageSource.slice(-16).substring(0, 6);
if (bgColour == "Bubble") {
bgColour = "white";
}
var playerName = playerCol.querySelectorAll("div[id^='ujs_PlayerNameLabel']")[0].innerText;
var playerDate = playerCol.querySelectorAll("div[id^='ujs_TimestampLabel']")[0].innerText;
if (playerName == "Player Name") {
playerName = "";
}
var output = "
";
output += playerName + " " + playerDate + "
"
output += messageCol.innerText + "
"
return output;
}
function formatTurn(curMsg) {
var output = "
";
var turn = curMsg.querySelectorAll("div[id^='ujs_TurnLabel']")[0].innerText;
output += turn + "
"
return output;
}
function doSave() {
var whichChat = prompt("Type 'team' for team chat and 'public' for public chat", "team");
if (whichChat == null) {
return;
}
var chatFinal = prompt("Enter a file name: ", document.getElementById("ujs_GameNameLabel").innerText + "-TeamChat");
if (chatFinal == null) {
return;
}
var date = new Date();
chatFinal = date.getFullYear() + ("0" + date.getMonth().toString()).slice(-2) + ("0" + date.getDay().toString()).slice(-2) + "-" + chatFinal;
var output = startFile(chatFinal);
var chat = document.getElementById("ujs_Content_6");
if (whichChat.toLowerCase() == "team") {
chat = document.getElementById("ujs_Content_6");
} else if (whichChat.toLowerCase() == "public") {
chat = document.getElementById("ujs_Content_5");
} else {
return;
}
var childNodes = chat.childNodes;
for (var i = 0; i < chat.childNodes.length; i++) {
var curMsg = childNodes[i];
if (curMsg.id.indexOf("ujs_CenteredContainer") != -1) {
continue;
} else if (curMsg.id.indexOf("ujs_ChatTurnSeperator") != -1) {
output += formatTurn(curMsg);
} else {
output += formatMessage(curMsg);
}
}
output += endFile();
saveFile(output, chatFinal);
}
function getModalButton() {
return '';
}
function initiateSave() {
var modalButton = document.createElement("div");
modalButton.innerHTML = getModalButton();
var navBox = document.getElementsByClassName("navbar-nav")[0];
navBox.appendChild(modalButton);
var el = document.getElementById("saveChatButton");
if (el.addEventListener) {
el.addEventListener("click", doSave, false);
} else if (el.attachEvent) {
el.attachEvent('onclick', doSave);
}
}
(function() {
'use strict';
initiateSave();
})();