Mit diesem Code lassen sich vereinfacht Tribute setzen.
Ausserdem aktiviert der Code die Tribute für den Multiplayer Modus.
Zur Aktivierung muss in der FirstMapAction() vor Anwendung der Code eingelesen werden:
Tribute_Comforts()
Jetzt können folgende Funktionen verwendet werden
StartCountdown (_Limit, _Callback, _Show) _Limit: Ablauf des Countdowns in Sekunden _Callback: Funktion (ohne " ", also einfach der Name!) _Show: True, falls der Countdown gezeigt werden soll. Achtung! Es kann nur ein Countdown auf einmal angezeigt werden!
_TributeId = CreateATribute (_pId, _text, _cost, _callback) _TributeId: Speichert die ID des Tributs für spätere Verwendung _pId: Spieler ID (1 im Singleplayer!) _text: Text als String _cost: Kosten als Table z.B. { Gold = 1000} _callback: Funktion die bei Bezahlen aufgerufen wird.
function Tribute_Comforts() AddTribute = function( _tribute ) assert( type( _tribute ) == "table", "Tribut muß ein Table sein" ); assert( type( _tribute.text ) == "string", "Tribut.text muß ein String sein" ); assert( type( _tribute.cost ) == "table", "Tribut.cost muß ein Table sein" ); assert( type( _tribute.pId ) == "number", "Tribut.pId muß eine Nummer sein" ); assert( not _tribute.Tribute , "Tribut.Tribute darf nicht vorbelegt sein"); uniqueTributeCounter = uniqueTributeCounter or 1; _tribute.Tribute = uniqueTributeCounter; uniqueTributeCounter = uniqueTributeCounter + 1; local tResCost = {}; for k, v in pairs( _tribute.cost ) do assert( ResourceType[k] ); assert( type( v ) == "number" ); table.insert( tResCost, ResourceType[k] ); table.insert( tResCost, v ); end Logic.AddTribute( _tribute.pId, _tribute.Tribute, 0, 0, _tribute.text, unpack( tResCost ) ); SetupTributePaid( _tribute ); return _tribute.Tribute; end CreateATribute = function(_pId, _text, _cost, _callback) local tribute = {}; tribute.pId = _pId; tribute.text = _text; tribute.cost = _cost; tribute.Callback = _callback; return tribute end GameCallback_FulfillTribute = function() return 1 end end
Der Autor der Funktionen ist mir unbekannt.