[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
====== Einleitung ======
Manchmal ist es für die Story einer Karte wichtig, dass der Spieler eine bestimmte Schlüsselfigur nicht entlässt. Oder er soll aus irgendeinem Grunde eins seiner Gebäude nicht einreissen können. Oder aber man will den Spieler einfach ärgern... ;-)\\
\\
Diese Skripterweiterung bietet dafür die technischen Möglichkeiten. Sobald die Funktion...\\
SetupProtectedEntities()
...einmal irgendwo aufgerufen wurde (z.B. in der FMA), kann man mit...\\
ProtectEntity( _skriptname )
...die Selbstzerstörungsknöpfe der jeweiligen Entität verschwinden lassen.
===== Code=====
function SetupProtectedEntities()
gvProtectedUnits = {};
gvProtectedBuildings = {};
GameCallback_GUI_SelectionChanged_OrigProtected = GameCallback_GUI_SelectionChanged;
GameCallback_GUI_SelectionChanged = function()
GameCallback_GUI_SelectionChanged_OrigProtected()
for i = 1,table.getn(gvProtectedUnits) do
if GUI.GetSelectedEntity() == GetEntityId( gvProtectedUnits[i] ) then
XGUIEng.ShowWidget( gvGUI_WidgetID.ExpelSettler, 0 );
return;
else
XGUIEng.ShowWidget( gvGUI_WidgetID.ExpelSettler, 1 );
end
end
for i = 1,table.getn(gvProtectedBuildings) do
if GUI.GetSelectedEntity() == GetEntityId( gvProtectedBuildings[i] ) then
XGUIEng.ShowWidget( gvGUI_WidgetID.DestroyBuilding, 0 );
return;
else
XGUIEng.ShowWidget( gvGUI_WidgetID.DestroyBuilding, 1 );
end
end
end
ProtectEntity = function( _entity )
assert( type( _entity ) == "string" , "ProtectedEntities ERROR: Name of entity must be a string!" );
if Logic.IsBuilding( GetEntityId( _entity ) ) == 1 then
table.insert( gvProtectedBuildings, _entity );
else
table.insert( gvProtectedUnits, _entity );
end
end
end