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