Find Unit Buttons
» Siedler Map Source Forum » Siedler DEdK Script Forum » Find Unit Buttons
Seiten: 1
Play4FuN
|
#1 04.01.2022 21:12 Beiträge: 704 |
Find Unit Buttons
Aus der Kategorie "es hat zwar niemand danach gefragt, aber ich teile es dennoch mal mit euch"
In einigen Karten habe ich gesehen, dass der Spieler Einheiten kontrolliert, die über seinem Tech Level liegen. Z.B. Spieler hat Schwertkämpfer noch nicht in der Kaserne aufgerüstet (hat nur Stufe 1), bekommt aber Schwertis von Stufe 4. Dann wird der Schwertkämpfer finden Button nicht angezeigt - ergo man kann sie nicht auf diese Weise auffinden. Um das zu beheben kann folgeneder Code verwendet werden (in der FMA aufrufen). Funktioniert natürlich auch für Schützen usw.
-- display find buttons even if the player tech level is too low (e.g. find LeaderSword4 when the player has not upgraded swordsman yet) -- overwrites GUIUpdate_FindView function in updatebuttons.lua function P4FComforts_FindButtonFix() GUIUpdate_FindView = function() local PlayerID = GUI.GetPlayerID() -- Serfs local SerfAmount = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_Serf ) if SerfAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindIdleSerf, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindIdleSerf, 0 ) end -- Sword local PlayerSwordmenAmount = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderSword1 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderSword2 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderSword3 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderSword4 ) if PlayerSwordmenAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindSwordLeader, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindSwordLeader, 0 ) end -- Spear local PlayerSpearmenAmount = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderPoleArm1 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderPoleArm2 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderPoleArm3 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderPoleArm4 ) if PlayerSpearmenAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindSpearLeader, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindSpearLeader, 0 ) end -- Bow local PlayerBowmenAmount = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderBow1 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderBow2 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderBow3 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderBow4 ) if PlayerBowmenAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindBowLeader, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindBowLeader, 0 ) end -- light Cavalry local PlayerCavalryAmount = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderCavalry1 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderCavalry2 ) if PlayerCavalryAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindLightCavalryLeader, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindLightCavalryLeader, 0 ) end -- heavy Cavalry local PlayerHeavyCavalryAmount = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderHeavyCavalry1 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderHeavyCavalry2 ) if PlayerHeavyCavalryAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindHeavyCavalryLeader, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindHeavyCavalryLeader, 0 ) end -- cannons local Cannon1 = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PV_Cannon1 ) local Cannon2 = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PV_Cannon2 ) local Cannon3 = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PV_Cannon3 ) local Cannon4 = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PV_Cannon4 ) local CannonAmount = Cannon1 + Cannon2 + Cannon3 + Cannon4 if CannonAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindCannon, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindCannon, 0 ) end -- rifle local PlayerRifleAmount = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderRifle1 ) + Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_LeaderRifle2 ) if PlayerRifleAmount > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindRifleLeader, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindRifleLeader, 0 ) end -- Scout local Scout = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_Scout ) if Scout > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindScout, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindScout, 0 ) end -- Thief local Thief = Logic.GetNumberOfEntitiesOfTypeOfPlayer( PlayerID, Entities.PU_Thief ) if Thief > 0 then XGUIEng.ShowWidget( gvGUI_WidgetID.FindThief, 1 ) else XGUIEng.ShowWidget( gvGUI_WidgetID.FindThief, 0 ) end end end
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
Seiten: 1