
Zitat von
Kerberos
Aber wenn ich
function Tor öffnen/schließen()
local tribute = {};
tribute.playerId = 1;
tribute.text = "zahle 100 Holz, um die Toore zu schließen/öffnen.";
tribute.cost = { Wood = 100 };
AddTribute( tribute );
ReplaceEntity ("tor1", "XD_WallStraightGate");
ReplaceEntity ("tor2","XD_WallStraightGate_Close")
end
einfüge, dann geht es einmal.
Ich will aber dass ich es beliebig oft machen kann und so jedes mal ein Tor öffne und eins schließe.

Moin Kerberos,
dieser Threat ist zwar schon einige Tage her, aber vielleicht doch noch aktuell:
1.) Zu Deiner Logic:
"Beliebig oft" wird mit Deiner Funktion schon begrenzt. Ist kein Holz mehr da, dann wird der Mentor "meckern" und der Tribut kann nicht erfüllt werden. Man muss den Tribut also von etwas abhängig machen, was unendlich vorhanden ist. Z.B.: "Nichts" ! 
"Nichts" wäre bspw. Gold = 0 , oder ein x-beliebiger anderer Rohstoff mit dem Wert = 0
Deweiteren bildet man eine Schleife für die Tributabfrage.
Könnte dann so aussehen:
Code:
function TorAufZu_1()
local tributeTorAufZu_1 = {}
tributeTorAufZu_1.playerId = 1;
tributeTorAufZu_1.text = "Klick auf den Tribut, um die Tore zu oeffnen, oder zu schliessen.";
tributeTorAufZu_1.cost = { Gold=0 };
tributeTorAufZu_1.Callback = OnTributeTorAufZu_1;
AddTribute( tributeTorAufZu_1 )
end
function OnTributeTorAufZu_1()
ReplaceEntity ("tor1", "XD_WallStraightGate");
ReplaceEntity ("tor2","XD_WallStraightGate_Close")
TorAufZu_2()
end
function TorAufZu_2()
local tributeTorAufZu_2 = {}
tributeTorAufZu_2.playerId = 1;
tributeTorAufZu_2.text = "Klick auf den Tribut, um die Tore zu oeffnen, oder zu schliessen.";
tributeTorAufZu_2.cost = { Gold=0 };
tributeTorAufZu_2.Callback = OnTributeTorAufZu_2;
AddTribute( tributeTorAufZu_2 )
end
function OnTributeTorAufZu_2()
ReplaceEntity ("tor2", "XD_WallStraightGate");
ReplaceEntity ("tor1","XD_WallStraightGate_Close")
TorAufZu_1()
end
Damit wird es zu einer endlosen Schleife, die sich wechselseitig aufruft und die Tore wechselseitig öffnet, oder schliesst und ausserdem "Nichts" abverlangt.
Benötigt wird dazu folgender Comfort-Code (irgenwo ins Skript kopieren):
Code:
function AddTribute( _tribute )
uniqueTributeCounter = uniqueTributeCounter or 1;
_tribute.Tribute = uniqueTributeCounter;
uniqueTributeCounter = uniqueTributeCounter + 1;
local tResCost = {};
for k, v in pairs( _tribute.cost ) do
table.insert( tResCost, ResourceType[k] );
table.insert( tResCost, v );
end
Logic.AddTribute( _tribute.playerId, _tribute.Tribute, 0, 0, _tribute.text, unpack( tResCost ) );
SetupTributePaid( _tribute );
return _tribute.Tribute;
end
Probier`s mal aus.
Lesezeichen