Veränderte Resourcenansicht

» Siedler Map Source Forum » Siedler DEdK Script Forum » Veränderte Resourcenansicht

Seiten: 1

Messoras
#1
09.03.2020 01:29
Beiträge: 84

Veränderte Resourcenansicht

Hallo zusammen,
Ich habe mal wieder ein kleines Comfort Tool geschrieben und wollte euch mal daran teilhaben lassen. Ich empfinde es als sehr sehr praktisch auf Ressourcenarmen Maps.

Hiermit wird die Ressourcenanzeige ein wenig angepasst, so dass man nicht immer zu den Veredelungsgebäuden scrollen und rechnen muss um die veredelten Rohstoffmengen herauszubekommen.

----------------------------------------------
-- == EXTENDED_RESOURCE_VIEW by Messoras == --
----------------------------------------------

--[[   //  Extended Resource View  //  by Messoras
	Features:
	- Displays the amount of refined resources in the Resource Widget and Tooltip
	- Marks all costs green if affordable with refined resources only
	Languages:
	- Deutsch: 	"ger"
	- English:	"en"
	If needed, simply add your language to the resTable
	------------------------------------------------------------------------------
	Use ActivateExtendedResourceView(Language) to activate.
	There are no other expansions needed.
	
]]

function ActivateExtendedResourceView(_lan)

	resTableGer = {
		divZero 		= 	"Tja, wenn ich das ausrechnen k\195\182nnte...",
		totalAmount		=	"Gesamtmenge",
		refAmount		=	"Veredelte Menge",
		refPercent		=	"Anteil veredelt"
	}
	
	resTableEng = {
		divZero 		= 	"If we could just calculate this...",
		totalAmount		= 	"Total Amount",
		refAmount		=	"Refined Amount",
		refPercent		=	"Percent refined"
	}
	
	if _lan == nil then
		resTable = resTableGer
	elseif _lan == "ger" then
		resTable = resTableGer
	else
		resTable = resTableEng
	end

	GetRefinedResource = function(_playerID,_resType)
		if not _playerID then local _playerID = 1 end
		local rT = GetRT(_resType)
		return Logic.GetPlayersGlobalResource(_playerID,rT)
	end
	
	GetRN = function(_resType)
		if _resType == "gold" then
			return XGUIEng.GetStringTableText("InGameMessages/GUI_NameMoney")
		elseif _resType == "wood" then
			return XGUIEng.GetStringTableText("InGameMessages/GUI_NameWood")
		elseif _resType == "clay" then
			return XGUIEng.GetStringTableText("InGameMessages/GUI_NameClay")
		elseif _resType == "stone" then
			return XGUIEng.GetStringTableText("InGameMessages/GUI_NameStone")
		elseif _resType == "iron" then
			return XGUIEng.GetStringTableText("InGameMessages/GUI_NameIron")
		elseif _resType == "sulfur" then
			return XGUIEng.GetStringTableText("InGameMessages/GUI_NameSulfur")
		else
			return "NoRes"
		end
	end
	
	GetRT = function(_resType)
		if _resType == "gold" then
			return ResourceType.Gold
		elseif _resType == "wood" then
			return ResourceType.Wood
		elseif _resType == "clay" then
			return ResourceType.Clay
		elseif _resType == "stone" then
			return ResourceType.Stone
		elseif _resType == "iron" then
			return ResourceType.Iron
		elseif _resType == "sulfur" then
			return ResourceType.Sulfur
		end
	end
	
	GetResource = function(_playerID,_resType)
		local rT = GetRT(_resType)
		local Amount = Logic.GetPlayersGlobalResource(_playerID,rT)
		local RawResourceType = Logic.GetRawResourceType(rT)
		local RawResourceAmount = Logic.GetPlayersGlobalResource( _playerID, RawResourceType )
		return Amount + RawResourceAmount
	end
	
	GUIUpdate_ResourceAmount_Orig = GUIUpdate_ResourceAmount
	GUIUpdate_ResourceAmount = function( _ResourceType, _RefinedFlag )
		local CurrentWidgetID = XGUIEng.GetCurrentWidgetID()
		local PlayerID = GUI.GetPlayerID()
		local Amount = Logic.GetPlayersGlobalResource( PlayerID, _ResourceType )	
		local RawResourceType = Logic.GetRawResourceType( _ResourceType )
		local RawResourceAmount = Logic.GetPlayersGlobalResource( PlayerID, RawResourceType )
		local String = " "
		if _RefinedFlag == 0 then
			XGUIEng.SetText( CurrentWidgetID, " @ra "..Amount + RawResourceAmount.."("..Amount..")")
		else		
			--local procent = math.floor((Amount/(Amount + RawResourceAmount))*100)
			XGUIEng.SetTextByValue( CurrentWidgetID, Amount, 1 )		
		end
		
	end

	GUITooltip_NormalButton_Orig = GUITooltip_NormalButton
	GUITooltip_NormalButton = function(_TooltipString, _ShortCut)
		GUITooltip_NormalButton_Orig(_TooltipString, _ShortCut)
		local PlayerID = GUI.GetPlayerID()
		if string.sub(_TooltipString,1, 14) == "MenuResources/" then
			local resType = string.sub(_TooltipString,15,string.len(_TooltipString))
			local Amount = GetResource(PlayerID,resType)
			local RefAmount = GetRefinedResource(PlayerID,resType)
			local percent = "Um da gibt's nen Fehler"
			if Amount ~= 0 then
				percent = math.floor((RefAmount/Amount)*100).."%"
			else
				percent = "0%"
			end
			if GetRN(resType) ~= "NoRes" then
				XGUIEng.SetText(
					gvGUI_WidgetID.TooltipBottomText,XGUIEng.GetText(gvGUI_WidgetID.TooltipBottomText)
					.." @cr  @cr "..resTable.totalAmount.." "..GetRN(resType)..": "..Amount
					.." @cr "..resTable.refAmount.." "..GetRN(resType)..": "..RefAmount
					.." @cr "..resTable.refPercent..": "..percent
				)
			end
		end
	end
	
	InterfaceTool_CreateCostString_Orig = InterfaceTool_CreateCostString
	InterfaceTool_CreateCostString = function( _Costs )
		local PlayerID = GUI.GetPlayerID()
		local PlayerClay   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Clay ) + Logic.GetPlayersGlobalResource( PlayerID, ResourceType.ClayRaw)	
		local PlayerGold   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Gold ) + Logic.GetPlayersGlobalResource( PlayerID, ResourceType.GoldRaw)
		local PlayerSilver = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Silver ) + Logic.GetPlayersGlobalResource( PlayerID, ResourceType.SilverRaw)
		local PlayerWood   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Wood ) + Logic.GetPlayersGlobalResource( PlayerID, ResourceType.WoodRaw)
		local PlayerIron   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Iron ) + Logic.GetPlayersGlobalResource( PlayerID, ResourceType.IronRaw)
		local PlayerStone  = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Stone ) + Logic.GetPlayersGlobalResource( PlayerID, ResourceType.StoneRaw)
		local PlayerSulfur = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Sulfur ) + Logic.GetPlayersGlobalResource( PlayerID, ResourceType.SulfurRaw)
		local PlayerClayRef   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Clay )
		local PlayerGoldRef   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Gold )
		local PlayerSilverRef = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Silver )
		local PlayerWoodRef   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Wood )
		local PlayerIronRef   = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Iron )
		local PlayerStoneRef  = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Stone )
		local PlayerSulfurRef = Logic.GetPlayersGlobalResource( PlayerID, ResourceType.Sulfur )
		local CostString = ""
		if _Costs[ ResourceType.Gold ] ~= 0 then
			CostString = CostString .. XGUIEng.GetStringTableText("InGameMessages/GUI_NameMoney") .. ": " 
			if PlayerGoldRef >= _Costs[ ResourceType.Gold ] then
				CostString = CostString .. " @color:16,220,64,255 "
			elseif PlayerGold >= _Costs[ ResourceType.Gold ] then
				CostString = CostString .. " @color:255,255,255,255 "
			else
				CostString = CostString .. " @color:220,64,16,255 "
			end
			CostString = CostString .. _Costs[ ResourceType.Gold ] .. " @color:255,255,255,255 @cr "
		end
		if _Costs[ ResourceType.Wood ] ~= 0 then
			CostString = CostString .. XGUIEng.GetStringTableText("InGameMessages/GUI_NameWood") .. ": " 
			if PlayerWoodRef >= _Costs[ ResourceType.Wood ] then
				CostString = CostString .. " @color:16,220,64,255 "
			elseif PlayerWood >= _Costs[ ResourceType.Wood ] then
				CostString = CostString .. " @color:255,255,255,255 "
			else
				CostString = CostString .. " @color:220,64,16,255 "
			end
			CostString = CostString .. _Costs[ ResourceType.Wood ] .. " @color:255,255,255,255 @cr "
		end
		if _Costs[ ResourceType.Silver ] ~= 0 then
			CostString = CostString .. "Silver: " 
			if PlayerSilverRef >= _Costs[ ResourceType.Silver ] then
				CostString = CostString .. " @color:16,220,64,255 "
			elseif PlayerSilver >= _Costs[ ResourceType.Silver ] then
				CostString = CostString .. " @color:255,255,255,255 "
			else
				CostString = CostString .. " @color:220,64,16,255 "
			end
			CostString = CostString .. _Costs[ ResourceType.Silver ] .. " @color:255,255,255,255 @cr "
		end
		if _Costs[ ResourceType.Clay ] ~= 0 then
			CostString = CostString .. XGUIEng.GetStringTableText("InGameMessages/GUI_NameClay") .. ": " 
			if PlayerClayRef >= _Costs[ ResourceType.Clay ] then
				CostString = CostString .. " @color:16,220,64,255 "
			elseif PlayerClay >= _Costs[ ResourceType.Clay ] then
				CostString = CostString .. " @color:255,255,255,255 "
			else
				CostString = CostString .. " @color:220,64,16,255 "
			end
			CostString = CostString .. _Costs[ ResourceType.Clay ] .. " @color:255,255,255,255 @cr "
		end	
		if _Costs[ ResourceType.Stone ] ~= 0 then
			CostString = CostString .. XGUIEng.GetStringTableText("InGameMessages/GUI_NameStone") .. ": " 
			if PlayerStoneRef >= _Costs[ ResourceType.Stone ] then
				CostString = CostString .. " @color:16,220,64,255 "
			elseif PlayerStone >= _Costs[ ResourceType.Stone] then
				CostString = CostString .. " @color:255,255,255,255 "
			else
				CostString = CostString .. " @color:220,64,16,255 "
			end
			CostString = CostString .. _Costs[ ResourceType.Stone ] .. " @color:255,255,255,255 @cr "
		end
		if _Costs[ ResourceType.Iron ] ~= 0 then
			CostString = CostString .. XGUIEng.GetStringTableText("InGameMessages/GUI_NameIron") .. ": " 
			if PlayerIronRef >= _Costs[ ResourceType.Iron ] then
				CostString = CostString .. " @color:16,220,64,255 "
			elseif PlayerIron >= _Costs[ ResourceType.Iron ] then
				CostString = CostString .. " @color:255,255,255,255 "
			else
				CostString = CostString .. " @color:220,64,16,255 "
			end
			CostString = CostString .. _Costs[ ResourceType.Iron ] .. " @color:255,255,255,255 @cr "
		end
		if _Costs[ ResourceType.Sulfur ] ~= 0 then
			CostString = CostString .. XGUIEng.GetStringTableText("InGameMessages/GUI_NameSulfur") .. ": " 
			if PlayerSulfurRef >= _Costs[ ResourceType.Sulfur ] then
				CostString = CostString .. " @color:16,220,64,255 "
			elseif PlayerSulfur >= _Costs[ ResourceType.Sulfur ] then
				CostString = CostString .. " @color:255,255,255,255 "
			else
				CostString = CostString .. " @color:220,64,16,255 "
			end
			CostString = CostString .. _Costs[ ResourceType.Sulfur ] .. " @color:255,255,255,255 @cr "
		end
		return CostString
	end
end



Viel Spaß damit!

____________________
Six feet of earth make us all equal.

Spielt Siedler 5 online mit mir, dank des neuen Siedler 5 MP Projekts von Kimichura.

totalwarANGEL
#2
09.03.2020 17:51
Beiträge: 2123

Kleiner Tipp: UTF-8 wirkt wahre Wunder.

____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.

Messoras
#3
09.03.2020 21:28
Beiträge: 84

Zitat von totalwarANGEL:
Kleiner Tipp: UTF-8 wirkt wahre Wunder.



Wieso? Ich nutze eig. nur UTF-8.

____________________
Six feet of earth make us all equal.

Spielt Siedler 5 online mit mir, dank des neuen Siedler 5 MP Projekts von Kimichura.

totalwarANGEL
#4
10.03.2020 17:42
Beiträge: 2123

Du benutzt Umlautersatzzeichen. Das brauchst du nicht, wenn die Datei UTF-8 codiert ist.

____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.

Messoras
#5
10.03.2020 23:57
Beiträge: 84

Wollte es nur unabhängig von anderen Tools machen, damit man es auch ohne eine Umlaute Funktion nutzen kann.

____________________
Six feet of earth make us all equal.

Spielt Siedler 5 online mit mir, dank des neuen Siedler 5 MP Projekts von Kimichura.

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum