RainbowChat for DH1

This script is just amazing! Check the script for some configs!

当前为 2017-03-04 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name            RainbowChat for DH1
// @namespace       http://tampermonkey.net/
// @version         1.0.0
// @description     This script is just amazing! Check the script for some configs!
// @author          Lasse98brus
// @match           http://www.diamondhunt.co/DH1/game.php
// @run-at          document-idle
// @grant           none
// ==/UserScript==
/* jshint -W097 */
'use strict';


/*
 *   #=================================================================================================================================================================================================#
 *   #  Welcome to my RainbowChat script for both DH1 and DH2 :D My name is Lasse98brus and I did create this script because Amyjane1991 said she had the old DHRainbowChat that doesn't work anymore! #
 *   #  I pretty much had to change the whole script! So please don't this with the original DHRainbowChat! This script is built to be as stable as possible!                                          #
 *   #                                                                                                                                                                                                 #
 *   #  If you like my script and my work with it, and you feel to support my work! Feel free to donate to me with PayPal :D my PayPal: [email protected]                                        #
 *   #=================================================================================================================================================================================================#
 */


  // Some configs to easily choose the futures that YOU like! :D
var config = {
  // Here you can just change between "true" and "false" before you login to the game! :)
    "rainbowTime"  :  false,  // Set to "true" to enable rainbow timestamps! This will color timestamps for server messages too (default: "false")
    "rainbowName"  :  true,   // Set to "false" to disable rainbow names! (default: "true")
    "removeIcons"  :  false,  // Set to "true" to remove all icons in chat, doesn't remove donor icon! (default: "false")

  // Futures under here does have multiple choises! Read the end of the lines to know whats working ad not!
    // Unfortunately it's nothing to configure here yet!

  // Uder development! Something isn't working as well!
    "rainbowMSG"   :  false     // Under development! This works pretty good! Links doesn't work because of this for now! (default: "false")
};


/*
 * #=================#
 * # Update history! #
 * #=================#
 *
 *  v1.0.0 - February 19th 2017
 *  + Initial release! :D
 *
 *  v1.x.x - Comming soon!
 *  ? Try to fix "rainbowMSG" to support links!
 *  ? Maybe adding choises of color sets?
 *  ? Adding more color choises in the config!
 *
 */


/*
 *   #======================================================================================================================#
 *   # I'm pretty sure you don't need to change anything below here! It's pretty much fully customizeable in the configs :) #
 *   #======================================================================================================================#
 */


document.getElementById("chat-area-div").style = "background-color:#0c0c0c;color:#999!important;"; // Please just let this be! this makes the chat look a lot better with the colors used in this script!


var rcColours = [
    ["#ff0000", "#cc0000", "#b30000"],  // Red colors
    ["#00cc00", "#009900", "#00e600"],  // Green colors
    ["#ff99cc", "#ff4da6", "#ff0080"],  // Pink colors
    ["#9900cc", "#730099", "#bf00ff"],  // Purple colors
    ["#ff9933", "#ff8000", "#ff9933"],  // Orange colors
    ["#e6b800", "#cca300", "#b38f00"]   // Gold/Yellow colors
];
var rcColour = -1;
var rcLastColour = -1;


  // This is a trigger for the script to make the changes!
window.refreshChat = function(data) {
	data = newRainbowChat(data);
};


  // The actually magically code is here! This code will make the chat colors change when the above code is triggered and need this code!
  // All errors here that Tampermonkey tell you "'someVar' is not defined." is allready in Smitty's scripts!
function newRainbowChat(data) {
	var chatbox = document.getElementById("chat-area-div");
	var output = data;

	var splitArray = data.split("~");
	var userChatting = splitArray[0];
	var levelChat = splitArray[1];
	var tag = splitArray[2];
	var icon = splitArray[3];
	var message = splitArray[4];
	var isPM = splitArray[5];

	for(var i = 0; i < mutedPeople.length; i++) { if(mutedPeople[i] == userChatting) return; }

	var chatSegment = "";

      // Random color!
    while (rcColour === rcLastColour) { rcColour = getRandomArbitrary(0, rcColours.length); }
	rcLastColour = rcColour;
	var myColour = rcColours[rcColour][getRandomArbitrary(0, rcColours[rcColour].length)];

    var msg = "";
    if(config.rainbowMSG === true) {
        msg = "<span style='color:" + myColour + "'>" + message + "</span>";
    } else {
        msg = message;
    }

    var timeStamp = "";
    if(config.rainbowTime === true) {
	    timeStamp = "<span style='color:" + myColour + "'>" + timeFetch() + "</span>";
    } else {
        timeStamp = timeFetch();
    }

    var totalTextDiv = "";
    if(isPM == 1)
	{

		chatSegment = "<span style='color:purple'>PM from " + "<span style='cursor:pointer;' oncontextmenu='searchPlayerHicores(\""+userChatting+"\");return false;' onclick='preparePM(\""+userChatting+"\")'>"+userChatting+"</span>" +": " + message + "</span>";
		chatSegment += "<br />";
		lastPMFrom = userChatting;
		totalTextDiv = chatbox.innerHTML + timeStamp  + chatSegment;
		chatbox.innerHTML = totalTextDiv;
		if(isAutoScrolling) { $("#chat-area-div").animate({ scrollTop:  55555555 }, 'slow'); }
		return;
	}
	if(isPM == 2)
	{
		chatSegment = "<span style='color:purple'>sent PM to " + "<span style='cursor:pointer;' oncontextmenu='searchPlayerHicores(\""+userChatting+"\");return false;' onclick='preparePM(\""+userChatting+"\")'>"+userChatting+"</span>" +": " + message + "</span>";
		chatSegment += "<br />";
		totalTextDiv = chatbox.innerHTML + timeStamp  + chatSegment;
		lastPMFrom = userChatting;
		chatbox.innerHTML = totalTextDiv;
		if(isAutoScrolling) { $("#chat-area-div").animate({ scrollTop:  55555555 }, 'slow'); }
		return;
	}
	if(isPM == 3) //yell message
	{
		chatSegment = "<span style='color:#0066ff;'><span class='chat-tag-yell'>Server Message</span> " + message + " </span>";
		chatSegment += "<br />";
		totalTextDiv = chatbox.innerHTML + timeStamp  + chatSegment;
		lastPMFrom = userChatting;
		chatbox.innerHTML = totalTextDiv;
		if(isAutoScrolling) { $("#chat-area-div").animate({ scrollTop:  55555555 }, 'slow'); }
		return;
	}

    if(config.removeIcons === false) {
        if(icon == 1) { chatSegment = "<img title='Maxed Skills' src='images/icons/stats.png' style='vertical-align: text-top;' width='20' height='20' alt='Maxed Skills'/>" + chatSegment;
        } else if(icon == 2) { chatSegment = "<img title='Master in Mining' src='images/icons/pickaxe.png' style='vertical-align: text-top;' width='20' height='20' alt='Master in Mining'/>" + chatSegment;
        } else if(icon == 3) { chatSegment = "<img title='Master in Crafting' src='images/icons/anvil.png' style='vertical-align: text-top;' width='20' height='20' alt='Master in Crafting'/>" + chatSegment;
        } else if(icon == 4) { chatSegment = "<img title='Master in Brewing' src='images/brewing/vialofwater_chat.png' style='vertical-align: text-top;' width='20' height='20' alt='Master in Brewinghiscores'/>" + chatSegment;
        } else if(icon == 5) { chatSegment = "<img title='Master in Farming' src='images/icons/watering-can.png' style='vertical-align: text-top;' width='20' height='20' alt='Master in Farming'/>" + chatSegment;
        } else if(icon == 6) { chatSegment = "<img title='Hardcore Account' src='images/icons/hardcoreIcon.png' style='vertical-align: text-top;' width='20' height='20' alt='Hardcore Account'/>" + chatSegment;
        } else if(icon == 7) { chatSegment = "<img title='Halloween 2015' src='images/icons/halloween2015.png' style='vertical-align: text-top;' width='20' height='20' alt='Halloween 2015'/>" + chatSegment;
        } else if(icon == 8) { chatSegment = "<img title='Halloween 2015' src='images/icons/archaeology.png' style='vertical-align: text-top;' width='20' height='20' alt='Halloween 2015'/>" + chatSegment;
        } else if(icon == 9) { chatSegment = "<img title='Chirstmas 2015' src='images/sigils/christmas2015.png' style='vertical-align: text-top;' width='20' height='20' alt='Halloween 2015'/>" + chatSegment;
        } else if(icon == 10) { chatSegment = "<img title='Master in Farming' src='images/magic/wizardHatIcon.png' style='vertical-align: text-top;' width='20' height='20' alt='Master in Farming'/>" + chatSegment;
        } else if(icon == 11) { chatSegment = "<img title='Holiday' src='images/sigils/easter2016.png' style='vertical-align: text-top;' width='20' height='20' alt='Holiday Sigil'/>" + chatSegment;
        } else if(icon == 12) { chatSegment = "<img title='COOP' src='images/icons/groupTaskBadge5.png' style='vertical-align: text-top;' width='20' height='20' alt='COOP'/>" + chatSegment;
        } else if(icon == 13) { chatSegment = "<img title='cooking master' src='images/icons/cookingskill.png' style='vertical-align: text-top;' width='20' height='20' alt='Cooking Master'/>" + chatSegment;
        } else if(icon == 14) { chatSegment = "<img title='Halloween 2016' src='images/sigils/halloween2016.png' style='vertical-align: text-top;' width='20' height='20' alt='Halloween 2016'/>" + chatSegment;
        } else if(icon == 15) { chatSegment = "<img title='Chirstmas 2016' src='images/sigils/christmas2016.png' style='vertical-align: text-top;' width='20' height='20' alt='Christmas 2016'/>" + chatSegment; }
    } // End of "removeIcons"

    if(tag == 1) { chatSegment += "<span><img src='images/icons/donor-icon.gif' style='vertical-align: text-top;' width='20' height='20' alt='Donor'/> ";
    } else if(tag == 2) { chatSegment += "<span style='color:green;'><span class='chat-tag-contributor'>Contributor</span> ";
    } else if(tag == 4) { chatSegment += "<span style='color:#669999;'><span class='chat-tag-mod'>Moderator</span> ";
    } else if(tag == 5) { chatSegment += "<span style='color:#666600;'><span class='chat-tag-dev'>Dev</span> "; }

    if(config.rainbowName === true) { chatSegment += "<span style='cursor:pointer;color:" + myColour + "' oncontextmenu='searchPlayerHicores(\"" + userChatting + "\");return false;' onclick='preparePM(\"" + userChatting + "\")'>" + userChatting + " (" + levelChat +"): </span>";
    } else { chatSegment += "<span style='cursor:pointer' oncontextmenu='searchPlayerHicores(\"" + userChatting + "\");return false;' onclick='preparePM(\"" + userChatting + "\")'>" + userChatting + " (" + levelChat +"): </span>"; }

	//make links clickable
	if(isValidURL(msg) && disableUrls === 0) {
		var msgArray = msg.split(" ");
		var newString = "";
        var linkFound = "";
		for(i = 0; i < msgArray.length; i++) {
			if(isValidURL(msgArray[i])) {
				if(!msgArray[i].startsWith("http")) { linkFound = "<a style='color:#40ff00' href='http://"+msgArray[i]+"' target='_blank'>"+msgArray[i]+"</a>" + " ";
                } else { linkFound = "<a style='color:#40ff00' href='"+msgArray[i]+"' target='_blank'>"+msgArray[i]+"</a>" + " "; }
				newString += linkFound;
			} else { newString += msgArray[i] + " "; }
        }
        chatSegment += newString;
	} else { chatSegment += msg; }

	chatSegment += "<span><br />";

	totalTextDiv = chatbox.innerHTML + timeStamp  + chatSegment;
	chatbox.innerHTML = totalTextDiv;

	if(isAutoScrolling) { $("#chat-area-div").animate({ scrollTop:  55555555 }, 'slow'); }

    return data;

}

function getRandomArbitrary(min, max) {
  return Math.floor(Math.random() * (max - min) + min);
}