Clan Display and Temperature addon for Planets.nu Starmap

Add Clan, Temperature, and Ownership display added to Map Tools within Planets.nu map

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name          Clan Display and Temperature addon for Planets.nu Starmap
// @description   Add Clan, Temperature, and Ownership display added to Map Tools within Planets.nu map
// @include       http://planets.nu/home
// @include       http://planets.nu/games/*
// @include       http://play.planets.nu/*
// @include 	   http://*.planets.nu/*
// @include 	   http://planets.nu/*
// @version 1.7
// @namespace https://greasyfork.org/users/2860
// ==/UserScript==

// 1. Adds new entry to Map Tools list for Clan display
// 2. Add new Clan display function
// 3. Add new display that makes rings at 100, 250, 500, 1000, and 10,000 
// 0.6 updated so Map Tools list is modified instead of rewritten (thanks Big Beefer!)
// 0.7 Changed colors to Blue,Green, or Red depending on planet temperature (thanks mjs68508 for idea!)
// 0.8 Add small circle for 1-99 clans.
// 0.9 Split out temperature into separate listing
// 1.0 Added ownership options
// 1.1 Use ColorMod colors, if active
// 1.2 Updated to work with new urls
// 1.3 Show total Supplies + Money
// 1.4 Updated for new v3 client
// 1.5 Shows Temp, Supplies+Megacredits for new v3 client
// 1.6 Shows SB building potential on your planets (white=built, green=can be built, yellow=missing 1 requirement, red=missing 2, grey=missing 3 or more)
// 1.7 Shows supply, money, and combined money and supplies generation rate

function wrapper () { // wrapper for injection
  
var activeColorMod=false;//default false
var defaultMyColor=false;//default false

var colorsA2 =["#FFFFFF","#006400","#FF0000","#FF69B4","#00FA9A","#6A5ACD","#FFD700","#9400D3","#808080","#00CED1","#4169E1","#7B68EE","#A0522D","#87CEEB","#FF6347","#F5DEB3","#F08080","#2F4F4F","#008080","#B22222","#808000","#9370DB","#00FF00","#4B0082","#D2B48C","#9ACD32", "#DAA520","#F0F8FF","#6B8E23","#FF4500"];


var oldLoadControls = vgapMap.prototype.loadControls;

vgapMap.prototype.loadControls = function () {

    oldLoadControls.apply(this, arguments);  
    if (vgaPlanets.prototype.version<3)
	{
    //$("#MapTools").append("<li class='ShowMinerals' onclick='vgap.map.showClans();'>Clans</li>"); // Can be used to just append to end.  
    $("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showClansTemp();'>Clans with Temp</li>"); // Add after megacredits as desired
    $("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showClansOwner();'>Clans w/Owner</li>"); // Add after megacredits as desired
	$("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showTemp();'>Temperature</li>"); // Add after megacredits as desired
    $("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showOwner();'>Ownership</li>"); // Add after megacredits as desired
    $("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showSuppliesMoney();'>Supplies & Money</li>"); // Add after megacredits as desired
    $("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showSBPotential();'>Starbase Potential</li>"); // Add after megacredits as desired
	$("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showSupplyRate();'>Supply Rate</li>"); // Add after megacredits as desired
	$("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showMoneyRate();'>Money Rate</li>"); // Add after megacredits as desired
	$("#MapTools > li:contains('Megacredits')").after("<li class='ShowMinerals' onclick='vgap.map.showCombinedRate();'>Combined Rate</li>"); // Add after megacredits as desired
   	checkColorModSettingsForTools();

    var height = this.controls.height() - this.toolsMenu.height();  
    this.controls.css("marginTop", "-" + this.controls.height() + "px");
	}
	else
	{
	 this.addMapTool("Temperature", "ShowMinerals mapclearable", function () { vgap.map.resourceTool(this); vgap.map.showresources = "temp"; vgap.map.draw(); });
	 this.addMapTool("Supplies & MCs", "ShowMinerals mapclearable", function () { vgap.map.resourceTool(this); vgap.map.showresources = "suppliesAndMCs"; vgap.map.draw(); });
	 this.addMapTool("SB Potential", "ShowMinerals mapclearable", function () { vgap.map.resourceTool(this); vgap.map.showresources = "SB Potential"; vgap.map.draw(); });
	 this.addMapTool("Supply Rate", "ShowMinerals mapclearable", function () { vgap.map.resourceTool(this); vgap.map.showresources = "Supply Rate"; vgap.map.draw(); });
	 this.addMapTool("MC Rate", "ShowMinerals mapclearable", function () { vgap.map.resourceTool(this); vgap.map.showresources = "MC Rate"; vgap.map.draw(); });
	 this.addMapTool("Combined Rate", "ShowMinerals mapclearable", function () { vgap.map.resourceTool(this); vgap.map.showresources = "Combined Rate"; vgap.map.draw(); });
	 //this.addMapTool("Megacredits2", "ShowMinerals mapclearable", function () { vgap.map.test(); });
	}
};

vgapMap.prototype.renderResource =  function(ctx) {
		if (this.showresources == "temp")
		{
		for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
			this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), 100, 40,planet.temp,1);
			//this.drawMineralValue(ctx, this.screenX(planet.x), this.screenY(planet.y), amount, density, surface);
			}
		}
		else if (this.showresources == "Supply Rate")
		{
			for (var i = 0; i < vgap.planets.length; i++) {
				var planet = vgap.planets[i];
				if (planet.nativetype==2)
					this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), planet.factories + (planet.nativeclans/100),40, planet.ownerid, 7);
				else
					this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), planet.factories, 40, planet.ownerid, 7);
			}
		}
		else if (this.showresources == "Combined Rate")
		{
			for (var i = 0; i < vgap.planets.length; i++) {
				var planet = vgap.planets[i];
				if (planet.nativetype==2)
					this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), planet.factories + (planet.nativeclans/100)+tax_amount(planet),40, planet.ownerid, 7);
				else
					this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), planet.factories+tax_amount(planet), 40, planet.ownerid, 7);
			}
		}
		else if (this.showresources == "MC Rate")
		{
			for (var i = 0; i < vgap.planets.length; i++) {
				var planet = vgap.planets[i];
				this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), tax_amount(planet), 40, planet.ownerid, 7);
			}
		}
		else if (this.showresources=="suppliesAndMCs")
    	{
            for (var i = 0; i < vgap.planets.length; i++) 
            {
                var planet = vgap.planets[i];
                 var density = 50;
           		 var surface = 0;
				var amount=planet.supplies +planet.megacredits;
           		this.drawMineralValue(ctx, this.screenX(planet.x), this.screenY(planet.y), amount, density, surface);
            }
 	   	}
		else if (this.showresources=="SB Potential")
		{
			for (var i = 0; i < vgap.planets.length; i++) 
			{
				var planet = vgap.planets[i];
				var count=5;
				if (planet.ownerid == vgap.player.id)		
				{
				var starbase = vgap.getStarbase(planet.id);
				if (starbase != null) 
					this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), 100, 40, 0, 6);
				else 
					{
					if ((planet.megacredits+planet.supplies)>=900) count--;
					if (planet.duranium>=120) count--;
					if (planet.tritanium>=402) count--;
					if (planet.molybdenum>=340) count--;
					this.drawTempValue2(ctx,this.screenX(planet.x), this.screenY(planet.y), 100, 40, count, 6);
					}
				}
			}
		}
		else
        for (var i = 0; i < vgap.planets.length; i++) 
		{
            var planet = vgap.planets[i];
            var density = 50;
            var surface = 0;
            var amount = planet[this.showresources];
			if (this.showresources=="suppliesAndMCs")
				amount=planet.supplies +planet.megacredits;
            if (this.showresources == "nativeclans") 
				{
                amount /= 10;
                density = (planet.nativegovernment * 20) / 2;
				}
            else if (this.showresources != "megacredits" && this.showresources != "supplies" && this.showresources != "clans") 
				{
                amount = planet["ground" + this.showresources];
                density = planet["density" + this.showresources];
                surface = planet[this.showresources];
				}
             this.drawMineralValue(ctx, this.screenX(planet.x), this.screenY(planet.y), amount, density, surface);
        }

    };
	
vgapMap.prototype.drawTempValue2 = function(ctx, x, y, ground, density,temp,type)
{
       var density = Math.floor(density / 10 * this.zoom) + 1;
        var stroke = 10 * this.zoom;
        var color;
        var colors = ["red", "RoyalBlue", "green", "purple", "orange", "yellow", "cyan", "olive", "coral", "deeppink", "white", "mediumslateblue", "sienna", "skyblue", "tomato", "wheat", "lightcoral", "darkslategray", "teal", "firebrick", "olive", "mediumpurple", "lime", "indigo", "tan", "yellowgreen", "goldenrod", "aliceblue", "olivedrab", "orangered"];
		if (type==6)
			{
			color="grey";
			if (temp==0) color="white";
			if (temp==1) color="green";
			if (temp==2) color="yellow";
			if (temp==3) color="red";
			}

        if ((type==1) || (type==2)) 
            color= "green";
    
          
        if ((temp >= 85) && ((type==1) || (type==2))) {
            color = "red";
        }
        if (((temp <= 14)&&(temp>=0)) && ((type==1) || (type==2))) {
            color = "blue";
        }
        if ((type==1)||(type==6))
        //temp only
        if ((temp>=0)&&(temp<=100))
		   this.drawCircle(ctx, x, y, 10 * this.zoom, color, density);
		
	if (type==7)
	{
		if (activeColorMod==true)
			color=colorsA2[temp-1];	
		else
			color = colors[temp-1];
		if  (ground>=100) {
			this.drawCircle(ctx,x, y, 10 * this.zoom, color, density);
		}
		if (ground >= 250) {
			this.drawCircle(ctx,x, y, 20 * this.zoom, color, density);
		}
		if (ground >= 500) {
			this.drawCircle(ctx,x, y, 30 * this.zoom, color, density);
		}
		if (ground >= 1000) {
			this.drawCircle(ctx,x, y, 40 * this.zoom, color, density);
		}
		if (ground >= 2500) {
			this.drawCircle(ctx,x, y, 50 * this.zoom, color, density);
		}
		if (ground >= 5000) {
			this.drawCircle(ctx,x, y, 60 * this.zoom, color, density);
		}
	}
};
	
vgapMap.prototype.test = function()
{
var stroke = 10 * this.zoom;
alert("hi" + stroke);
var ctx = this.ctx;
 for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
			var color="green";
			//var density = Math.floor(density / 10 * this.zoom) + 1
			if (planet.temp >= 85) color = "red";
			if ((planet.temp <= 14)&&(planet.temp>=0)) color = "blue";
      		this.drawCircle(ctx, this.screenX(planet.x), this.screenY(planet.y), 20 * this.zoom, color, stroke);
			// drawMineralValue(ctx, this.screenX(planet.x), this.screenY(planet.y), 10, 20, 20);
			}
};

vgapMap.prototype.showSBPotential = function () 
 {
	this.draw();
		for (var i = 0; i < vgap.planets.length; i++) {
		   	var count=5;
			var planet = vgap.planets[i];
			if (planet.ownerid == vgap.player.id)
			{
			var starbase = vgap.getStarbase(planet.id);
            if (starbase != null) 
				this.drawTempValue(planet.x, planet.y, 100, 40, 0, 6);
            else 
				{
				if ((planet.megacredits+planet.supplies)>=900) count--;
				if (planet.duranium>=120) count--;
				if (planet.tritanium>=402) count--;
				if (planet.molybdenum>=340) count--;
				this.drawTempValue(planet.x, planet.y, 100, 40, count, 6);
				}
			}
        }//for loops
 };//showSBPotential

 vgapMap.prototype.showSupplyRate = function () 
 {
 this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
			if (planet.nativetype==2)
				this.drawTempValue(planet.x, planet.y, planet.factories + (planet.nativeclans/100),40, planet.ownerid, 7);
			else
				this.drawTempValue(planet.x, planet.y, planet.factories, 40, planet.ownerid, 7);
        }
 };//showSupplyRate
 
 vgapMap.prototype.showMoneyRate = function () 
 {
 this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
			this.drawTempValue(planet.x, planet.y, tax_amount(planet), 40, planet.ownerid, 7);
        }
 };//showSupplyRate
 
  vgapMap.prototype.showCombinedRate = function () 
 {
 this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
			if (planet.nativetype==2)
				this.drawTempValue(planet.x, planet.y, planet.factories + (planet.nativeclans/100)+tax_amount(planet),40, planet.ownerid, 7);
			else
				this.drawTempValue(planet.x, planet.y, tax_amount(planet)+planet.factories, 40, planet.ownerid, 7);
        }
 };//showSupplyRate
 
vgapMap.prototype.showSuppliesMoney = function () 
 {
 this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
            this.drawMineralValue(planet.x, planet.y, planet.megacredits+planet.supplies, 50, 0);
        }
 };//showSuppliesMoney
  

vgapMap.prototype.showClansTemp = function () 
 {
     this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
            this.drawTempValue(planet.x, planet.y, planet.clans, 40, planet.temp, 2);
        }//for loops
 };//showClans
  
 vgapMap.prototype.showTemp = function () 
 {
     this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
            this.drawTempValue(planet.x, planet.y, 100, 40, planet.temp, 1); //reuse for all planets
        }//for loops
 };//showTemp

    
vgapMap.prototype.showClansOwner = function () 
 {
     this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
                this.drawTempValue(planet.x, planet.y, planet.clans, 40, planet.ownerid, 4);
        }//for loops
 };//showClans

vgapMap.prototype.showOwner = function () 
 {
     this.draw();
        for (var i = 0; i < vgap.planets.length; i++) {
            var planet = vgap.planets[i];
                this.drawTempValue(planet.x, planet.y, planet.clans, 40, planet.ownerid, 3);
        }//for loops
 };//showClans
 
vgapMap.prototype.drawTempValue = function (x, y, ground, density, temp, type) {
        var density = Math.floor(density / 10 * this.zoom) + 1;
        var stroke = 10 * this.zoom;
        var color;
        var colors = ["red", "RoyalBlue", "green", "purple", "orange", "yellow", "cyan", "olive", "coral", "deeppink", "white", "mediumslateblue", "sienna", "skyblue", "tomato", "wheat", "lightcoral", "darkslategray", "teal", "firebrick", "olive", "mediumpurple", "lime", "indigo", "tan", "yellowgreen", "goldenrod", "aliceblue", "olivedrab", "orangered"];

		if (type==6)
			{
			color="grey";
			if (temp==0) color="white";
			if (temp==1) color="green";
			if (temp==2) color="yellow";
			if (temp==3) color="red";
			}
        if ((type==1) || (type==2)) 
            color= "green";
    
        if ((type==3)||(type==4)||(type==7))
	{	
	   
	  if (activeColorMod==true)
		color=colorsA2[temp-1];	
	   else
           	color = colors[temp-1];
	}
          
        if ((temp >= 85) && ((type==1) || (type==2))) {
            color = "red";
        }
        if (((temp <= 14)&&(temp>0)) && ((type==1) || (type==2))) {
            color = "blue";
        }
        if (type==1)
        //temp only
        if ((temp>0)&&(temp<100))
        {
           this.drawCircle(x, y, 10 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
        }
    
        if ((type==3)||(type==6))
        //temp only
            this.drawCircle(x, y, 10 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
   
    
    
        if ((type==2) || (type==4))
        //clans and temp
        {
            if  (ground>=0) {
                this.drawCircle(x, y, 10 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
    
            if (ground >= 100) {
                this.drawCircle(x, y, 20 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 250) {
                this.drawCircle(x, y, 30 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 500) {
                this.drawCircle(x, y, 40 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 1000) {
                this.drawCircle(x, y, 50 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 10000) {
                this.drawCircle(x, y, 60 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
		}
		if ((type==7))
        //Supply/money rate
        {
            if  (ground>=100) {
                this.drawCircle(x, y, 10 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
    
            if (ground >= 250) {
                this.drawCircle(x, y, 20 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 500) {
                this.drawCircle(x, y, 30 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 1000) {
                this.drawCircle(x, y, 40 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 2500) {
                this.drawCircle(x, y, 50 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
            if (ground >= 5000) {
                this.drawCircle(x, y, 60 * this.zoom, { stroke: color, "stroke-width": density, "stroke-opacity": "1" });
            }
        }
		
};//drawTempValue

tax_amount=function(planet)
{
        var colTax = Math.round(planet.colonisttaxrate * planet.clans / 1000);
		var nativetaxrate = planet.nativetaxrate;
        var player = vgap.getPlayer(planet.ownerid);
        //player tax rate (fed bonus)
        var taxbonus = 1;
        if (vgap.advActive(2)) {
            taxbonus = 2;
        }

        colTax = colTax * taxbonus;

        if (colTax > 5000)
            colTax = colTax;
    
        if (player != null) {
            if (player.raceid == 6 && nativetaxrate > 20)
                nativetaxrate = 20;
        }

        var val = Math.round(nativetaxrate * planet.nativetaxvalue / 100 * planet.nativeclans / 1000);
		var flag=0;//replaces possible
		if (val == planet.clans && vgap.player.raceid != 1 && planet.nativetype != 6)
             flag=1;

        if (((planet.nativetype == 6 && vgap.player.raceid != 1) || (planet.nativetype != 6 && vgap.player.raceid == 1)) && val == (planet.clans * 2))
             flag=1;

        if ((planet.nativetype == 6 && vgap.player.raceid == 1) && val == (planet.clans * 4))
             flag=1;

		
        if (val > planet.clans && (flag==1))
            val = planet.clans;

        //player tax rate (fed bonus)
        var taxbonus = 1;
        if (vgap.advActive(2))
            taxbonus = 2;
        val = val * taxbonus;

        //insectoid bonus
        if (planet.nativetype == 6)
            val = val * 2;

        if (val > 5000)
            val = 5000;

        return (val+colTax);

};

get_cookie =function( cookie_name )
{
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );

  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;
};


checkColorModSettingsForTools = function(){

	var checkActive=null;
	checkActive=get_cookie("activeColorMod");
	if (checkActive==null)
		{
		activeColorMod=false;//no cookie,  set to default
		}
	else if (checkActive==1)
		{
		activeColorMod=true;
		}
	else 
		{
		activeColorMod=false;
		}

    
	var checkColor=null;
	checkColor=get_cookie("defaultMyColor");
	if (checkColor==null)
		{
		defaultMyColor=true;//no cookie,  set to default
		}
	else if (checkColor==1)
		{
		defaultMyColor=true;
		}
	else 
		{
		defaultMyColor=false;
		}
	

    if (activeColorMod==true)
	//have not checked cookies yet
	{
	var i;
	var checkColor2=null;
	for (i=0;i<30;i++)
		{
		var String="Race"+(i+1);
		checkColor2=get_cookie(String+"A");
		if (checkColor2) colorsA2[i]=checkColor2;
		checkColor2=null;
		}
	} 
};
    
}
var script = document.createElement("script");
script.type = "application/javascript";
script.textContent = "(" + wrapper + ")();";

document.body.appendChild(script);