Code Script Tampermonkey
Code Script Tampermonkey
// listeners
let quizReadyRigTracker;
let answerResultsRigTracker;
let quizEndRigTracker;
let returnLobbyVoteListener;
let joinLobbyListener;
let spectateLobbyListener;
// Writes the rig to chat (for 2 players, automatically disables if there's more or
less than 2 players)
function writeRigToChat(animeTitle) {
let tmpData = [];
let message = "";
if (Object.keys(playerData).length !== 2) {
gameChat.systemMessage("Writing rig to chat requires exactly 2 players,
writing rig to chat has been disabled");
$("#smRigTrackerChat").prop("checked", false);
updateEnabled("smRigTrackerChat");
}
else {
for (let key of Object.keys(playerData)) {
tmpData.push(playerData[key]);
}
if ($("#smRigTrackerPlayerNames").prop("checked")) {
message += tmpData[0].name + " " + tmpData[0].rig + "-" +
tmpData[1].rig + " " + tmpData[1].name;
}
else {
message += tmpData[0].rig + "-" + tmpData[1].rig;
}
if ($("#smRigTrackerScore").prop("checked")) {
message += ", Score: " + tmpData[0].score + "-" + tmpData[1].score;
}
if ($("#smRigTrackerAnime").prop("checked")) {
if ($("#smRigTrackerAnimeRomaji").prop("checked")) {
message += " (" + animeTitle.romaji + ")";
}
else if ($("#smRigTrackerAnimeEnglish").prop("checked")){
message += " (" + animeTitle.english + ")";
}
else {
message += " (" + animeTitle.romaji + ")";
}
}
}
let oldMessage = gameChat.$chatInputField.val();
gameChat.$chatInputField.val(message);
gameChat.sendMessage();
gameChat.$chatInputField.val(oldMessage);
}
gameChat.$chatInputField.val(oldMessage);
}
function displayMissedList() {
let inQuiz = Object.values(quiz.players).some(player => player.isSelf ===
true);
if ($("#smRigTrackerMissedOwn").prop("checked") && !$
("#smRigTrackerMissedAll").prop("checked") && inQuiz && quiz.gameMode !== "Ranked")
{
gameChat.systemMessage(`You missed ${missedFromOwnList === 1 ?
missedFromOwnList + " song" : missedFromOwnList + " songs"} from your own list`);
}
if ($("#smRigTrackerMissedAll").prop("checked") && $
("#smRigTrackerMissedOwn").prop("checked") && quiz.gameMode !== "Ranked") {
for (let id in playerData) {
gameChat.systemMessage(`${playerData[id].name} missed $
{playerData[id].missedList === 1 ? playerData[id].missedList + " song" :
playerData[id].missedList + " songs"} from their own list`);
}
}
}
function setup() {
// Updates the preset settings tabs and container, this is mostly to allow
interaction with the newly added "Custom" tab
options.$SETTING_TABS = $("#settingModal .tab");
options.$SETTING_CONTAINERS = $(".settingContentContainer");
// bind listeners
quizReadyRigTracker.bindListener();
answerResultsRigTracker.bindListener();
quizEndRigTracker.bindListener();
returnLobbyVoteListener.bindListener();
joinLobbyListener.bindListener();
spectateLobbyListener.bindListener();
AMQ_addScriptData({
name: "Rig Tracker",
author: "TheJoseph98",
description: `
<p>Rig tracker for AMQ counts how many times a certain player's list
has appeared in a quiz, mainly created for AMQ League games to reduce the need for
dedicated players who track the rig</p>
<p>Rig is only counted if the player has enabled "Share Entries" in
their AMQ list settings (noted by the blue ribbon in their answer field during
answer reveal)</p>
<p>Rig tracker has multiple options available which can be accessed by
opening AMQ settings and selecting the "Rig Tracker" tab</p>
<a href="https://i.imgur.com/LQE4PGg.png" target="_blank"><img
src="https://i.imgur.com/LQE4PGg.png" /></a>
<p>Rig tracker also has an option of writing rig to the scoreboard next
to players' scores for non-league and more than 2 players games</p>
<a href="https://i.imgur.com/4jF8vja.png" target="_blank"><img
src="https://i.imgur.com/4jF8vja.png" /></a>
<p>If you're looking for a smaller version without these options and
which can only write rig to scoreboard, check out <a
href="https://github.com/TheJoseph98/AMQ-Scripts/raw/master/amqRigTrackerLite.user.
js">Rig Tracker Lite</a>
`
});
// CSS stuff
AMQ_addStyle(`
.qpsPlayerRig {
padding-right: 5px;
opacity: 0.3;
}
.customCheckboxContainer {
display: flex;
}
.customCheckboxContainer > div {
display: inline-block;
margin: 5px 0px;
}
.customCheckboxContainer > .customCheckboxContainerLabel {
margin-left: 5px;
margin-top: 5px;
font-weight: normal;
}
.offset1 {
margin-left: 20px;
}
.offset2 {
margin-left: 40px;
}
.offset3 {
margin-left: 60px;
}
.offset4 {
margin-left: 80px;
}
`);
}