Inhaltsverzeichnis

XGUIEng.TransferMaterials

Die Parameter ( _replaceWith, _replaceWhat )

_replaceWith: GUI Widget welches eingesetzt wird
_replaceWhat: GUI Widget das ersetzt werden soll

Der aktuelle Inhalt von „_replaceWith“ wird in „_replaceWhat“ übertragen.

Anwendung

Man muss einen Umweg gehen, um das Widget auch wieder zurücksetzten zu können.
Dazu Schrieb andre111 im siedler-maps forum dies:

du musst ein Backup von dem Button machen also so:
XGUIEng.TransferMaterials( "Command_Attack","Research_Banking" ) --backup(diese technology wird vom spiel nicht benutzt)
XGUIEng.TransferMaterials( "Hero2_PlaceBomb","Command_Attack" ) --verändern
XGUIEng.TransferMaterials( "Research_Banking","Command_Attack" ) --zurück setzen

Will heissen in der Praxis:

Diesen Code zum verändern einsetzen

XGUIEng.TransferMaterials( "Command_Attack","Research_Banking" ) --backup(diese technology wird vom spiel nicht benutzt)
XGUIEng.TransferMaterials( "Hero2_PlaceBomb","Command_Attack" ) --verändern

und wenn beliebt dann diesen Code zum zurücksetzen an anderer stelle

XGUIEng.TransferMaterials( "Research_Banking","Command_Attack" ) --zurück setzen

Anwendungsbeispiel

Wenn der Dieb selektiert wird, dann sehen seine Buttons „Position halten“ und „Angreifen“ anders aus.
Bringt eigentlich nichts, aber ein schönes Beispiel :)

function AendereDiebButtons()
 XGUIEng.TransferMaterials("Command_Stand","Research_Gilds")	 -- save old button
 XGUIEng.TransferMaterials("Command_Attack","Research_Taxation") -- save old button
 StartSimpleJob("Dieb_angeklickt")
end
function Dieb_angeklickt()
 local Selektiert = {GUI.GetSelectedEntities()}
  for i = 1,table.getn(Selektiert)do
   if IsEntityOfType(Selektiert[i],"PU_Thief")then
    XGUIEng.TransferMaterials("Thief_PlaceExplosives","Command_Attack")
    XGUIEng.TransferMaterials("Research_Banking","Command_Stand")
   else
    XGUIEng.TransferMaterials("Research_Gilds","Command_Stand")
    XGUIEng.TransferMaterials("Research_Taxation","Command_Attack")
   end
  end
end