Ted's market UI

Ted's Diamond Hunt 2 custom market user interface

目前為 2017-03-28 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Ted's market UI
// @namespace    Ted's market UI
// @version      1.21
// @description  Ted's Diamond Hunt 2 custom market user interface
// @author       ted120
// @match		 http://*.diamondhunt.co/game.php
// @match		 https://*.diamondhunt.co/game.php
// @run-at       document-idle
// @grant        none
// ==/UserScript==

$(document).ready(function () {
    var hideItemList = ["Raw Shark","Stinger","Wheat","Bear Fur","Stone","Bones","Ashes","Snake Skin","Bat Skin","Raw Shrimp","Shrimp"];
    //alter hideItemList as necessary, use marketstyle name caps, "Bat Skin" and not "batSkin" etc
    var notEnoughCoinsOpacity = true, showMaxCanBuy = true;

    var debugToConsole = false;
    var arrMarketItems = [];
    var arrMarketSlots = [[0, 0]]; //updateMarketSlots()
    var marketInterval;
    var marketOn = true;
    var zMarket = document.createElement ("div");

    function drawButtons() {
        zMarket = document.createElement ("div");
        zMarket.innerHTML = "<button id='marketButton' type='button'>Ted's market UI = "+marketOn+"</button>";
        document.body.appendChild(zMarket);
        document.getElementById ("marketButton").addEventListener (
            "click", marketButtonClickAction, false
        );
    }
    function removeButtons() {
        document.body.removeChild(zMarket);
    }
    function buttonMain() {
        removeButtons();
        drawButtons();
    }
    function isInArray(array, search)
    {
        return array.indexOf(search) >= 0;
    }
    function getMarketItems() {
        var currentItemId, itemName, itemId, itemPrice, itemAmount, itemMarketId, uniqueMarketItems = 0;
        arrMarketItems = [];
        for (var i = 1; i < document.getElementById("market-table").rows.length; i++) {
            if (typeof(document.getElementById("market-table").rows[i].childNodes[0]) != "undefined" && document.getElementById("market-table").rows[i].childNodes[0] !== null) {
                itemName = document.getElementById("market-table").rows[i].childNodes[0];
                itemId = document.getElementById("market-table").rows[i].getAttribute("data-market-itemid");
                itemPrice = document.getElementById("market-table").rows[i].getAttribute("data-market-price");
                itemAmount = document.getElementById("market-table").rows[i].getAttribute("data-market-amount");
                itemMarketId = document.getElementById("market-table").rows[i].getAttribute("data-market-marketid");
                if (itemId != currentItemId) {
                    currentItemId = itemId;
                    uniqueMarketItems++;
                    arrMarketItems.push([document.getElementById("market-table").rows[i].childNodes[0].innerHTML, itemId]);
                }
                arrMarketItems[uniqueMarketItems-1].push([itemPrice, itemAmount, itemMarketId, i]);
            }
        }
    }
    function alterMarketTable() {
        var i, a, s, maxCanBuy;
        document.getElementById("market-table").rows[0].style.backgroundColor = "gold";
        if (debugToConsole) { console.log(arrMarketItems); }
        for (i = 0; i < arrMarketItems.length; i++) {
            for (a = 2; a < arrMarketItems[i].length; a++) {
                maxCanBuy = Math.floor(coins / arrMarketItems[i][a][0]);
                if (showMaxCanBuy) {
                    if (maxCanBuy > arrMarketItems[i][a][1]) { maxCanBuy = arrMarketItems[i][a][1]; }
                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].cells[3].append(" (x"+maxCanBuy+")");
                }
                if (notEnoughCoinsOpacity && maxCanBuy == 0) {
                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.opacity = "0.3";
                }
                if (document.getElementById("market-table").rows.length < 13) {
                    if (arrMarketItems[i].length >= 4) {
                        if (arrMarketItems[i][2][0] < Math.ceil(arrMarketItems[i][3][0] * 0.86) && arrMarketItems[i][2][0]) {
                            document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = "#90ee90"; //lightgreen
                            document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "";
                            document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.fontWeight = 700;
                            document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.backgroundColor = "#ffcc66"; //lightorange
                            document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.display = "";
                        }
                    }
                    for (s = 0; s < arrMarketSlots.length; s++) {
                        if (arrMarketSlots[s][1] === false) {
                            if (arrMarketItems[i][a][2] == arrMarketSlots[s][0]) {
                                if (a == 2) {
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "";
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.backgroundColor = "#bffffd"; //lightblue
                                } else if (a > 2) {
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.backgroundColor = "#ff7878"; //lightred
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "";
                                    document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = "#ffcccc"; //lighterred
                                    document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "";
                                } else console.log("for (a... error");
                            }
                        }
                    }
                } else if (document.getElementById("market-table").rows.length > 12) {
                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.backgroundColor = "red";
                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "none";
                    for (s = 0; s < arrMarketSlots.length; s++) {
                        if (arrMarketSlots[s][1] === false) {
                            if (arrMarketItems[i][a][2] == arrMarketSlots[s][0]) {
                                if (a == 2) {
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "";
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.backgroundColor = "#bffffd"; //lightblue
                                } else if (a > 2) {
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.backgroundColor = "#ff7878"; //lightred
                                    document.getElementById("market-table").rows[arrMarketItems[i][a][3]].style.display = "";
                                    document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = "#ffcccc"; //lighterred
                                    document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "";
                                } else console.log("for (a... error");
                            }
                        }
                    }
                    if (arrMarketItems[i].length == 3 && (!isInArray(hideItemList,arrMarketItems[i][0]))) {
                        document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = "#ffff66"; //lightyellow
                        document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "";
                    } else if (arrMarketItems[i].length >= 4 && (!isInArray(hideItemList,arrMarketItems[i][0]))) {
                        if (arrMarketItems[i][2][0] < Math.ceil(arrMarketItems[i][3][0] * 0.86) && arrMarketItems[i][2][0]) {
                            document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.backgroundColor = "#90ee90"; //lightgreen
                            document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.display = "";
                            document.getElementById("market-table").rows[arrMarketItems[i][2][3]].style.fontWeight = 700;
                            document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.backgroundColor = "#ffcc66"; //lightorange
                            document.getElementById("market-table").rows[arrMarketItems[i][3][3]].style.display = "";
                        }
                    }
                }
            }
        }
    }
    function updateMarketSlots() {
        arrMarketSlots = [[marketSlot1, false]];
        for (var i = 0; i < arrMarketSlots.length; i++) {
            if (document.getElementById("market-slot-"+(i + 1)+"-free").style.display === "") {
                arrMarketSlots[i][1] = true;
            }
        }
    }
    function marketReloaded() {
        if (typeof(document.getElementById("market-table").rows[0]) != "undefined" && document.getElementById("market-table").rows[0] !== null) {
            // exists
            if (document.getElementById("market-table").rows[0].style.backgroundColor == "silver") {
                updateMarketSlots();
                getMarketItems();
                alterMarketTable();
                return true;
            } else return false;
        }
    }
    function marketMain() {
        if (marketOn === true) {
            marketInterval = setInterval(marketReloaded, 0);
        }
    }
    function marketButtonClickAction (zEvent) {
        if (marketOn === true) {
            marketOn = false;
            clearInterval(marketInterval);
            buttonMain();
        } else if (marketOn === false) {
            marketOn = true;
            marketMain();
            buttonMain();
        }
    }
    drawButtons();
    marketMain();
});